﻿/* Task 09: editorial store profiles. All rules stay inside the profile. */
body:has(.store-page){background:#F5F2E9}
.store-page{--ui-brand:#382C33;--ui-text:#232321;--ui-muted:#6d685f;--ui-action:#382C33;--ui-surface:#FFFCF4;--ui-divider:#ddd6ca;background:#F5F2E9;color:#232321;font-family:'Noto Sans TC','PingFang TC',sans-serif;line-height:1.8}
.store-page *{box-sizing:border-box;min-width:0}
.store-page [hidden]{display:none!important}
.store-page .container{width:min(1160px,calc(100% - 64px));max-width:none;padding-inline:0;margin-inline:auto}
.store-page :is(a,button):focus-visible{outline:3px solid #637C67;outline-offset:4px}
.store-page .store-profile-header{padding:26px 0 30px;background:#FFFCF4;border-bottom:1px solid #ddd6ca}
.store-page .store-breadcrumbs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:25px;font-size:12px;color:#6d685f;overflow-wrap:anywhere}
.store-page .store-breadcrumbs a{color:inherit;text-decoration:none}
.store-page .store-breadcrumbs a:hover{text-decoration:underline;color:#382C33}
.store-page .store-profile-main{display:flex;align-items:center;gap:26px}
.store-page .store-profile-badge{flex:0 0 72px;width:72px;height:72px;padding:5px;background:#fffdf8;border:1px solid #e3dacd;border-radius:5px;overflow:hidden}
.store-page .store-profile-badge img{display:block;width:100%;height:100%;object-fit:contain}
.store-page .store-profile-info{flex:1}
.store-page .store-kicker{display:flex;align-items:center;gap:9px;margin:0 0 6px;color:#87513f;font-size:10px;font-weight:600;letter-spacing:.12em;line-height:1.6}
.store-page .store-kicker:before{content:'';display:block;width:20px;height:2px;flex:none;background:#F06F56}
.store-page .store-profile-title{margin:0 0 10px;color:#382C33;font-size:clamp(26px,2.5vw,36px);font-weight:600;line-height:1.35;letter-spacing:-.035em;overflow-wrap:anywhere}
.store-page .store-identity-meta{display:flex;align-items:baseline;flex-wrap:wrap;gap:4px 18px;font-size:13px;color:#625d55}
.store-page .store-identity-meta strong{font-weight:600;color:#382C33}
.store-page .store-rating{color:#87513f}
.store-page .store-rating strong{font-size:19px}
.store-page .store-review-count{font-size:12px;color:#6d685f}
.store-page .store-hours{margin:6px 0 0;font-size:13px;color:#625d55;overflow-wrap:anywhere}
.store-page .store-hours>span{color:#6d685f;margin-right:7px}
.store-page .store-sponsor-label{font-size:12px;color:#87513f}
.store-page .store-profile-actions{display:flex;flex-direction:column;gap:8px;flex:0 1 215px}
.store-page .store-contact{display:flex;align-items:center;justify-content:center;gap:9px;min-height:44px;padding:8px 18px;border:1px solid #c9bcae;border-radius:4px;color:#382C33;text-decoration:none;font-size:14px;font-weight:500;overflow-wrap:anywhere;text-align:center}
.store-page .store-contact:hover{border-color:#87513f;background:#f4eddf}
.store-page .store-contact--line{background:#168541;border-color:#168541;color:#fff}
.store-page .store-contact--line:hover{background:#126e36;border-color:#126e36;color:#fff}
.store-page .store-contact--line i{font-size:20px}
.store-page .store-social-links{display:flex;flex-wrap:wrap;justify-content:center;gap:0 14px}
.store-page .store-social-links a{display:inline-flex;align-items:center;min-height:44px;font-size:12px;color:#625d55;text-underline-offset:4px}
.store-page .store-anchor-tabs{border-bottom:1px solid #ddd6ca;background:#FFFCF4}
.store-page .anchor-tabs-inner{display:flex;flex-wrap:wrap;gap:0 32px}
.store-page .anchor-tabs-inner a{display:inline-flex;align-items:center;gap:8px;min-height:52px;padding-inline:6px;border-bottom:2px solid #d9d0c3;color:#382C33;font-size:15px;font-weight:500;text-decoration:none}
.store-page .anchor-tabs-inner a span{font-size:12px;color:#7a6355}
.store-page .anchor-tabs-inner a:is(:hover,:focus-visible){color:#87513f;border-bottom-color:#F06F56;background:#f4eddf}
.store-page .store-layout{display:block;padding-block:36px 10px}
.store-page .store-section{margin:0 0 44px;scroll-margin-top:calc(var(--site-header-height,64px) + 24px)}
.store-page .store-section-heading{display:flex;justify-content:space-between;align-items:end;gap:16px;padding-bottom:16px;margin-bottom:22px;border-bottom:1px solid #d9d0c3}
.store-page .store-section-heading h2{margin:0;color:#382C33;font-size:26px;font-weight:600;line-height:1.4;letter-spacing:-.025em}
.store-page .store-section-count{margin-left:10px;color:#6d685f;font-size:13px;font-weight:400;letter-spacing:0;white-space:nowrap}
.store-page .store-section-note{margin:0;font-size:12px;color:#6d685f}
.store-page .store-masseur-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px}
.store-page .store-masseur-card{display:flex;flex-direction:column;border:1px solid #ddd6ca;border-radius:5px;overflow:hidden;background:#FFFCF4;color:inherit;text-decoration:none;transition:border-color .16s,background .16s}
.store-page .store-masseur-card:hover{border-color:#a77d66;background:#fffaf0}
.store-page .store-masseur-media{position:relative;aspect-ratio:4/5;overflow:hidden;background:#eae2d5}
/* Contain preserves the full source portrait, including existing masks and watermarks. */
.store-page .store-masseur-media img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain}
.store-page .store-masseur-fallback{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:20px;padding:20px;background:linear-gradient(145deg,#eee4d6,#e4d4c5);color:#634b4c;text-align:center}
.store-page .store-masseur-fallback:before{content:'';position:absolute;inset:12px;border:1px solid #b09a833d;pointer-events:none}
.store-page .store-masseur-fallback>span:first-child{font-size:9px;letter-spacing:.12em;line-height:1.5}
.store-page .store-masseur-fallback strong{font-size:clamp(22px,2.1vw,30px);font-weight:500;line-height:1.5;overflow-wrap:anywhere}
.store-page .store-fallback-rule{width:27px;height:2px;background:#ac7059}
.store-page .store-masseur-info{display:flex;flex:1;flex-direction:column;padding:13px 15px}
.store-page .store-masseur-title{display:flex;align-items:baseline;justify-content:space-between;gap:8px}
.store-page .store-masseur-title h3{margin:0;color:#382C33;font-size:19px;font-weight:600;line-height:1.5;overflow-wrap:anywhere}
.store-page .store-person-rating{color:#87513f;font-size:12px;white-space:nowrap}
.store-page .store-masseur-stats{display:flex;flex-wrap:wrap;gap:2px 10px;margin:6px 0 0;color:#6d685f;font-size:12px;line-height:1.7}
.store-page .store-masseur-tag{margin:5px 0 0;color:#6d685f;font-size:12px;overflow-wrap:anywhere}
.store-page .store-card-action{display:flex;justify-content:space-between;gap:8px;padding-top:10px;margin-top:auto;color:#87513f;font-size:12px}
.store-page .store-disclosure-actions{display:flex;justify-content:center;margin-top:22px}
.store-page .store-disclosure-button{min-height:46px;padding:10px 30px;background:#FFFCF4;color:#382C33;border:1px solid #ab9685;border-radius:4px;font:inherit;font-size:14px;cursor:pointer}
.store-page .store-disclosure-button:hover{background:#eee4d6;border-color:#87513f}
.store-page .store-service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.store-page .store-service-card{display:flex;flex-direction:column;padding:18px 20px;background:#FFFCF4;border:1px solid #ddd6ca;border-radius:4px}
.store-page .store-service-card h3{margin:0 0 7px;color:#382C33;font-size:15px;font-weight:500;line-height:1.7;overflow-wrap:anywhere}
.store-page .store-service-duration{margin:0 0 12px;color:#6d685f;font-size:12px}
.store-page .store-service-price{margin:auto 0 0;padding-top:6px;color:#87513f;font-size:17px;font-weight:600;overflow-wrap:anywhere}
.store-page .store-review-summary{margin:0;color:#87513f;white-space:nowrap}
.store-page .store-review-summary strong{font-size:29px;font-weight:500;color:#382C33}
.store-page .store-review-summary>span:last-child{color:#6d685f;font-size:12px}
.store-page .store-review-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.store-page .store-review-card{padding:22px 24px;border:1px solid #ddd6ca;border-radius:4px;background:#FFFCF4}
.store-page .store-review-header{display:flex;justify-content:space-between;align-items:baseline;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.store-page .store-review-author{font-size:13px;font-weight:600;color:#382C33}
.store-page .store-review-rating{font-size:12px;color:#87513f}
.store-page .store-review-text{margin:0;font-size:14px;line-height:1.95;color:#514b44;white-space:pre-wrap;overflow-wrap:anywhere}
.store-page .store-review-date{margin:12px 0 0;color:#6d685f;font-size:12px}
.store-page .store-empty-note{margin:0;color:#6d685f;font-size:14px}
@media(max-width:1099px){
.store-page .store-masseur-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.store-page .store-profile-main{flex-wrap:wrap;gap:20px}
.store-page .store-profile-info{flex-basis:calc(100% - 92px)}
.store-page .store-profile-actions{flex-basis:100%;flex-direction:row;flex-wrap:wrap;align-items:center}
.store-page .store-service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:899px){.store-page .store-masseur-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
/* Empty tracks collapse so one to three cards stay compact and centered. */
@media(min-width:640px){
.store-page .store-masseur-grid--small-roster{grid-template-columns:repeat(auto-fit,minmax(0,210px));justify-content:center}
}
@media(max-width:639px){
.store-page .container{width:calc(100% - 36px)}
.store-page .store-profile-header{padding-block:18px 22px}
.store-page .store-breadcrumbs{font-size:11px;margin-bottom:20px;gap:5px}
.store-page .store-profile-main{gap:16px;align-items:start}
.store-page .store-profile-badge{flex-basis:56px;width:56px;height:56px;padding:4px}
.store-page .store-profile-info{flex-basis:calc(100% - 72px)}
.store-page .store-profile-title{font-size:24px;line-height:1.4;margin-bottom:8px}
.store-page .store-kicker{font-size:9px}
.store-page .store-identity-meta{gap:4px 12px;font-size:12px}
.store-page .store-rating{flex-basis:100%}
.store-page .store-hours{font-size:12px;margin-top:6px}
.store-page .store-profile-actions{display:grid;grid-template-columns:minmax(0,1fr);gap:8px}
.store-page .store-social-links{justify-content:flex-start}
.store-page .anchor-tabs-inner{gap:0 16px}
.store-page .anchor-tabs-inner a{font-size:14px;min-height:48px;gap:5px}
.store-page .anchor-tabs-inner a span{font-size:11px}
.store-page .store-layout{padding-top:26px}
.store-page .store-section{margin-bottom:32px}
.store-page .store-section-heading{gap:10px;padding-bottom:12px;margin-bottom:16px}
.store-page .store-section-heading h2{font-size:23px}
.store-page .store-section-note{display:none}
.store-page .store-section-count{font-size:12px;margin-left:6px}
.store-page .store-masseur-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.store-page .store-masseur-info{padding:10px 12px}
.store-page .store-masseur-title h3{font-size:18px;line-height:1.4}
.store-page .store-masseur-stats{font-size:13px;line-height:1.55;color:#585148;gap:1px 7px}
.store-page .store-card-action{font-size:13px;line-height:1.65;color:#774737;padding-top:8px}
.store-page .store-masseur-fallback{padding:15px;gap:18px}
.store-page .store-masseur-fallback>span:first-child{font-size:8px;letter-spacing:.08em}
.store-page .store-masseur-fallback strong{font-size:24px}
.store-page .store-service-grid,.store-page .store-review-grid{grid-template-columns:minmax(0,1fr)}
.store-page .store-service-card{padding:12px 18px}
.store-page .store-service-duration{margin-bottom:8px}
.store-page .store-service-price{padding-top:4px}
.store-page .store-service-price{font-size:16px}
.store-page .store-review-card{padding:18px}
.store-page .store-review-summary strong{font-size:25px}
}
@media(max-width:349px){.store-page .store-masseur-grid{grid-template-columns:minmax(0,1fr)}}
@media(prefers-reduced-motion:reduce){.store-page *{transition:none!important;scroll-behavior:auto!important}}
