@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Playfair+Display:ital,wght@0,500;0,600;0,700;1,500;1,600&display=swap');
:root{--pink:#FCC9FF;--pale:#FCC9FF;--ink:#242220;--paper:#fffcf8;--line:#dedbd7}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 'DM Sans',sans-serif}a{color:inherit;text-decoration:none}button,input,select{font:inherit}button,select{color:inherit;-webkit-appearance:none;appearance:none}select{-webkit-appearance:menulist;appearance:menulist}button,a,input,select{touch-action:manipulation}button{cursor:pointer}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #242220;outline-offset:4px}[hidden]{display:none!important}.preview{background:#292423;color:white;text-align:center;font-size:12px;padding:7px 15px;letter-spacing:.06em}header{display:flex;justify-content:space-between;align-items:center;padding:25px 5%;border-bottom:1px solid var(--line)}.logo{font:bold 32px/1 'Playfair Display',Georgia,serif;letter-spacing:-1.8px;white-space:nowrap}.logo span{color:var(--pink);display:inline-block;margin-left:5px;font-size:37px}nav{display:flex;gap:32px;align-items:center;font-size:14px;font-weight:600}.navbutton{border:1px solid var(--ink);padding:11px 19px;border-radius:30px}.navbutton span{margin-left:20px}.eyebrow{font-size:12px;font-weight:700;letter-spacing:.16em;margin:0 0 25px}h1,h2,h3,p{margin-top:0}h1,h2{font-family:'Playfair Display',Georgia,serif;font-weight:500;letter-spacing:-.045em}h1{font-size:clamp(52px,6.7vw,98px);line-height:1.03;margin-bottom:25px}h1 em,h2 em{color:#242220;font-weight:500}.button{display:inline-flex;gap:32px;align-items:center;justify-content:center;padding:15px 24px;border-radius:4px;border:1px solid transparent;font-weight:600;font-size:15px}.dark{background:var(--ink);color:white}.dark:hover{background:#242220}.small{font-size:13px;margin-top:13px;color:#5a5350}.section{padding:80px 5%}h2{font-size:42px;line-height:1.15;margin-bottom:22px}.price{background:var(--paper);padding:32px;border:1px solid #FCC9FF;border-radius:7px}.amount{font:60px 'Playfair Display',Georgia,serif;margin:0}.amount span{font:16px 'DM Sans',sans-serif}.price ul{padding-left:20px;margin:24px 0}.price .button{width:100%}footer{padding:38px 5%;display:flex;align-items:center;justify-content:space-between;gap:20px}footer p{margin:0}footer>span{font-size:12px;color:#5a5350}.directoryhead{padding:48px 5% 25px;display:flex;align-items:center;justify-content:space-between}.directoryhead h1{font-size:58px;margin-bottom:17px}.directoryhead .eyebrow{margin-bottom:16px}.samplebadge{font-size:13px;background:var(--pale);padding:8px 13px;border-radius:30px}.searchbar{margin:0 5% 35px;display:grid;grid-template-columns:1fr 1fr auto;gap:24px;background:white;padding:18px;border:1px solid var(--line);border-radius:6px}.searchbar label{font-size:11px;font-weight:700;letter-spacing:.12em}.searchbar input,.searchbar select{display:block;width:100%;background:transparent;border:0;padding:5px 0;font-size:16px;letter-spacing:0;color:var(--ink)}.directorylayout{padding:0 5% 70px;display:grid;grid-template-columns:220px 1fr;gap:35px}.filtertitle{display:flex;align-items:center;justify-content:space-between}.filtertitle h2{font:600 17px 'DM Sans',sans-serif;letter-spacing:0;margin:0}.textbutton{padding:7px;background:none;border:0;text-decoration:underline;font-size:14px}.directorylayout fieldset{border:0;border-top:1px solid var(--line);padding:18px 0;margin:22px 0 0}.directorylayout legend{font-weight:600;font-size:14px;padding:0 8px 0 0}.directorylayout fieldset label{display:flex;align-items:center;gap:8px;margin:9px 0;font-size:14px}input[type=checkbox]{accent-color:#be2460;width:17px;height:17px}.filterhint{font-size:13px;color:#645a5d;border-left:2px solid var(--pink);padding-left:13px;margin-top:25px}.resultbar{display:flex;justify-content:space-between;align-items:center;font-size:14px;margin-bottom:20px}.resultbar p{margin:0}.resultbar select{border:0;background:transparent;font-size:14px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:25px 18px}.card{border:1px solid var(--line);background:white;border-radius:7px;overflow:hidden;position:relative}.cardpic{height:230px;overflow:hidden;background:var(--pale);display:block}.cardpic img{width:100%;height:100%;object-fit:cover;transition:transform .3s}.card:hover img{transform:scale(1.035)}.save{position:absolute;top:12px;right:12px;width:39px;height:39px;border:0;border-radius:50%;background:white;font-size:23px;line-height:1;color:#242220}.save[aria-pressed=true]{background:#242220;color:white}.cardbody{padding:18px}.cardbody h3{font:600 21px 'Playfair Display',Georgia,serif;margin:3px 0 5px}.cardbody p{font-size:13px;color:#625b57;margin-bottom:12px}.tag{font-size:11px;text-transform:uppercase;letter-spacing:.09em;color:#242220;font-weight:600}.chips{display:flex;gap:6px;flex-wrap:wrap}.chips span{font-size:12px;padding:3px 8px;background:#f4f1ee;border-radius:3px}.cardbottom{border-top:1px solid #eee;margin-top:17px;padding-top:12px;display:flex;justify-content:space-between;font-size:13px}.cardbottom a{font-weight:700}.empty{text-align:center;padding:50px 25px;background:var(--pale)}.empty h2{font-size:32px}#profile{padding:35px 5% 75px}.back{display:inline-block;margin-bottom:25px;font-size:14px}.profilegrid{display:grid;grid-template-columns:.8fr 1.2fr;gap:50px}.profilephoto{width:100%;height:580px;object-fit:cover;border-radius:120px 120px 6px 6px}.profileinfo h1{font-size:54px;margin:15px 0}.profileinfo h2{font-size:29px;margin:28px 0 15px}.notice{background:var(--pale);border-left:3px solid var(--pink);padding:16px;font-size:14px}.service-row{display:flex;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:14px 0}.service-row span{font-size:13px;color:#655b57}.facts{display:grid;grid-template-columns:1fr 1fr;gap:15px}.facts div{background:#f4f1ee;padding:14px;font-size:14px}.facts strong{display:block}.profileinfo .button{margin-top:25px}.profileinfo .eyebrow{margin-bottom:5px}@media(min-width:1500px){header,main,footer,}@media(max-width:1000px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.directorylayout{grid-template-columns:180px 1fr;gap:20px}}@media(max-width:650px){header{padding:21px 5%}.logo{font-size:27px}nav{gap:0}nav>a:not(.navbutton){display:none}.navbutton{font-size:12px;padding:9px 12px}.navbutton span{margin-left:7px}.preview{font-size:10px}.eyebrow{font-size:10px;margin-bottom:19px}.section{padding:45px 5%}h2{font-size:35px}.price{padding:25px}footer{flex-wrap:wrap;gap:18px}footer p{font-size:13px}footer>span{width:100%}.directoryhead{display:block;padding-top:30px}.directoryhead h1{font-size:43px}.samplebadge{display:inline-block}.searchbar{grid-template-columns:1fr;gap:10px}.searchbar label{border-bottom:1px solid var(--line);padding-bottom:8px}.directorylayout{grid-template-columns:1fr}.directorylayout aside{border:1px solid var(--line);padding:15px;border-radius:5px}.directorylayout fieldset{margin-top:12px;padding:6px 0;display:flex;flex-wrap:wrap;gap:0 15px}.filterhint{display:none}.cards{gap:12px}.cardpic{height:180px}.cardbody{padding:12px}.cardbody h3{font-size:20px}.cardbottom{flex-direction:column;gap:7px}.resultbar{flex-wrap:wrap;gap:10px}.profilegrid{grid-template-columns:1fr;gap:25px}.profilephoto{height:360px}.profileinfo h1{font-size:44px}.facts{gap:8px}.button{min-height:46px}}@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
/* PINKLIST brand and directory enhancements */
.logo{display:inline-flex;align-items:center;letter-spacing:normal}.logo img{width:200px;height:auto;display:block}h1 em{color:var(--ink)}h1 em{background:linear-gradient(transparent 65%,var(--pink) 65%)}.save[aria-pressed=true]{background:var(--pink);color:var(--ink)}.dark:hover{background:var(--pink);color:var(--ink);border-color:var(--ink)}.searchbar{grid-template-columns:1fr 1.2fr 1.5fr auto}.townfield{grid-column:1 / 4}.searchbar>.button{grid-column:4;grid-row:1 / 3}.searchbar select:disabled{color:#666}.parking{display:inline-flex;align-items:center;gap:7px;font-size:13px;line-height:1.4;margin-top:13px}.parking i{flex:none;width:11px;height:11px;border-radius:50%;background:#676767}.parking.red i{background:#ba2525}.parking.amber i{background:#b36b00}.parking.green i{background:#23794a}.ratinglink{display:block;font-size:13px;text-decoration:underline;text-underline-offset:3px;margin-bottom:13px}.reviewsection{display:grid;grid-template-columns:1fr 1fr;gap:60px;border-top:1px solid var(--line);margin-top:45px;padding-top:35px}.review{padding:20px 0;border-bottom:1px solid var(--line);overflow-wrap:anywhere}.review p{white-space:pre-wrap}.review small{font-size:13px;color:#57504f}.reviewsection form label,.account-page form label{display:block;font-size:14px;margin:15px 0}.reviewsection input:not([type=radio]):not([type=checkbox]),.reviewsection textarea,.account-page input{display:block;width:100%;padding:12px;border:1px solid #777;border-radius:4px;background:white;margin-top:6px;font:inherit}.stars{border:0;padding:0;display:flex;gap:6px;flex-wrap:wrap}.stars legend{font-size:14px}.stars label{position:relative}.stars input{position:absolute;opacity:0}.stars span{display:block;padding:10px 14px;border:1px solid #777;border-radius:4px}.stars input:checked+span{background:var(--pink);border:2px solid var(--ink);padding:9px 13px}.stars input:focus-visible+span{outline:3px solid #242220;outline-offset:3px}.stars input:disabled+span{opacity:.5}.consent{display:flex!important;gap:10px;align-items:flex-start}.consent input{flex:none;margin-top:4px}button:disabled{cursor:not-allowed;opacity:.6}.account-page{max-width:760px;margin:0 auto;padding:50px 5%;min-height:65vh}.account-page h1{font-size:48px}.authactions{display:flex;gap:15px;flex-wrap:wrap}.notice a{text-decoration:underline}.cardbody .parking{min-height:30px}.facts .parking{margin:7px 0}.accountlink{white-space:nowrap}footer a:hover{text-decoration:underline}
@media(max-width:1000px){nav{gap:15px}.searchbar{grid-template-columns:1fr 1fr}.townfield{grid-column:auto}.searchbar>.button{grid-column:1 / -1;grid-row:auto}.reviewsection{gap:30px}.logo img{width:175px}}
@media(max-width:650px){.logo img{width:140px}header{gap:10px}.searchbar{grid-template-columns:1fr}.townfield,.searchbar>.button{grid-column:auto}.reviewsection{grid-template-columns:1fr;gap:30px}.stars span{padding:10px 13px}.account-page h1{font-size:40px}.facts{grid-template-columns:1fr}.cards{grid-template-columns:1fr 1fr}.cardbody .parking{font-size:12px}nav .accountlink{display:block!important;font-size:12px}nav .navbutton{display:none}}
@media(max-width:360px){.cards{grid-template-columns:1fr}}

/* PINKLIST owner dashboard */
#moderation{background:#fbf7f3;min-height:75vh}.admin-wrap{max-width:1280px;margin:0 auto;padding:52px 5% 80px}.admin-top{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:34px}.admin-top h1{font-size:48px;margin:8px 0 6px}.admin-top p{margin:0}.admin-top-actions{display:flex;align-items:center;gap:16px}.admin-link{text-decoration:underline;text-underline-offset:4px}.admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:34px}.admin-stats article{background:#fff;border:1px solid #e9ded8;border-radius:10px;padding:22px}.admin-stats strong{display:block;font:42px 'Playfair Display',Georgia,serif}.admin-stats span{font-size:13px;color:#665c58}.admin-tabs{display:flex;gap:26px;border-bottom:1px solid #ded4cf;margin-bottom:24px}.admin-tabs button,.review-tabs button{border:0;background:transparent;padding:13px 2px;font:600 15px 'DM Sans',sans-serif;border-bottom:3px solid transparent}.admin-tabs button.active,.review-tabs button.active{border-bottom-color:#242220}.admin-tabs span{background:var(--pink);border-radius:99px;padding:2px 7px;margin-left:5px;font-size:11px}.admin-toolbar{display:grid;grid-template-columns:1fr 210px 170px;gap:12px;margin-bottom:18px}.admin-toolbar input,.admin-toolbar select,.admin-field input,.admin-field select,.admin-field textarea{width:100%;border:1px solid #d6cbc6;background:#fff;border-radius:7px;padding:13px 14px;font:inherit}.admin-search{position:relative}.admin-search span{position:absolute;left:14px;top:11px;font-size:22px}.admin-search input{padding-left:42px}.admin-list{background:#fff;border:1px solid #e5dad5;border-radius:10px;overflow:hidden}.admin-row{display:flex;justify-content:space-between;gap:24px;padding:20px;border-bottom:1px solid #eee5e0}.admin-row:last-child{border-bottom:0}.admin-row-main{display:flex;gap:15px;min-width:0}.admin-avatar{width:48px;height:48px;display:grid;place-items:center;flex:none;border-radius:50%;background:var(--pink);font:600 20px 'Playfair Display',Georgia,serif}.admin-row h3{font:600 19px 'DM Sans',sans-serif;margin:1px 0 4px}.admin-row p{font-size:13px;color:#665d59;margin:0}.admin-mini-chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px}.admin-mini-chips span{background:#f5f0ed;padding:3px 8px;border-radius:99px;font-size:11px}.admin-row-side{text-align:right;flex:none}.status-pill{display:inline-block;border-radius:99px;padding:5px 9px;font-size:11px;background:#eee}.status-pill.live{background:#e4f3e9;color:#17663a}.status-pill.hidden{background:#f1efee;color:#6b625e}.status-pill.pending{background:#fff0c9;color:#765400}.admin-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:12px}.admin-actions button,.admin-actions a,.admin-actions summary{font:600 12px 'DM Sans',sans-serif;border:0;background:transparent;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.admin-actions .primary-mini{background:#242220;color:#fff;text-decoration:none;border-radius:5px;padding:8px 12px}.admin-actions details{position:relative}.admin-actions summary{list-style:none;text-decoration:none;font-size:18px;padding:0 5px}.admin-actions details[open] button{position:absolute;right:0;top:28px;z-index:4;width:150px;background:#fff;border:1px solid #ddd;padding:10px;border-radius:5px}.danger,.danger-text{color:#a22b2b!important}.admin-empty{text-align:center;padding:55px 20px}.admin-empty h3{margin-bottom:5px}.review-tabs{display:flex;gap:20px;margin-bottom:16px}.admin-review{display:flex;justify-content:space-between;gap:30px;padding:22px;border-bottom:1px solid #eee5e0}.admin-review:last-child{border-bottom:0}.admin-review>div:first-child{max-width:800px}.review-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.review-stylist{font-size:12px;color:#716864;margin:6px 0 12px}.admin-dialog{width:min(760px,92vw);max-height:88vh;border:0;border-radius:12px;padding:0;box-shadow:0 25px 80px #0003}.admin-dialog::backdrop{background:#201b1a88}.admin-dialog form{padding:28px}.dialog-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:1px solid #eee2dc;padding-bottom:18px;margin-bottom:22px}.dialog-head h2{font-size:34px;margin:3px 0}.dialog-close{border:0;background:transparent;font-size:30px;line-height:1}.admin-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.admin-field span,.admin-categories legend{display:block;font-weight:600;font-size:13px;margin-bottom:7px}.admin-span-2{grid-column:1/-1}.admin-categories{border:0;padding:0;margin:0}.admin-categories p{font-size:12px;color:#716864;margin:0 0 9px}.admin-categories>div{display:flex;flex-wrap:wrap;gap:8px}.admin-chip{position:relative}.admin-chip input{position:absolute;opacity:0}.admin-chip span{display:block!important;margin:0!important;padding:9px 12px;border:1px solid #d6cbc6;border-radius:99px;background:#fff;font-weight:500}.admin-chip input:checked+span{background:var(--pink);border-color:#242220}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid #eee2dc;margin-top:22px;padding-top:18px}.form-status{font-size:13px;margin:15px 0 0}.admin-field textarea{resize:vertical}.admin-field select{height:49px}
@media(max-width:800px){.admin-top{align-items:flex-start;flex-direction:column}.admin-top-actions{width:100%;justify-content:space-between}.admin-stats{grid-template-columns:1fr 1fr}.admin-toolbar{grid-template-columns:1fr}.admin-row,.admin-review{flex-direction:column}.admin-row-side{text-align:left}.admin-actions{justify-content:flex-start;flex-wrap:wrap}.admin-form-grid{grid-template-columns:1fr}.admin-span-2{grid-column:auto}.admin-wrap{padding-top:32px}.admin-top h1{font-size:39px}}

/* Step 4C: password visibility control */
.password-wrap{position:relative;display:flex;align-items:center}.password-wrap input{width:100%;padding-right:5.5rem}.password-toggle{position:absolute;right:.75rem;border:0;background:transparent;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;padding:.4rem;color:inherit}.password-toggle:focus-visible{outline:2px solid currentColor;outline-offset:2px;border-radius:4px}
.photo-import-card{max-width:900px;background:#fff;border:1px solid #ddd6cf;border-radius:18px;padding:32px;margin-top:24px}.photo-import-card h2{margin:.2rem 0 1rem}.photo-import-warning{background:var(--pink);border:1px solid #f3c6d7;border-radius:12px;padding:14px 16px;margin:20px 0}.photo-progress-head{display:flex;justify-content:space-between;gap:20px;margin:24px 0 8px}.photo-import-card progress{width:100%;height:14px}.photo-result-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}.photo-result-grid article{border:1px solid #ddd6cf;border-radius:14px;padding:18px;display:flex;flex-direction:column}.photo-result-grid strong{font-size:2rem}.photo-result-grid span{font-size:.9rem}.photo-failures{max-height:320px;overflow:auto;border-top:1px solid #ddd6cf;margin-top:12px}.photo-failures p{padding:12px 0;border-bottom:1px solid #eee;margin:0}.photo-failures span{font-size:.85rem;word-break:break-word}.notice.success{background:#eef8f0;padding:12px;border-radius:10px}@media(max-width:700px){.photo-import-card{padding:20px}.photo-result-grid{grid-template-columns:1fr}}

/* Step 5C: real stylist photography + owner photo management */
.cardpic img{width:100%;height:100%;object-fit:cover}.profilephoto{width:100%;max-height:680px;object-fit:cover}.stylist-gallery{margin:48px 0 10px;border-top:1px solid var(--line);padding-top:32px}.gallery-head h2{margin-top:4px}.gallery-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.gallery-grid img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:5px;background:#eee}.admin-avatar{overflow:hidden}.admin-avatar img{width:100%;height:100%;object-fit:cover}.photo-manager{border-top:1px solid #eee2dc;padding-top:18px}.photo-manager-head p{font-size:12px;color:#716864;margin:3px 0 12px}.current-profile-photo{display:flex;align-items:center;gap:16px;margin-bottom:12px}.current-profile-photo img{width:100px;height:120px;object-fit:cover;border-radius:8px}.remove-photo{font-size:13px}.upload-drop{display:flex!important;flex-direction:column;gap:4px;border:1px dashed #b9aaa3;border-radius:10px;padding:15px;background:#fff;cursor:pointer}.upload-drop strong{font-size:13px}.upload-drop small{color:#716864}.upload-drop input{margin-top:8px!important;padding:7px!important}.photo-empty{font-size:13px;color:#716864}.admin-gallery{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:12px}.admin-gallery label{border:1px solid #e3d9d4;border-radius:8px;overflow:hidden;background:#fff}.admin-gallery img{display:block;width:100%;aspect-ratio:1/1;object-fit:cover}.admin-gallery span{display:flex;gap:6px;align-items:center;padding:7px;font-size:11px!important;margin:0!important}.admin-gallery input{width:auto!important}.cardpic{overflow:hidden}.cardpic img{transition:transform .25s ease}.cardpic:hover img{transform:scale(1.02)}
@media(max-width:700px){.gallery-grid{grid-template-columns:repeat(2,1fr)}.admin-gallery{grid-template-columns:repeat(2,1fr)}}

/* STEP 6 - live review experience */
.review-helper,.review-signed-in{background:var(--pink);border:1px solid #f1d5e5;border-radius:7px;padding:12px 14px;font-size:13px;margin:0 0 15px}.review-note{font-size:12px;color:#716864;margin:10px 0 0}.review-counter{display:block;text-align:right;font-size:11px;color:#716864;margin-top:4px}.review-status{margin:12px 0 0;font-weight:600;font-size:13px}.review-status.success{background:#e8f5ec;color:#17663a;padding:12px;border-radius:6px}.review-status.error{background:#fff0ef;color:#922b21;padding:12px;border-radius:6px}.reviewsection textarea{resize:vertical}.reviewsection .button[type=submit]{min-width:160px}.admin-review p{white-space:pre-wrap;overflow-wrap:anywhere}

/* FINAL BUILD - map, PINKLIST Approved and bulk import */
.view-toggle{display:flex;border:1px solid #d7cbc5;border-radius:999px;padding:3px;background:#fff;margin-left:auto}.view-toggle button{border:0;background:transparent;border-radius:999px;padding:7px 14px;font:600 12px 'DM Sans',sans-serif;cursor:pointer}.view-toggle button.active{background:var(--pink);color:#171717}.pinklist-map{width:100%;height:620px;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--pink)}.pink-pin-wrap{background:none!important;border:0!important}.pink-pin{width:34px;height:34px;display:grid;place-items:center;background:var(--pink);border:3px solid #fff;border-radius:50% 50% 50% 8px;transform:rotate(-45deg);box-shadow:0 3px 12px #0004;color:#171717;font-weight:900}.pink-pin::first-letter{transform:rotate(45deg)}.leaflet-popup-content-wrapper{border-radius:12px}.map-card{min-width:180px;display:grid;gap:4px;position:relative;padding-top:3px}.map-card strong{font-size:15px;padding-right:42px}.map-card>span{color:#6f6460}.map-card b{font-size:12px}.map-card a{font-weight:700;margin-top:5px}.map-approved{position:absolute;right:0;top:0;width:38px;height:38px;object-fit:contain}.cardpic{position:relative}.approved-badge.card{position:absolute;z-index:2;left:10px;top:10px;width:62px;height:62px}.approved-badge.card img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 2px 5px #0004)}.approved-badge.card>span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.approved-badge.profile{display:inline-flex;align-items:center;gap:9px;background:var(--pink);border:1px solid #efb7d3;border-radius:999px;padding:5px 12px 5px 6px;margin:0 0 12px}.approved-badge.profile img{width:38px;height:38px;object-fit:contain}.approved-badge.profile span{font-size:12px;font-weight:800}.status-pill.approved{background:#fff0bd;color:#705000;margin-right:6px}.approved-toggle{display:flex!important;gap:12px;align-items:flex-start;background:var(--pink);border:1px solid #f0c7db;border-radius:10px;padding:14px}.approved-toggle input{width:auto!important;margin-top:3px}.approved-toggle span{margin:0!important}.approved-toggle small{display:block;color:#716864;font-weight:400;margin-top:3px}.bulk-card{max-width:980px;background:#fff;border:1px solid #ddd6cf;border-radius:18px;padding:32px;margin-top:24px}.bulk-card h2{margin:.2rem 0 1rem}.bulk-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:22px 0}.bulk-summary article{border:1px solid #e4dad5;border-radius:12px;padding:17px}.bulk-summary strong{display:block;font-size:30px}.bulk-summary span{font-size:12px;color:#716864}.bulk-table{border:1px solid #e4dad5;border-radius:12px;overflow:hidden;max-height:430px;overflow-y:auto;margin-bottom:18px}.bulk-row{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:13px 15px;border-bottom:1px solid #eee5e0}.bulk-row:last-child{border-bottom:0}.bulk-row input{width:auto}.bulk-row span{display:grid;gap:3px}.bulk-row small{color:#716864}.bulk-row b{font-size:10px;border-radius:999px;padding:5px 8px}.bulk-row b.new{background:#e8f5ec;color:#17663a}.bulk-row b.update{background:#fff0c9;color:#765400}.bulk-row b.error{background:#fff0ef;color:#922b21}
@media(max-width:700px){.pinklist-map{height:68vh;min-height:480px}.resultbar{flex-wrap:wrap}.view-toggle{order:3;margin-left:0}.approved-badge.card{width:52px;height:52px}.bulk-card{padding:20px}.bulk-summary{grid-template-columns:1fr 1fr 1fr}.bulk-row{grid-template-columns:auto 1fr}.bulk-row b{grid-column:2}}


/* FINAL REPAIR - brand consistency, transparent badge, stronger profile CTA */
input[type=checkbox]{accent-color:var(--pink)}
.approved-badge.card{background:transparent!important;border:0!important;padding:0!important;overflow:visible!important;line-height:0}
.approved-badge.card img{display:block!important;background:transparent!important;width:100%!important;height:100%!important;object-fit:contain!important;transform:none!important}
.card:hover .approved-badge.card img{transform:none!important}
.card-profile-cta{display:inline-flex;align-items:center;justify-content:center;background:var(--pink);border:1px solid var(--ink);border-radius:5px;padding:9px 12px;font-size:13px;font-weight:700;margin:0 0 13px;text-decoration:none}
.view-toggle button.active,.pink-pin,.admin-chip input:checked+span,.stars input:checked+span{background:var(--pink)!important}

/* Mobile-first repair: phone layouts should feel intentional, not squeezed desktop */
@media(max-width:700px){
 html,body{max-width:100%;overflow-x:hidden}
 header{padding:14px 16px;gap:8px;position:relative}
 .logo img{width:126px!important}
 nav{gap:12px} nav>a:not(.accountlink){display:none!important}.accountlink{font-size:13px!important}
 
 .section{padding:42px 16px}
 footer{padding:28px 16px;display:block}footer .logo{margin-bottom:14px}footer p{margin-bottom:12px}footer>span{display:block;line-height:1.6}
 .directoryhead{padding:30px 16px 18px}.directoryhead h1{font-size:42px;line-height:1.03}.directoryhead>div:last-child{margin-top:10px}
 .searchbar{margin:0 16px 20px;padding:15px;grid-template-columns:1fr!important;gap:12px}.searchbar>*{grid-column:auto!important;grid-row:auto!important}.searchbar>.button{width:100%}
 .directorylayout{padding:0 16px 45px;grid-template-columns:1fr;gap:18px}.directorylayout aside{padding:14px}.directorylayout fieldset{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px}.directorylayout fieldset label{margin:0;min-height:36px}
 .resultbar{display:grid;grid-template-columns:1fr auto;gap:10px 12px;align-items:center}.resultbar p{grid-column:1}.view-toggle{grid-column:1;margin:0;width:max-content}.resultbar select{grid-column:2;grid-row:1 / span 2;max-width:125px}
 .cards{grid-template-columns:1fr!important;gap:18px}.cardpic{height:auto!important;aspect-ratio:4/3}.cardbody{padding:16px}.cardbody h3{font-size:24px}.card-profile-cta{width:100%;min-height:44px}.cardbottom{flex-direction:row;align-items:center}.save{width:46px;height:46px;top:10px;right:10px}
 .approved-badge.card{width:58px!important;height:68px!important;left:10px;top:8px}
 .pinklist-map{height:66vh;min-height:430px;border-radius:8px}.leaflet-popup-content{margin:14px}.map-card{min-width:160px}
 #profile{padding:24px 16px 50px}.profilegrid{grid-template-columns:1fr;gap:22px}.profilephoto{height:auto!important;aspect-ratio:4/5;border-radius:80px 80px 6px 6px}.profileinfo h1{font-size:42px;line-height:1.05}.profileinfo .button{width:100%}.facts{grid-template-columns:1fr}.gallery-grid{grid-template-columns:1fr 1fr;gap:7px}.stylist-gallery{margin-top:34px}.reviewsection{grid-template-columns:1fr;gap:32px}.stars{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.stars label{margin:0!important}.stars span{padding:10px 4px!important;text-align:center;font-size:13px}.reviewsection .button[type=submit]{width:100%}
 .account-page{padding:32px 16px;min-height:70vh}.account-page h1{font-size:39px}.authactions{display:grid;grid-template-columns:1fr}.authactions .button{width:100%}
 .admin-wrap{padding:28px 14px 60px}.admin-top{gap:18px;margin-bottom:24px}.admin-top h1{font-size:38px!important;line-height:1.04}.admin-top-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.admin-top-actions>*{width:100%;text-align:center}.admin-top-actions .button{padding:12px 10px}
 .admin-stats{grid-template-columns:1fr 1fr;gap:9px}.admin-stats article{padding:15px}.admin-stats strong{font-size:34px}.admin-tabs{gap:18px;overflow-x:auto;white-space:nowrap;padding-bottom:1px}.admin-tabs button{flex:none}
 .admin-toolbar{grid-template-columns:1fr!important}.admin-row{padding:16px;gap:12px}.admin-row-main{align-items:flex-start}.admin-row-side{width:100%}.admin-actions{justify-content:flex-start;gap:14px}.admin-actions button,.admin-actions a{min-height:36px;display:inline-flex;align-items:center}.admin-review{padding:16px;gap:14px}.review-tabs{overflow-x:auto}
 .admin-dialog{width:calc(100vw - 20px);max-height:94vh;border-radius:12px}.admin-dialog form{padding:18px}.dialog-head h2{font-size:29px}.admin-form-grid{grid-template-columns:1fr}.dialog-actions{position:sticky;bottom:-18px;background:#fff;padding:14px 0 2px;z-index:2}.dialog-actions .button{flex:1;padding:12px 8px}.current-profile-photo{align-items:flex-start}.admin-gallery{grid-template-columns:1fr 1fr}
 .bulk-card{padding:18px!important;margin-top:12px;border-radius:12px}.bulk-summary{grid-template-columns:1fr 1fr!important}.bulk-summary article:last-child{grid-column:1/-1}.bulk-table{max-height:none;overflow:visible}.bulk-row{grid-template-columns:minmax(0,1fr) auto!important;padding:12px 6px}.bulk-row b{grid-column:auto!important;width:max-content}.bulk-row small{overflow-wrap:anywhere}.upload-drop{padding:14px}.upload-drop input{max-width:100%}
}
@media(max-width:370px){.admin-stats{grid-template-columns:1fr}.directorylayout fieldset{grid-template-columns:1fr}.stars{grid-template-columns:repeat(3,1fr)}}

/* Customer account navigation */
nav .signup-link{display:inline-block;font-size:13px;white-space:nowrap}nav .signup-link[hidden]{display:none!important}#account{overflow-wrap:anywhere}#account form{max-width:480px}#account input{min-width:0}#authstatus{line-height:1.5}#account .password-wrap input{padding-right:70px}
@media(max-width:650px){header nav{flex-wrap:wrap;justify-content:flex-end;gap:8px 12px}nav .signup-link{display:inline-block!important;font-size:12px}nav .signup-link[hidden]{display:none!important}}
/* Prominent customer entry points and staff management */
header nav .accountlink{display:inline-flex!important;align-items:center;justify-content:center;background:#242220;color:white;border:2px solid #242220;border-radius:999px;padding:11px 18px;font-weight:700;font-size:14px;text-decoration:none}
header nav .signup-link{border:2px solid #242220;border-radius:999px;padding:11px 16px;font-weight:700;font-size:14px}
header nav #admin-nav-link{font-weight:700;text-decoration:underline}
#admin-nav-link[hidden],#reviewform[hidden],#admin-team-panel[hidden]{display:none!important}
#admin-team-panel{padding:24px 0;max-width:850px}#grant-admin-form{max-width:520px}.team-member{display:flex;align-items:center;justify-content:space-between;gap:20px;border-bottom:1px solid var(--line);padding:20px 0}.team-member strong{overflow-wrap:anywhere}.team-member p{margin:5px 0}.review-login{padding:20px;background:#fff4ff;border:1px solid var(--line);border-radius:12px}.review-login .button{margin:6px 4px 0 0}#moderation-status{overflow-wrap:anywhere}.admin-tabs,.review-tabs{flex-wrap:wrap}
@media(max-width:650px){header{flex-wrap:wrap}header nav{width:100%;justify-content:flex-start}header nav .accountlink,header nav .signup-link{padding:9px 14px;font-size:13px}.team-member{align-items:flex-start;flex-direction:column}}
@media(max-width:650px){header nav #admin-nav-link:not([hidden]){display:inline-flex!important;font-size:13px}}
@media(max-width:700px){header nav a.signup-link:not([hidden]){display:inline-flex!important}header nav a#admin-nav-link:not([hidden]){display:inline-flex!important}}
/* Free members, area controls and shared website wording */
[hidden]{display:none!important}
[data-copy]{white-space:pre-line}




.admin-tabs{flex-wrap:wrap;gap:8px}
#admin-copy-panel,#admin-areas-panel{max-width:960px;padding:24px 0}
#copy-form label,.area-editor label,#add-area label,#assign-area>label{display:flex;flex-direction:column;gap:8px;margin:16px 0}
#copy-form textarea{width:100%;font:inherit;padding:12px;border:1px solid #888;border-radius:8px;resize:vertical}
.area-editor{padding:24px;border:1px solid #ccc;border-radius:12px;margin:16px 0;display:grid;grid-template-columns:1fr 1fr;gap:0 24px}
.area-editor input,.area-editor select,#add-area input,#assign-area select{font:inherit;min-width:0;padding:10px;max-width:100%;border:1px solid #999;border-radius:6px}
.inline-check{display:flex!important;flex-direction:row!important;align-items:center;gap:10px;margin:12px 0}
.assignment-list{max-height:320px;overflow:auto;border:1px solid #ddd;padding:12px;margin:16px 0}
#access-gate{max-width:800px;margin:60px auto;min-height:45vh;padding:24px}
@media(max-width:600px){.area-editor{grid-template-columns:1fr}.admin-tabs button{font-size:13px}#copy-form .button{margin-bottom:12px}}
#moderation.account-page{max-width:1280px;padding:48px 5%}
#admin-copy-panel,#admin-areas-panel{max-width:100%}
#copy-form{max-width:820px}
.inline-check input[type=checkbox]{width:auto!important;flex:0 0 auto;margin:0}

@media(max-width:600px){#moderation.account-page{padding:30px 16px}}
#whole-wording-editor{margin:24px 0;border:1px solid #aaa;padding:20px;border-radius:12px;background:#fff}
#whole-wording-editor summary{font-weight:700;cursor:pointer;padding:10px 0}
#whole-wording-editor .wording-group{border-top:1px solid #ddd;margin:16px 0}
#whole-wording-editor textarea{width:100%;font:inherit;padding:12px;border:1px solid #999;border-radius:6px;resize:vertical}
#whole-wording-editor label{display:block;margin:16px 0}
#whole-wording-editor label span{display:block;font-size:13px;margin-bottom:8px;color:#555}
#whole-wording-editor .button{margin:10px 0}




/* -----------------------------------------------------------------------
   Style pass (27 Sept): .claim-box (claim-engine.js), the hairdresser
   portal (hairdresser-portal.js) and the customer "Saved stylists" section
   (saved-stylists.js). All three reuse existing admin-dashboard classes for
   their internals (.admin-wrap, .admin-tabs, .admin-form-grid, etc. - all
   already styled above), so this block only covers what's genuinely new.
   ----------------------------------------------------------------------- */

/* Claim box - sits inside .profileinfo, below the rating link and bio. */
.claim-box{margin-top:22px}
.claim-box .notice{margin-top:0}
.claim-box .button{margin-top:12px}
.claim-box #claim-status{font-size:13px;margin-top:10px}

/* Claim box - verification-method picker + its per-method instructions
   (added 27 Sept, later: the stylist chooses how they're verifying before
   claiming, matching the same three-way choice the admin Claims tab
   already offers at approval time). */
.claim-method{border:1px solid var(--line);border-radius:7px;padding:14px 16px;margin:14px 0 0;background:#fff}
.claim-method legend{font-weight:600;font-size:13px;padding:0 4px}
.claim-method label{display:inline-flex;align-items:center;gap:6px;margin:6px 18px 0 0;font-size:14px}
.claim-checklist{margin-top:12px;display:flex;flex-direction:column;gap:10px}
.claim-check{display:flex;align-items:center;gap:8px;font-size:14px}
.claim-check input{flex:none}
.claim-check a{text-decoration:underline;text-underline-offset:3px}
.claim-instruction{font-size:14px;margin-top:12px}

/* Hairdresser portal - same wide dashboard layout as #moderation, since
   .admin-wrap itself is capped at 1280px and would otherwise be squeezed
   down to .account-page's normal 760px reading-width column. */
#portal.account-page{max-width:1280px;padding:48px 5%}
@media(max-width:600px){#portal.account-page{padding:30px 16px}}

/* "Your dashboard" nav link - same treatment as #admin-nav-link. */
header nav #portal-nav-link{font-weight:700;text-decoration:underline}
@media(max-width:650px){header nav #portal-nav-link:not([hidden]){display:inline-flex!important;font-size:13px}}
@media(max-width:700px){header nav a#portal-nav-link:not([hidden]){display:inline-flex!important}}

/* Saved stylists - the customer account page's shortlist section. */
.saved-stylists-section{margin-top:44px;border-top:1px solid var(--line);padding-top:32px}
.saved-stylists-section h2{font-size:29px;margin:8px 0 18px}
.saved-stylists-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:16px}
.saved-stylist-card{border:1px solid var(--line);border-radius:7px;overflow:hidden;background:#fff;position:relative}
.saved-stylist-card a{display:block}
.saved-stylist-card img,.saved-stylist-noimg{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;background:var(--pale)}
.saved-stylist-name{display:block;font:600 15px 'DM Sans',sans-serif;padding:10px 10px 0}
.saved-stylist-card small{display:block;padding:2px 10px 10px;color:#5a5350;font-size:12px}
.saved-stylist-card [data-unsave]{position:absolute;top:8px;right:8px;background:#fff;border:1px solid var(--line);border-radius:99px;padding:5px 10px;font-size:11px;font-weight:600}
@media(max-width:650px){.saved-stylists-grid{grid-template-columns:repeat(2,1fr)}}

/* Stylist access model (added 28 Sept): signup account-type choice, the
   limited stylist gate (onboarding/status card), and the admin stylist-
   accounts tab. */
.account-type-choice{border:1px solid var(--line);border-radius:7px;padding:12px 16px;margin:14px 0 0;background:#fff}
.account-type-choice legend{font-weight:600;font-size:13px;padding:0 4px}
.account-type-choice label{display:inline-flex;align-items:center;gap:6px;margin:6px 18px 0 0;font-size:14px}
#stylist-signup-extra{margin-top:12px}
.fieldnote{font-size:12px;color:#5a5350;margin-top:6px}
.stylist-match-card{border:1px solid var(--line);border-radius:8px;padding:14px 16px;margin:14px 0;background:#fff;display:flex;flex-direction:column;gap:2px}
.stylist-match-card strong{font-size:16px}
.stylist-match-card span{font-size:13px;color:#5a5350}
.stylist-browse-search{display:block;margin:14px 0;font-size:13px;font-weight:600}
.stylist-browse-search input{display:block;width:100%;margin-top:6px;font-weight:400}
.stylist-browse-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:8px;padding:10px 14px;margin-bottom:8px;background:#fff}
.stylist-browse-row div{display:flex;flex-direction:column;gap:2px}
.stylist-browse-row span{font-size:13px;color:#5a5350}
@media(max-width:600px){.stylist-browse-row{flex-direction:column;align-items:stretch}}

/* Sticky footer (added 28 Sept): on short pages (account, portal, admin
   dashboard before data loads) the footer - which has its own PINKLIST
   wordmark - was landing right under the sparse content, so the header
   logo and footer logo were both on screen at once with no scrolling,
   reading as the logo appearing twice. Pins the footer to the bottom of
   the viewport instead; doesn't affect longer pages (home/directory),
   which already fill the space on their own. */
/* §21 fix: `html,body{height:100%}` was removed from this rule. Together with
   the phone rule body{overflow-x:hidden} it turned <body> into the scroll
   container on phones, so window scrolling (route()'s scrollTo(0,0) on each
   page change, full-page screenshots) stopped working. min-height alone keeps
   the footer at the bottom of short pages. */
body{display:flex;flex-direction:column;min-height:100vh}
body>main{flex:1 0 auto}
body>footer{flex-shrink:0}

/* Membership pitch folded into the account page (28 Sept) - see
   identity.js's membershipPitchHTML(). Stacks in one column regardless of
   width, unlike .membership's normal 2-column grid, since the account page
   is a single narrow reading column. */
.account-membership{margin-top:48px;padding-top:40px;border-top:1px solid var(--line)}
.account-membership .price{margin-top:24px;max-width:420px}

/* §20 (live QA fix round). Stylist claim section on My account
   (stylist-onboarding.js), the shared claim checklist widget
   (claim-engine.js's window.pinkClaimChecklist), and hiding directory links
   for stylists whose directory access isn't confirmed yet. Mobile first:
   everything stacks in one column; the only wider-screen tweak is letting
   the browse rows sit side by side, which the §17 rules already do. */
body.pink-stylist-limited a[href="#directory"]{display:none!important}
.stylist-claim-section{margin:28px 0;padding:20px 18px;border:1px solid var(--line);border-radius:10px;background:#fff}
.stylist-claim-section h2{font-size:24px;line-height:1.2;margin:4px 0 10px}
.stylist-claim-section .eyebrow{margin:0}
.stylist-claim-section p{margin:10px 0}
.stylist-claim-section form label,.stylist-create-fields label{display:block;font-size:14px;margin:12px 0}
.stylist-create-fields select{display:block;width:100%;padding:12px;border:1px solid #777;border-radius:4px;background:#fff;margin-top:6px;font:inherit}
.stylist-claim-ident{font-weight:600;font-size:14px}
.stylist-claim-section .button{margin:4px 6px 4px 0}
.claim-checklist-widget .claim-submit{margin-top:14px}
.claim-checklist-widget .claim-status{min-height:1em}
/* .account-page input is display:block/width:100% for text fields; keep the
   checklist's radios and checkboxes (and the signup type radios) inline. */
.account-page .claim-method input,.account-page .claim-check input,.account-page .account-type-choice input{display:inline-block;width:auto;padding:0;margin:0;border:0}
.account-page .claim-check input{width:17px;height:17px}
.claim-check span{flex:1}
.claim-decision{margin:6px 0 0;max-width:340px}
@media(max-width:600px){
 .stylist-claim-section{padding:16px 14px;margin:22px 0}
 .stylist-claim-section h2{font-size:21px}
 .stylist-claim-section .button{display:block;width:100%;text-align:center;margin:8px 0}
 .claim-checklist-widget .claim-submit{display:block;width:100%}
 .claim-method label{display:flex;margin:8px 0 0}
}

/* §21 Build A - one header, account setup, pills and steps.
   Mobile first: every rule below is written for a phone and only the few
   marked @media(min-width) ones widen things for bigger screens. */

/* Header: "Explore the directory" + one "Log in / Join" / "My account"
   button. The old phone rule hid every nav link except the account button;
   the directory link stays visible now, except for a stylist who isn't
   verified yet (body.pink-stylist-limited, stylist-onboarding.js). */
header nav{display:flex;align-items:center;gap:10px;flex-wrap:nowrap}
header nav #directory-nav-link{font-weight:600;font-size:14px;white-space:nowrap}
@media(max-width:700px){
 body:not(.pink-stylist-limited) header nav a#directory-nav-link:not([hidden]){display:inline-flex!important;font-size:13px}
 header nav{width:auto!important;margin-left:auto;justify-content:flex-end!important;flex-wrap:nowrap}
 header{flex-wrap:wrap!important;row-gap:10px}
}
@media(max-width:380px){header nav a#directory-nav-link{font-size:12px!important}header nav .accountlink{padding:8px 12px!important;font-size:12px!important}}
footer .logo{display:none}

/* Shared pill: same look as the admin category chips the founder likes -
   rounded, white, pink when selected. Radio/checkbox inside is visually
   hidden but still focusable. */
.pill-row{display:flex;flex-wrap:wrap;gap:8px;margin:10px 0}
.pink-pill{position:relative;display:inline-flex}
.pink-pill input{position:absolute;opacity:0;width:1px;height:1px;margin:0;pointer-events:none}
.pink-pill>span{display:inline-flex;align-items:center;gap:6px;padding:9px 14px;border:1px solid #d6cbc6;border-radius:999px;background:#fff;font-weight:600;font-size:14px;line-height:1.2;cursor:pointer;transition:background .15s,border-color .15s}
.pink-pill input:checked+span{background:var(--pink);border-color:var(--ink)}
.pink-pill input:focus-visible+span{outline:2px solid var(--ink);outline-offset:2px}
.pink-pill.quiet>span{font-weight:500;color:#5a5350}
.pink-pill.static>span{cursor:default}
.pill-link{display:inline-flex;align-items:center;gap:6px;padding:10px 16px;border:1px solid var(--ink);border-radius:999px;background:#fff;font-weight:600;font-size:14px;text-decoration:none;color:var(--ink)}
.pill-link.dark{background:var(--ink);color:#fff}
.pill-tabs{display:flex;flex-wrap:wrap;gap:8px;padding:4px 0 12px;margin:18px 0 8px}
.pill-tabs::-webkit-scrollbar{display:none}
.pill-tabs button{flex:none;padding:9px 14px;border:1px solid #d6cbc6;border-radius:999px;background:#fff;font:600 14px 'DM Sans',sans-serif;cursor:pointer}
.pill-tabs button.active{background:var(--pink);border-color:var(--ink)}

/* Numbered steps */
.step-num{display:inline-grid;place-items:center;flex:none;width:26px;height:26px;border-radius:50%;background:var(--pink);border:1px solid var(--ink);font-weight:700;font-size:13px;line-height:1}
.step-line{display:flex;align-items:center;gap:8px;font-weight:600;margin:16px 0 4px}
.how-steps{list-style:none;padding:0;margin:12px 0;display:grid;gap:10px}
.how-steps li{display:flex;align-items:center;gap:10px}

/* Account page: My account ⇄ My listing tabs, sign-in/join switch, join steps */
.account-tabs{display:flex;gap:6px;padding:4px;margin:0 0 22px;border:1px solid #d7cbc5;border-radius:999px;background:#fff;width:max-content;max-width:100%}
.account-tabs a{padding:8px 14px;border-radius:999px;font-weight:600;font-size:14px;text-decoration:none;white-space:nowrap}
.account-tabs a.active{background:var(--pink)}
#portal .account-tabs{margin-bottom:18px}
.auth-switch{display:flex;gap:6px;padding:4px;margin:6px 0 20px;border:1px solid #d7cbc5;border-radius:999px;background:#fff;width:max-content}
.auth-switch button{border:0;background:transparent;border-radius:999px;padding:9px 18px;font:700 14px 'DM Sans',sans-serif;cursor:pointer}
.auth-switch button.active{background:var(--pink)}
.account-email{color:#5a5350;font-size:14px;margin-top:-4px}
.account-quicklinks{display:flex;flex-wrap:wrap;gap:10px;margin:18px 0 24px}
.signup-step{border:0;padding:0;margin:22px 0 0}
.signup-step legend{display:flex;align-items:center;gap:10px;font-weight:700;font-size:17px;margin-bottom:10px;padding:0}
.account-type-cards{display:grid;gap:10px}
.type-card{position:relative;display:block;margin:0!important}
.type-card input{position:absolute;opacity:0;width:1px;height:1px}
.type-card>span{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border:1px solid #d6cbc6;border-radius:14px;background:#fff;cursor:pointer}
.type-card>span strong{font-size:16px}
.type-card>span small{color:#5a5350;font-size:13px;line-height:1.45}
.type-card input:checked+span{background:#fff4ff;border:2px solid var(--ink)}
.type-card input:focus-visible+span{outline:2px solid var(--ink);outline-offset:2px}
.stylist-howto{background:#fff4ff;border:1px solid #efb7d3;border-radius:12px;padding:12px 16px;margin:4px 0 12px}
.stylist-howto p{margin:0 0 6px}.stylist-howto ol{margin:0;padding-left:20px;font-size:14px;line-height:1.6}
@media(min-width:640px){.account-type-cards{grid-template-columns:1fr 1fr;align-items:stretch}.type-card,.type-card>span{height:100%}}

/* Claim checklist: method pills, numbered steps, the link text is the link */
.claim-method .pill-row{margin:8px 0 0}
.claim-method label.pink-pill{margin:0!important;display:inline-flex!important}
.claim-steps{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:10px}
.claim-step{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:15px}
.claim-step>span:nth-child(2){flex:1 1 180px;min-width:0}
.claim-step a{font-weight:700;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:2px}
.claim-done{display:inline-flex!important;align-items:center;gap:6px;margin:0!important;padding:6px 12px;border:1px solid #d6cbc6;border-radius:999px;background:#fff;font-size:13px;font-weight:600;cursor:pointer}
.claim-done:has(input:checked){background:var(--pink);border-color:var(--ink)}
.claim-permanent{font-size:14px;background:#f7f3f1;border-radius:10px;padding:10px 12px;margin:14px 0 0}

/* Photo tagging with pills (stylist dashboard + admin) */
.photo-tag-gallery{display:grid;grid-template-columns:1fr;gap:14px}
.photo-tag-card{display:flex;flex-direction:column;gap:6px;border:1px solid var(--line);border-radius:12px;padding:10px;background:#fff}
.photo-tag-card img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:8px}
.photo-tag-card .pill-row{margin:6px 0 0}
.photo-tag-card .pink-pill>span{padding:7px 11px;font-size:13px}
.photo-tag-actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin-top:4px;font-size:13px}
.cat-pills{border-top:1px dashed var(--line);padding-top:8px}
.portal-help{font-size:14px;color:#5a5350}
@media(min-width:640px){.photo-tag-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(min-width:1000px){.photo-tag-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Admin: Categories tab, claimed listings */
.category-add{display:flex;flex-wrap:wrap;gap:10px;margin:14px 0}
.category-add input{flex:1 1 220px;padding:11px 12px;border:1px solid #777;border-radius:6px;font:inherit}
.category-list{list-style:none;padding:0;margin:10px 0 22px;display:grid;gap:8px}
.category-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border:1px solid var(--line);border-radius:12px;padding:8px 10px;background:#fff}
.category-row.is-hidden{opacity:.7}
.category-actions{display:flex;gap:8px;align-items:center}
.category-actions button{min-width:36px;min-height:36px;border:1px solid #d6cbc6;border-radius:999px;background:#fff;font-weight:700}
.category-actions button.danger-text{border-color:transparent;background:none}
.claims-subhead{margin:26px 0 6px}
.claimed-actions{flex-wrap:wrap;gap:8px}
.claimed-actions input{flex:1 1 200px;min-width:0;padding:8px 10px;border:1px solid #bbb;border-radius:6px;font:inherit}

/* §21 Build B - review proof, stylist reviews/preview, disputes */
.review-proof{border:1px dashed #d6cbc6;border-radius:12px;padding:12px 14px;margin:14px 0;background:#fff}
.review-proof .step-line{margin-top:0}
.review-proof-line{font-size:14px;margin:6px 0}
.my-reviews{display:grid;gap:12px;margin-top:14px}
.my-review{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff}
.my-review-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 12px}
.my-review-stars{color:#b0237a;letter-spacing:1px}
.my-review-head small{color:#5a5350}
.small-pill{padding:7px 12px;font-size:13px;margin-top:6px}
.dispute-form{margin-top:10px}
.dispute-form label{display:block;font-size:14px;font-weight:600}
.dispute-form textarea{display:block;width:100%;margin-top:6px;padding:10px;border:1px solid #777;border-radius:6px;font:inherit}
.dispute-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:8px}
.dispute-actions input{flex:1 1 180px;min-width:0;padding:8px 10px;border:1px solid #bbb;border-radius:6px;font:inherit}
.dispute-state{font-size:14px;font-weight:600;margin:8px 0 0}
.dispute-state.state-open{color:#765400}.dispute-state.state-removed{color:#17663a}
.owner-preview-banner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;background:#fff4ff;border:1px solid #efb7d3;border-radius:12px;padding:12px 14px;margin:0 0 18px;font-size:14px}
.owner-preview .claim-box{display:none!important}
/* §21 Build B: auto-published review label (admin list) */
.status-pill.auto{background:#fff3c4;color:#6b5200}

/* ===================================================================
   §22: one My account page, profile picture (logo), photos & videos
   =================================================================== */
.account-page input[hidden]{display:none!important}
#account.has-listing .account-greeting{display:none}
.account-listing{margin:0 0 8px}
.listing-head{display:flex;align-items:center;gap:14px;margin:0 0 6px}
.listing-head h1{font-size:36px;line-height:1.05;margin:2px 0 4px;overflow-wrap:anywhere}
.listing-head .eyebrow{margin:0}
.listing-status{margin:0}
.listing-avatar-btn{position:relative;flex:none;border:0;background:none;padding:0;cursor:pointer;border-radius:50%}
.listing-avatar,.logo-preview{display:flex;align-items:center;justify-content:center;width:72px;height:72px;border-radius:50%;object-fit:cover;background:#fff;border:2px solid var(--pink);box-shadow:0 2px 10px rgba(0,0,0,.08)}
.avatar-initial{font:600 30px 'Playfair Display',serif;color:var(--ink)}
.avatar-add{position:absolute;right:-6px;bottom:-4px;padding:2px 7px;border-radius:999px;background:var(--ink);color:#fff;font-size:11px;font-weight:700;white-space:nowrap}
.listing-pills{margin:16px 0 4px}
.listing-pills-hint{margin:0 0 6px;color:#6b6360}
.listing-panel{margin:10px 0 26px}
.logo-block{display:flex;gap:16px;align-items:flex-start;padding:16px;border:1px solid #eadfda;border-radius:16px;background:#fff;margin:0 0 22px}
.logo-block .logo-preview{width:84px;height:84px}
.logo-block h3{margin:0 0 4px;font-size:18px}
.logo-block .small{margin:0 0 10px}
.upload-pill{cursor:pointer}
.work-title{margin:6px 0 4px;font-size:20px}
.work-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:12px 0 20px}
.work-card{min-width:0;padding:8px;border:1px solid #eadfda;border-radius:14px;background:#fff}
.work-media{position:relative}
.work-media img,.work-media video{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:10px;background:#1d1a19}
.work-badge{position:absolute;top:6px;left:6px;padding:2px 8px;border-radius:999px;background:rgba(255,255,255,.94);font-size:12px;font-weight:700}
.work-badge.cover{left:auto;right:6px;background:var(--pink)}
.photo-tag-card{position:relative}
.photo-tag-card video{display:block;width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:8px;background:#1d1a19}
.work-card .tag-picker{margin-top:8px}
.work-card .pill-row{gap:5px}
.work-card .pink-pill>span{padding:5px 9px;font-size:12px}
.work-card .photo-tag-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.work-card .photo-tag-actions button{padding:6px 11px;border:1px solid #d6cbc6;border-radius:999px;background:#fff;font:600 12px 'DM Sans',sans-serif;cursor:pointer}
.work-card .photo-tag-actions button.danger-text{border-color:#e7c3c3}
.add-work .pill-row{margin-bottom:6px}
.account-block{margin-top:26px;padding-top:20px;border-top:1px solid #eadfda}
.account-block .eyebrow{margin-bottom:6px}
.account-email{margin:0 0 12px;overflow-wrap:anywhere}
.subscription-row{display:flex;flex-direction:column;align-items:flex-start;gap:6px;margin:0 0 16px}
.subscription-btn[disabled],.subscription-btn[disabled]:hover{opacity:1;background:#fff;border:1px dashed #b3a59f;color:#5a5350;cursor:not-allowed;box-shadow:none;transform:none}
.subscription-btn .soon{margin-left:8px;padding:2px 8px;border-radius:999px;background:var(--pink);color:var(--ink);font-size:12px;font-weight:700}
.account-signout{margin-top:26px}
.profile-logo{display:block;width:84px;height:84px;margin:0 0 12px;border-radius:50%;object-fit:cover;border:3px solid #fff;box-shadow:0 2px 12px rgba(0,0,0,.12);background:#fff}
.gallery-grid video{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:5px;background:#1d1a19}
@media(min-width:640px){.work-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.listing-avatar{width:84px;height:84px}}
@media(max-width:600px){.listing-head h1{font-size:30px}.logo-block{flex-direction:column;align-items:center;text-align:center}.logo-block .pill-row{justify-content:center}.subscription-btn{width:100%}}

/* ===================================================================
   §23: work tags, directory bar, card logo, links, opening times,
        saved-stylists map
   =================================================================== */
/* work tags */
.tag-group-label{margin:8px 0 4px;font-size:12px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#6b6360}
.premises-pills .pink-pill>span{background:#f6f2ef}
.premises-pills .pink-pill input:checked+span{background:var(--pink)}
.required-tag{margin-left:6px;padding:2px 8px;border-radius:999px;background:var(--ink);color:#fff;font-size:11px;font-weight:700;vertical-align:middle}
.upload-drop.is-locked{opacity:.55;cursor:not-allowed}
.upload-drop .locked-hint{display:none;font-weight:700}
.upload-drop.is-locked .locked-hint{display:block}
.work-badge.needs{top:auto;bottom:6px;background:#ffe8a3}
.work-badge.imported{left:auto;right:6px;background:#e9e4ff}
.work-card.needs-tag,.photo-tag-card.needs-tag{border-color:#e8c65a;box-shadow:0 0 0 2px #fff3c4 inset}
.photo-tag-card .work-badge{z-index:1}
.work-card .tag-group-label{font-size:11px;margin-top:6px}

/* directory bar */
#directory .dir-tools{padding:0 5% 8px}
#directory .dir-bar{display:flex;gap:8px;align-items:center;margin:0 0 12px}
#directory .dir-search{flex:1;display:flex;align-items:center;gap:8px;padding:0 16px;border:1px solid #cfc3bd;border-radius:999px;background:#fff;min-height:48px}
#directory .dir-search:focus-within{border-color:var(--ink);box-shadow:0 0 0 3px rgba(242,171,211,.45)}
#directory .dir-search-icon{font-size:20px;color:#6b6360}
#directory .dir-search input{flex:1;border:0;outline:0;background:transparent;font:16px 'DM Sans',sans-serif;padding:12px 0;min-width:0}
#directory .dir-filters-btn{display:none;align-items:center;gap:6px;min-height:48px;padding:0 18px;border:1px solid var(--ink);border-radius:999px;background:#fff;font:700 15px 'DM Sans',sans-serif;cursor:pointer;white-space:nowrap}
#directory .dir-filter-count{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:22px;padding:0 6px;border-radius:999px;background:var(--pink);font-size:12px}
#directory .dir-filters{display:flex;flex-wrap:wrap;gap:10px 28px;align-items:flex-start;padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:#fff;margin:0 0 12px}
#directory .dir-group{min-width:0}
#directory .dir-label{margin:0 0 6px;font-size:12px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#6b6360}
#directory .dir-group .pill-row{display:flex;flex-wrap:wrap;gap:6px}
#directory .dir-pill{padding:8px 14px;border:1px solid #d6cbc6;border-radius:999px;background:#fff;font:600 14px 'DM Sans',sans-serif;cursor:pointer;line-height:1.2}
#directory .dir-pill[aria-pressed="true"]{background:var(--pink);border-color:var(--ink)}
#directory .dir-pill:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
#directory .dir-area select{display:block;min-height:40px;padding:6px 12px;border:1px solid #d6cbc6;border-radius:999px;background:#fff;font:600 14px 'DM Sans',sans-serif}
#directory .dir-sheet-head,#directory .dir-backdrop{display:none}
#directory .dir-sheet-foot{display:flex;align-items:center;gap:10px;align-self:flex-end;margin-left:auto}
#directory .dir-sheet-foot #dir-show{display:none}
#directory .dir-resultbar{display:flex!important;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 6px;font-size:14px}
#directory .dir-resultbar #resultcount{margin:0 auto 0 0;font-weight:700;grid-column:auto}
#directory .dir-resultbar select{grid-column:auto;grid-row:auto;max-width:none}
#directory .dir-sort{display:flex;align-items:center;gap:6px;font-weight:600}
#directory .dir-sort select{border:1px solid #d6cbc6;border-radius:999px;padding:6px 10px;background:#fff;font:600 14px 'DM Sans',sans-serif}
#directory .dir-resultbar .view-toggle{margin:0;order:0}
#directory .dir-privacy{margin:0 0 14px;font-size:12px;color:#6b6360}
#directory .results{padding:0 5% 60px}
@media(max-width:899px){
 #directory .dir-tools{padding:0 16px 6px}
 #directory .results{padding:0 16px 50px}
 #directory .dir-filters-btn{display:inline-flex}
 #directory .dir-filters{display:none}
 body.dir-sheet-open{overflow:hidden}
 body.dir-sheet-open #directory .dir-backdrop{display:block;position:fixed;inset:0;background:rgba(23,23,23,.45);z-index:900}
 body.dir-sheet-open #directory .dir-filters{display:flex;flex-direction:column;flex-wrap:nowrap;gap:16px;position:fixed;left:0;right:0;bottom:0;max-height:86vh;overflow:auto;margin:0;padding:6px 16px calc(16px + env(safe-area-inset-bottom));border-radius:20px 20px 0 0;z-index:901;box-shadow:0 -10px 30px rgba(0,0,0,.18)}
 #directory .dir-sheet-head{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:#fff;padding:12px 0 6px;z-index:1}
 #directory .dir-sheet-head h2{margin:0;font-size:24px}
 #directory .dir-sheet-close{width:40px;height:40px;border:1px solid #d6cbc6;border-radius:50%;background:#fff;font-size:16px;cursor:pointer}
 #directory .dir-sheet-foot{position:sticky;bottom:calc(-16px - env(safe-area-inset-bottom));margin:0 -16px;padding:12px 16px;background:#fff;border-top:1px solid var(--line);justify-content:space-between;align-self:stretch}
 #directory .dir-sheet-foot #dir-show{display:inline-flex;flex:1;justify-content:center;max-width:260px}
 #directory .dir-area select{width:100%}
}

/* card: logo avatar on the photo */
.cardpic{position:relative}
.cardpic .card-logo{position:absolute;left:10px;bottom:10px;width:46px;height:46px;border-radius:50%;object-fit:cover;background:#fff;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.2);transform:none!important}

/* profile links */
.profile-links{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 6px}
.profile-links .pill-link{min-height:44px}

/* opening times */
.facts .hours-fact{grid-column:1/-1}
.hours-summary div{display:flex;justify-content:space-between;gap:12px;padding:3px 0;border-bottom:1px dashed #e0d6d1}
.hours-summary div:last-child{border-bottom:0}
.hours-summary b{font-weight:600}
.hours-appt-line{margin:8px 0 0;font-weight:700}
.hours-note-line{margin:4px 0 0;color:#5a5350}
.hours-editor{display:flex;flex-direction:column;gap:6px;margin-top:6px}
.hours-help{margin:0 0 4px}
.hours-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 8px;border:1px solid #eadfda;border-radius:12px;background:#fff}
.hours-row.is-open{border-color:#e7a9cb;background:#fff7fb}
.hours-toggle{display:flex;align-items:center;gap:8px;min-width:118px;cursor:pointer;margin:0!important}
.hours-editor .hours-toggle input{display:inline-block!important;width:20px!important;height:20px;margin:0!important;accent-color:#171717}
.hours-day{font-weight:700;min-width:36px}
.hours-state{font-size:13px;color:#6b6360}
.hours-row.is-open .hours-state{color:var(--ink)}
.hours-times{display:none;align-items:center;gap:6px;margin-left:auto}
.hours-row.is-open .hours-times{display:flex}
.hours-editor .hours-times input{display:inline-block!important;width:auto!important;min-width:0;margin:0!important;padding:6px 8px!important;border:1px solid #d6cbc6;border-radius:8px;font:15px 'DM Sans',sans-serif}
.hours-copy{margin:4px 0}
.hours-copy .pill-link{padding:7px 12px;font-size:13px}
.hours-appt{display:flex;align-items:center;gap:8px;font-weight:600;margin:4px 0!important;cursor:pointer}
.hours-editor .hours-appt input{display:inline-block!important;width:20px!important;height:20px;margin:0!important;accent-color:#171717}
.hours-note input{width:100%}
@media(max-width:420px){.hours-times{margin-left:0;width:100%}.hours-times input{flex:1}}

/* saved stylists: list / map */
.saved-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;flex-wrap:wrap}
.saved-head .view-toggle{margin:0 0 10px}
.saved-map{height:52vh;min-height:320px;margin-top:8px}
.saved-map-hint{margin:8px 0 0;font-size:12px;color:#6b6360}

/* §24 - verified tick (replaces the PINKLIST Approved badge) and compact directory cards on phones */
:root{--verified:#e0218a}
.verified-badge{display:inline-flex!important;align-items:center;justify-content:center;width:.8em;height:.8em;min-width:14px;min-height:14px;margin-left:.3em;vertical-align:-.08em;color:var(--verified);line-height:0;flex:none}
.verified-badge svg{width:100%;height:100%;display:block}
.profileinfo h1 .verified-badge{width:.62em;height:.62em;margin-left:.22em;vertical-align:.02em}
.map-card strong .verified-badge,.saved-stylist-name .verified-badge{width:14px;height:14px}
.pink-pill .verified-badge{width:16px;height:16px;margin:0 5px 0 0;vertical-align:-3px}
.card .approved-badge,.map-approved{display:none!important}
@media(max-width:600px){
 #cards{gap:10px!important}
 #cards .card{display:grid;grid-template-columns:132px minmax(0,1fr);border-radius:10px;min-height:0}
 #cards .card .cardpic{grid-column:1;grid-row:1;height:auto!important;aspect-ratio:auto!important;min-height:162px;border-radius:0;position:relative}
 #cards .card .cardpic>img:not(.card-logo){position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 30%}
 #cards .card .card-logo{width:32px;height:32px;left:6px;bottom:6px;border-width:1.5px}
 #cards .card .save{top:8px;right:8px;width:34px!important;height:34px!important;font-size:18px;background:#f6f0ed}
 #cards .card .save[aria-pressed=true]{background:var(--pink);color:var(--ink)}
 #cards .card .cardbody{grid-column:2;grid-row:1;padding:10px 12px!important;min-width:0;display:flex;flex-direction:column}
 #cards .card .tag{font-size:10px;padding-right:40px;line-height:1.5}
 #cards .card .cardbody h3{font-size:18px!important;line-height:1.2;margin:2px 40px 2px 0;overflow-wrap:anywhere}
 #cards .card .cardbody p{margin:0;font-size:12px}
 #cards .card .ratinglink{font-size:12px;line-height:1.5}
 #cards .card .chips{flex-wrap:nowrap;overflow:hidden;margin:6px 0 0;gap:4px;-webkit-mask-image:linear-gradient(90deg,#000 85%,transparent);mask-image:linear-gradient(90deg,#000 85%,transparent)}
 #cards .card .chips span{font-size:11px;padding:2px 7px;white-space:nowrap}
 #cards .card .cardbottom{margin-top:auto;padding-top:7px;border-top:1px solid #eee;flex-direction:row!important;align-items:center;justify-content:space-between;gap:8px;font-size:12px}
 #cards .card .chips+.cardbottom{margin-top:8px}
}

/* §24 - admin dashboard: four areas + sub-pills + a "To do" row (admin-layout.js) */
#moderation .admin-tabs-legacy{display:none!important}
#moderation #adminstats{display:none!important}
#moderation .admin-top-actions .admin-link{display:none!important}
.admin-todo{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:18px 0 4px}
.admin-todo-title{width:100%;margin:0;font-size:11px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#6b625e}
.admin-todo button{display:inline-flex;align-items:center;gap:6px;border:1px solid #efc4f2;background:var(--pink);border-radius:999px;padding:9px 14px;font-size:14px;font-weight:600;color:var(--ink);min-height:40px}
.admin-todo button b{font-weight:800}
.admin-todo-done{margin:0;font-size:14px;color:#4c4542}
.admin-nav{margin:16px 0 22px;min-width:0;max-width:100%}
.admin-todo{min-width:0;max-width:100%}
.admin-groups{display:grid;grid-template-columns:repeat(auto-fit,minmax(0,1fr));gap:4px;background:#f3eeea;border-radius:14px;padding:4px}
.admin-groups button{position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;border:0;background:transparent;border-radius:11px;padding:9px 4px;font-size:13px;font-weight:700;color:#5b5350;min-height:54px}
.admin-groups button[aria-selected=true]{background:#fff;color:var(--ink);box-shadow:0 1px 5px rgba(36,34,32,.1)}
.admin-group-icon{font-size:18px;line-height:1.2}
.admin-groups .admin-count{position:absolute;top:5px;right:calc(50% - 26px)}
.admin-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--verified);color:#fff;font-size:11px;font-weight:700;line-height:1;margin-left:6px}
.admin-groups .admin-count{margin-left:0}
.admin-subs{display:flex;gap:6px;margin-top:12px;overflow-x:auto;width:0;min-width:100%;padding-bottom:2px;scrollbar-width:none}
.admin-subs::-webkit-scrollbar{display:none}
.admin-subs button{flex:none;display:inline-flex;align-items:center;white-space:nowrap;border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;font-size:13px;font-weight:600;min-height:38px;color:var(--ink)}
.admin-subs button[aria-pressed=true]{background:var(--ink);border-color:var(--ink);color:#fff}
.photo-moved .button{margin-top:6px;width:max-content;max-width:100%}
@media(min-width:760px){.admin-groups button{flex-direction:row;justify-content:center;gap:8px;min-height:46px;font-size:14px}.admin-groups .admin-count{position:static}}

/* §24 - desktop polish: a compact, centred header and pages that use the width consistently */
body>main{width:100%}
@media(min-width:900px){
 header{position:sticky;top:0;z-index:1200;display:grid!important;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;padding:12px max(5%,calc((100% - 1440px)/2))!important;background:rgba(255,252,248,.92);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid rgba(222,219,215,.8)}
 header .logo{grid-column:2;justify-self:center}
 header .logo img{width:132px!important;height:auto}
 header nav{display:contents}
 header nav #directory-nav-link{grid-column:1;grid-row:1;justify-self:start;font-size:14px;font-weight:600}
 header nav .accountlink{grid-column:3;grid-row:1;justify-self:end;padding:10px 20px;font-size:14px}
 .preview{padding:6px 15px;font-size:11px}
 #moderation.account-page,#portal.account-page{max-width:none;padding:0}
 #moderation .admin-wrap{max-width:1280px;padding:32px 5% 72px}
 #moderation .admin-top h1{font-size:46px;margin-bottom:6px}
 .account-page{padding-top:40px}
 .directoryhead{padding-top:36px}
 #profile{padding-top:24px}
}
@media(min-width:760px){
 .saved-stylists-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}
 .saved-stylist-card img,.saved-stylist-noimg{aspect-ratio:1/1}
}
/* §24 - "N stylists live" pill with a beating heart */
.samplebadge.live-count{display:inline-flex;align-items:center;gap:7px;font-size:13px;white-space:nowrap}
.samplebadge.live-count b{font-weight:800}
.live-heart{display:inline-block;color:var(--verified);font-size:14px;line-height:1;animation:pinkBeat 1.8s ease-in-out infinite;transform-origin:50% 60%}
@keyframes pinkBeat{0%,40%,100%{transform:scale(1)}10%{transform:scale(1.28)}20%{transform:scale(1)}30%{transform:scale(1.16)}}
@media(prefers-reduced-motion:reduce){.live-heart{animation:none}}
.pink-pill .verified-badge{margin-right:3px}
/* §24 - the one save confirmation for photo changes */
#pink-save-status{position:fixed;left:50%;bottom:22px;transform:translateX(-50%);z-index:3000;max-width:calc(100% - 32px);padding:11px 18px;border-radius:999px;font-size:14px;font-weight:700;box-shadow:0 6px 24px rgba(36,34,32,.18);background:#fff;color:var(--ink);border:1px solid var(--line);text-align:center}
#pink-save-status.is-saving{color:#5b5350}
#pink-save-status.is-saved{background:var(--ink);color:#fff;border-color:var(--ink)}
#pink-save-status.is-error{background:#fff1f1;color:#8a1f1f;border-color:#f0c9c9}

/* §25 - verified reviews, usernames, likes, confirm appointments, customer ratings */
.verify-card{border:2px solid var(--verified);background:#fff5fb;border-radius:14px;padding:16px;margin:12px 0 16px}
.verify-card.is-done{border-color:#c8e8d0;background:#f1faf3}
.verify-card.is-waiting{border-color:#f2d9a6;background:#fffaf0}
.verify-title{font-weight:800;font-size:16px;margin:0 0 6px;display:flex;align-items:center;gap:4px}
.verify-card p{margin:0 0 8px;font-size:14px}
.verify-steps{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:12px}
.verify-steps li{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:start}
.verify-steps .pill-row{display:flex;flex-wrap:wrap;gap:6px}
.verify-steps label{display:block;font-size:13px;font-weight:700;margin:0 0 8px}
.verify-steps input{display:block;width:100%;margin-top:4px}
.verify-steps .button{width:100%;min-height:44px}
.verify-steps a{font-weight:700;text-decoration:underline}
@media(min-width:600px){.verify-steps .button{width:auto}}
.username-step{border:1px dashed var(--line);border-radius:12px;padding:14px;background:#fff}
.username-form{display:grid;gap:8px;margin-top:8px}
@media(min-width:600px){.username-form{grid-template-columns:1fr auto}.username-form .form-status{grid-column:1/-1}}
.review-visit input{display:block;margin-top:6px}
.review-limits{color:#6b625e;margin:8px 0}
.review-summary{font-size:14px;margin:0 0 12px;display:flex;flex-wrap:wrap;align-items:center;gap:4px}
.verified-count{display:inline-flex;align-items:center;font-weight:700}
.review.is-verified{border-left:3px solid var(--verified);padding-left:12px}
.review-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
.review-name{font-weight:800}
.review-badge{display:inline-flex;align-items:center;gap:2px;font-size:12px;font-weight:700;padding:3px 9px;border-radius:999px}
.review-badge.is-verified{background:#fde8f4;color:#9c1360}
.review-badge.is-unverified{background:#f1eeec;color:#6b625e}
.review-badge .verified-badge{margin-left:0}
.review-sub{font-size:13px;color:#5b5350;margin:4px 0 6px}
.review-stars{color:var(--ink);letter-spacing:1px}
.customer-rating{font-weight:600;color:var(--ink)}
.review-foot{margin-top:4px}
.like-btn{border:1px solid var(--line);background:#fff;border-radius:999px;padding:5px 12px;font-size:13px;font-weight:700;min-height:34px;color:var(--ink)}
.like-btn[aria-pressed=true]{background:#fde8f4;border-color:#f3b6d8;color:#9c1360}
.like-count{font-size:13px;font-weight:700;color:#9c1360}
.visit-confirm{border:1px solid var(--line);border-radius:14px;padding:14px;margin:12px 0 18px;background:#fff}
.visit-confirm h3{display:flex;align-items:center;gap:6px;font-size:17px;margin:4px 0 6px}
.visit-row{border-top:1px solid #f0ebe8;padding:12px 0;display:grid;gap:10px}
.visit-row:first-of-type{border-top:0}
.visit-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.visit-actions .button{min-height:44px}
.rate-customer{display:grid;gap:8px}
.rate-customer p{margin:0}
.rate-stars{display:flex;gap:4px}
.rate-stars button{border:0;background:none;font-size:28px;line-height:1;color:#d9d2ce;padding:2px;min-width:40px;min-height:40px}
.rate-stars button[aria-pressed=true]{color:#e0a100}
.rate-customer .small-pill{justify-self:start}
.reviewer-section{margin-top:28px;border-top:1px solid var(--line);padding-top:24px}
.reviewer-section h2{font-size:29px;margin:6px 0 12px}
.reviewer-section h3{font-size:18px;margin:18px 0 8px}
.reviewer-username{font-size:15px}
.reviewer-rating{font-size:15px}
.reviewer-feedback{border-left:3px solid var(--pink);padding:6px 10px;margin:6px 0;font-size:14px}
.reviewer-feedback p{margin:4px 0 0}
.reviewer-review{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px;padding:10px 0;border-top:1px solid #f0ebe8;font-size:14px}
.review-visit-line{font-size:13px;margin:4px 0}
.review-visit-pills{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 8px}
.admin-row.needs-action{border-left:3px solid var(--verified)}
.insta-tip{background:#fff5fb;border-radius:10px;padding:8px 10px}
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.verify-steps button.pink-pill{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:8px 14px;font-size:14px;font-weight:600;color:var(--ink);min-height:40px}
.verify-steps button.pink-pill[aria-pressed=true]{background:var(--pink);border-color:#e7a6ea}

/* §26 - the "live" heart glows as well as beats (still honours reduced motion) */
.live-heart{animation:pinkBeat 1.8s ease-in-out infinite,pinkGlow 1.8s ease-in-out infinite}
@keyframes pinkGlow{0%,40%,100%{text-shadow:0 0 0 rgba(224,33,138,0)}10%{text-shadow:0 0 10px rgba(224,33,138,.9),0 0 3px rgba(224,33,138,.9)}30%{text-shadow:0 0 7px rgba(224,33,138,.6)}}
.samplebadge.live-count{animation:pinkPillGlow 1.8s ease-in-out infinite}
@keyframes pinkPillGlow{0%,40%,100%{box-shadow:0 0 0 0 rgba(224,33,138,0)}10%{box-shadow:0 0 0 4px rgba(224,33,138,.16),0 0 16px rgba(224,33,138,.35)}30%{box-shadow:0 0 0 2px rgba(224,33,138,.1),0 0 10px rgba(224,33,138,.22)}}
@media(prefers-reduced-motion:reduce){.live-heart,.samplebadge.live-count{animation:none}.live-heart{text-shadow:0 0 6px rgba(224,33,138,.55)}}

/* §26 - the customer's check (round outline) vs the stylist's tick (solid seal) */
.customer-check{display:inline-flex!important;align-items:center;justify-content:center;width:.85em;height:.85em;min-width:14px;min-height:14px;margin-left:.3em;vertical-align:-.1em;color:var(--verified);line-height:0;flex:none}
.customer-check svg{width:100%;height:100%;display:block}
.review-badge .customer-check{margin-left:0}
.verify-title .customer-check{width:18px;height:18px;margin:0 2px 0 0}

/* §26 - area, closure, import template */
.account-area{margin:0 0 18px}
.account-area label{display:block;font-weight:700;font-size:14px;margin-bottom:6px}
.account-area-row{display:flex;gap:8px;align-items:center}
.account-area-row select{flex:1;min-width:0}
.area-summary{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:13px;margin:0 0 12px}
.area-chip{background:#f4f1ee;border-radius:999px;padding:3px 10px}
.close-account{margin-top:18px;border-top:1px solid var(--line);padding-top:14px}
.close-account-toggle{color:#6b625e;font-size:13px}
.closure-form{border:1px solid #f0c9c9;background:#fffafa;border-radius:12px;padding:14px;margin-top:8px}
.closure-form h3{font-size:17px;margin:0 0 6px}
.closure-list{margin:6px 0 12px;padding-left:18px;font-size:14px}
.closure-form textarea{width:100%}
.closure-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:8px}
.closure-pending{border:1px solid #f2d9a6;background:#fffaf0;border-radius:12px;padding:12px 14px}
.closure-pending p{margin:0 0 6px}
.primary-mini.danger{background:#8a1f1f!important;border-color:#8a1f1f!important;color:#fff!important}
.bulk-template{background:#fff5fb;border-radius:12px;padding:12px 14px;margin:12px 0}
.bulk-template p{margin:0 0 8px}
.bulk-template details{margin-top:8px;font-size:14px}
.bulk-template ul{margin:6px 0 0;padding-left:18px}
.bulk-columns{border-radius:10px;padding:8px 12px;margin:10px 0;font-size:14px}
.bulk-columns.ok{background:#f1faf3}
.bulk-columns.warn{background:#fff5e6}
.bulk-columns p{margin:0 0 4px}
.bulk-row b.delisted{background:#f1eeec;color:#6b625e}

/* §26 - phone layout pass (360–600px): one slim header row, calmer type scale */
.nav-short{display:none}
@media(max-width:600px){
 .preview{font-size:10px!important;padding:5px 12px!important;letter-spacing:.05em;line-height:1.3}
 header{position:sticky;top:0;z-index:1200;display:flex!important;flex-wrap:nowrap!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;padding:9px 14px!important;background:rgba(255,252,248,.96);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
 body.dir-sheet-open header{z-index:800}
 header .logo img{width:96px!important;height:auto}
 header nav{width:auto!important;display:flex!important;flex-wrap:nowrap!important;gap:6px!important;align-items:center!important;justify-content:flex-end!important;margin:0!important}
 header nav #directory-nav-link{display:inline-flex!important;align-items:center;font-size:13px;font-weight:600;padding:7px 11px;border:1px solid var(--line);border-radius:999px;background:#fff;white-space:nowrap}
 header nav #directory-nav-link[hidden]{display:none!important}
 header nav .accountlink{display:inline-flex!important;align-items:center;padding:7px 12px!important;font-size:13px!important;min-height:0!important;white-space:nowrap}
 .nav-long{display:none}.nav-short{display:inline}
 .account-page{padding:18px 16px 40px!important}
 .account-page h1{font-size:var(--fs-h1)!important;line-height:var(--lh-h1)!important;margin:0 0 10px!important}
 .account-page h2{font-size:var(--fs-h2)!important;line-height:var(--lh-h2);margin:4px 0 10px!important}
 .account-page h3{font-size:var(--fs-h3)}
 .account-page .eyebrow{font-size:10px!important;letter-spacing:.14em;margin:0 0 6px!important}
 .listing-head{gap:12px}
 .listing-avatar,.listing-avatar-btn .listing-avatar{width:58px!important;height:58px!important;font-size:22px}
 .listing-head h1{font-size:var(--fs-h1)!important;margin:0 0 2px!important}
 .avatar-add{font-size:10px!important;padding:2px 6px!important}
 .pill-tabs{gap:6px!important;margin:12px 0 4px!important;padding:2px 0 8px!important}
 .pill-tabs button{padding:7px 11px!important;font-size:13px!important}
 .account-block{margin-top:18px!important;padding-top:14px!important}
 .subscription-btn{min-height:44px!important;padding:8px 12px!important;font-size:14px!important}
 .account-quicklinks .pill-link,.account-page .pill-link{padding:7px 12px;font-size:13px}
 .saved-stylists-section{margin-top:22px!important;padding-top:18px!important}
 .saved-stylists-section h2,.reviewer-section h2{font-size:var(--fs-h2)!important}
 .reviewer-section{margin-top:18px!important;padding-top:16px!important}
 .verify-card{padding:12px!important}
 .verify-title{font-size:15px!important}
 .directoryhead{padding:18px 16px 10px!important}
 .directoryhead h1{font-size:var(--fs-h1)!important;line-height:var(--lh-h1)!important;margin-bottom:8px!important}
 .directoryhead .eyebrow{margin-bottom:8px!important}
 #profile{padding:16px 16px 40px!important}
 #profile .profileinfo h1{font-size:var(--fs-h1)!important;margin:6px 0 8px!important}
 #profile .profileinfo h2{font-size:var(--fs-h2)!important;margin:18px 0 10px!important}
 .reviewsection h2{font-size:var(--fs-h2)!important}
 
 
 .eyebrow{letter-spacing:.14em}
}
@media(max-width:374px){
 header nav #directory-nav-link{padding:6px 9px;font-size:12px}
 header nav .accountlink{padding:6px 10px!important;font-size:12px!important}
 header .logo img{width:88px!important}
}
.account-area-row select{min-height:44px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:#fff;font-size:15px;color:var(--ink)}
/* Unverified stylists still don't see the directory link in the slim phone header. */
body.pink-stylist-limited header nav #directory-nav-link{display:none!important}

/* §26 - PINK PICK splash, pinned card, distance, trusted reviewers */
body.pick-open{overflow:hidden}
.pick-splash{position:fixed;inset:0;z-index:3500;display:flex;align-items:center;justify-content:center;padding:16px}
.pick-backdrop{position:absolute;inset:0;background:rgba(36,34,32,.55);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}
.pick-card{position:relative;width:min(420px,100%);max-height:calc(100vh - 32px);overflow:auto;background:#fff;border-radius:22px;box-shadow:0 20px 60px rgba(36,34,32,.35);animation:pickIn .35s ease-out}
.pick-preview .pick-card{animation:none;box-shadow:0 4px 18px rgba(36,34,32,.12);width:min(360px,100%)}
@keyframes pickIn{from{transform:translateY(16px) scale(.98);opacity:0}to{transform:none;opacity:1}}
@media(prefers-reduced-motion:reduce){.pick-card{animation:none}}
.pick-close{position:absolute;top:10px;right:10px;z-index:2;width:40px;height:40px;border-radius:50%;border:0;background:rgba(255,255,255,.92);font-size:18px;font-weight:700;color:var(--ink);box-shadow:0 2px 8px rgba(0,0,0,.15)}
.pick-photo{position:relative;aspect-ratio:4/3;background:var(--pale);border-radius:22px 22px 0 0;overflow:hidden}
.pick-photo>img:first-child{width:100%;height:100%;object-fit:cover;object-position:center 30%}
.pick-logo{position:absolute;left:14px;bottom:14px;width:52px;height:52px;border-radius:50%;object-fit:cover;border:2px solid #fff;background:#fff}
.pick-ribbon{position:absolute;left:14px;top:14px;background:var(--verified);color:#fff;font-weight:800;font-size:12px;letter-spacing:.06em;text-transform:uppercase;padding:6px 12px;border-radius:999px;box-shadow:0 4px 14px rgba(224,33,138,.4)}
.pick-body{padding:16px 18px 18px}
.pick-body h2{font-size:26px;line-height:1.1;margin:0 0 4px}
.pick-meta{font-size:13px;color:#5b5350;margin:0 0 10px}
.pick-blurb{font-size:15px;margin:0 0 14px}
.pick-cta{width:100%;justify-content:center;min-height:48px}
.pick-later{display:block;margin:10px auto 0;color:#6b625e}
.pick-form{display:grid;gap:12px;max-width:560px;margin:12px 0 24px}
.pick-form label{display:grid;gap:4px;font-weight:700;font-size:14px}
.pick-form-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}
article.card.is-pink-pick{border:2px solid var(--verified);box-shadow:0 6px 22px rgba(224,33,138,.18)}
.card-pick-ribbon{position:absolute;z-index:3;top:8px;left:8px;background:var(--verified);color:#fff;font-weight:800;font-size:11px;letter-spacing:.05em;padding:4px 9px;border-radius:999px}
.card-distance{color:#5b5350;font-weight:600}
.distance-bar{font-size:13px;margin:-6px 0 12px;color:#4c4542}
.distance-bar .textbutton{font-size:13px;padding:0 2px}
.trusted-badge{display:inline-flex;align-items:center;font-size:11px;font-weight:800;padding:3px 8px;border-radius:999px;background:#fff4d6;color:#7a5600;margin-left:6px}
.trusted-strip{margin:26px 0 8px;border:1px solid var(--line);border-radius:16px;padding:14px 16px;background:#fff}
.trusted-strip h2{font-size:22px;margin:0 0 4px}
.trusted-strip ol{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:8px}
.trusted-strip li{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;font-size:14px}
.trusted-strip li .small{flex-basis:100%;padding-left:34px;color:#6b625e}
.trusted-rank{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--pink);font-weight:800;font-size:13px}
.trusted-me{background:#fff4d6;border-radius:10px;padding:8px 12px;font-size:14px}
/* §26c: "last updated" activity */
.card-activity{display:flex;align-items:center;gap:6px;font-size:12px!important;font-weight:600;color:#3f5a47!important;margin:-6px 0 10px!important}
.card-activity i{flex:none;width:8px;height:8px;border-radius:50%;background:#23794a}
.card-activity.is-week i,.card-activity.is-month i{background:#7aa886}
.card-activity.is-month{color:#5b5350!important}
.card-activity.is-older{color:#7a716d!important}.card-activity.is-older i{background:#c9c0bb}
.profile-activity{font-size:14px;color:#3f5a47;font-weight:600;margin:-4px 0 14px}
.profile-activity.is-older{color:#7a716d}
.dir-activity-note{margin:6px 0 0!important}
.status-pill.dormant{background:#efe9f7;color:#4d3a6b}
.status-pill.activity{background:#e6f3ea;color:#1f5a35}
.portal-activity{font-size:14px;background:#eef7f0;border-left:3px solid #23794a;padding:10px 12px;border-radius:4px;margin:0 0 14px}
.portal-activity.is-older{background:#f5f0fa;border-left-color:#8e6fc0}
/* §26c: optional photo quality check */
.pq-bar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 14px;background:#fff;border:1px dashed #d6cbc6;border-radius:12px;padding:10px 12px;margin:0 0 14px;font-size:14px}
.pq-bar p{margin:0;flex:1 1 220px}.pq-summary{font-weight:600}
.photo-quality{padding:8px 10px 0;font-size:13px}
.pq-check{border:1px solid #d6cbc6;background:#fff;border-radius:999px;padding:6px 12px;font:600 13px 'DM Sans',sans-serif;min-height:34px}
.pq-chip{display:inline-flex;flex-wrap:wrap;align-items:center;gap:2px 6px;padding:4px 10px;border-radius:12px;font-weight:700;font-size:13px;line-height:1.3;background:#f4f1ee;max-width:100%}
.pq-chip small{font-weight:500;color:#5b5350;white-space:nowrap}
.pq-tips{font-size:12px}
.pq-chip.is-great{background:#e6f3ea;color:#1f5a35}.pq-chip.is-ok{background:#fff3c4;color:#6b5200}.pq-chip.is-poor{background:#fde8e8;color:#8a1f1f}
.pq-tips{margin:6px 0 2px;padding-left:18px;color:#4a4340;line-height:1.4}.pq-tips li{margin:2px 0}
.pq-again{font-size:12px;padding:4px 0}
/* §27: one type scale and spacing system (tokens), used by the homepage and
   the page headings site-wide. Change a size here, not per page. */
:root{--fs-h1:26px;--lh-h1:1.15;--fs-h2:20px;--lh-h2:1.2;--fs-h3:17px;--fs-body:15px;--fs-small:13px;--fs-eyebrow:11px;--gutter:16px;--card-pad:12px;--btn-h:48px;--radius:14px;--radius-btn:999px;--content-max:1280px}
@media(min-width:900px){:root{--fs-h1:32px;--fs-h2:24px;--fs-h3:18px;--fs-body:16px;--fs-eyebrow:12px;--gutter:40px;--card-pad:16px}}
body{font-size:var(--fs-body)}
h1,.account-page h1,.directoryhead h1,#profile .profileinfo h1,#moderation .admin-top h1,.listing-head h1,#home h1{font-size:var(--fs-h1)!important;line-height:var(--lh-h1)!important;letter-spacing:-.03em}
h2,.account-page h2,#profile .profileinfo h2,.reviewsection h2,.saved-stylists-section h2,.reviewer-section h2,.empty h2,#moderation h2,.admin-wrap h2,#home h2{font-size:var(--fs-h2)!important;line-height:var(--lh-h2)!important;letter-spacing:-.02em}
h3,.cardbody h3,.account-page h3,.benefits h3{font-size:var(--fs-h3)}
.eyebrow{font-size:var(--fs-eyebrow)!important;letter-spacing:.14em;margin-bottom:8px}
.small,.form-status,.fieldnote,.review-note,.dir-privacy{font-size:var(--fs-small)}
.button{min-height:var(--btn-h);padding:0 22px;gap:8px;border-radius:var(--radius-btn);font-size:15px;line-height:1.2}
.button.dark{background:var(--ink);color:#fffcf8}
.textlink{font-size:14px;font-weight:600;color:var(--ink);text-decoration:underline;text-underline-offset:3px;padding:10px 4px;display:inline-block}
.textlink:hover{color:#a8155f}
/* §27: homepage */
#home{padding:0 var(--gutter) 40px}
.home-hero{display:grid;gap:18px;padding-top:14px;align-items:center}
.home-hero-copy{display:flex;flex-direction:column;gap:10px}
.home-hero-copy h1{margin:0}
.home-hero-copy h1 em{font-style:normal;background:linear-gradient(transparent 65%,var(--pink) 65%)}
.home-lead{margin:0;color:#4a4340;max-width:38ch}
.home-cta{align-self:flex-start;margin-top:4px}
.home-live{display:inline-flex;align-items:center;gap:6px;margin:2px 0 0;font-size:var(--fs-small);color:#4a4340}
.home-live b{font-weight:800;color:var(--ink)}
.home-live .live-heart{font-size:14px}
.home-hero-photo{position:relative;border-radius:var(--radius);overflow:hidden;background:var(--pale);aspect-ratio:6/5}
/* §29B: the models' tops (the PINKLIST branding) stay in frame: bottom-weighted on phones, the whole picture on desktop */
.home-hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 88%}
.home-badge{position:absolute;right:12px;top:12px;width:82px;height:82px;border-radius:50%;background:var(--pink);color:var(--ink);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;font-size:11px;font-weight:700;line-height:1.2;transform:rotate(8deg)}
.home-badge em{font:italic 18px 'Playfair Display',Georgia,serif}
.home-section{padding:26px 0 0}
.home-block{display:flex;flex-direction:column;gap:10px}
.home-block h2{margin:0}
.home-explore{display:grid;gap:22px}
.home-counties{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.home-county{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:var(--card-pad);display:flex;flex-direction:column;gap:2px;min-width:0}
.home-county strong{font:600 var(--fs-h1)/1.05 'Playfair Display',Georgia,serif;letter-spacing:-.02em}
.home-county.is-soon strong{font-size:var(--fs-h2);color:#a8155f}
.home-county span{font-size:var(--fs-small);color:#4a4340}
.home-chips{display:flex;flex-wrap:wrap;gap:8px}
.home-chip{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:1px solid #d6cbc6;border-radius:var(--radius-btn);background:#fff;font-size:14px;font-weight:600;color:var(--ink);text-decoration:none}
.home-chip b{font-weight:600;font-size:12px;color:#5b5350;background:#f4f1ee;border-radius:999px;padding:1px 7px}
.home-chip:hover,.home-chip:focus-visible{background:var(--pink);border-color:var(--ink)}
.home-chip.is-more{border-style:dashed}
.home-pick-eyebrow{color:#a8155f;margin:0 0 10px}
.home-pick-card{background:#fff;border:1.5px solid var(--verified);border-radius:var(--radius);overflow:hidden;display:grid}
.home-pick-photo{position:relative;display:block;aspect-ratio:4/3;background:var(--pale)}
.home-pick-photo img:not(.home-pick-logo){position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 25%;display:block}
.home-pick-logo{position:absolute;left:12px;bottom:12px;width:48px;height:48px;border-radius:50%;object-fit:cover;border:2px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.2)}
.home-pick-body{padding:var(--card-pad);display:flex;flex-direction:column;gap:6px}
.home-pick-body h2{margin:0;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.home-pick-body h2 a{text-decoration:none}
.home-pick-meta{margin:0;font-size:var(--fs-small);color:#5b5350}
.home-pick-blurb{margin:2px 0 4px;color:#3d3935}
.home-pick-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.home-pick-actions .button{flex:1 1 140px}
.home-share{border:1.5px solid var(--ink);background:#fff;color:var(--ink)}
.home-benefits{display:grid;gap:16px}
.home-benefit-list{display:grid;gap:8px;list-style:none;margin:0;padding:0}
.home-benefit{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:var(--card-pad);display:flex;flex-direction:column;gap:4px}
.home-benefit h3{margin:0;font-size:var(--fs-h3)}
.home-benefit p{margin:0;font-size:var(--fs-small);color:#4a4340}
.home-join{display:grid;gap:16px;background:var(--pale);border-radius:var(--radius);padding:var(--card-pad);margin-top:26px}
.home-join-intro{margin:0;color:#3d3935}
.price h2{margin:0}
.price{background:var(--paper);padding:var(--card-pad);border:1px solid #fff;border-radius:var(--radius);display:flex;flex-direction:column;gap:8px}
.amount{font:600 var(--fs-h2)/1.2 'Playfair Display',Georgia,serif;margin:0}
.amount span{font:14px 'DM Sans',sans-serif}
.price-note{margin:0;font-size:var(--fs-small);color:#4a4340}
.price ul{padding-left:18px;margin:4px 0 8px;display:flex;flex-direction:column;gap:4px;font-size:14px}
.price .button{width:100%}
.home-join-alt{margin:0;text-align:center}
footer{width:100%;padding:28px var(--gutter) 40px!important;display:flex!important;flex-direction:column;gap:4px;align-items:flex-start;border-top:1px solid var(--line)}
footer p{margin:0}
.footer-tagline{font-weight:600}
.footer-note{font-size:var(--fs-small);color:#5b5350}
@media(min-width:900px){
 #home{max-width:var(--content-max);margin:0 auto;padding:0 var(--gutter) 60px}
 .home-hero{grid-template-columns:1.1fr 1fr;gap:48px;padding-top:32px}
 .home-hero-copy{gap:14px}
 .home-hero-photo{aspect-ratio:5/4;border-radius:22px}
 .home-hero-photo img{object-position:center 100%}
 .home-hero{gap:56px;padding-top:24px}
 .home-badge{width:104px;height:104px;font-size:13px;right:18px;top:18px}
 .home-badge em{font-size:22px}
 .home-section{padding-top:44px}
 .home-explore{grid-template-columns:1fr 1fr;gap:40px;align-items:start}
 .home-pick-card{grid-template-columns:minmax(0,1fr) minmax(0,1.3fr)}
 .home-pick-photo{aspect-ratio:auto;min-height:300px;height:100%}
 .home-pick-body{padding:24px;justify-content:center}
 .home-pick-actions .button{flex:0 0 auto;min-width:160px}
 .home-benefit-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
 .home-benefit{gap:6px;padding:18px}
 .home-join{padding:32px;margin-top:44px;justify-items:center}
 .price{padding:28px;width:min(100%,560px);text-align:center}
 .price .button{width:auto;min-width:240px;margin:4px auto 0}
 footer{flex-direction:row;justify-content:space-between;align-items:center}
 footer p{max-width:var(--content-max)}
}
/* §27: map preview card (tap a pin) */
#pinklist-map{position:relative}
.map-preview{position:absolute;left:10px;right:10px;bottom:10px;z-index:1000;background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:0 12px 32px rgba(36,34,32,.22);padding:10px;display:grid;grid-template-columns:96px minmax(0,1fr);gap:10px;font-size:var(--fs-small)}
.map-preview.is-in{animation:mapPreviewIn .22s ease-out}
@keyframes mapPreviewIn{from{transform:translateY(12px);opacity:0}to{transform:none;opacity:1}}
@media(prefers-reduced-motion:reduce){.map-preview.is-in{animation:none}}
.map-preview-photo{position:relative;display:block;width:96px;height:112px;border-radius:10px;overflow:hidden;background:var(--pale)}
.map-preview-photo img:not(.card-logo){width:100%;height:100%;object-fit:cover;object-position:center 20%;display:block}
.map-preview-photo .card-logo{position:absolute;left:6px;bottom:6px;width:30px;height:30px;border-radius:50%;object-fit:cover;border:2px solid #fff}
.map-preview-body{display:flex;flex-direction:column;gap:3px;min-width:0;padding-right:28px}
.map-preview-body h3{margin:0;font:600 var(--fs-h3)/1.2 'Playfair Display',Georgia,serif;display:flex;align-items:center;gap:5px;flex-wrap:wrap}
.map-preview-body h3 a{text-decoration:none}
.map-preview-meta,.map-preview-rating{margin:0;color:#5b5350}
.map-preview-rating{font-weight:600;color:var(--ink)}.map-preview-upd{font-weight:500;color:#3f5a47}
.map-preview .chips span{font-size:11px}
.map-preview-actions{display:flex;gap:8px;align-items:center;margin-top:4px}
.map-preview-actions .button{min-height:40px;padding:0 16px;font-size:14px;flex:1 1 auto}
.map-preview-save{position:static!important;width:40px!important;height:40px!important;border:1px solid var(--line)!important;font-size:20px!important}
.map-preview-close{position:absolute;top:8px;right:8px;width:32px;height:32px;border:0;border-radius:50%;background:#f4f1ee;font-size:14px;cursor:pointer}
@media(min-width:900px){.map-preview{left:16px;right:auto;bottom:16px;width:400px;padding:12px;grid-template-columns:120px minmax(0,1fr)}.map-preview-photo{width:120px;height:140px}}

/* §28: one towns list: town picker, branches, Towns tab, homepage county links */
a.home-county{color:inherit;text-decoration:none}a.home-county:hover,a.home-county:focus-visible{border-color:var(--ink)}
.home-also{grid-column:1/-1;display:inline-flex;align-items:center;gap:8px;font-size:var(--fs-small);font-weight:600;color:#4a4340;text-decoration:underline;text-underline-offset:3px;min-height:32px}
.home-also b{font-weight:600;font-size:12px;background:#f4f1ee;border-radius:999px;padding:1px 7px}
.place-picker .place-field{position:relative}
.place-picker .place-search{width:100%;border:1px solid #d6cbc6;background:#fff;border-radius:7px;padding:13px 14px;font:inherit;min-height:48px}
.place-options{position:absolute;left:0;right:0;top:100%;z-index:30;margin:4px 0 0;padding:4px 0;list-style:none;background:#fff;border:1px solid #d6cbc6;border-radius:10px;box-shadow:0 12px 30px #0002;max-height:240px;overflow:auto}
.place-options li{padding:11px 14px;font-size:15px;cursor:pointer;display:flex;justify-content:space-between;gap:10px}
.place-options li small{color:#6b625e;font-size:12px}
.place-options li[aria-selected=true],.place-options li:hover{background:var(--pink)}
.place-options .place-none{color:#6b625e;font-size:13px;cursor:default}
.place-request{margin:6px 0 0;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.place-request input{flex:1 1 140px;min-height:40px;border:1px solid #d6cbc6;border-radius:7px;padding:8px 10px;font:inherit}
.place-request .textbutton{padding:4px 2px;font-size:13px}
.place-hint{display:block;font-size:12px;color:#6b625e;margin-top:6px;font-weight:400}
.place-fields{display:contents}
.branch-list{list-style:none;margin:6px 0 8px;padding:0;display:grid;gap:8px}
.branch-row{display:grid;grid-template-columns:1fr;gap:6px;padding:10px 12px;border:1px solid #e9ded8;border-radius:10px;background:#fff}
.branch-row strong{font-size:15px}
.branch-row input{width:100%;min-height:40px;border:1px solid #d6cbc6;border-radius:7px;padding:8px 10px;font:inherit}
.branch-actions,.admin-field .branch-actions{display:flex;gap:16px;margin:0;font-weight:400;font-size:13px}.branch-actions .textbutton{padding:4px 0;font-size:13px}
.branch-empty{color:#6b625e;margin:0}
.branch-picker{margin-top:8px;display:grid;gap:6px}
.claim-town{margin:0 0 16px}.claim-town label{display:block;font-weight:600;font-size:14px}.claim-town .place-picker{margin-top:6px;font-weight:400}
.claim-needs-town{margin:8px 0 0;color:#765400}
.stylist-create-fields .place-picker{margin-top:6px}
.place-add{background:#fff;border:1px solid #e5dad5;border-radius:10px;padding:18px;margin:18px 0}
.place-add h3{margin:0 0 12px}
.place-add-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.place-add-grid label{display:block;font-weight:600;font-size:13px}
.place-add-grid input,.place-add-grid select{display:block;width:100%;margin-top:6px;border:1px solid #d6cbc6;background:#fff;border-radius:7px;padding:12px 14px;font:inherit;font-weight:400;min-height:48px}
.place-add-wide{grid-column:1/-1}
.place-county{margin:18px 0 8px;font:600 15px 'DM Sans',sans-serif}
.place-rows{list-style:none;margin:0;padding:0;background:#fff;border:1px solid #e5dad5;border-radius:10px;overflow:hidden}
.place-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:12px 16px;border-bottom:1px solid #eee5e0;font-size:14px}
.place-row:last-child{border-bottom:0}.place-row.is-hidden{opacity:.55}
.place-row .small{margin:0;flex:1 1 auto}.place-actions{margin-left:auto}
@media(min-width:700px){.branch-row{grid-template-columns:140px 1fr auto;align-items:center}.place-add-grid{grid-template-columns:2fr 1fr 1fr 1fr}}
.bulk-town-warn{color:#a8155f;font-style:normal}
.home-pending{grid-column:1/-1;margin:0;color:#6b625e}

/* §29A2: checkboxes and radios are never full-width boxes, wherever the account page styles inputs */
.account-page input[type=checkbox],.account-page input[type=radio],.consent input[type=checkbox],.closure-form input[type=checkbox]{display:inline-block;width:18px;height:18px;min-height:0;padding:0;border:0;margin:3px 0 0;flex:0 0 auto;background:transparent}
.consent{display:flex!important;flex-direction:row!important;align-items:flex-start;gap:10px;line-height:1.45}
.consent>span,.consent>strong{flex:1 1 auto;min-width:0}
.map-preview-save[aria-pressed=true]{background:var(--pink)!important;color:var(--ink)!important;border-color:var(--ink)!important}
.account-page label>select,.account-page .signup-step select{display:block;width:100%;min-height:48px;padding:12px;border:1px solid #777;border-radius:4px;background:#fff;margin-top:6px;font:inherit}
/* §29A8: pills never fall back to the platform's blue button text (iOS) */
.auth-switch button,.view-toggle button,.dir-pill,.pill-link,.pill-tabs button,.home-chip,.listing-pills button{color:var(--ink)}
.auth-switch button.active,.view-toggle button.active,.dir-pill[aria-pressed=true]{color:var(--ink)}
/* §29B: signed-out chip preview ("11 stylists in Dartford" + join) */
.home-peek{position:fixed;inset:0;z-index:60;display:flex;align-items:flex-end;justify-content:center;background:#201b1a66;padding:var(--gutter)}
.home-peek-card{background:#fff;border-radius:var(--radius);padding:20px var(--card-pad);width:min(100%,420px);display:flex;flex-direction:column;gap:8px;box-shadow:0 20px 60px #0004}
.home-peek-card h2{margin:0;font-size:var(--fs-h2)}
.home-peek-card p{margin:0;color:#4a4340;font-size:var(--fs-body)}
.home-peek-card .button{width:100%;margin-top:6px}
.home-peek-alt{text-align:center;font-size:var(--fs-small)}
.home-peek-close{align-self:flex-end;border:0;background:transparent;font-size:22px;line-height:1;padding:0 2px;margin:-6px -4px 0 0;color:var(--ink)}
@media(min-width:900px){.home-peek{align-items:center}}
.auth-note{margin:10px 0 0;color:#5a5350}
/* §29D: the verified badge sits in the same spot on every card, whatever the name length */
.card-verified{position:absolute;top:12px;left:12px;z-index:2;display:inline-flex;align-items:center;gap:4px;padding:4px 9px 4px 6px;border-radius:999px;background:#fff;color:var(--ink);font-size:12px;font-weight:700;box-shadow:0 1px 4px #0002}
.card-verified .verified-badge{margin:0;width:14px;height:14px}
/* §29D: filter pills read darker; a stronger selected state; desktop "More filters" */
#directory .dir-pill{color:var(--ink)}
#directory .dir-pill[aria-pressed="true"]{background:var(--pink);border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink);font-weight:700}
#directory .dir-more{display:none}
@media(min-width:900px){
 #directory .dir-more{display:inline-flex;align-items:center;gap:6px;align-self:flex-end;margin-bottom:4px;min-height:36px;padding:0 12px;border:1px solid #d6cbc6;border-radius:999px;background:#fff;font:600 13px 'DM Sans',sans-serif;color:var(--ink);cursor:pointer}
 #directory .dir-more-count{background:var(--pink);border-radius:999px;padding:1px 7px;font-size:11px}
 #directory:not(.dir-more-open) .dir-group+.dir-group,#directory:not(.dir-more-open) .dir-more~.dir-group{display:none}
 #directory.dir-more-open .dir-more span[aria-hidden]{display:inline-block;transform:rotate(180deg)}
 #directory .dir-sheet-foot{align-self:flex-end}
}
.you-pin-wrap{display:flex;flex-direction:column;align-items:center;gap:2px}
.you-pin{width:16px;height:16px;border-radius:50%;background:#2a7de1;border:3px solid #fff;box-shadow:0 0 0 6px #2a7de133}
.you-pin-label{font:700 11px 'DM Sans',sans-serif;color:var(--ink);background:#fff;border-radius:999px;padding:2px 8px;box-shadow:0 1px 4px #0002;white-space:nowrap}
/* §29E: profile gallery (swipe on phones, arrows on desktop) and service pills */
.profile-gallery{position:relative;border-radius:var(--radius);overflow:hidden;background:var(--pale);aspect-ratio:1/1;max-height:62vh}
.profile-gallery .pg-track{display:flex;height:100%;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.profile-gallery .pg-track::-webkit-scrollbar{display:none}
.profile-gallery .pg-slide{flex:0 0 100%;height:100%;margin:0;scroll-snap-align:start;scroll-snap-stop:always}
.profile-gallery .pg-slide img{width:100%;height:100%;object-fit:cover;display:block}
.profile-gallery .pg-arrow{display:none;position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;border:0;background:#fffd;color:var(--ink);font-size:26px;line-height:1;box-shadow:0 2px 8px #0003;cursor:pointer}
.profile-gallery .pg-prev{left:10px}.profile-gallery .pg-next{right:10px}
.profile-gallery .pg-count{position:absolute;right:10px;top:10px;background:#fffd;border-radius:999px;padding:3px 9px;font-size:12px;font-weight:700}
.profile-gallery .pg-all{position:absolute;left:10px;bottom:10px;border:0;border-radius:999px;background:#fff;color:var(--ink);padding:8px 12px;font:700 13px 'DM Sans',sans-serif;box-shadow:0 2px 8px #0003;cursor:pointer}
.profile-gallery.is-single .pg-count,.profile-gallery.is-single .pg-arrow{display:none}
.profilephoto{display:none}
.service-pills{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 6px}
.service-pill{display:inline-flex;align-items:center;min-height:34px;padding:0 12px;border-radius:999px;background:var(--pink);color:var(--ink);font-size:14px;font-weight:600}
.service-price{margin:0 0 10px;font-size:var(--fs-small);color:#4a4340}
@media(min-width:900px){.profile-gallery{aspect-ratio:4/5;max-height:640px}.profile-gallery:not(.is-single) .pg-arrow{display:block}}
/* §29F: My account reads as clear sections: one divider between each, less text */
#account>section,#account>.reviewer-section,#account>#saved-stylists-section,#account>.account-closure,#account>#stylist-claim-section,#account>#account-listing{border-top:1px solid var(--line);padding-top:22px;margin-top:22px}
#account>section:first-of-type,#account>.account-greeting+p+section{border-top:0;padding-top:0;margin-top:0}
#account .account-signout{margin-top:22px}
/* §29F: My photos (grid) and Add new (its own card) read as two things */
.add-work{margin-top:22px;border:1px solid var(--line);border-radius:var(--radius);padding:var(--card-pad);background:#fff}
.add-work .add-title{margin:0 0 10px}
/* §29 follow-up: My account jump row, reviewer blocks, social sign-in, gallery dots */
.account-greeting{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:10px 16px}
.account-jump{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:4px 0 0}
.account-jump .pill-link{min-height:38px;padding:0 14px;font-size:14px}
.account-jump-out{font-size:14px;padding:6px 4px;color:#5a5350}
.reviewer-block{border:1px solid var(--line);border-radius:var(--radius);padding:var(--card-pad);margin:12px 0;background:#fff}
.reviewer-block h3{margin:0 0 10px;font:600 16px 'DM Sans',sans-serif}
.reviewer-block .verify-card,.reviewer-block .username-step{margin-top:10px}
.reviewer-block .username-step{border:0;padding:0}
.social-signin{display:grid;gap:8px;margin:8px 0 4px}
.social-btn{width:100%;background:#fff;border:1.5px solid var(--ink);color:var(--ink);font-weight:700;gap:8px}
.social-or{display:flex;align-items:center;gap:12px;margin:10px 0 4px;color:#6b625e;font-size:13px}
.social-or::before,.social-or::after{content:"";flex:1;height:1px;background:var(--line)}
.signup-social{margin:12px 0 18px}
.pg-dots{position:absolute;left:0;right:0;bottom:12px;display:flex;justify-content:center;gap:5px;pointer-events:none}
.pg-dots i{width:6px;height:6px;border-radius:50%;background:#fff9;box-shadow:0 0 2px #0006}
.pg-dots i.is-on{background:#fff;width:14px;border-radius:999px}
.profile-gallery.is-single .pg-dots{display:none}
@media(min-width:640px){.social-signin{grid-template-columns:repeat(3,1fr)}}
/* §30: import preview and admin "Needs details" chips */
.bulk-chips{display:inline-flex;flex-wrap:wrap;gap:4px;margin-top:4px}
.bulk-chip{display:inline-block;font:600 11px 'DM Sans',sans-serif;font-style:normal;background:#fff0c9;color:#765400;border-radius:999px;padding:2px 8px}
.bulk-chip.is-ok{background:#e4f3e9;color:#17663a}
.bulk-dup{display:block;margin-top:6px;font-size:13px}.bulk-dup label{margin-right:8px;font-weight:500}.bulk-dup input{width:auto;margin:0 3px 0 0}
.bulk-row b.dup{background:#fff0c9;color:#765400}.bulk-row b.hidden{background:#f1efee;color:#6b625e}.bulk-row b.new{background:#e4f3e9;color:#17663a}
.bulk-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.bulk-row{grid-template-columns:minmax(0,1fr) auto}.bulk-row>span{min-width:0}.bulk-row b{grid-column:auto;align-self:start;white-space:nowrap}
.bulk-row span.bulk-chips{display:flex;flex-wrap:wrap;gap:4px}.bulk-row span.bulk-dup{display:flex;flex-wrap:wrap;gap:2px 10px;align-items:center}.bulk-dup label{display:inline-flex;align-items:center;margin:0}.bulk-row span.bulk-dup-who{display:inline;font-style:normal}
@media(max-width:700px){.bulk-summary{grid-template-columns:1fr 1fr!important;gap:6px}.bulk-summary article{padding:12px}.bulk-summary article:last-child{grid-column:auto}.bulk-row{gap:8px}}
.admin-row .bulk-chips{margin:6px 0 0}
.admin-field.is-missing>span::after,.admin-field.is-missing>legend::after{content:" · missing";color:#a8155f;font-weight:700}
.admin-field.is-missing input,.admin-field.is-missing select,.admin-field.is-missing .place-search{border-color:#a8155f}
/* §30: Region > Area picker, addresses */
.place-steps{display:grid;gap:8px}
.account-area-row{flex-wrap:wrap}
.address-fields{border:0;padding:0;margin:0;display:grid;gap:8px}
.address-fields legend{display:block;font-weight:600;font-size:13px;margin-bottom:2px}
.address-fields input{width:100%;min-height:48px}
.address-fields .inline-check{margin:4px 0 0;font-size:14px}
.branch-address{grid-column:1/-1;font-size:13px}
.branch-address summary{cursor:pointer;color:#5a5350;padding:4px 0}
.branch-address input{width:100%;min-height:40px;margin-top:6px;border:1px solid #d6cbc6;border-radius:7px;padding:8px 10px;font:inherit}
.branch-address .inline-check{margin:8px 0 0;font-size:13px}
.admin-missing-note{grid-column:1/-1;margin:0}
.facts .address-fact .textlink{display:inline-block;margin-top:4px;font-weight:600;text-decoration:underline}
@media(min-width:700px){.place-steps{grid-template-columns:180px 1fr;align-items:start}.address-fields{grid-template-columns:1fr 1fr}.address-fields legend,.address-fields .inline-check,.address-fields .place-hint{grid-column:1/-1}.address-fields .address-postcode{max-width:200px}}
/* §31b Import review */
.status-pill.review{background:#eef0ff;color:#3b3f9e}
.review-pull{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 14px}.review-pull .form-status{margin:0;flex:1 1 220px}
.review-group{margin:0 0 22px}.review-group>h3{font-size:16px;margin:0 0 10px;display:flex;align-items:center;gap:8px}
.review-card{display:block}.review-card .admin-row-main{display:block}
.review-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}.review-head h3{margin:0 0 2px}.review-head small{color:#716864}
.review-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:10px 0}
.review-photo{margin:0;border:1px solid #e4dad5;border-radius:12px;overflow:hidden;background:#fff;display:flex;flex-direction:column;min-width:0}
.review-photo img,.review-photo video{width:100%;aspect-ratio:1;object-fit:cover;display:block;background:#f4efec}
.review-photo figcaption{padding:6px 8px 0;display:flex;flex-wrap:wrap;gap:4px;align-items:center}
.review-tag{font:600 11px 'DM Sans',sans-serif;background:#e4f3e9;color:#17663a;border-radius:999px;padding:2px 8px}.review-tag.needs{background:#fff0c9;color:#765400}
.review-cover-note{font-size:11px;color:#716864;font-style:normal}.review-photo.is-proposed-cover{outline:2px solid #ff4fa3;outline-offset:-2px}
.review-retag{padding:4px 8px;font-size:13px}.review-retag summary{cursor:pointer;color:#3b3f9e}.review-retag .tag-picker{margin-top:6px}.review-retag .pink-pill span{font-size:12px;padding:4px 8px}
.review-photo-actions{display:flex;gap:10px;padding:4px 8px 8px}
.review-diff{width:100%;border-collapse:collapse;font-size:13px;margin:8px 0}.review-diff th,.review-diff td{text-align:left;padding:6px 8px;border-bottom:1px solid #eee5e0;vertical-align:top;overflow-wrap:anywhere}.review-diff thead th{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:#716864}
.review-card .admin-actions{flex-wrap:wrap;gap:8px 12px}.review-card .admin-actions button[disabled]{opacity:.5;cursor:not-allowed}
.bulk-note{font-size:13px;color:#4d4542;margin:0 0 10px}
@media(max-width:700px){.review-photos{grid-template-columns:repeat(2,1fr);gap:8px}.review-diff{display:block;overflow-x:auto}}
/* §31 Policies */
.policies{margin:18px 0 12px;min-width:0}.policies h2{margin:0 0 8px}.profilegrid>.profileinfo{min-width:0}   /* the one-line summaries must be allowed to truncate, not widen the column */
.policy-list{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}.policy-row{min-width:0}
.policy-row{border:1px solid #e4dad5;border-radius:12px;background:#fff}.policy-row summary{list-style:none;display:flex;align-items:center;gap:10px;padding:10px 12px;cursor:pointer}.policy-row summary::-webkit-details-marker{display:none}
.policy-icon{font-size:18px;flex:0 0 auto}.policy-line{display:flex;flex-direction:column;min-width:0;flex:1 1 auto}.policy-line b{font-size:14px}.policy-line small{color:#5f5652;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.policy-chevron{color:#9a8f8a;transition:transform .15s;font-size:18px}.policy-row[open] .policy-chevron{transform:rotate(90deg)}.policy-row[open] .policy-line small{white-space:normal}
.policy-detail{padding:0 12px 12px 40px;font-size:14px;color:#3a3330}.policy-detail ul{margin:0;padding-left:16px}.policy-detail p{margin:0;white-space:pre-line}
.policy-foot{font-size:12px;color:#716864;margin:8px 0 0}
.policies-editor{min-width:0;max-width:100%}.policies-editor legend small{font-weight:400;color:#716864}
.pol-section{border:1px solid #e4dad5;border-radius:12px;margin:8px 0;background:#fff;min-width:0}.pol-section summary{list-style:none;display:flex;align-items:center;gap:8px;padding:10px 12px;cursor:pointer;font-size:14px}.pol-section summary::-webkit-details-marker{display:none}.pol-section summary small{color:#5f5652;margin-left:auto;text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:220px;min-width:0}
.pol-body{padding:0 12px 12px;display:grid;grid-template-columns:minmax(0,1fr);gap:10px}.pol-field>span{display:block;font-size:12px;font-weight:600;color:#4d4542;margin:0 0 4px}
.pol-stepper{display:inline-flex!important;align-items:center;gap:6px;width:auto}.pol-stepper button{display:inline-flex!important;align-items:center;justify-content:center;flex:0 0 36px;width:36px!important;height:36px;min-height:0;border-radius:999px;border:1px solid #d7cbc5;background:#fff;color:inherit;font-size:18px;line-height:1;padding:0;margin:0}.pol-stepper input{display:inline-block!important;flex:0 0 84px;width:84px!important;text-align:center;padding:8px 6px;min-width:0;margin:0}.pol-stepper small{color:#716864}
.pol-counter{display:block;text-align:right;color:#716864;font-size:12px;margin-top:2px}
.pol-yesno .pink-pill span{min-width:64px;text-align:center}
@media(max-width:700px){.pol-section summary small{max-width:140px}.policy-detail{padding-left:12px}}
/* §32 Kids welcome */
.card .tag.kids-tag{display:block;width:max-content;margin:4px 0 2px;padding:2px 8px;border-radius:999px;background:#eef7ff;color:#1f4f7a;letter-spacing:0;text-transform:none;font-size:11px}
.kids-badge{display:inline-flex;align-items:center;gap:6px;margin:4px 0 8px;padding:4px 10px;border-radius:999px;background:#eef7ff;color:#1f4f7a;font:600 13px 'DM Sans',sans-serif}
.kids-toggle{display:flex;align-items:center;gap:8px;font-weight:500}.kids-toggle input{width:20px;height:20px;margin:0;flex:0 0 auto}
.review-pull .button+.button{margin-left:0}
/* §33 policies in the import preview */
.bulk-row small.bulk-pol{color:#4d4542}.bulk-row small.bulk-pol-bad{color:#922b21}

/* §35: one clear Save control on the profile. A white pill on the gallery's top-left corner
   (the counter stays top-right, "See all work" bottom-left); pink when saved. With no photo it
   sits next to the name. Hidden for admins, stylists without directory access and the owner's Preview. */
.profile-save{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 18px;border:0;border-radius:999px;background:#fff;color:var(--ink);font:700 15px/1 'DM Sans',sans-serif;box-shadow:0 2px 8px #0003;cursor:pointer;white-space:nowrap;-webkit-tap-highlight-color:transparent}
.profile-save[aria-pressed=true]{background:var(--pink);color:var(--ink);box-shadow:0 0 0 1.5px var(--ink),0 2px 8px #0003}
.profile-save:focus-visible{outline:3px solid var(--ink);outline-offset:2px}
.profile-gallery .profile-save{position:absolute;left:10px;top:10px;z-index:2}
.profile-save-inline{margin:2px 0 12px;border:1px solid var(--line);box-shadow:none}
.profile-save-inline[aria-pressed=true]{border-color:var(--ink);box-shadow:none}
body.pink-admin-viewer .profile-save,body.pink-stylist-limited .profile-save,body.owner-preview .profile-save{display:none!important}
@media(min-width:900px){.profile-gallery .profile-save{left:14px;top:14px}}

/* §36: Import review. Progress line, a clearly locked "Approve & make live", a reason line, and a card at work. */
.review-progress{margin:0 0 14px;padding:10px 14px;border-radius:999px;background:#fff;border:1px solid var(--line);font-weight:700;font-size:14px;display:inline-block;max-width:100%}
.review-card .admin-actions .review-approve.is-blocked{background:#efebe8!important;color:#8a817d!important;border:1px dashed #b9b0ab!important;box-shadow:none!important;cursor:not-allowed}
.review-card .admin-actions .review-approve.is-blocked:hover{background:#efebe8!important}
.review-card .form-status.is-warn{color:#8a1f1f;font-weight:700}
.review-card.is-working{opacity:.6;pointer-events:none}
.review-card h3:focus{outline:none}.review-card h3:focus-visible{outline:2px solid var(--ink);outline-offset:3px}
.review-card .admin-actions button,.review-card .admin-actions a{min-height:44px}
/* §37: one searchable Area field with the region as a chip */
.place-combo{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.place-combo .place-field{flex:1 1 160px;min-width:0}
.place-picker .place-search{font-size:16px}
.place-chip{position:relative;flex:none;white-space:nowrap;display:inline-flex;align-items:center;gap:8px;min-height:44px;max-width:100%;padding:6px 14px;border:1px solid var(--ink);border-radius:999px;background:var(--pink);font-size:14px;font-weight:600;color:var(--ink)}
.place-chip[hidden]{display:none}
.place-chip-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.place-chip-edit{flex:none;font-weight:400;font-size:12px;text-decoration:underline;text-underline-offset:2px}
.place-chip select.place-region{position:absolute;inset:0;display:block;width:100%;height:100%;min-height:0;margin:0;padding:0;border:0;opacity:0;cursor:pointer;font-size:16px}
.place-chip:focus-within{outline:2px solid var(--ink);outline-offset:2px}
.place-options li{justify-content:flex-start;gap:4px}
.place-options li small{font-size:13px}
.account-area-title{font-weight:700;font-size:14px;margin:0 0 6px}
.account-area-row .place-picker{flex:1 1 240px;min-width:0}
.place-region-select{display:block;width:100%;min-height:48px;padding:12px 14px;border:1px solid #d6cbc6;border-radius:7px;background:#fff;font:inherit;color:var(--ink)}
.place-region-group{margin:0 0 8px}
.place-region-group>summary{cursor:pointer;padding:10px 0;list-style-position:inside}
.place-region-group>summary .small{font-weight:400;margin-left:6px}
.admin-field .place-chip{display:inline-flex;margin:0}
.admin-field .place-chip[hidden]{display:none}
.admin-field .place-chip span{display:inline;margin:0;font-size:inherit}
.admin-field .place-chip .place-chip-text{font-weight:600}
.admin-field .place-chip .place-chip-edit{font-weight:400;font-size:12px}
.home-elsewhere{grid-column:1/-1;margin:2px 0 0}
.home-elsewhere a{display:inline-flex;align-items:center;min-height:44px;font-size:var(--fs-small);color:#4a4340;text-decoration:underline;text-underline-offset:3px}
