/* Consistent public-page finish, with portal styling kept separate. */
body{color:#211e19;background:#f7f4ee}.skip-link{position:fixed;left:16px;top:-100px;z-index:2000;padding:12px 20px;background:#171714;color:white;border-radius:4px}.skip-link:focus{top:12px}.site-header nav a[aria-current=page]{color:#846431;font-weight:700}.catalogue-hero,.contact-hero,.legal-hero{background:#eee6d7;padding:52px max(24px,6vw) 38px}.catalogue-hero h1,.contact-hero h1,.legal-hero h1,.family-main h1,.title{font-family:Georgia,serif;letter-spacing:-.025em;line-height:1.15;font-size:clamp(36px,5vw,58px)}.catalogue-hero p,.contact-hero p{font-size:16px;line-height:1.8;color:#655c4e}.frame-card,.contact-card,.panel,.legal-card{border-radius:9px;box-shadow:0 4px 18px #231d1004;border-color:#e0d5c3}.frame-card{overflow:hidden}.frame-info{padding:20px!important}.frame-meta{gap:10px;flex-wrap:wrap}.frame-name{font-size:14px}.frame-price{font-size:14px;color:#866836}.frame-actions{gap:10px}.try-btn,.details-btn{min-height:46px;display:flex;align-items:center;justify-content:center;border-radius:4px;font-size:12px}.catalogue-controls{background:#fffdf8;border:1px solid #e0d5c3;padding:16px;border-radius:8px}.catalogue-note{border-radius:8px;font-size:13px;line-height:1.75}.frame-image{background:#eee9df}.catalogue-grid{gap:18px}.contact-card h2,.legal-card h2,.panel h2{font-family:Georgia,serif;font-weight:400;font-size:25px}.contact-card .info a{overflow-wrap:anywhere;min-height:32px}.quick a{border-radius:6px}.legal-card{padding:28px;line-height:1.8}.legal-nav a{font-size:13px;min-height:44px}.legal-note{border-radius:4px;font-size:13px}.legal-card h3{font-size:18px}.legal-card p,.legal-card li{font-size:14px}.ai-page{background:#f4f0e7;color:#211e19}.ai-hero{background:#22221c;min-height:460px}.ai-copy{padding:62px 9%;color:#fff}.ai-copy h1{font-family:Georgia,serif;line-height:1.05;font-size:clamp(44px,6vw,68px)}.ai-copy p{font-size:15px;color:#c9c2b3}.ai-art{background:linear-gradient(135deg,#25221a,#987b48)}.gate-wrap{margin:-45px auto 55px;max-width:1080px}.gate{border-radius:10px;box-shadow:0 10px 25px #2e241217;padding:30px;gap:28px}.gate h2{font-family:Georgia,serif;font-size:30px}.gate p{font-size:14px;line-height:1.8}.benefit{border-radius:5px;padding:15px;background:#faf7f0}.benefit strong{font-size:14px}.benefit span{line-height:1.6}.privacy-note{line-height:1.7}.qty button{width:44px!important;height:44px!important;min-height:44px;border-radius:4px}.remove{min-height:44px}.panel input{font-size:16px}.panel .notice{border-radius:5px}.shop-page .lead{line-height:1.8;font-size:15px}.page-footer{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;background:#191914;color:#c5bdad;padding:28px max(20px,5vw);font-size:12px}.page-footer a{color:#d6c7a6;margin-right:16px;display:inline-block;padding:8px 0}.page-footer strong{display:block;font-size:14px;letter-spacing:.12em}.page-footer small{display:block;margin-top:7px;font-size:11px}.family-main>p{line-height:1.75;color:#665b48}.family-card{box-shadow:0 4px 18px #231d1004}.family-demo{border-radius:6px;line-height:1.75}.family-card button,.family-card .button{border-radius:5px}.family-member input{margin-bottom:6px}.account-screen-copy p{max-width:550px;line-height:1.8}.account-panel form input{font-size:16px}.account-panel .account-switch{align-items:start}.account-panel .form-help{line-height:1.75}.booking-choice-card{box-shadow:0 6px 20px #291e0c05}.booking-choice-card b{color:#826330}.status-note{font-size:13px;line-height:1.75}
@media(max-width:760px){.catalogue-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.catalogue-controls{gap:10px}.catalogue-controls input,.catalogue-controls select{font-size:16px;min-width:0;width:100%}.ai-hero{grid-template-columns:1fr}.ai-copy{padding:40px 24px}.ai-art{min-height:190px}.gate-wrap{margin:-20px auto 36px;padding:0 16px}.gate{grid-template-columns:1fr;padding:24px 20px}.gate-actions{gap:12px}.contact-card{padding:24px 20px}.legal-card{padding:24px 20px}.catalogue-hero,.contact-hero,.legal-hero{padding:34px 20px 28px}.legal-wrap{padding:26px 16px 48px}.contact-wrap{padding-bottom:48px}.wrap{padding:32px 16px 48px}.frame-info{padding:15px!important}.frame-image{height:190px}.frame-actions{grid-template-columns:1fr!important}.frame-sub{font-size:12px;line-height:1.7}.frame-meta{display:block}.frame-name,.frame-price{display:block}.frame-price{margin-top:5px}.page-footer{display:block}.page-footer>div+div{margin-top:14px}}
@media(max-width:360px){.catalogue-grid{grid-template-columns:1fr}.frame-image{height:220px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;transition:none!important}}
.ai-page .ai-copy p{color:#d4cbbd!important}

/* 26 Oct 2026: one heading typeface across public pages (Playfair Display is loaded by styles.css; Georgia is unavailable on Android). */
:root{--heading-font:"Playfair Display",Georgia,serif}
body:not(.patient-workspace) :is(h1,h2),.feature h3,.title,.catalogue-hero h1,.contact-hero h1,.legal-hero h1,.family-main h1,.contact-card h2,.legal-card h2,.panel h2,.ai-copy h1,.gate h2{font-family:var(--heading-font)!important}

/* Frame photos come from OptoGalaxy Inventory; until a product has one, show a neutral tile rather than a drawing. */
.frame-image,.card-art{background:#efe9de}
.frame-photo-img{width:100%;height:100%;object-fit:contain;display:block;padding:14px;box-sizing:border-box;background:#f6f2ea}
.frame-photo-pending{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:linear-gradient(150deg,#f6f2ea 0%,#e9e1d2 100%);color:#2a251d;text-align:center}
.frame-photo-pending span{font-size:10px;letter-spacing:.34em;color:#9a7b45;font-weight:700}
.frame-photo-pending strong{font-family:var(--heading-font);font-weight:400;font-size:30px;letter-spacing:.02em;font-variant-numeric:lining-nums}
.frame-photo-pending small{font-size:11px;letter-spacing:.08em;color:#7d7262}
.frame-image .favourite{z-index:2}
.try-btn:disabled{background:#d8d2c7;border-color:#d8d2c7;color:#5e584e;cursor:not-allowed}
.gender-filters{display:contents}.gender-filters[hidden]{display:none}
.catalogue-empty{grid-column:1/-1;color:#6f6656;padding:24px 0}

/* Practice status (config.js practiceOpen). Without the setting, pages show the coming-soon wording. */
html:not([data-practice=open]) [data-when=open],html[data-practice=open] [data-when=coming-soon]{display:none!important}
