@import url('https://fonts.googleapis.com/css2?family=Gowun+Dodum&family=Manrope:wght@500;600;700;800&family=Noto+Sans+KR:wght@400;500;600;700;800&display=swap');

:root{--ink:#102e46;--ink-2:#173f5d;--paper:#f4f7f3;--card:#fff;--mint:#72f1c6;--mint-dark:#16a47f;--blue:#286f9e;--line:#cfdbd8;--muted:#647680;--error:#a63a32;--error-bg:#fff1ec;--shadow:0 20px 55px rgba(16,46,70,.10)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Noto Sans KR",sans-serif;font-size:16px;line-height:1.6}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}
.topbar{height:74px;padding:0 max(24px,calc((100vw - 1180px)/2));display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid rgba(16,46,70,.12);background:rgba(244,247,243,.9);backdrop-filter:blur(18px);position:sticky;top:0;z-index:20}.brand{display:flex;align-items:center;gap:11px;text-decoration:none;color:var(--ink);font-family:Manrope,"Noto Sans KR";font-weight:700;font-size:1.08rem}.brand b{color:var(--mint-dark)}.brand-mark{display:grid;place-items:center;width:35px;height:35px;border-radius:11px;background:var(--ink);color:var(--mint);font-size:18px;font-weight:800}.privacy-chip{display:flex;align-items:center;gap:8px;padding:8px 13px;border:1px solid var(--line);border-radius:100px;font-size:.8rem;color:var(--muted);background:#fff}.privacy-chip i{width:7px;height:7px;border-radius:50%;background:var(--mint-dark)}
.tabs{height:54px;display:flex;align-items:stretch;gap:28px;padding:0 max(24px,calc((100vw - 1180px)/2));border-bottom:1px solid var(--line);background:#fff}.tab{border:0;background:transparent;color:var(--muted);font-weight:600;padding:0 2px;position:relative}.tab.active{color:var(--ink)}.tab.active:after{content:"";height:3px;position:absolute;left:0;right:0;bottom:0;background:var(--mint-dark);border-radius:5px 5px 0 0}
main{max-width:1180px;margin:0 auto;padding:54px 24px 90px}.view{display:none}.view.active{display:block}.intro-row{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:32px}.eyebrow{margin:0 0 10px;color:var(--mint-dark);font-family:Manrope,sans-serif;font-size:.74rem;letter-spacing:.17em;font-weight:800}.intro-row h1,.page-heading h1{margin:0;font-family:"Gowun Dodum","Noto Sans KR";font-size:clamp(2.25rem,5vw,4.25rem);line-height:1.12;letter-spacing:-.05em;font-weight:400}.engine-status{padding:9px 14px;border-radius:100px;border:1px solid var(--line);background:#fff;color:var(--muted);font-size:.84rem}.engine-status span{display:inline-block;width:8px;height:8px;border-radius:50%;background:#c4a942;margin-right:6px}.engine-status.ready span{background:var(--mint-dark)}.engine-status.error span{background:var(--error)}
.capture-grid{display:grid;grid-template-columns:minmax(0,1.55fr) minmax(300px,.8fr);gap:22px}.camera-card,.prep-card{background:var(--card);border:1px solid var(--line);border-radius:26px;box-shadow:var(--shadow)}.camera-card{padding:14px}.camera-stage{position:relative;min-height:470px;overflow:hidden;border-radius:18px;background:#cfd9d4}.camera-stage video,.camera-stage img{position:absolute;inset:0;width:100%;height:100%;display:none}.camera-stage video{object-fit:cover}.camera-stage img{object-fit:contain;background:#d9e2dd;transform:translateY(var(--photo-y,0)) scale(var(--photo-zoom,1));transform-origin:center;transition:transform .15s ease}.camera-stage.live video,.camera-stage.previewing img{display:block}.camera-empty{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px;color:var(--ink)}.camera-empty strong{font-size:1.05rem;margin:18px 0 4px}.camera-empty span{font-size:.83rem;color:var(--muted)}.camera-stage.live .camera-empty,.camera-stage.previewing .camera-empty{display:none}.face-symbol{width:94px;height:119px;border:2px solid rgba(16,46,70,.28);border-radius:50% 50% 44% 44%}.face-guide{display:none;position:absolute;z-index:3;inset:50% auto auto 50%;width:240px;height:310px;transform:translate(-50%,-50%);border:2px solid rgba(114,241,198,.88);border-radius:49% 49% 43% 43%;box-shadow:0 0 0 999px rgba(4,23,33,.22)}.camera-stage.live .face-guide{display:block}.face-guide:before,.face-guide:after,.face-guide span:before,.face-guide span:after{content:"";position:absolute;background:var(--mint)}.face-guide:before,.face-guide:after{width:22px;height:3px;top:49%}.face-guide:before{left:-12px}.face-guide:after{right:-12px}.face-guide span:before,.face-guide span:after{height:22px;width:3px;left:50%}.face-guide span:before{top:-12px}.face-guide span:after{bottom:-12px}
.capture-panel-heading{display:none}
.capture-panel-mode #today:before{content:"";position:fixed;inset:0;z-index:29;background:rgba(9,31,43,.46);backdrop-filter:blur(3px)}.capture-panel-mode #today>.intro-row{display:none}.capture-panel-mode #today>.capture-grid{position:fixed;z-index:30;inset:50% auto auto 50%;display:grid!important;grid-template-columns:minmax(0,1fr);width:min(760px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto;transform:translate(-50%,-50%);padding:22px;background:#fff;border:1px solid #d7e5df;border-radius:24px;box-shadow:0 30px 90px rgba(6,28,42,.32)}.capture-panel-mode .capture-panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}.capture-panel-heading h2{margin:4px 0;font-size:1.45rem;letter-spacing:-.04em}.capture-panel-heading small{display:block;color:var(--muted);font-size:.76rem}.capture-panel-heading button{width:36px;height:36px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--ink);font-size:1.5rem;line-height:1}.capture-panel-mode .prep-card{display:none}.capture-panel-mode .camera-card{padding:0;border:0;box-shadow:none}.capture-panel-mode .camera-stage{min-height:min(53vh,500px)}.capture-panel-mode #progress,.capture-panel-mode #qualityError{position:fixed;z-index:31;left:50%;bottom:18px;width:min(730px,calc(100vw - 28px));transform:translateX(-50%);margin:0;box-shadow:0 15px 45px rgba(6,28,42,.2)}
.capture-actions{display:flex;gap:9px;margin:13px 0}.button{min-height:48px;border:0;border-radius:13px;padding:0 18px;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-weight:700;text-decoration:none}.button.primary{width:100%;background:var(--ink);color:#fff;justify-content:space-between;padding:0 22px}.button.primary:hover{background:var(--ink-2)}.button.secondary{background:#e6eeea;color:var(--ink)}.button.ghost{border:1px solid var(--line);background:#fff;color:var(--ink)}.button.compact{width:auto;min-height:44px}.prep-card{padding:36px}.step-label{margin:0;color:var(--blue);font-family:Manrope,sans-serif;font-size:.75rem;font-weight:800;letter-spacing:.12em}.prep-card h2{font-family:"Gowun Dodum","Noto Sans KR";font-size:2rem;line-height:1.3;font-weight:400;letter-spacing:-.04em;margin:8px 0 25px}.check-list{list-style:none;padding:0;margin:0}.check-list li{display:flex;gap:15px;padding:17px 0;border-top:1px solid var(--line)}.check-list li>span{font-family:Manrope;color:var(--mint-dark);font-size:.78rem;font-weight:800}.check-list b,.check-list small{display:block}.check-list b{font-size:.95rem}.check-list small{color:var(--muted);font-size:.78rem;margin-top:3px}.quality-note{margin-top:22px;padding:16px;background:#e8f5ef;border-radius:14px;color:#315d50;font-size:.8rem}
.progress-panel,.notice{margin-top:22px;border-radius:18px;padding:20px 24px;background:#fff;border:1px solid var(--line);display:flex;align-items:center;gap:16px}.progress-panel[hidden],.notice[hidden]{display:none}.progress-panel b,.progress-panel span{display:block}.progress-panel span{color:var(--muted);font-size:.82rem}.spinner{width:33px;height:33px;border:3px solid #d9e3df;border-top-color:var(--mint-dark);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.notice.error{display:block;background:var(--error-bg);border-color:#ecc2ba;color:var(--error)}.notice.error ul{margin:8px 0 0;padding-left:20px;font-size:.9rem}
.result-section{margin-top:58px}.result-section[hidden]{display:none}.section-heading{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:20px}.section-heading h2{font-family:"Gowun Dodum","Noto Sans KR";font-size:2.1rem;font-weight:400;line-height:1.25;margin:0;letter-spacing:-.04em}.section-heading>span{font-size:.82rem;color:var(--muted)}.focus-card{display:grid;grid-template-columns:1fr auto;gap:25px;align-items:center;background:var(--ink);color:#fff;border-radius:25px;padding:34px 38px;box-shadow:var(--shadow)}.focus-region{display:inline-block;background:var(--mint);color:var(--ink);padding:5px 10px;border-radius:100px;font-size:.75rem;font-weight:800}.focus-copy h3{font-family:"Gowun Dodum","Noto Sans KR";font-size:2.15rem;font-weight:400;margin:12px 0 5px}.focus-copy p{color:#c9d9e1;margin:0;max-width:620px}.trend-message{margin-top:16px;font-size:.84rem;color:var(--mint)}.focus-state{min-width:150px;text-align:center;border-left:1px solid rgba(255,255,255,.2);padding-left:28px}.focus-state span,.focus-state small{display:block;color:#a9bec8;font-size:.75rem}.focus-state strong{display:block;color:var(--mint);font-size:1.4rem;margin:5px 0}.region-results{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:14px 0 22px}.region-card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px}.region-card h3{font-size:.9rem;margin:0 0 12px}.metric-row{display:flex;align-items:center;justify-content:space-between;font-size:.8rem;margin:8px 0}.metric-row b{font-size:.76rem}.metric-row b.stable{color:var(--mint-dark)}.metric-row b.watch{color:#a27618}.metric-row b.care{color:var(--error)}.medical-note{font-size:.76rem;color:var(--muted);margin:12px 0}
.result-dashboard{margin:0 0 45px}.dashboard-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:18px}.dashboard-head h2{font-family:"Gowun Dodum","Noto Sans KR";font-size:2.2rem;line-height:1.2;font-weight:400;margin:0}.dashboard-head p:not(.eyebrow){margin:6px 0 0;color:var(--muted);font-size:.86rem}.result-schema{font:600 .7rem Manrope;color:var(--muted);padding:6px 9px;border:1px solid var(--line);border-radius:100px}.overview-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.overview-card{min-height:142px;padding:18px;background:#fff;border:1px solid var(--line);border-radius:18px}.overview-card span,.overview-card small{display:block;color:var(--muted);font-size:.75rem}.overview-card strong{display:block;margin:10px 0 5px;font-size:1.35rem;line-height:1.25}.overview-card strong em{font-size:.8rem;font-style:normal;margin-left:2px}.overview-card.quality strong{color:#a27618}.overview-card.quality.passed strong{color:var(--mint-dark)}.focus-mini strong{font-size:1rem}.metric-dashboard-section{margin-top:18px;padding:23px;background:#e8f0ed;border-radius:22px}.dashboard-section-head{display:flex;justify-content:space-between;gap:20px;align-items:baseline;margin-bottom:15px}.dashboard-section-head h3,.proxy-summary h3{margin:0;font-size:1.05rem}.dashboard-section-head small{color:var(--muted);font-size:.74rem}.metric-dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.dashboard-metric{padding:16px;background:#fff;border:1px solid #d7e2de;border-radius:14px}.dashboard-metric>div{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:.72rem}.dashboard-metric h4{margin:9px 0 3px;font-size:.92rem}.dashboard-metric>strong{font:700 1.3rem Manrope}.dashboard-metric>strong small{font:500 .72rem "Noto Sans KR";color:var(--muted)}.dashboard-metric p{margin:5px 0 0;color:var(--muted);font-size:.67rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.metric-status{font-size:.68rem}.metric-status.good{color:var(--mint-dark)}.metric-status.watch{color:#a27618}.metric-status.alert{color:var(--error)}.proxy-summary{display:grid;grid-template-columns:.8fr 1.2fr;gap:25px;margin-top:18px;padding:22px 24px;border:1px dashed #9db2aa;border-radius:19px;background:#fff}.proxy-summary p:not(.eyebrow){margin:5px 0 0;color:var(--muted);font-size:.76rem}.proxy-list{display:grid;grid-template-columns:repeat(2,1fr);gap:0 16px}.proxy-list div{display:flex;justify-content:space-between;gap:8px;padding:8px 0;border-bottom:1px solid var(--line);font-size:.74rem}.proxy-list b{font-family:Manrope}
.face-map-section{margin-top:18px;padding:23px;background:#fff;border:1px solid var(--line);border-radius:22px}.face-map-layout{display:grid;grid-template-columns:minmax(310px,.75fr) 1fr;gap:26px;align-items:center}.face-map{position:relative;width:min(100%,330px);aspect-ratio: .72;margin:auto;border:2px solid #bed0c8;border-radius:47% 47% 43% 43% / 39% 39% 55% 55%;background:linear-gradient(130deg,#eff5f2,#dce8e2);box-shadow:inset 0 -26px 45px rgba(94,135,119,.10)}.face-map:before,.face-map:after{content:"";position:absolute;top:32%;width:44px;height:15px;border-bottom:2px solid #8ca99d;border-radius:50%}.face-map:before{left:23%}.face-map:after{right:23%}.face-region{position:absolute;border:1px solid rgba(16,46,70,.18);background:rgba(255,255,255,.82);color:var(--ink);border-radius:10px;padding:5px 7px;font-size:.67rem;font-weight:700;box-shadow:0 3px 10px rgba(16,46,70,.08)}.face-region:hover,.face-region:focus-visible,.face-region.selected{background:var(--ink);border-color:var(--ink);color:#fff;outline:none}.region-forehead{top:13%;left:50%;transform:translateX(-50%)}.region-glabella{top:30%;left:50%;transform:translateX(-50%)}.region-eye_left{top:38%;left:4%}.region-eye_right{top:38%;right:4%}.region-cheek_left{top:55%;left:2%}.region-cheek_right{top:55%;right:2%}.region-lip{top:68%;left:50%;transform:translateX(-50%)}.region-chin{bottom:8%;left:50%;transform:translateX(-50%)}.face-map-detail{min-height:265px;padding:25px;background:#f0f6f3;border-radius:17px}.face-map-detail h4{margin:3px 0 16px;font-size:1.25rem}.face-map-detail>p:not(.eyebrow){color:var(--muted);font-size:.82rem}.face-detail-metric{display:grid;grid-template-columns:1fr auto;gap:3px 10px;padding:12px 0;border-top:1px solid #d5e2dc;font-size:.8rem}.face-detail-metric b{font-family:Manrope}.face-detail-metric b small,.face-detail-metric>small{font-size:.7rem;color:var(--muted)}.face-detail-metric>small{grid-column:1/-1}.face-map-note{margin-top:16px!important;padding-top:12px;border-top:1px solid #d5e2dc;font-size:.72rem!important}
.report-head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:26px}.report-head h2{margin:0;font-family:"Gowun Dodum","Noto Sans KR";font-size:clamp(2.2rem,4vw,3.7rem);letter-spacing:-.05em;line-height:1.1}.report-head p:not(.eyebrow){margin:7px 0 0;color:var(--muted)}.report-actions{display:flex;align-items:center;gap:14px}.report-actions time{font-size:.8rem;color:var(--muted)}.face-map{overflow:hidden}.face-map>img{position:absolute;z-index:0;inset:0;width:100%;height:100%;object-fit:cover;object-position:center top;opacity:.92}.face-map:before,.face-map:after{z-index:1}.face-map .face-region{z-index:2}.face-photo-note{position:absolute;right:16px;bottom:15px;z-index:3;padding:4px 8px;border-radius:99px;background:rgba(255,255,255,.88);font-size:.67rem;color:var(--muted)}.face-research{margin-top:14px;padding-top:12px;border-top:1px solid #d5e2dc;font-size:.75rem}.face-research>span{display:block;color:var(--blue);font-weight:800;margin-bottom:4px}.face-research div{display:flex;justify-content:space-between;padding:3px 0}.skin-profile,.research-section,.trend-placeholder{margin-top:18px;padding:24px;background:#fff;border-radius:20px;box-shadow:0 8px 28px rgba(16,46,70,.05)}.profile-rows{display:grid;gap:12px}.profile-rows>div{display:grid;grid-template-columns:100px 1fr 70px 70px;align-items:center;gap:12px;font-size:.82rem}.profile-rows i{display:block;height:8px;background:#e8efec;border-radius:99px;overflow:hidden}.profile-rows i b{display:block;height:100%;background:var(--mint-dark);border-radius:99px}.profile-rows strong{font-size:.75rem;color:var(--mint-dark)}.profile-rows small{color:var(--muted);font-size:.7rem}.research-section h3 span{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:99px;background:#e5f2fb;color:#3677a0;font:600 .64rem Manrope;vertical-align:middle}.text-button{border:0;background:transparent;color:var(--blue);font-size:.78rem;font-weight:700}.research-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.research-cards article{position:relative;min-height:128px;padding:16px;border:1px solid #dfeae6;border-radius:14px}.research-cards span,.research-cards small{display:block;color:var(--muted);font-size:.72rem}.research-cards strong{display:block;margin:14px 0 3px;font:700 1.5rem Manrope}.research-cards em{position:absolute;right:11px;top:11px;padding:2px 6px;border-radius:99px;background:#e5f2fb;color:#3677a0;font:600 .57rem Manrope;font-style:normal}.research-info{margin-top:14px;padding:13px 15px;background:#f2f7f5;border-radius:11px;font-size:.76rem}.research-info p{margin:4px 0 0;color:var(--muted)}.trend-placeholder{display:grid;grid-template-columns:1fr 1fr;align-items:end}.trend-placeholder h3{margin:0;font-size:1.1rem}.trend-placeholder p:not(.eyebrow){max-width:440px;margin:6px 0 0;color:var(--muted);font-size:.8rem}.trend-line{position:relative;display:flex;justify-content:space-between;align-items:end;padding-top:30px;border-top:1px solid #b9cbc4;color:var(--muted);font-size:.68rem}.trend-line i{position:absolute;top:-5px;left:0;width:10px;height:10px;border-radius:50%;background:var(--mint-dark)}.trend-line b{color:var(--ink)}.report-mode main{padding-top:20px}.report-mode .result-section{margin-top:0}.report-mode #today>.intro-row,.report-mode #today>.capture-grid,.report-mode #today>#progress,.report-mode #today>#qualityError{display:none}
.result-dashboard{display:grid;grid-template-columns:minmax(0,1.85fr) minmax(270px,1fr);gap:16px}.report-head,.metric-strip,.research-section,.trend-placeholder{grid-column:1/-1}.report-head{order:1}.face-map-section{order:2;grid-column:1;margin:0}.report-aside{order:3;grid-column:2;display:grid;grid-template-columns:1fr!important;gap:16px;align-content:start}.metric-strip{order:4}.skin-profile:not(.metric-strip){order:5;grid-column:1/-1}.research-section{order:6}.trend-placeholder{order:7}.report-aside .overview-card{min-height:0;box-shadow:0 8px 28px rgba(16,46,70,.05);border:0}.report-aside .focus-mini{background:#fff7f3}.report-aside .text-button{margin-top:10px;padding:0}.face-map-layout{grid-template-columns:1fr!important}.face-map{width:min(100%,520px);aspect-ratio:1.15;margin:0 auto}.face-map-detail{min-height:0}.metric-strip{padding:0;box-shadow:none;overflow-x:auto}.metric-strip .profile-rows{display:flex;min-width:max-content;gap:0;background:#fff;border-radius:18px;padding:10px}.metric-strip button{width:145px;min-height:88px;padding:8px 14px;border:0;border-right:1px solid #e4ece8;background:#fff;text-align:left}.metric-strip button:last-child{border:0}.metric-strip i{margin:8px 0}.strip-value{display:block;margin:9px 0 3px;font:700 1.2rem Manrope;color:var(--ink)}
.before-after,.ai-summary{grid-column:1/-1;background:#fff;border-radius:18px;padding:22px;box-shadow:0 8px 28px rgba(16,46,70,.05)}.before-after{order:8}.before-after h3,.ai-summary h3{margin:0;font-size:1.1rem}.before-after h3 span{margin-left:7px;padding:3px 8px;border-radius:99px;background:#edf2f0;color:var(--muted);font-size:.65rem}.before-after p:not(.eyebrow){margin:6px 0 0;color:var(--muted);font-size:.8rem}.ai-summary{order:9;display:grid;grid-template-columns:1.25fr repeat(4,1fr);gap:16px}.ai-summary article{border-left:1px solid #e4ece8;padding-left:14px}.ai-summary article b,.ai-summary article span{display:block}.ai-summary article b{font-size:.8rem}.ai-summary article span{margin-top:6px;color:var(--muted);font-size:.75rem}
.trend-points{height:130px!important;display:flex;align-items:end;gap:18px;padding:14px 0 0!important;border-top:1px solid #c8d9d1}.trend-points article{display:grid;grid-template-rows:auto 1fr auto;align-items:end;flex:1;height:100%;padding:0!important;box-shadow:none!important}.trend-points i{display:block;width:100%;background:#7ccbbb;border-radius:8px 8px 0 0}.trend-points span{margin-top:6px;color:#647680;font-size:.7rem}
/* Preserve native React results nested in AssessmentWorkspace; hide only obsolete legacy siblings. */
#result > :not(.result-dashboard):not(.dsr-measurement-workspace):not(#beginRoutine):not(.medical-note){display:none}
.result-dashboard{display:block!important;max-width:1280px;margin:0 auto 60px!important}.ds-header{display:flex;justify-content:space-between;align-items:end;margin:8px 0 20px}.ds-header p{margin:0;color:#159b83;font:800 .7rem Manrope;letter-spacing:.16em}.ds-header h2{margin:5px 0;font-size:2.2rem;letter-spacing:-.06em}.ds-header span,.ds-header time{color:#647680;font-size:.85rem}.ds-hero{display:grid;grid-template-columns:1.85fr 1fr;gap:16px}.ds-face{position:relative;height:470px;overflow:hidden;border-radius:18px;background:#e8eeea}.ds-face>img{width:100%;height:100%;object-fit:contain;object-position:center;filter:saturate(.88)}.ds-overlay{position:absolute;pointer-events:none}.ds-overlay button{position:absolute;z-index:2;border:0;background:none;color:white;font-weight:700;font-size:1.1rem;text-shadow:0 1px 5px #17323d;pointer-events:auto}.ds-overlay span{font-size:.75rem}.ds-overlay button:nth-child(1){top:16%;left:48%}.ds-overlay button:nth-child(2){top:39%;left:16%}.ds-overlay button:nth-child(3){top:39%;right:12%}.ds-overlay button:nth-child(4){top:58%;left:13%}.ds-overlay button:nth-child(5){top:58%;right:10%}.ds-overlay button:nth-child(6){bottom:15%;left:48%}.ds-hero aside{display:grid;gap:16px}.ds-hero aside section{padding:25px;background:#fff;border-radius:18px;box-shadow:0 8px 28px rgba(16,46,70,.06)}.ds-hero b,.ds-hero strong,.ds-hero span{display:block}.ds-hero strong{margin:10px 0;font-size:1.45rem;color:#2f8c7c}.ds-hero span{color:#647680;font-size:.82rem}.ds-focus{background:#fff6f3!important}.ds-focus button{margin-top:16px;border:0;background:none;color:#123746;font-weight:800}.ds-strip{display:flex;overflow:auto;margin:16px 0;padding:10px;background:#fff;border-radius:18px}.ds-strip button{min-width:145px;padding:8px 18px;border:0;border-right:1px solid #e3ece8;background:#fff;text-align:left}.ds-strip b,.ds-strip span{display:block}.ds-strip i{display:block;height:8px;margin:8px 0;background:#e4ece9;border-radius:9px}.ds-strip em{display:block;height:100%;background:#2f8c7c;border-radius:9px}.ds-strip strong{font-size:1.25rem}.ds-detail,.ds-future article,.ds-ai{padding:24px;background:#fff;border-radius:18px;box-shadow:0 8px 28px rgba(16,46,70,.05)}.ds-detail header{display:flex;justify-content:space-between;align-items:center}.ds-detail h3,.ds-future h3,.ds-ai h3{margin:0}.ds-detail nav{display:flex;gap:7px}.ds-detail nav button{border:1px solid #d8e5df;background:#fff;border-radius:99px;padding:7px 12px}.ds-detail-body{margin-top:16px}.ds-future{display:grid;grid-template-columns:1.2fr .8fr;gap:16px;margin-top:16px}.ds-future p{color:#647680}.ds-future div{padding:25px 0 5px;border-top:1px solid #c8d9d1;color:#647680;font-size:.75rem}.ds-future small{padding:4px 8px;border-radius:99px;background:#edf2f0;color:#647680}.ds-ai{display:grid;grid-template-columns:1.2fr repeat(4,1fr);gap:14px;margin-top:16px}.ds-ai article{border-left:1px solid #e2ebe7;padding-left:14px}.ds-ai b,.ds-ai span{display:block}.ds-ai span{margin-top:6px;color:#647680;font-size:.78rem}
@media(max-width:850px){.ds-hero{grid-template-columns:1fr}.ds-face{height:440px}.ds-hero aside{grid-template-columns:1fr 1fr}.ds-ai{grid-template-columns:repeat(2,1fr)}.ds-ai>div{grid-column:1/-1}.ds-future{grid-template-columns:1fr}}@media(max-width:520px){.ds-header{display:block}.ds-header time{display:block;margin-top:8px}.ds-hero aside{grid-template-columns:1fr}.ds-face{height:390px}.ds-detail header{display:block}.ds-detail nav{overflow:auto;margin-top:12px}.ds-ai{grid-template-columns:1fr}.ds-ai article{border-left:0;border-top:1px solid #e2ebe7;padding:12px 0}.ds-strip{margin-left:-15px;margin-right:-15px;border-radius:0}.ds-future article{padding:18px}}
.research-results{margin:0 0 22px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fff}.research-results h3{margin:0 0 10px;font-size:1rem}.research-results>div{display:grid;grid-template-columns:1fr auto;gap:4px 12px;padding:9px 0;border-top:1px solid var(--line);font-size:.85rem}.research-results b{text-align:right}.research-results small{grid-column:1/-1;color:var(--muted);font-size:.72rem}
.page-heading{margin-bottom:28px}.page-heading h1{font-size:3rem}.empty-state{padding:70px 30px;background:#fff;border:1px dashed #adc0ba;border-radius:24px;text-align:center}.empty-state strong,.empty-state span{display:block}.empty-state span{color:var(--muted);font-size:.9rem;margin-top:5px}.history-list{display:grid;gap:12px}.history-item{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px 22px;display:flex;justify-content:space-between;align-items:center}.history-item time{font-size:.78rem;color:var(--muted)}.history-item b{display:block;margin-top:4px}.history-item span{font-size:.82rem;color:var(--muted)}
.routine-builder{display:grid;grid-template-columns:220px 1fr;gap:45px;background:var(--ink);border-radius:28px;color:#fff;padding:50px}.routine-builder>div{display:flex;align-items:flex-start}.routine-builder .number{font-family:Manrope;font-size:7rem;font-weight:800;line-height:.85;color:var(--mint)}.routine-builder>div small{font-family:Manrope;margin:4px 0 0 5px}.routine-builder h2{font-family:"Gowun Dodum";font-size:2.2rem;font-weight:400;margin:0}.routine-builder p{color:#bfd0d8}.routine-builder label{display:block;font-size:.82rem;margin:18px 0}.routine-builder select,.routine-builder textarea{width:100%;display:block;margin-top:7px;border:1px solid #49657a;background:#173f5d;color:#fff;border-radius:12px;padding:12px}.routine-builder .primary{background:var(--mint);color:var(--ink)}.active-routine{background:#fff;border:1px solid var(--line);border-radius:26px;padding:32px}.routine-top{display:flex;justify-content:space-between;gap:20px}.routine-progress{height:9px;border-radius:10px;background:#e0e8e4;overflow:hidden;margin:20px 0}.routine-progress i{display:block;height:100%;background:var(--mint-dark)}
footer{max-width:1180px;margin:0 auto;padding:25px 24px 40px;border-top:1px solid var(--line);display:flex;justify-content:space-between;color:var(--muted);font-size:.75rem}
@media(max-width:850px){.capture-grid{grid-template-columns:1fr}.camera-stage{min-height:430px}.region-results{grid-template-columns:repeat(2,1fr)}.overview-grid{grid-template-columns:repeat(2,1fr)}.face-map-layout{grid-template-columns:1fr}.face-map{width:300px}.metric-dashboard-grid{grid-template-columns:repeat(2,1fr)}.routine-builder{grid-template-columns:1fr;padding:32px}.routine-builder>div{display:none}.focus-card{grid-template-columns:1fr}.focus-state{text-align:left;border-left:0;border-top:1px solid rgba(255,255,255,.2);padding:18px 0 0}.focus-state span,.focus-state strong,.focus-state small{display:inline;margin-right:8px}.privacy-chip{display:none}}
@media(max-width:520px){.topbar{height:64px}.tabs{gap:18px;overflow-x:auto}.tab{white-space:nowrap}main{padding:35px 15px 70px}.intro-row{display:block}.engine-status{display:inline-block;margin-top:18px}.camera-stage{min-height:390px}.prep-card{padding:25px}.capture-actions{display:grid;grid-template-columns:1fr 1fr}.dashboard-head,.dashboard-section-head{display:block}.result-schema{display:inline-block;margin-top:10px}.overview-grid,.metric-dashboard-grid,.proxy-list{grid-template-columns:1fr}.proxy-summary{grid-template-columns:1fr;padding:19px}.focus-card{padding:26px 23px}.region-results{grid-template-columns:1fr}.section-heading{align-items:flex-start}.section-heading h2{font-size:1.65rem}.routine-builder{padding:25px 20px}footer{display:block;padding-left:15px}footer span{display:block;margin:4px 0}}
@media(max-width:520px){.report-head{display:block}.report-actions{margin-top:15px;justify-content:space-between}.face-map-section,.skin-profile,.research-section,.trend-placeholder{padding:18px}.profile-rows>div{grid-template-columns:58px 1fr 55px;gap:7px}.profile-rows small{display:none}.research-cards{grid-template-columns:repeat(2,1fr)}.trend-placeholder{grid-template-columns:1fr;gap:23px}.trend-line{padding-top:22px}.face-map{width:280px}}

/* Result evidence drawer */
.metric-row{width:100%;padding:7px 8px;margin:5px 0;border:0;border-radius:9px;background:transparent;color:var(--ink);text-align:left}
.metric-row:hover,.metric-row:focus-visible{background:#edf5f1;outline:none}
.metric-row span:after{content:"  ›";color:var(--mint-dark);font-weight:800}
.evidence-dialog{width:min(680px,calc(100vw - 28px));max-height:88vh;padding:0;border:1px solid var(--line);border-radius:24px;background:#fff;color:var(--ink);box-shadow:0 30px 90px rgba(6,28,42,.28)}
.evidence-dialog::backdrop{background:rgba(7,28,41,.62);backdrop-filter:blur(4px)}
.dialog-head{position:sticky;top:0;z-index:2;display:flex;justify-content:space-between;align-items:center;padding:24px 28px 20px;background:#fff;border-bottom:1px solid var(--line)}
.dialog-head h2{font-family:"Gowun Dodum";font-size:1.8rem;font-weight:400;margin:0}
.dialog-close{width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:#fff;color:var(--ink);font-size:1.5rem;line-height:1}
.dialog-body{padding:25px 28px 30px}.dialog-body section{margin:0 0 28px}.dialog-body h3{font-size:.94rem;margin:0 0 8px}.dialog-body p{font-size:.88rem;color:var(--muted);margin:0}
.evidence-summary{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.evidence-summary div{padding:16px;border-right:1px solid var(--line)}.evidence-summary div:last-child{border:0}.evidence-summary span,.evidence-summary strong{display:block}.evidence-summary span{font-size:.72rem;color:var(--muted)}.evidence-summary strong{font-size:1rem;margin-top:3px}
.probability-bars{display:grid;gap:8px;margin-top:18px}.probability-row{display:grid;grid-template-columns:56px 1fr 44px;align-items:center;gap:9px;font-size:.75rem}.bar-track{height:8px;background:#e5ece9;border-radius:10px;overflow:hidden}.bar-track i{display:block;height:100%;background:#9ab2aa;border-radius:10px}.probability-row.selected{font-weight:700;color:var(--mint-dark)}.probability-row.selected .bar-track i{background:var(--mint-dark)}
.process-list{list-style:none;padding:0;margin:0;border-top:1px solid var(--line)}.process-list li{display:grid;grid-template-columns:135px 1fr;gap:15px;padding:13px 0;border-bottom:1px solid var(--line);font-size:.8rem}.process-list span{color:var(--muted)}
.quality-evidence>div{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.quality-chip{padding:10px;border-radius:10px;background:#edf5f1;font-size:.74rem}.quality-chip b{display:block;color:var(--mint-dark)}
.limits-note{padding:17px 18px;border-radius:14px;background:#f3f0e8}.limits-note b{font-size:.8rem}.limits-note p{font-size:.77rem;margin-top:4px}
@media(max-width:520px){.dialog-head{padding:18px 19px 14px}.dialog-body{padding:20px 19px}.evidence-summary{grid-template-columns:1fr}.evidence-summary div{border-right:0;border-bottom:1px solid var(--line);padding:11px 14px}.evidence-summary span,.evidence-summary strong{display:inline;margin-right:8px}.process-list li{grid-template-columns:1fr;gap:2px}.quality-evidence>div{grid-template-columns:repeat(2,1fr)}}

/* A real Vertex request is explicitly user-triggered; this is not a simulated AI badge. */
.ds-ai>div{position:relative}.ds-ai>div small{display:block;margin-top:5px;color:#647680;font-size:.68rem;line-height:1.45}.ai-generate{display:inline-flex;align-items:center;justify-content:center;margin-top:10px;border:1px solid #b7d9cf;border-radius:99px;background:#edf8f4;color:#166e60;padding:6px 10px;font-size:.72rem;font-weight:800}.ai-generate:hover{background:#dff4ec}

/* STEP 7E: user-managed device photos, never retained by the web app. */
.local-comparison-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.local-comparison-head button{border:0;background:transparent;color:#647680;font-size:.7rem;text-decoration:underline}.local-comparison{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:13px}.local-comparison figure{position:relative;margin:0;overflow:hidden;border-radius:10px;background:#e8eeea;aspect-ratio:1.35}.local-comparison img{display:block;width:100%;height:100%;object-fit:cover}.local-comparison figcaption{position:absolute;left:8px;bottom:8px;padding:3px 7px;border-radius:99px;background:rgba(255,255,255,.9);font-size:.66rem;color:#173f5d}.local-photo-note{display:block;margin-top:10px;color:#647680;font-size:.68rem;line-height:1.45}
.compare-picker{display:inline-flex;margin-top:9px;border:1px solid #b7d9cf;border-radius:99px;background:#edf8f4;color:#166e60;padding:7px 11px;font-size:.74rem;font-weight:800;cursor:pointer}
.report-capture-actions{display:flex;gap:8px;margin-left:auto}.report-capture-actions button{border:1px solid #b7d9cf;border-radius:99px;background:#fff;color:#173f5d;padding:8px 12px;font-size:.76rem;font-weight:800}.report-capture-actions button:first-child{background:#173f5d;color:#fff;border-color:#173f5d}
.photo-frame-controls{display:grid;grid-template-columns:1.2fr 1fr 1fr auto;align-items:center;gap:12px;margin-top:12px;padding:12px 14px;border-radius:14px;background:#edf5f1;color:var(--ink)}.photo-frame-controls[hidden]{display:none}.photo-frame-controls b,.photo-frame-controls small{display:block}.photo-frame-controls small{margin-top:2px;color:var(--muted);font-size:.7rem;line-height:1.4}.photo-frame-controls label{display:grid;gap:3px;font-size:.7rem;font-weight:700}.photo-frame-controls input{accent-color:var(--mint-dark)}.photo-frame-controls button{border:1px solid var(--line);background:#fff;border-radius:10px;padding:7px 9px;color:var(--ink);font-size:.7rem;font-weight:700}
@media(max-width:850px){.photo-frame-controls{grid-template-columns:1fr 1fr}.photo-frame-controls>div{grid-column:1/-1}}@media(max-width:520px){.photo-frame-controls{grid-template-columns:1fr}.photo-frame-controls>div{grid-column:auto}}
@media(max-width:520px){.capture-panel-mode #today>.capture-grid{padding:16px;width:calc(100vw - 16px);max-height:calc(100dvh - 16px)}.capture-panel-mode .camera-stage{min-height:42vh}.capture-panel-mode #qualityError{bottom:8px;width:calc(100vw - 16px)}.capture-panel-heading h2{font-size:1.2rem}}
@media(max-width:520px){.local-comparison{gap:6px}.local-comparison-head{align-items:flex-start}.local-comparison-head h3{font-size:1rem}}
@media(max-width:520px){.report-capture-actions{margin:12px 0 0}.report-capture-actions button{padding:8px 10px}}

/* Smartphone photos are the dashboard's source format: portrait 3:4, not a landscape crop. */
.ds-hero{grid-template-columns:minmax(310px,430px) minmax(300px,410px);justify-content:start}.ds-face{width:min(100%,430px);height:auto;aspect-ratio:3 / 4;justify-self:center}
.capture-panel-mode .camera-card{display:grid;justify-items:center}.capture-panel-mode .camera-stage{width:min(100%,390px);min-height:0;height:auto;aspect-ratio:3 / 4}.capture-panel-mode .capture-actions,.capture-panel-mode .photo-frame-controls,.capture-panel-mode #analyze{width:min(100%,620px)}
.ds-hero{grid-template-columns:minmax(310px,430px) minmax(420px,1fr);justify-content:stretch}.ds-hero aside{grid-template-rows:1fr 1fr}.ds-hero aside section{display:flex;flex-direction:column}.ds-quality-card ul{display:grid;grid-template-columns:1fr 1fr;gap:9px 18px;padding:0;margin:14px 0 0;list-style:none;color:#315d50;font-size:.82rem}.ds-quality-card small{margin-top:auto;padding-top:14px;border-top:1px solid #e2ebe7;color:#647680;font-size:.76rem}.ds-focus p{margin:12px 0 0;color:#647680;font-size:.8rem;line-height:1.55}.ds-focus button{margin-top:auto}
@media(max-width:850px){.ds-hero{grid-template-columns:1fr}.ds-face{width:min(100%,430px);height:auto}}
@media(max-width:520px){.ds-face{width:min(100%,360px);height:auto}.capture-panel-mode .camera-stage{width:min(100%,330px)}}

/* STEP 7F — layout and touch behavior across tablet and mobile widths. */
body{overflow-x:hidden}.ds-detail nav,.tabs,.ds-strip{scrollbar-width:thin}
@media(max-width:900px){main{padding:38px 20px 76px}.ds-header{align-items:flex-start;flex-wrap:wrap;gap:12px}.report-capture-actions{margin-left:0;flex-wrap:wrap}.ds-hero{grid-template-columns:1fr}.ds-hero aside{grid-template-columns:1fr 1fr;grid-template-rows:none}.ds-hero aside section{min-height:230px}.ds-face{width:min(100%,430px)}.ds-detail header{gap:14px}.ds-detail nav{max-width:100%;overflow-x:auto;padding-bottom:3px}.ds-detail nav button{flex:0 0 auto}.ds-ai{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-ai>div{grid-column:1/-1}.report-capture-actions button,.ds-detail nav button,.compare-picker{min-height:42px}}
@media(max-width:600px){main{padding:27px 15px 64px}.topbar{padding:0 15px}.tabs{padding:0 15px;gap:22px}.ds-header h2{font-size:1.8rem}.report-capture-actions{width:100%;gap:6px}.report-capture-actions button{flex:1 1 auto;padding:8px 9px}.ds-hero aside{grid-template-columns:1fr}.ds-hero aside section{min-height:0}.ds-face{width:min(100%,360px)}.ds-strip{margin-left:-15px;margin-right:-15px;border-radius:0}.ds-detail,.ds-future article,.ds-ai{padding:18px}.ds-detail header{display:block}.ds-detail nav{margin-top:12px}.ds-ai{grid-template-columns:1fr}.ds-ai article{border-left:0;border-top:1px solid #e2ebe7;padding:12px 0}.local-comparison{grid-template-columns:1fr}.photo-frame-controls{padding:12px}.capture-panel-mode .capture-actions{grid-template-columns:1fr 1fr}.capture-panel-mode .capture-actions .button:last-child{grid-column:1/-1}.capture-panel-mode #analyze{min-height:52px}}

/* Result Layer v1 dashboard: ROI markers are data-driven, never child-order driven. */
.ds-overlay button{top:var(--roi-y);left:var(--roi-x);right:auto!important;bottom:auto!important;transform:translate(-50%,-50%)}
.ds-strip small{display:block;margin-top:4px;color:#647680;font-size:.72rem}
.ds-quality-card.is-failed strong{color:#b85a4e}
.ds-research{margin-top:16px;padding:24px;background:#fff;border-radius:18px;box-shadow:0 8px 28px rgba(16,46,70,.05)}
.ds-research header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.ds-research h3{margin:0}.ds-research p{margin:7px 0 0;color:#647680;font-size:.78rem}
.ds-research-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:16px}
.ds-research-cards article{padding:14px;border:1px solid #e2ebe7;border-radius:12px}
.ds-research-cards b,.ds-research-cards strong,.ds-research-cards span{display:block}
.ds-research-cards strong{margin:8px 0;color:#123746;font-size:1.25rem}
.ds-research-cards span{color:#647680;font-size:.75rem}
.ds-research #researchInfo{margin-top:14px;padding-top:10px;border-top:1px solid #e2ebe7;font-size:.82rem}
@media(max-width:600px){.ds-research{padding:18px}.ds-research header{display:block}.ds-research-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* PHASE 2 — consumer-facing Result Dashboard information architecture. */
.result-dashboard{max-width:1220px!important;margin:0 auto 26px!important}
.ds-header{margin:12px 0 26px}.ds-header h2{font-size:clamp(2.2rem,4vw,3.35rem);letter-spacing:-.07em}.ds-header p,.ds-area header>div>p,.ds-progress header p,.ds-research header p,.ds-ai>div>p{margin:0 0 7px;color:#168b79;font:800 .68rem Manrope;letter-spacing:.15em}.ds-header time{align-self:flex-end}
.ds-today{display:grid;grid-template-columns:minmax(300px,39%) 1fr;gap:24px;align-items:start}.ds-face.ds-overview-photo{width:100%;height:auto;min-height:470px;aspect-ratio:3/4;border-radius:20px;background:#edf1ee;box-shadow:none}.ds-face>img,.ds-area-face>img{filter:saturate(.92)}
.ds-today-summary{display:grid;grid-template-columns:1fr 168px;grid-template-rows:auto auto;align-content:start;gap:14px;padding:22px;border:1px solid #dfe7e2;border-radius:20px;background:#fff}.ds-focus{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;grid-column:1/2;background:#123746!important;color:#fff;padding:22px;border-radius:15px}.ds-focus b,.ds-focus strong,.ds-focus span{color:inherit}.ds-focus strong{margin:7px 0 3px;font-size:1.55rem;color:#fff}.ds-focus span{font-size:.84rem;color:#c4d8d2}.ds-focus button{flex:0 0 auto;margin:0;padding:8px 0;color:#b6e7da}.ds-quality-card{padding:19px!important;border-radius:15px!important;box-shadow:none!important;background:#f2f7f4!important}.ds-quality-card b{font-size:.78rem}.ds-quality-card strong{font-size:1.1rem!important;margin:9px 0!important}.ds-quality-card small{font-size:.73rem!important;line-height:1.5}.ds-metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));grid-column:1/-1;border-top:1px solid #e3ebe6;padding-top:14px}.ds-metric-grid button{min-width:0;padding:8px 13px 12px;border:0;border-right:1px solid #e7ede9;background:transparent;text-align:left}.ds-metric-grid button:last-child{border-right:0}.ds-metric-grid b,.ds-metric-grid small,.ds-metric-grid strong,.ds-metric-grid span{display:block}.ds-metric-grid b{font-size:.88rem}.ds-metric-grid small{margin-top:4px;color:#70817b;font-size:.72rem}.ds-metric-grid strong{margin-top:10px;color:#123746;font:800 1.1rem Manrope}.ds-metric-grid strong i{font-style:normal;font-size:.75rem;color:#6e817a}.ds-metric-grid span{margin-top:4px;font-size:.73rem;color:#2b8d7b}.ds-metric-grid em{display:block;position:relative;height:5px;margin-top:10px;border-radius:99px;background:#e6eeea}.ds-metric-grid em:after{content:"";position:absolute;left:0;top:0;width:var(--metric-width);height:100%;border-radius:inherit;background:#2f9984}
.ds-area,.ds-progress{margin-top:24px;padding:26px;border:1px solid #dfe7e2;border-radius:20px;background:#fff}.ds-area header,.ds-progress header{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.ds-area h3,.ds-progress h3{margin:0;font-size:1.35rem}.ds-area nav{flex-wrap:wrap;justify-content:flex-end}.ds-area-body{display:grid;grid-template-columns:minmax(260px,.7fr) 1fr;gap:26px;margin-top:20px}.ds-area-face{position:relative;min-height:330px;overflow:hidden;border-radius:16px;background:#eef2ef}.ds-area-face>img{width:100%;height:100%;object-fit:contain}.ds-area-face small{position:absolute;left:12px;bottom:12px;padding:5px 8px;border-radius:8px;background:rgba(255,255,255,.9);color:#587068;font-size:.68rem}.ds-area .ds-detail-body{margin:0;padding:7px 0}.ds-area .face-detail-metric{padding:15px 0;font-size:.9rem}.ds-area .face-research{margin-top:17px}
.ds-progress header span{display:block;margin-top:6px;color:#6c7c76;font-size:.82rem}.ds-progress-body{display:grid;grid-template-columns:1.2fr .8fr;gap:18px;margin-top:18px}.ds-progress-body>article{min-height:235px;padding:22px;border:1px solid #e2eae5;border-radius:16px;background:#fbfcfb;box-shadow:none}.ds-progress-body .trend-points{height:150px!important}.ds-before-after h3{font-size:1.1rem}.ds-before-after .compare-picker{margin-top:14px}.local-comparison{gap:10px}.local-comparison figure{margin:0}.local-comparison img{height:180px;object-fit:cover}
.ds-research{border:1px solid #dfe7e2;box-shadow:none}.ds-research header span{display:block;max-width:650px;margin-top:7px;color:#6c7c76;font-size:.78rem}.ds-research-cards{grid-template-columns:repeat(4,minmax(0,1fr))}.ds-research-cards article{background:#fbfcfb}.ds-ai{grid-template-columns:1.25fr repeat(3,1fr);border:1px solid #dfe7e2;box-shadow:none}.ds-ai>div small{line-height:1.5}.ds-ai article{padding:2px 0 2px 16px}.ds-ai article b{font-size:.86rem}.ds-ai article span{line-height:1.5}.result-section>#beginRoutine{display:block;margin:0 auto;padding:13px 24px;border-radius:12px}.result-section>.medical-note{text-align:center;margin-top:12px}
@media(max-width:900px){.ds-today{grid-template-columns:minmax(280px,38%) 1fr}.ds-today-summary{grid-template-columns:1fr}.ds-focus{grid-column:auto}.ds-metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.ds-area-body,.ds-progress-body{grid-template-columns:1fr}.ds-area-face{max-width:400px}.ds-research-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.ds-header{margin-bottom:18px}.ds-header time{margin-top:10px}.ds-today{grid-template-columns:1fr;gap:14px}.ds-face.ds-overview-photo{width:min(100%,360px);min-height:0;margin:auto}.ds-today-summary{padding:14px}.ds-focus{padding:18px}.ds-focus strong{font-size:1.3rem}.ds-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-metric-grid button:nth-child(2n){border-right:0}.ds-area,.ds-progress{padding:18px;margin-top:16px}.ds-area header{display:block}.ds-area nav{margin-top:14px;justify-content:flex-start}.ds-area-body{gap:16px}.ds-area-face{min-height:300px}.ds-progress-body>article{min-height:0;padding:17px}.ds-research{margin-top:16px}.ds-ai{grid-template-columns:1fr}.ds-ai article{border-left:0;padding:13px 0;border-top:1px solid #e2ebe7}}

/* PHASE 2: Area, Progress, local comparison, research, and AI explanation */
.ds-area,.ds-progress,.ds-research,.ds-ai,.ds-routine-cta{margin-top:48px;border-color:#e1e8e4;box-shadow:none}.ds-area>header,.ds-progress>header{padding-bottom:18px;border-bottom:1px solid #e7ede9}.ds-area header>div>p,.ds-progress header p,.ds-research header p,.ds-ai>div>p{color:#287e70;letter-spacing:.1em}.ds-area h3,.ds-progress h3,.ds-research h3,.ds-ai h3{letter-spacing:-.03em}.ds-area nav button{border-radius:99px;border:1px solid #d9e5df;background:#fff;color:#365a52;padding:8px 13px}.ds-area nav button.selected{border-color:#123746;background:#123746;color:#fff}.ds-detail-body .eyebrow{margin:0;color:#287e70;font-size:.75rem;font-weight:800}.ds-detail-body h4{margin:5px 0 14px;font-size:1.45rem}.face-detail-metric{border-top-color:#e5ece8}.face-detail-metric b{color:#123746}.face-research{background:#f5f8f6;border:0;border-radius:12px;padding:14px}.face-research>span{color:#3c7e72}.face-map-note{color:#788882!important}.progress-controls{display:flex;gap:10px;align-items:end}.progress-controls label{display:grid;gap:5px;color:#667871;font-size:.7rem;font-weight:800}.progress-controls select{min-width:125px;border:1px solid #dce6e1;border-radius:9px;background:#fff;color:#15394a;padding:8px 10px;font:700 .8rem "Noto Sans KR"}.trend-chart{padding-top:16px}.trend-chart svg{display:block;width:100%;height:180px}.trend-chart line{stroke:#dce7e2;stroke-width:1}.trend-chart path{fill:none;stroke:#2d9984;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.trend-chart circle{fill:#fff;stroke:#2d9984;stroke-width:3}.trend-labels{display:flex;justify-content:space-between;gap:6px;margin-top:8px}.trend-labels span{display:grid;gap:3px;color:#70817b;font-size:.72rem;text-align:center}.trend-labels b{color:#163c4d;font-size:.86rem}.trend-labels small{font-size:.68rem;font-weight:600}.ds-before-after>p{max-width:420px;color:#697a74;line-height:1.55}.compare-picker{display:inline-flex;align-items:center;margin:14px 0 8px;border:1px solid #b7d9cf;border-radius:99px;background:#f5fbf8;color:#176c5d;padding:9px 13px;font-size:.78rem;font-weight:800;cursor:pointer}.local-comparison{grid-template-columns:1fr 1fr}.local-comparison img{height:230px;border-radius:12px;object-fit:cover}.local-comparison figcaption{margin-top:8px;color:#567068;font-size:.75rem}.ds-research header h3 small{border-radius:99px;background:#e7f3f5;color:#39788b;padding:3px 7px;font-size:.65rem}.ds-research .text-button{border:1px solid #c9ddd6;border-radius:99px;color:#176c5d;padding:8px 12px}.ds-research-cards article{background:#fbfcfb}.ds-research-cards strong{font-size:1.38rem}.ds-ai{display:grid;grid-template-columns:1.2fr repeat(4,minmax(0,1fr));gap:18px;padding:25px}.ds-ai>div small{max-width:260px}.ds-ai article{min-width:0}.ds-ai article span{margin-top:7px;color:#60736b;font-size:.8rem;line-height:1.55}.ai-generate{margin-top:14px}.ds-routine-cta{display:grid;grid-template-columns:1fr auto;gap:22px;align-items:center;padding:25px 28px;border:1px solid #dce8e2;border-radius:18px;background:linear-gradient(110deg,#f5faf7,#fff)}.ds-routine-cta h3{margin:0;font-size:1.2rem}.ds-routine-cta p{margin:7px 0 0;color:#647680;font-size:.84rem}.ds-routine-cta #beginRoutine{margin:0;white-space:nowrap}.ds-routine-cta .medical-note{grid-column:1/-1;margin:0;color:#73837c;font-size:.72rem}
@media(max-width:900px){.progress-controls{width:100%;margin-top:12px}.ds-ai{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-ai>div{grid-column:1/-1}.ds-routine-cta{margin-top:28px}}
@media(max-width:600px){.ds-area,.ds-progress,.ds-research,.ds-ai,.ds-routine-cta{margin-top:28px}.progress-controls{align-items:stretch;flex-direction:column}.progress-controls label{width:100%}.progress-controls select{width:100%}.trend-chart svg{height:155px}.trend-labels{overflow-x:auto;justify-content:flex-start}.trend-labels span{min-width:56px}.local-comparison{grid-template-columns:1fr}.local-comparison img{height:220px}.ds-research-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.ds-ai{padding:20px}.ds-routine-cta{grid-template-columns:1fr;padding:21px}.ds-routine-cta #beginRoutine{width:100%}}


/* =========================================================
   DASHBOARD V3 — one face, all official assessments, visual-first
   ========================================================= */
.result-dashboard{display:block!important;max-width:1220px!important;margin:0 auto 28px!important}
.dsv3-header{display:flex;justify-content:space-between;align-items:flex-end;gap:22px;margin:12px 0 24px}.dsv3-header p,.dsv3-assessments>header p,.dsv3-detail>header p,.dsv3-research>header p,.dsv3-progress>header p,.dsv3-ai>header p{margin:0 0 6px;color:#287e70;font:800 .69rem Manrope;letter-spacing:.12em}.dsv3-header h2{margin:0;font-size:clamp(2.25rem,4vw,3.45rem);letter-spacing:-.07em}.dsv3-header span,.dsv3-header time{color:#687b74;font-size:.82rem}.dsv3-header-side{display:grid;justify-items:end;gap:10px}
.dsv3-overview{display:grid;grid-template-columns:minmax(320px,40%) 1fr;gap:22px;align-items:stretch}.dsv3-photo-card,.dsv3-profile-card,.dsv3-assessments,.dsv3-detail,.dsv3-research,.dsv3-progress,.dsv3-ai{background:#fff;border:1px solid #dde7e2;border-radius:22px}.dsv3-photo-card{overflow:hidden}.dsv3-photo-stage{position:relative;aspect-ratio:3/4;background:#e9eeeb;overflow:hidden}.dsv3-photo-stage>img{display:block;width:100%;height:100%;object-fit:contain;filter:saturate(.92)}.dsv3-roi-layer{position:absolute;inset:0}.dsv3-roi-marker{position:absolute;left:var(--roi-x);top:var(--roi-y);transform:translate(-50%,-50%);display:flex;align-items:center;gap:7px;pointer-events:none}.dsv3-roi-marker i{display:block;width:10px;height:10px;border:2px solid #fff;border-radius:50%;background:#2a8e7d;box-shadow:0 2px 10px rgba(10,38,45,.35)}.dsv3-roi-marker.is-selected i{width:14px;height:14px;background:#123746;box-shadow:0 0 0 6px rgba(255,255,255,.76),0 5px 18px rgba(10,38,45,.35)}.dsv3-roi-marker b{padding:5px 9px;border-radius:99px;background:rgba(18,55,70,.9);color:#fff;font-size:.72rem;white-space:nowrap;box-shadow:0 4px 14px rgba(10,38,45,.2)}.dsv3-photo-meta{display:flex;justify-content:space-between;gap:12px;padding:14px 16px}.dsv3-photo-meta span{font-weight:800;font-size:.8rem}.dsv3-photo-meta small{color:#71827c;font-size:.69rem;text-align:right}
.dsv3-profile-card{padding:24px}.dsv3-profile-card>header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}.dsv3-profile-card h3{margin:0;font-size:1.55rem;letter-spacing:-.04em}.dsv3-profile-card header p{margin:0 0 5px;color:#287e70;font:800 .68rem Manrope;letter-spacing:.12em}.dsv3-quality{padding:7px 10px;border-radius:99px;background:#f2f6f4;color:#697b74;font-size:.72rem;font-weight:800;white-space:nowrap}.dsv3-quality.is-passed{background:#e9f6f1;color:#15715f}.dsv3-quality.is-failed{background:#fff0ec;color:#9e443a}.dsv3-profile-body{display:grid;grid-template-columns:minmax(270px,1fr) 170px;gap:18px;align-items:center;margin-top:12px}.dsv3-radar{width:100%;max-height:300px}.dsv3-radar .grid{fill:none;stroke:#dce7e2;stroke-width:1}.dsv3-radar line{stroke:#e4ebe7;stroke-width:1}.dsv3-radar .value{fill:rgba(40,142,125,.17);stroke:#288e7d;stroke-width:2.5}.dsv3-radar circle{fill:#fff;stroke:#288e7d;stroke-width:2}.dsv3-radar text{fill:#365e55;font:700 11px "Noto Sans KR"}.dsv3-profile-stats{display:grid;gap:10px}.dsv3-profile-stats div{padding:13px 12px;border:1px solid #e2ebe6;border-radius:14px;background:#fbfcfb}.dsv3-profile-stats strong,.dsv3-profile-stats span{display:block}.dsv3-profile-stats strong{font:800 1.35rem Manrope;color:#123746}.dsv3-profile-stats span{margin-top:2px;color:#70817a;font-size:.7rem}.dsv3-profile-note{margin:8px 0 0;padding-top:12px;border-top:1px solid #e5ece8;color:#6d7e78;font-size:.72rem;line-height:1.55}.dsv3-quality-detail{display:block;margin-top:6px;color:#778782;font-size:.68rem}
.dsv3-assessments,.dsv3-detail,.dsv3-research,.dsv3-progress,.dsv3-ai{margin-top:28px;padding:25px}.dsv3-assessments>header,.dsv3-detail>header,.dsv3-research>header,.dsv3-progress>header,.dsv3-ai>header{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding-bottom:16px;border-bottom:1px solid #e5ece8}.dsv3-assessments h3,.dsv3-detail h3,.dsv3-research h3,.dsv3-progress h3,.dsv3-ai h3{margin:0;font-size:1.45rem;letter-spacing:-.04em}.dsv3-assessments header span,.dsv3-detail header span,.dsv3-research header span,.dsv3-progress header span{display:block;margin-top:5px;color:#6d7f78;font-size:.78rem}
.dsv3-assessment-groups{display:grid;gap:20px;margin-top:20px}.dsv3-assessment-group>header{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}.dsv3-assessment-group h4{margin:0;font-size:.95rem}.dsv3-assessment-group>header span{color:#7c8d87;font-size:.7rem}.dsv3-assessment-group>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.dsv3-assessment-card{display:grid;grid-template-columns:66px 1fr;align-items:center;gap:12px;min-height:92px;padding:12px;border:1px solid #e0e9e4;border-radius:16px;background:#fbfcfb;color:#123746;text-align:left;transition:.18s ease}.dsv3-assessment-card:hover{transform:translateY(-1px);border-color:#a9cdc2;background:#f7fbf9}.dsv3-assessment-card.is-selected{border-color:#123746;box-shadow:0 0 0 2px rgba(18,55,70,.08);background:#f4f8f6}.dsv3-assessment-copy b,.dsv3-assessment-copy small{display:block}.dsv3-assessment-copy b{font-size:.87rem}.dsv3-assessment-copy small{margin-top:5px;color:#2c8877;font-size:.72rem}
.dsv3-gauge{--gauge:0deg;position:relative;display:grid;place-items:center;width:62px;height:62px;border-radius:50%;background:conic-gradient(#2c9381 var(--gauge),#e6eeea 0)}.dsv3-gauge:before{content:"";position:absolute;inset:6px;border-radius:50%;background:#fff}.dsv3-gauge>div{position:relative;z-index:1;display:flex;align-items:baseline;gap:2px}.dsv3-gauge strong{font:800 1rem Manrope}.dsv3-gauge small{color:#75857f;font-size:.61rem}.dsv3-gauge.is-large{width:154px;height:154px}.dsv3-gauge.is-large:before{inset:12px}.dsv3-gauge.is-large strong{font-size:2.25rem}.dsv3-gauge.is-large small{font-size:.85rem}
.dsv3-detail-grid{display:grid;grid-template-columns:1.05fr .65fr;gap:14px;margin-top:20px}.dsv3-detail-grid>article{border:1px solid #e2eae6;border-radius:17px;background:#fbfcfb;padding:20px}.dsv3-primary-result{display:flex;align-items:center;gap:24px}.dsv3-primary-result>div:last-child span,.dsv3-primary-result>div:last-child small{display:block;color:#71827b;font-size:.75rem}.dsv3-primary-result>div:last-child strong{display:block;margin:7px 0;color:#123746;font-size:1.45rem}.dsv3-confidence{position:relative;overflow:hidden}.dsv3-confidence>span{color:#71827b;font-size:.74rem}.dsv3-confidence>strong{display:block;margin-top:8px;font:800 2rem Manrope;color:#123746}.dsv3-confidence-ring{--confidence:0deg;position:absolute;right:17px;bottom:17px;width:62px;height:62px;border-radius:50%;background:conic-gradient(#79b8aa var(--confidence),#e8efec 0)}.dsv3-confidence-ring i{position:absolute;inset:7px;border-radius:50%;background:#fbfcfb}.dsv3-scale{grid-column:1/-1}.dsv3-scale>div:first-child{display:flex;justify-content:space-between}.dsv3-scale>div:first-child span{color:#71827b;font-size:.75rem}.dsv3-scale-steps{display:flex;align-items:flex-start;margin-top:18px}.dsv3-scale-steps span{position:relative;flex:1;text-align:center;color:#83918c;font-size:.68rem}.dsv3-scale-steps span:before{content:"";position:absolute;left:-50%;right:50%;top:6px;height:2px;background:#dfe8e4}.dsv3-scale-steps span:first-child:before{display:none}.dsv3-scale-steps i{position:relative;z-index:1;display:block;width:12px;height:12px;margin:0 auto 5px;border:2px solid #cbd9d3;border-radius:50%;background:#fff}.dsv3-scale-steps span.is-current i{width:16px;height:16px;margin-top:-2px;border-color:#123746;background:#123746;box-shadow:0 0 0 5px rgba(18,55,70,.08)}.dsv3-scale-steps span.is-current b{color:#123746}.dsv3-probability-card{grid-column:1/-1}.dsv3-probability h4,.dsv3-probability-card>h4{margin:0 0 14px;font-size:.92rem}.dsv3-probability>div{display:flex;align-items:end;gap:8px;height:150px;padding-top:8px}.dsv3-probability span{display:grid;grid-template-rows:1fr auto auto;align-items:end;flex:1;height:100%;text-align:center}.dsv3-probability i{display:block;width:100%;height:var(--p);min-height:3px;border-radius:8px 8px 2px 2px;background:linear-gradient(180deg,#5bb39f,#2d8f7d)}.dsv3-probability b{margin-top:6px;font-size:.72rem}.dsv3-probability small{color:#7b8b85;font-size:.64rem}.dsv3-probability-card.is-empty p{margin:0;color:#71827b;font-size:.78rem}
.dsv3-research-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:20px}.dsv3-research-card{padding:15px;border:1px solid #e2eae6;border-radius:15px;background:#fbfcfb}.dsv3-research-card header{display:flex;justify-content:space-between;gap:10px}.dsv3-research-card header span{color:#6f8179;font-size:.68rem}.dsv3-research-card em{padding:2px 6px;border-radius:99px;background:#e7f2f4;color:#3a7888;font:700 .58rem Manrope;font-style:normal}.dsv3-research-card h4{margin:7px 0 3px;font-size:.84rem}.dsv3-research-card>strong{font:800 1.4rem Manrope;color:#123746}.dsv3-sparkline{height:42px;margin-top:10px}.dsv3-sparkline svg{width:100%;height:100%;overflow:visible}.dsv3-sparkline path{fill:none;stroke:#3e9b88;stroke-width:2.2;vector-effect:non-scaling-stroke}.dsv3-sparkline circle{fill:#fff;stroke:#3e9b88;stroke-width:2;vector-effect:non-scaling-stroke}.dsv3-research-change{display:block;margin-top:5px;color:#7a8b85;font-size:.66rem}
.dsv3-progress-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:14px;margin-top:20px}.dsv3-timeline,.dsv3-before-after{min-width:0;padding:20px;border:1px solid #e2eae6;border-radius:17px;background:#fbfcfb}.dsv3-timeline>header{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.dsv3-timeline h4{margin:0;font-size:1rem}.dsv3-timeline header span{color:#71827b;font-size:.72rem}.dsv3-trend-summary{display:flex;gap:14px}.dsv3-trend-summary span{display:grid;color:#7b8b85;font-size:.64rem}.dsv3-trend-summary b{color:#123746;font-size:.84rem}.dsv3-line-chart{margin-top:12px}.dsv3-line-chart svg{display:block;width:100%;height:230px}.dsv3-line-chart .grid{stroke:#e3ebe7;stroke-width:1;vector-effect:non-scaling-stroke}.dsv3-line-chart .series{fill:none;stroke:#2c9481;stroke-width:3;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.dsv3-line-chart circle{fill:#fff;stroke:#2c9481;stroke-width:3;vector-effect:non-scaling-stroke}.dsv3-line-chart text{fill:#75867f;font:600 10px "Noto Sans KR"}.dsv3-baseline{display:grid;place-items:center;min-height:190px;text-align:center}.dsv3-baseline strong{font:800 2.1rem Manrope;color:#123746}.dsv3-baseline span{color:#72837c;font-size:.78rem}.dsv3-before-after h3{margin:0;font-size:1rem}.dsv3-before-after p{color:#6d7f78;font-size:.76rem}.dsv3-before-after .local-comparison{grid-template-columns:1fr 1fr}.dsv3-before-after .local-comparison figure{aspect-ratio:3/4}.dsv3-before-after .local-comparison img{height:100%;object-fit:cover}.dsv3-before-after .local-comparison figcaption{position:static;margin-top:6px;background:none;padding:0}
.dsv3-ai{display:grid;grid-template-columns:minmax(230px,.36fr) 1fr;gap:24px}.dsv3-ai>header{display:block;padding:0 22px 0 0;border:0;border-right:1px solid #e4ebe7}.dsv3-ai>header small{display:block;margin-top:6px;color:#71827b;font-size:.68rem;line-height:1.5}.dsv3-ai-items{display:grid;gap:0}.dsv3-ai-items article{display:grid;grid-template-columns:135px 1fr;gap:16px;padding:11px 0;border-bottom:1px solid #e8eeeb}.dsv3-ai-items article:last-child{border-bottom:0}.dsv3-ai-items b{font-size:.82rem}.dsv3-ai-items span{color:#60736b;font-size:.8rem;line-height:1.55}.dsv3-routine-cta{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center;margin-top:28px;padding:24px 28px;border:1px solid #dce7e2;border-radius:20px;background:linear-gradient(110deg,#f3f9f6,#fff)}.dsv3-routine-cta h3{margin:0;font-size:1.15rem}.dsv3-routine-cta p{margin:6px 0 0;color:#657871;font-size:.8rem}.dsv3-routine-cta #beginRoutine{margin:0}.dsv3-routine-cta .medical-note{grid-column:1/-1;margin:0;color:#75857f;font-size:.7rem}
@media(max-width:980px){.dsv3-overview{grid-template-columns:minmax(280px,38%) 1fr}.dsv3-profile-body{grid-template-columns:1fr}.dsv3-profile-stats{grid-template-columns:repeat(3,1fr)}.dsv3-assessment-group>div{grid-template-columns:repeat(2,minmax(0,1fr))}.dsv3-research-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.dsv3-progress-grid{grid-template-columns:1fr}.dsv3-ai{grid-template-columns:1fr}.dsv3-ai>header{padding:0 0 16px;border-right:0;border-bottom:1px solid #e4ebe7}}
@media(max-width:680px){.dsv3-header{display:block}.dsv3-header-side{justify-items:start;margin-top:12px}.dsv3-overview{grid-template-columns:1fr}.dsv3-photo-card{width:min(100%,390px);margin:auto}.dsv3-profile-card{padding:18px}.dsv3-profile-card>header{display:block}.dsv3-quality{display:inline-block;margin-top:9px}.dsv3-profile-body{grid-template-columns:1fr}.dsv3-profile-stats{grid-template-columns:repeat(3,1fr)}.dsv3-assessments,.dsv3-detail,.dsv3-research,.dsv3-progress,.dsv3-ai{padding:18px;margin-top:18px}.dsv3-assessment-group>div{grid-template-columns:repeat(2,minmax(0,1fr))}.dsv3-assessment-card{grid-template-columns:54px 1fr;padding:10px}.dsv3-gauge{width:52px;height:52px}.dsv3-detail-grid{grid-template-columns:1fr}.dsv3-primary-result{gap:18px}.dsv3-gauge.is-large{width:128px;height:128px}.dsv3-confidence{min-height:110px}.dsv3-scale,.dsv3-probability-card{grid-column:auto}.dsv3-research-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dsv3-timeline>header{display:block}.dsv3-trend-summary{margin-top:9px}.dsv3-before-after .local-comparison{grid-template-columns:1fr}.dsv3-ai-items article{grid-template-columns:1fr;gap:3px}.dsv3-routine-cta{grid-template-columns:1fr;padding:20px}.dsv3-routine-cta #beginRoutine{width:100%}.dsv3-photo-meta{display:block}.dsv3-photo-meta small{display:block;margin-top:3px;text-align:left}}
@media(max-width:420px){.dsv3-assessment-group>div{grid-template-columns:1fr}.dsv3-research-grid{grid-template-columns:1fr}.dsv3-profile-stats{grid-template-columns:1fr 1fr 1fr}.dsv3-radar text{font-size:10px}.dsv3-trend-summary{gap:8px}}
.dsv3-detail-grid{grid-template-columns:minmax(0,1.05fr) minmax(0,.65fr)}.dsv3-detail-grid>article{min-width:0}@media(max-width:680px){.dsv3-detail-grid{grid-template-columns:minmax(0,1fr)}}

/* Member / image governance upgrade */
.topbar-actions{display:flex;align-items:center;gap:10px}.account-quick{border:1px solid #d7e3df;background:#fff;color:#123746;border-radius:999px;padding:8px 13px;font:700 .78rem inherit;cursor:pointer}.account-quick.signed-in{background:#f3f8f6}.privacy-chip.server i{background:#2c8877}.auth-gate{position:fixed;inset:0;z-index:100;background:rgba(11,34,48,.72);backdrop-filter:blur(5px);display:grid;place-items:center;padding:24px}.auth-gate[hidden]{display:none}.auth-gate-card,.account-login-card{width:min(560px,100%);padding:30px;border:1px solid #dce7e2;border-radius:24px;background:#fff;box-shadow:0 18px 60px rgba(18,55,70,.18)}.auth-gate-card{position:relative}.auth-gate-close{position:absolute;top:15px;right:15px;width:34px;height:34px;border:1px solid #d5e2dc;border-radius:50%;background:#fff;color:#45635a;font-size:1.35rem;line-height:1;cursor:pointer}.auth-gate-close:hover{background:#eef6f2}.auth-gate-card h2,.account-login-card h2{margin:4px 0 10px;color:#123746}.auth-gate-card p,.account-login-card p{color:#64766f;line-height:1.6}.social-login-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:22px}.social-button{display:flex;align-items:center;justify-content:center;min-height:48px;border-radius:14px;text-decoration:none;font-weight:800}.social-button.google{border:1px solid #d7e0dd;background:#fff;color:#1f2933}.social-button.naver{background:#03c75a;color:#fff}.social-button.disabled{opacity:.42;cursor:not-allowed}.auth-required main{filter:blur(1px);pointer-events:none;user-select:none}.account-login-card{margin:22px auto}.account-grid{display:grid;grid-template-columns:minmax(280px,.75fr) minmax(420px,1.25fr);gap:16px}.account-card{padding:24px;border:1px solid #e0e9e4;border-radius:20px;background:#fff}.account-card h2{margin:3px 0 16px;color:#123746}.account-meta{display:grid;gap:10px;margin:0}.account-meta>div{display:grid;grid-template-columns:100px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid #edf2ef}.account-meta dt{color:#7b8b85;font-size:.75rem}.account-meta dd{margin:0;word-break:break-all;color:#20364b;font-size:.82rem}.account-actions{display:flex;gap:8px;margin-top:18px}.storage-card{grid-row:span 1}.storage-choice{display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:start;padding:16px;border:1px solid #dfe8e4;border-radius:16px;margin-top:10px;cursor:pointer}.storage-choice:has(input:checked){border-color:#7eb4a8;background:#f3f8f6}.storage-choice input{margin-top:4px}.storage-choice b,.storage-choice small{display:block}.storage-choice small{margin-top:5px;color:#6d7e77;line-height:1.55}.retention-row{display:grid;grid-template-columns:120px 1fr;gap:10px;align-items:center;margin:14px 0;color:#51665e;font-size:.8rem}.retention-row select{width:100%;padding:10px;border:1px solid #d6e2dd;border-radius:10px;background:#fff}.form-message{min-height:20px;margin:10px 0 0;color:#2c8877;font-size:.75rem}.photo-library-card{grid-column:1/-1}.card-heading-inline{display:flex;align-items:start;justify-content:space-between;gap:16px}.account-help{color:#6c7e77;font-size:.76rem;line-height:1.55}.image-library{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}.image-library-item{overflow:hidden;border:1px solid #e0e9e4;border-radius:16px;background:#fbfcfb}.image-library-item img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;background:#eef4f1}.image-library-item>div{padding:11px 12px}.image-library-item b,.image-library-item span,.image-library-item small{display:block}.image-library-item b{font-size:.82rem}.image-library-item span{margin-top:3px;color:#5f746c;font-size:.72rem}.image-library-item small{margin-top:4px;color:#8a9893;font-size:.64rem}.image-card-actions{display:flex!important;gap:7px;padding-top:0!important}.image-card-actions button{flex:1;border:1px solid #d5e2dc;background:#fff;border-radius:9px;padding:8px;color:#2d5c54;font-weight:700;cursor:pointer}.image-card-actions button.danger{color:#a34a4a}.empty-state.small{min-height:120px}.empty-state.small strong{font-size:.95rem}
@media(max-width:860px){.account-grid{grid-template-columns:1fr}.photo-library-card{grid-column:auto}.image-library{grid-template-columns:repeat(2,minmax(0,1fr))}.topbar-actions .privacy-chip{display:none}}
@media(max-width:560px){.social-login-actions{grid-template-columns:1fr}.image-library{grid-template-columns:1fr}.account-card{padding:18px}.retention-row{grid-template-columns:1fr}.topbar-actions{gap:6px}.account-quick{padding:7px 10px}}
.danger-button{color:#a34a4a!important;border-color:#ecd2d2!important}

/* Email login + support center */
.email-auth-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:20px}.email-auth-form label{display:grid;gap:6px;color:#50655e;font-size:.76rem;font-weight:700}.email-auth-form label:nth-child(3){grid-column:1/-1}.email-auth-form label small{font-weight:500;color:#8a9893}.email-auth-form input{width:100%;min-height:44px;padding:9px 11px;border:1px solid #d8e4df;border-radius:11px;background:#fff;color:var(--ink);outline:none}.email-auth-form input:focus,.qna-form input:focus,.qna-form textarea:focus,.qna-form select:focus{border-color:#73b8a8;box-shadow:0 0 0 3px rgba(22,164,127,.08)}.auth-button-row{grid-column:1/-1;display:grid;grid-template-columns:1fr 1fr;gap:9px}.auth-button-row .button{width:100%;justify-content:center}.auth-divider{display:flex;align-items:center;gap:12px;margin:20px 0 0;color:#87958f;font-size:.72rem}.auth-divider:before,.auth-divider:after{content:"";height:1px;flex:1;background:#e1e9e5}.compact-auth{grid-template-columns:1fr 1fr}.wide-auth{width:min(760px,100%)}
.support-lead{margin:10px 0 0;color:var(--muted);font-size:.9rem}.support-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:24px}.support-card{padding:24px;border:1px solid #dfe8e4;border-radius:20px;background:#fff}.support-card h2{margin:3px 0 14px;color:#123746}.support-faq,.support-qna{grid-column:1/-1}.support-list,.support-content,.faq-list,.my-qna-list{display:grid;gap:10px}.support-list-item{padding:14px 0;border-bottom:1px solid #e8eeeb}.support-list-item:last-child{border-bottom:0}.support-list-item>div{display:flex;align-items:center;justify-content:space-between;gap:14px}.support-list-item b{font-size:.94rem}.support-list-item small{color:#8a9993;font-size:.69rem}.support-list-item p,.support-content p{margin:6px 0 0;color:#61746d;font-size:.8rem;line-height:1.65}.support-list-item.is-pinned b:before{content:"공지";display:inline-block;margin-right:7px;padding:2px 6px;border-radius:999px;background:#eaf7f2;color:#18846b;font-size:.6rem}.support-content article{padding:14px;border-radius:14px;background:#f7faf8}.support-content h3{margin:0;font-size:.95rem}.support-content p{margin-top:7px}.faq-list details{border:1px solid #e0e9e4;border-radius:14px;background:#fbfcfb}.faq-list summary{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:15px 16px;cursor:pointer;font-weight:700}.faq-list summary small{padding:3px 8px;border-radius:999px;background:#eef4f1;color:#6a7d75;font-size:.6rem}.faq-list details p{margin:0;padding:0 16px 16px;color:#5e7169;font-size:.8rem;line-height:1.7}.support-login-note{padding:15px;border-radius:13px;background:#f5f8f6;color:#60736b;font-size:.8rem}.text-button{padding:0;border:0;background:transparent;color:#187e69;font-weight:800;text-decoration:underline}.qna-form{display:grid;grid-template-columns:170px 1fr;gap:12px;margin:18px 0}.qna-form label{display:grid;gap:6px;color:#53675f;font-size:.76rem;font-weight:700}.qna-form label:nth-child(2),.qna-form label:nth-child(3){grid-column:2}.qna-form label:first-child{grid-row:1 / span 2}.qna-form input,.qna-form textarea,.qna-form select{width:100%;padding:10px 11px;border:1px solid #d8e4df;border-radius:11px;background:#fff;color:var(--ink);resize:vertical}.qna-form>.button,.qna-form>.form-message{grid-column:2}.my-qna-title{margin:24px 0 2px;font-size:1rem}.my-qna-item{padding:17px;border:1px solid #e0e9e4;border-radius:16px;background:#fbfcfb}.my-qna-item header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.my-qna-item header b,.my-qna-item header small{display:block}.my-qna-item header small{margin-top:3px;color:#84928d;font-size:.66rem}.my-qna-item>p{margin:12px 0;color:#53685f;font-size:.8rem}.qna-status{padding:4px 8px;border-radius:999px;background:#f5ead7;color:#8b671d;font-size:.65rem;font-weight:800;white-space:nowrap}.qna-status.answered{background:#e6f4ee;color:#24755f}.qna-status.closed{background:#edf0f2;color:#637079}.qna-answer{margin-top:12px;padding:14px;border-radius:12px;background:#eef7f3}.qna-answer b{color:#1e705d;font-size:.78rem}.qna-answer p{margin:6px 0;color:#48665d;font-size:.78rem}.qna-answer small{color:#81918b;font-size:.64rem}.qna-empty{margin-top:15px}
.guide-hero{display:grid;grid-template-columns:1.1fr .9fr;gap:30px;align-items:center;margin-top:25px;padding:34px;border-radius:24px;background:linear-gradient(120deg,#e9f4ef,#fff)}.guide-hero h2{margin:8px 0 13px;color:#123746;font-size:clamp(2rem,4vw,3.4rem);line-height:1.16;letter-spacing:-.06em}.guide-hero p:not(.eyebrow){max-width:540px;color:#5d726a;line-height:1.7}.guide-hero img{width:min(100%,330px);justify-self:center;border-radius:20px;background:#fff;box-shadow:0 15px 35px rgba(18,55,70,.12)}.guide-steps,.guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:18px}.guide-steps article,.guide-grid article,.guide-note{padding:22px;border:1px solid #dce8e2;border-radius:18px;background:#fff}.guide-steps span{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#e5f3ed;color:#17725f;font:800 .72rem Manrope}.guide-steps h2,.guide-grid h2,.guide-note h2{margin:13px 0 8px;color:#123746;font-size:1.13rem}.guide-steps p,.guide-grid li,.guide-note p:not(.eyebrow){color:#61756d;font-size:.84rem;line-height:1.7}.guide-grid{grid-template-columns:1fr 1fr}.guide-grid ul{margin:13px 0 0;padding-left:18px}.guide-grid li+li{margin-top:7px}.guide-note{margin-top:18px;background:#f5faf7}.guide-note p{max-width:850px}
.guide-section{margin-top:18px;padding:26px;border:1px solid #dce8e2;border-radius:20px;background:#fff}.guide-section>div>h2{margin:5px 0 8px;color:#123746;font-size:1.3rem}.guide-section>div>p:not(.eyebrow){margin:0;color:#61756d;line-height:1.65}.guide-measurements,.guide-features{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:18px}.guide-measurements article,.guide-features article{padding:16px;border-radius:14px;background:#f6faf8}.guide-measurements b,.guide-features b{display:block;color:#173f5d;font-size:.92rem}.guide-measurements span,.guide-features span{display:block;margin-top:7px;color:#61756d;font-size:.76rem;line-height:1.6}.guide-features{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){.email-auth-form,.compact-auth{grid-template-columns:1fr}.email-auth-form label:nth-child(3),.auth-button-row{grid-column:auto}.auth-button-row{grid-template-columns:1fr}.support-grid,.guide-hero,.guide-steps,.guide-grid,.guide-measurements,.guide-features{grid-template-columns:1fr}.guide-hero{padding:24px}.guide-hero img{max-width:280px}.guide-section{padding:20px}.support-faq,.support-qna{grid-column:auto}.qna-form{grid-template-columns:1fr}.qna-form label:first-child,.qna-form label:nth-child(2),.qna-form label:nth-child(3),.qna-form>.button,.qna-form>.form-message{grid-column:auto;grid-row:auto}}

/* v0.5.1 Q&A usability refresh */
.qna-form{display:grid;grid-template-columns:1fr;gap:14px;margin:18px 0 8px}
.qna-form-top{display:grid;grid-template-columns:minmax(180px,240px) 1fr;gap:12px;align-items:end}
.qna-form label{display:grid;gap:7px;color:#425b52;font-size:.76rem;font-weight:800}
.qna-form label>span{display:block}
.qna-category-field,.qna-subject-field,.qna-body-field{grid-column:auto!important;grid-row:auto!important}
.qna-category-field select{height:46px}
.qna-form input,.qna-form textarea,.qna-form select{width:100%;padding:11px 12px;border:1px solid #d6e3dd;border-radius:11px;background:#fff;color:var(--ink);resize:vertical}
.qna-body-field textarea{min-height:150px;line-height:1.55}
.qna-form-footer{display:flex;align-items:center;justify-content:space-between;gap:14px}
.qna-form-footer .form-message{margin:0;flex:1}
.qna-form-footer .button{min-width:140px;justify-content:center}
.my-qna-heading{display:flex;align-items:center;justify-content:space-between;margin-top:26px;margin-bottom:8px}
.my-qna-heading .my-qna-title{margin:0}
.my-qna-heading>span{font-size:.72rem;color:#788b83}
.qna-history-wrap{overflow:auto;border:1px solid #dfe8e4;border-radius:15px;background:#fff}
.qna-history-table{width:100%;min-width:980px;border-collapse:collapse;table-layout:fixed}
.qna-history-table th,.qna-history-table td{padding:13px 12px;border-bottom:1px solid #e8eeeb;text-align:left;vertical-align:top}
.qna-history-table th{background:#f6f9f7;color:#6c7e77;font-size:.66rem;font-weight:800;white-space:nowrap}
.qna-history-table tr:last-child td{border-bottom:0}
.qna-history-table th:nth-child(1),.qna-history-table td:nth-child(1){width:90px}
.qna-history-table th:nth-child(2),.qna-history-table td:nth-child(2){width:110px}
.qna-history-table th:nth-child(3),.qna-history-table td:nth-child(3){width:180px}
.qna-history-table th:nth-child(6),.qna-history-table td:nth-child(6){width:110px}
.qna-history-subject{font-size:.78rem;color:#163c49;line-height:1.4}
.qna-type-label{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef4f1;color:#557169;font-size:.65rem;font-weight:800;white-space:nowrap}
.qna-history-text{color:#52675f;font-size:.73rem;line-height:1.55;max-height:70px;overflow:auto;word-break:break-word}
.qna-history-answer{color:#44635a;font-size:.72rem;line-height:1.5}
.qna-history-answer>b{display:block;margin-bottom:4px;color:#1c7962;font-size:.68rem}
.qna-history-answer>div{max-height:76px;overflow:auto;word-break:break-word}
.qna-history-answer small{display:block;margin-top:5px;color:#85948e;font-size:.62rem}
.qna-waiting-text{color:#8b6b28;font-size:.7rem}
.qna-history-date{color:#7f9089;font-size:.68rem;white-space:nowrap}
@media(max-width:760px){.qna-form-top{grid-template-columns:1fr}.qna-form-footer{align-items:stretch;flex-direction:column}.qna-form-footer .button{width:100%}.qna-history-wrap{margin-left:-2px;margin-right:-2px}}

/* ROI markers must remain above filtered portrait images in every browser compositor. */
.dsv3-photo-stage{isolation:isolate}.dsv3-photo-stage>img{position:relative;z-index:1}.dsv3-roi-layer{z-index:2}.dsv3-roi-marker{z-index:3}

/* v0.5.2 threaded Q&A and account navigation */
.account-quick.signed-in{min-width:84px;text-align:center}
.qna-history-table tbody tr{cursor:pointer}
.qna-history-table tbody tr:hover td{background:#f8fbf9}
.qna-history-table tbody tr.selected td{background:#eef8f4}
.qna-conversation-count{display:block;margin-top:5px;color:#8a9993;font-size:.61rem;font-weight:500}
.member-thread-panel{margin-top:14px;border:1px solid #dfe8e4;border-radius:16px;background:#fff;overflow:hidden}
.member-thread-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:18px 20px;border-bottom:1px solid #e7eeeb;background:#fbfcfb}
.member-thread-head>div>span{display:inline-block;padding:4px 8px;border-radius:999px;background:#eef4f1;color:#557169;font-size:.64rem;font-weight:800}
.member-thread-head h4{margin:7px 0 4px;color:#143847;font-size:1rem}
.member-thread-head small{color:#84938e;font-size:.65rem}
.member-thread-timeline{display:grid;gap:14px;padding:20px}
.member-thread-item{display:grid;grid-template-columns:90px minmax(0,1fr);gap:12px;align-items:start}
.member-thread-who b,.member-thread-who small{display:block}
.member-thread-who b{color:#3e655b;font-size:.69rem}
.member-thread-who small{margin-top:4px;color:#8b9994;font-size:.59rem}
.member-thread-message{padding:14px 15px;border:1px solid #e0e9e5;border-radius:13px;background:#f8faf9;color:#405b53;font-size:.77rem;line-height:1.65;word-break:break-word}
.member-thread-item.admin .member-thread-message{border-color:#cde4dc;background:#edf8f4}
.member-thread-item.admin .member-thread-who b{color:#16765f}
.member-thread-reply{padding:18px 20px;border-top:1px solid #e8efec;background:#fbfcfb}
.member-thread-reply>label{display:block;margin-bottom:7px;color:#425d54;font-size:.72rem;font-weight:800}
.member-thread-reply textarea{width:100%;min-height:120px;padding:12px;border:1px solid #d6e3dd;border-radius:11px;background:#fff;color:var(--ink);resize:vertical;line-height:1.55}
.member-thread-reply>div{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:9px}
.member-thread-reply .form-message{margin:0;flex:1}
.member-thread-closed{margin:0 20px 20px;padding:14px;border-radius:11px;background:#f2f5f3;color:#667870;font-size:.73rem}
@media(max-width:760px){.member-thread-item{grid-template-columns:1fr}.member-thread-who{display:flex;gap:8px;align-items:center}.member-thread-who small{margin-top:0}.member-thread-reply>div{align-items:stretch;flex-direction:column}.member-thread-reply .button{width:100%}}

.account-name-row{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.account-name-row h2{margin-right:0}.account-role-badge{padding:4px 8px;border-radius:999px;background:#e8f4f0;color:#23725e;font-size:.62rem;font-weight:800}

/* v0.7.1 — always-visible, truthful measurement progress. */
body.analysis-busy{overflow:hidden}
#progress.analysis-progress-overlay{position:fixed!important;z-index:100!important;inset:0!important;display:grid!important;place-items:center;width:auto!important;max-width:none!important;height:auto!important;margin:0!important;padding:20px!important;transform:none!important;background:rgba(7,28,41,.62);backdrop-filter:blur(5px)}
#progress.analysis-progress-overlay[hidden]{display:none!important}
.analysis-progress-card{width:min(620px,100%);padding:30px 32px 27px;border:1px solid rgba(207,219,216,.9);border-radius:24px;background:#fff;box-shadow:0 30px 90px rgba(6,28,42,.32)}
.analysis-progress-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:18px}.analysis-progress-top>span{padding:5px 10px;border-radius:99px;background:#edf5f1;color:#45675e;font:700 .74rem Manrope,"Noto Sans KR"}
.analysis-progress-card .eyebrow{margin-bottom:7px}.analysis-progress-card h2{margin:0;color:var(--ink);font-size:1.55rem;line-height:1.35;letter-spacing:-.045em;word-break:keep-all}.analysis-progress-card>p:not(.eyebrow){margin:8px 0 0;color:var(--muted);font-size:.86rem;line-height:1.65;word-break:keep-all}
.analysis-progress-track{height:10px;margin-top:22px;overflow:hidden;border-radius:99px;background:#e3ece8}.analysis-progress-track i{display:block;width:8%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#16a47f,#72d9b8);transition:width .6s ease}
.analysis-progress-estimate{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-top:10px}.analysis-progress-estimate strong{color:#1e6f61;font-size:.78rem}.analysis-progress-estimate span{color:#7a8a84;font-size:.68rem;text-align:right}
.analysis-progress-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:24px 0 0;padding:18px 0 0;border-top:1px solid #e2ebe7;list-style:none}.analysis-progress-steps li{position:relative;display:grid;justify-items:center;gap:6px;color:#87958f;font-size:.7rem;text-align:center}.analysis-progress-steps li:before{content:"";position:absolute;z-index:0;top:13px;right:50%;width:calc(100% + 8px);height:2px;background:#e0e9e5}.analysis-progress-steps li:first-child:before{display:none}.analysis-progress-steps i{position:relative;z-index:1;display:grid;place-items:center;width:27px;height:27px;border:2px solid #d6e2dd;border-radius:50%;background:#fff;color:#81918b;font:800 .7rem Manrope;font-style:normal}.analysis-progress-steps li.active,.analysis-progress-steps li.done{color:var(--ink);font-weight:700}.analysis-progress-steps li.active i{border-color:var(--mint-dark);box-shadow:0 0 0 5px rgba(22,164,127,.10);color:var(--mint-dark)}.analysis-progress-steps li.done i{border-color:var(--mint-dark);background:var(--mint-dark);color:#fff}.analysis-progress-steps li.done:before,.analysis-progress-steps li.active:before{background:var(--mint-dark)}
@media(max-width:600px){#progress.analysis-progress-overlay{padding:12px!important}.analysis-progress-card{padding:24px 20px 21px;border-radius:20px}.analysis-progress-card h2{font-size:1.3rem}.analysis-progress-card>p:not(.eyebrow){font-size:.8rem}.analysis-progress-estimate{display:block}.analysis-progress-estimate span{display:block;margin-top:3px;text-align:left}.analysis-progress-steps{gap:3px;margin-top:19px}.analysis-progress-steps li{font-size:.62rem;line-height:1.3}.analysis-progress-steps li:before{width:calc(100% + 3px)}}

/* =========================================================
   v0.5.5 — Stable pre-measurement dashboard
   Keep the before-photo state visually aligned with Dashboard V3.
   ========================================================= */
body:not(.report-mode) #today>.premeasure-report-head{max-width:1220px;margin:12px auto 24px;display:flex;align-items:flex-end;justify-content:space-between;gap:22px}
body:not(.report-mode) #today>.premeasure-report-head h1{font-family:"Noto Sans KR",sans-serif;font-weight:800;font-size:clamp(2.25rem,4vw,3.45rem);line-height:1.05;letter-spacing:-.07em}
body:not(.report-mode) #today>.premeasure-report-head .premeasure-subtitle{margin:8px 0 0;color:#687b74;font-size:.82rem}
body:not(.report-mode) #today>.premeasure-overview{max-width:1220px;margin:0 auto;display:grid;grid-template-columns:minmax(320px,40%) 1fr;gap:22px;align-items:stretch}
body:not(.report-mode) #today>.premeasure-overview>.camera-card,
body:not(.report-mode) #today>.premeasure-overview>.prep-card{border:1px solid #dde7e2;border-radius:22px;background:#fff;box-shadow:none}
body:not(.report-mode) #today>.premeasure-overview>.camera-card{overflow:hidden;padding:0;align-self:start}
body:not(.report-mode) #today>.premeasure-overview .camera-stage{width:100%;height:auto;min-height:0;aspect-ratio:3/4;border-radius:0;background:#e9eeeb}
body:not(.report-mode) #today>.premeasure-overview .camera-stage img{object-fit:contain;background:#e9eeeb}
body:not(.report-mode) #today>.premeasure-overview .camera-empty{background:linear-gradient(180deg,#e8eeea,#eef2ef);padding:28px}
body:not(.report-mode) #today>.premeasure-overview .capture-actions{padding:0 14px;margin:14px 0 10px}
body:not(.report-mode) #today>.premeasure-overview .photo-frame-controls{margin:0 14px 10px;grid-template-columns:minmax(0,1fr);gap:10px}
/* This card is intentionally narrow in the two-column overview.  Do not let
   the frame controls split Korean copy into one-character columns at zoomed
   or medium-width desktop viewports. */
body:not(.report-mode) #today>.premeasure-overview .photo-frame-controls>div{grid-column:auto;min-width:0;word-break:keep-all}
body:not(.report-mode) #today>.premeasure-overview .photo-frame-controls label{grid-template-columns:max-content minmax(0,1fr);align-items:center;gap:8px;min-width:0}
body:not(.report-mode) #today>.premeasure-overview .photo-frame-controls input{width:100%;min-width:0}
body:not(.report-mode) #today>.premeasure-overview .photo-frame-controls button{width:100%}
body:not(.report-mode) #today>.premeasure-overview #analyze{width:calc(100% - 28px);margin:0 14px 14px}
.premeasure-profile-card{padding:24px!important}
.premeasure-profile-head{display:flex;justify-content:space-between;gap:16px;align-items:flex-start}
.premeasure-profile-head .eyebrow{margin:0 0 5px;color:#287e70;font:800 .68rem Manrope;letter-spacing:.12em}
.premeasure-profile-head h2{margin:0!important;font-family:"Noto Sans KR",sans-serif!important;font-size:1.55rem!important;line-height:1.25!important;font-weight:800!important;letter-spacing:-.04em!important}
.premeasure-quality{padding:7px 10px;border-radius:99px;background:#f2f6f4;color:#697b74;font-size:.72rem;font-weight:800;white-space:nowrap}
.premeasure-profile-body{display:grid;grid-template-columns:minmax(270px,1fr) 170px;gap:18px;align-items:center;margin-top:12px}
.premeasure-radar{width:100%;max-height:300px}
.premeasure-radar polygon{fill:none;stroke:#dce7e2;stroke-width:1}.premeasure-radar line{stroke:#e4ebe7;stroke-width:1}.premeasure-radar text{fill:#365e55;font:700 11px "Noto Sans KR"}
.premeasure-profile-stats{display:grid;gap:10px}.premeasure-profile-stats div{padding:13px 12px;border:1px solid #e2ebe6;border-radius:14px;background:#fbfcfb}.premeasure-profile-stats strong,.premeasure-profile-stats span{display:block}.premeasure-profile-stats strong{font:800 1.35rem Manrope;color:#123746}.premeasure-profile-stats span{margin-top:2px;color:#70817a;font-size:.7rem}
.premeasure-profile-note{margin:8px 0 0;padding-top:12px;border-top:1px solid #e5ece8;color:#6d7e78;font-size:.72rem;line-height:1.55}
.premeasure-checks{margin-top:18px;padding-top:16px;border-top:1px solid #e5ece8}.premeasure-checks .step-label{margin:0 0 10px}.premeasure-check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.premeasure-check-grid>span{display:grid;grid-template-columns:auto 1fr;gap:2px 8px;padding:11px;border-radius:12px;background:#f7faf8}.premeasure-check-grid b{grid-row:1/3;color:#18806f;font:800 .7rem Manrope}.premeasure-check-grid strong{font-size:.76rem}.premeasure-check-grid small{color:#71827c;font-size:.67rem;line-height:1.4}
body:not(.report-mode) #today>#progress,body:not(.report-mode) #today>#qualityError{max-width:1220px;margin:18px auto 0}
/* When a user picks a photo before the first measurement, keep the same page shell. */
body.premeasure-preview-mode:not(.capture-panel-mode) #today>.premeasure-report-head h1{font-size:clamp(2.1rem,3.7vw,3.2rem)}
body.premeasure-preview-mode:not(.capture-panel-mode) #today>.premeasure-overview>.camera-card{box-shadow:0 0 0 2px rgba(40,142,125,.12)}
@media(max-width:980px){body:not(.report-mode) #today>.premeasure-overview{grid-template-columns:minmax(280px,38%) 1fr}.premeasure-profile-body{grid-template-columns:1fr}.premeasure-profile-stats{grid-template-columns:repeat(3,1fr)}.premeasure-check-grid{grid-template-columns:1fr}}
@media(max-width:680px){body:not(.report-mode) #today>.premeasure-report-head{display:block}.premeasure-report-head .engine-status{display:inline-block;margin-top:12px}body:not(.report-mode) #today>.premeasure-overview{grid-template-columns:1fr}.premeasure-profile-card{padding:18px!important}.premeasure-profile-head{display:block}.premeasure-quality{display:inline-block;margin-top:9px}.premeasure-profile-stats{grid-template-columns:repeat(3,1fr)}body:not(.report-mode) #today>.premeasure-overview>.camera-card{width:min(100%,390px);margin:auto}.premeasure-check-grid{grid-template-columns:1fr}}
.premeasure-assessment-placeholder{max-width:1220px;margin:24px auto 0;padding:24px;background:#fff;border:1px solid #dde7e2;border-radius:22px}.premeasure-assessment-placeholder>header p{margin:0 0 6px;color:#287e70;font:800 .69rem Manrope;letter-spacing:.12em}.premeasure-assessment-placeholder>header h3{margin:0;font-size:1.35rem}.premeasure-assessment-placeholder>header span{display:block;margin-top:6px;color:#687b74;font-size:.78rem}.premeasure-metric-skeleton{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px;margin-top:18px}.premeasure-metric-skeleton article{display:flex;gap:11px;align-items:center;padding:13px;border:1px solid #e2ebe6;border-radius:14px;background:#fbfcfb}.premeasure-metric-skeleton i{width:48px;height:48px;flex:0 0 auto;border:6px solid #e3ece7;border-radius:50%}.premeasure-metric-skeleton b,.premeasure-metric-skeleton span{display:block}.premeasure-metric-skeleton b{font-size:.84rem}.premeasure-metric-skeleton span{margin-top:3px;color:#7b8b85;font-size:.69rem}.report-mode .premeasure-assessment-placeholder{display:none}
@media(max-width:980px){.premeasure-metric-skeleton{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:680px){.premeasure-assessment-placeholder{padding:18px}.premeasure-metric-skeleton{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* Product effect evaluation v0.6 */
.product-eval-layout{display:grid;grid-template-columns:minmax(300px,.72fr) minmax(0,1.28fr);gap:22px;align-items:start}.product-eval-builder,.product-eval-list-wrap{background:#fff;border:1px solid var(--line);border-radius:22px;padding:25px}.product-eval-builder-head,.product-eval-list-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:20px}.product-eval-builder-head h2,.product-eval-list-head h2{margin:3px 0 0;font-size:1.25rem}.product-eval-builder-head>span,.product-eval-list-head>span{border-radius:99px;background:#eef7f3;color:#267565;padding:6px 9px;font-size:.7rem;font-weight:800}.product-eval-builder label{display:block;margin:14px 0;color:#49625b;font-size:.78rem;font-weight:800}.product-eval-builder label b{color:#16806d}.product-eval-builder input,.product-eval-builder select,.product-eval-builder textarea{box-sizing:border-box;width:100%;margin-top:6px;border:1px solid #d9e4df;border-radius:10px;background:#fff;color:#15394a;padding:11px 12px;font:inherit}.routine-recommendation{display:grid;gap:3px;margin:17px 0 9px;border:1px solid #cce2da;border-radius:13px;background:#f4faf7;padding:14px}.routine-recommendation span{color:#2b7e6d;font-size:.68rem;font-weight:900;letter-spacing:.08em}.routine-recommendation strong{font-size:1rem}.routine-recommendation small{color:#71827b;line-height:1.45}.routine-options{display:grid;grid-template-columns:1fr 1fr;gap:10px}.routine-optional{margin:13px 0;border-top:1px solid #e6ece9;padding-top:12px}.routine-optional summary{color:#547069;font-size:.78rem;font-weight:800;cursor:pointer}.form-error{color:#a13e3e;font-size:.76rem}.product-eval-list{display:grid;gap:12px}.product-eval-card{border:1px solid #dfe8e4;border-radius:16px;padding:18px}.product-eval-card header{display:flex;justify-content:space-between;gap:15px}.product-eval-card header span{color:#2a806e;font-size:.68rem;font-weight:900}.product-eval-card h3{margin:4px 0 2px;font-size:1.05rem}.product-eval-card header small{color:#75857f}.product-eval-card header>b{align-self:flex-start;color:#48665e;font-size:.72rem;white-space:nowrap}.product-eval-progress{height:7px;margin:15px 0;background:#e7eeea;border-radius:99px;overflow:hidden}.product-eval-progress i{display:block;height:100%;background:#2d9984}.product-eval-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}.product-eval-meta span{display:grid;gap:2px}.product-eval-meta small{color:#81908a;font-size:.66rem}.product-eval-meta b{font-size:.8rem}.product-eval-card .product-measure{width:100%}@media(max-width:850px){.product-eval-layout{grid-template-columns:1fr}.routine-options{grid-template-columns:1fr}}@media(max-width:520px){.product-eval-builder,.product-eval-list-wrap{padding:18px}.product-eval-card header{display:block}.product-eval-card header>b{display:inline-block;margin-top:7px}.product-eval-meta{grid-template-columns:1fr 1fr}}
/* v0.6.2 change history + product evaluation results */
.change-overview,.measurement-history{background:#fff;border:1px solid var(--line,#d7e1dc);border-radius:18px;padding:22px;margin-bottom:18px}.change-overview header{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.change-overview h2,.measurement-history h2{margin:3px 0 14px}.change-tabs{display:flex;flex-wrap:wrap;gap:6px}.change-tabs button{border:1px solid #d7e1dc;background:#fff;border-radius:999px;padding:7px 11px;cursor:pointer}.change-tabs button.active{background:#0d374f;color:#fff;border-color:#0d374f}.change-line-chart{display:block;width:100%;height:170px;margin-top:8px;overflow:visible}.change-line-chart .grid{stroke:#e4ece8;stroke-width:1}.change-line-chart .series{fill:none;stroke:#15967e;stroke-width:3}.change-line-chart circle{fill:#fff;stroke:#15967e;stroke-width:3}.change-line-chart text{font-size:11px;fill:#71817b}.trend-empty{padding:30px 12px;text-align:center;color:#6d7e77;background:#f7faf8;border-radius:12px}.history-metrics{display:block}.history-metrics time{display:block;margin-bottom:12px;color:#667872}.history-metrics>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.history-metrics span{padding:10px 12px;background:#f7faf8;border-radius:10px}.history-metrics small,.history-metrics b{display:block}.history-metrics small{color:#708078;margin-bottom:3px}.product-eval-result{padding-bottom:18px}.product-focus-result{margin-top:15px;padding:14px 16px;background:#f6faf8;border-radius:14px}.product-focus-result>div{display:flex;justify-content:space-between;align-items:baseline}.product-focus-result small{font-weight:700;color:#168b75}.product-focus-result strong{font-size:18px}.product-focus-result .change-line-chart{height:130px;margin-top:4px}.evaluation-schedule{margin:15px 0}.evaluation-schedule>b{display:block;margin-bottom:10px}.evaluation-schedule>div{display:flex;overflow-x:auto;padding:5px 2px 10px}.schedule-point{position:relative;min-width:86px;text-align:center;color:#82908a}.schedule-point:before{content:"";position:absolute;top:7px;left:0;right:0;height:2px;background:#dce7e2}.schedule-point:first-child:before{left:50%}.schedule-point:last-child:before{right:50%}.schedule-point i{position:relative;z-index:1;display:block;width:14px;height:14px;margin:0 auto 7px;border:3px solid #cddbd5;border-radius:50%;background:#fff}.schedule-point.done i{background:#15967e;border-color:#15967e}.schedule-point.next i{border-color:#0d374f;box-shadow:0 0 0 4px #e5f1ed}.schedule-point b,.schedule-point small{display:block;font-size:11px}.schedule-point.done,.schedule-point.next{color:#173e50}.product-eval-actions{display:flex;gap:8px}.product-eval-actions .button{flex:1}@media(max-width:760px){.change-overview header{display:block}.change-tabs{margin-top:12px}.history-metrics>div{grid-template-columns:repeat(2,1fr)}}
/* v0.6.3 history readability + product evaluation results */
.section-help,.history-heading span{display:block;color:#6f8079;font-size:12px;margin-top:5px}.metric-chart-wrap{position:relative;padding-left:22px}.metric-chart-scale{position:absolute;left:0;top:18px;bottom:34px;display:flex;flex-direction:column;justify-content:space-between;color:#74857e;font-size:10px}.overall-chart small{display:block;color:#75857f;margin-top:4px}.chart-legend{display:flex;flex-wrap:wrap;gap:12px;margin:8px 0 2px}.chart-legend span{display:flex;align-items:center;gap:5px;font-size:11px;color:#536861}.chart-legend i{width:18px;height:3px;border-radius:3px;background:#15967e}.chart-legend .legend-1 i{opacity:.8}.chart-legend .legend-2 i{opacity:.65}.chart-legend .legend-3 i{opacity:.5}.chart-legend .legend-4 i{opacity:.35}.change-line-chart.multi .series-1{opacity:.8}.change-line-chart.multi .series-2{opacity:.65}.change-line-chart.multi .series-3{opacity:.5}.change-line-chart.multi .series-4{opacity:.35}.history-heading{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.history-heading h2{margin-bottom:2px}.history-heading>b{font-size:12px;color:#168b75;background:#eef8f4;padding:6px 9px;border-radius:999px}.history-metrics span{position:relative}.delta{display:block;margin-top:4px;font-size:10px;font-style:normal;font-weight:700}.delta.up{color:#a75b3a}.delta.down{color:#168b75}.delta.same,.delta.baseline{color:#83918c}.product-all-metrics{margin-top:12px}.product-all-metrics>b{display:block;margin-bottom:8px}.product-all-metrics>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:6px}.product-all-metrics span{background:#f7faf8;border:1px solid #e4ece8;border-radius:10px;padding:9px}.product-all-metrics small,.product-all-metrics strong{display:block}.product-all-metrics small{font-size:10px;color:#71817b;margin-bottom:3px}.product-all-metrics strong{font-size:12px}.auth-required #routine{pointer-events:none;filter:blur(1px)}
@media(max-width:760px){.product-all-metrics>div{grid-template-columns:repeat(2,1fr)}.history-heading{display:block}.history-heading>b{display:inline-block;margin-top:8px}}
/* v0.6.4: make the five history series visually distinct. */
.chart-legend .legend-0 i{background:#1565c0;opacity:1}
.chart-legend .legend-1 i{background:#d84343;opacity:1}
.chart-legend .legend-2 i{background:#d59b16;opacity:1}
.chart-legend .legend-3 i{background:#15967e;opacity:1}
.chart-legend .legend-4 i{background:#7b55a5;opacity:1}
.change-line-chart.multi .series-0{stroke:#1565c0;opacity:1}
.change-line-chart.multi .series-1{stroke:#d84343;opacity:1}
.change-line-chart.multi .series-2{stroke:#d59b16;opacity:1}
.change-line-chart.multi .series-3{stroke:#15967e;opacity:1}
.change-line-chart.multi .series-4{stroke:#7b55a5;opacity:1}
.evaluation-schedule .schedule-point.done i{background:#15967e;border-color:#15967e}
.evaluation-schedule .schedule-point.next i{background:#fff;border:3px solid #0d5368;box-shadow:0 0 0 3px #dcecef}
.evaluation-schedule .schedule-point.upcoming i{background:#fff;border-color:#c7d6d0}
.evaluation-schedule .schedule-point.next b{color:#0d5368;font-weight:800}
.evaluation-schedule .schedule-point.upcoming b,.evaluation-schedule .schedule-point.upcoming small{color:#87958f}
.product-secondary-metrics{margin-top:12px;padding:12px;border:1px solid #e0ebe6;border-radius:12px;background:#fbfdfc}
.product-secondary-metrics>b{display:block;margin-bottom:8px}
.product-secondary-metrics>div{display:flex;gap:8px;flex-wrap:wrap}
.product-secondary-metrics span{min-width:120px;background:#fff;border:1px solid #e4ece8;border-radius:9px;padding:8px 10px}
.product-secondary-metrics small,.product-secondary-metrics strong{display:block}
.product-secondary-metrics small{font-size:10px;color:#71817b;margin-bottom:3px}
/* v0.6.5 metric identity, history deletion, schedule editing */
.change-line-chart.metric-0 .series{stroke:#1565c0}.change-line-chart.metric-0 circle{stroke:#1565c0}
.change-line-chart.metric-1 .series{stroke:#d84343}.change-line-chart.metric-1 circle{stroke:#d84343}
.change-line-chart.metric-2 .series{stroke:#d59b16}.change-line-chart.metric-2 circle{stroke:#d59b16}
.change-line-chart.metric-3 .series{stroke:#15967e}.change-line-chart.metric-3 circle{stroke:#15967e}
.change-line-chart.metric-4 .series{stroke:#7b55a5}.change-line-chart.metric-4 circle{stroke:#7b55a5}
.history-item-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.history-item-head time{margin-bottom:0}.history-delete{border:1px solid #e2caca;background:#fff;color:#9b4747;border-radius:8px;padding:6px 10px;font-size:11px;font-weight:800;cursor:pointer}.history-delete:hover{background:#fff6f6}.history-delete:disabled{opacity:.5;cursor:wait}
.routine-recommendation small{white-space:normal;word-break:keep-all}.product-eval-actions .secondary{background:#fff;color:#173e50;border:1px solid #cfded8}
/* v0.6.6: quiet secondary actions + in-app schedule editor */
.history-item-head{position:relative;padding-right:34px}
.history-delete{position:absolute;right:0;top:-2px;width:26px;height:26px;padding:0;border:0;background:transparent;color:#aab5b0;border-radius:50%;font-size:0;font-weight:700;opacity:.55;cursor:pointer;transition:.15s ease}
.history-delete::before{content:"×";font-size:15px;line-height:26px}
.history-delete:hover{background:#fff3f3;color:#b24d4d;opacity:1}.history-delete:disabled{opacity:.3}
.product-card-tools{display:flex;flex-direction:column;align-items:flex-end;gap:5px}.product-card-tools>b{color:#48665e;font-size:.72rem;white-space:nowrap}.subtle-action{border:0;background:transparent;padding:1px 2px;color:#8b9994;font:inherit;font-size:10px;cursor:pointer;text-decoration:underline;text-decoration-color:#d7dfdc;text-underline-offset:3px}.subtle-action:hover{color:#355d53;text-decoration-color:#7e9f96}
.product-eval-actions{display:block}.product-eval-actions .button{width:100%}
.app-modal[hidden]{display:none}.app-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:20px;background:rgba(18,38,44,.32);backdrop-filter:blur(2px)}.app-modal-card{position:relative;width:min(430px,calc(100vw - 32px));box-sizing:border-box;border:1px solid #d6e2dd;border-radius:18px;background:#fff;padding:25px;box-shadow:0 22px 60px rgba(16,42,49,.18)}.app-modal-card h2{margin:5px 0 7px;color:#12394b;font-size:1.25rem}.modal-help{margin:0 0 18px;color:#71817b;font-size:.78rem;line-height:1.5}.modal-close{position:absolute;right:14px;top:12px;border:0;background:transparent;color:#84918c;font-size:22px;cursor:pointer}.schedule-edit-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}.schedule-edit-fields label span{display:block;margin-bottom:6px;color:#4e6760;font-size:.75rem;font-weight:800}.schedule-edit-fields select{width:100%;box-sizing:border-box;border:1px solid #d7e2dd;border-radius:10px;background:#fff;padding:11px 12px;color:#173e50;font:inherit}.schedule-edit-preview{margin:14px 0 0;padding:11px 12px;border-radius:10px;background:#f5faf7;color:#42655b;font-size:.78rem}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}.modal-actions .button{min-width:90px}
@media(max-width:520px){.schedule-edit-fields{grid-template-columns:1fr}.product-card-tools{align-items:flex-start;margin-top:6px}}

/* v0.6.7: readable secondary edit action + bounded responsive evaluation schedule */
.product-eval-layout,.product-eval-list-wrap,.product-eval-list,.product-eval-card,.product-eval-result{min-width:0}
.product-card-tools{display:flex;flex-direction:column;align-items:flex-end;gap:4px;flex:0 0 auto}
.product-card-tools>b{color:#48665e;font-size:.72rem;white-space:nowrap}
.product-schedule-edit.subtle-action{border:0;background:transparent;padding:2px 0;color:#657b74;font-size:.68rem;font-weight:700;line-height:1.25;text-decoration:none;cursor:pointer;opacity:.9}
.product-schedule-edit.subtle-action::before{content:"✎";margin-right:4px;font-size:.72rem;color:#7a9189}
.product-schedule-edit.subtle-action:hover,.product-schedule-edit.subtle-action:focus-visible{color:#0d5368;opacity:1;text-decoration:underline;text-underline-offset:3px}
.evaluation-schedule{min-width:0;max-width:100%;overflow:hidden}
.evaluation-schedule>div{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:12px 0;width:100%;max-width:100%;overflow:visible;padding:5px 0 10px}
.schedule-point{position:relative;min-width:0;width:auto;text-align:center;color:#82908a;padding:0 3px}
.schedule-point:before{left:0;right:0}
.schedule-point:nth-child(7n+1):before{left:50%}
.schedule-point:nth-child(7n):before{right:50%}
.schedule-point:last-child:before{right:50%}
.schedule-point b,.schedule-point small{overflow-wrap:anywhere}
@media(max-width:1050px){.evaluation-schedule>div{grid-template-columns:repeat(5,minmax(0,1fr))}.schedule-point:nth-child(7n+1):before{left:0}.schedule-point:nth-child(7n):before{right:0}.schedule-point:nth-child(5n+1):before{left:50%}.schedule-point:nth-child(5n):before{right:50%}}
@media(max-width:680px){.product-card-tools{align-items:flex-start;margin-top:7px}.evaluation-schedule>div{grid-template-columns:repeat(4,minmax(0,1fr))}.schedule-point:nth-child(5n+1):before{left:0}.schedule-point:nth-child(5n):before{right:0}.schedule-point:nth-child(4n+1):before{left:50%}.schedule-point:nth-child(4n):before{right:50%}}

/* v0.6.8 service guide: current product-effect evaluation model */
.guide-product-flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:18px}.guide-product-flow article{padding:16px;border-radius:14px;background:#f6faf8}.guide-product-flow b{display:block;color:#173f5d;font-size:.88rem}.guide-product-flow span{display:block;margin-top:7px;color:#61756d;font-size:.76rem;line-height:1.6}.guide-product-metrics{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}.guide-product-metrics span{padding:8px 11px;border:1px solid #dce8e2;border-radius:99px;background:#fff;color:#61756d;font-size:.74rem}.guide-product-metrics b{color:#176c5d}@media(max-width:760px){.guide-product-flow{grid-template-columns:1fr 1fr}}@media(max-width:480px){.guide-product-flow{grid-template-columns:1fr}}

/* v0.6.9 mobile UX density + product evaluation priority */
@media(max-width:850px){
  main{padding:30px 18px 68px}
  .page-heading{margin-bottom:20px}
  .page-heading h1{font-size:clamp(1.95rem,9vw,2.35rem);line-height:1.12;word-break:keep-all;overflow-wrap:normal}
  .page-heading .support-lead{max-width:34rem;margin-top:9px;font-size:.82rem;line-height:1.6}
  #routine .product-eval-layout{display:flex;flex-direction:column;gap:14px}
  #routine .product-eval-builder{order:1}
  #routine .product-eval-list-wrap{order:2}
  #routine.has-active-evaluations .product-eval-list-wrap{order:1}
  #routine.has-active-evaluations .product-eval-builder{order:2}
  .mobile-product-builder-toggle{display:inline-flex;align-items:center;justify-content:center;min-height:36px;margin-left:auto;border:1px solid #cddfd8;border-radius:999px;background:#fff;color:#245f53;padding:0 11px;font-size:.72rem;font-weight:800;white-space:nowrap}
  #routine.has-active-evaluations:not(.mobile-product-builder-open) .product-eval-builder{display:none}
  .product-eval-list-head{align-items:center;margin-bottom:14px}
  .product-eval-list-head>span{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;word-break:keep-all;line-height:1;padding:7px 10px;flex:0 0 auto}
  .product-eval-builder,.product-eval-list-wrap{border-radius:18px;padding:18px}
  .product-eval-card{padding:16px}
  .product-eval-card header{display:flex;align-items:flex-start}
  .product-eval-card h3{font-size:1.08rem}
  .product-card-tools{align-items:flex-end;margin-top:0}
  .product-eval-meta{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
  .product-eval-meta b{font-size:.76rem}
  .product-all-metrics>div{grid-template-columns:repeat(3,minmax(0,1fr))}
  .change-overview,.measurement-history{padding:17px;border-radius:17px}
  .change-tabs{flex-wrap:nowrap;overflow-x:auto;padding-bottom:3px;scrollbar-width:none}
  .change-tabs::-webkit-scrollbar{display:none}.change-tabs button{flex:0 0 auto;padding:6px 10px;font-size:.78rem}
  #history .section-heading{align-items:flex-start}.history-heading>b{white-space:nowrap}
  .support-grid,.guide-steps,.guide-grid{gap:12px}.support-card,.guide-section{padding:18px;border-radius:17px}
}
@media(min-width:521px) and (max-width:600px){
  .page-heading h1{font-size:2.15rem;line-height:1.2;letter-spacing:-.035em;word-break:keep-all}
}
@media(max-width:520px){
  main{padding:24px 16px 60px}
  .topbar{height:64px;padding:0 16px}.brand{font-size:.96rem;gap:8px}.brand-mark{width:32px;height:32px}.privacy-chip{font-size:.7rem;padding:7px 9px}
  .tabs{height:50px;padding:0 16px;gap:24px;overflow-x:auto;white-space:nowrap;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}.tab{flex:0 0 auto;font-size:.84rem}
  .eyebrow{font-size:.66rem;margin-bottom:7px}
  .page-heading h1{font-size:2rem;letter-spacing:-.045em}
  #history .section-heading{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:start}
  #history .section-heading .button{min-height:36px;padding:0 12px;font-size:.76rem}
  .product-eval-builder,.product-eval-list-wrap{padding:16px}
  .product-eval-builder-head h2,.product-eval-list-head h2{font-size:1.12rem}
  .product-eval-list-head>span{font-size:.66rem;padding:6px 9px}
  .product-eval-card header{gap:10px}.product-card-tools>b{font-size:.68rem}.product-schedule-edit.subtle-action{font-size:.66rem}
  .product-eval-meta{grid-template-columns:repeat(3,minmax(0,1fr))}.product-eval-meta small{font-size:.6rem}.product-eval-meta b{font-size:.7rem;word-break:keep-all}
  .product-focus-result{padding:12px}.product-all-metrics>div{grid-template-columns:repeat(2,minmax(0,1fr))}
  .evaluation-schedule>div{grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 0}.schedule-point:nth-child(4n+1):before{left:0}.schedule-point:nth-child(4n):before{right:0}.schedule-point:nth-child(3n+1):before{left:50%}.schedule-point:nth-child(3n):before{right:50%}.schedule-point b,.schedule-point small{font-size:10px;overflow-wrap:normal;word-break:keep-all}
  .change-overview h2,.measurement-history h2{font-size:1.15rem}.section-help,.history-heading span{font-size:.72rem;line-height:1.5}
  .history-metrics>div{grid-template-columns:repeat(2,minmax(0,1fr))}.history-metrics span{padding:9px}
  .support-lead{font-size:.8rem;line-height:1.55}.support-card h2{font-size:1.12rem}.guide-hero{padding:18px}.guide-hero h2{font-size:1.8rem}.guide-product-flow{grid-template-columns:1fr}
}

/* v0.6.9 — mobile Official Assessments navigator + richer Deep Analysis */
.dsv3-assessment-filters{display:none}
.dsv3-detail-backdrop{display:none}
.dsv3-detail-close{display:none}
.dsv3-confidence>small{display:block;margin-top:3px;color:#6f8079;font-size:.7rem}
.dsv3-interpretation{grid-column:1/-1;display:grid;grid-template-columns:minmax(190px,.42fr) 1fr;gap:20px;align-items:start}
.dsv3-interpretation span,.dsv3-next-check span{display:block;color:#71827b;font-size:.75rem}
.dsv3-interpretation strong{display:block;margin-top:6px;color:#123746;font-size:1.08rem;line-height:1.35}
.dsv3-interpretation p{margin:0;color:#536861;font-size:.84rem;line-height:1.7}
.dsv3-detail-history,.dsv3-next-check{display:flex;flex-direction:column;gap:6px}
.dsv3-detail-history b,.dsv3-next-check span{font-size:.75rem;color:#71827b}
.dsv3-detail-history strong,.dsv3-next-check strong{color:#123746;font-size:1rem;line-height:1.45}
.dsv3-detail-history span{color:#667a73;font-size:.76rem;line-height:1.5}
.dsv3-detail-nav{display:none}
.dsv3-primary-result.is-attention{background:#fbf8f5}
.dsv3-primary-result.is-watch{background:#f8fbf9}
.dsv3-primary-result.is-uncertain{background:#faf9f4}

@media(max-width:680px){
  body.dsv3-sheet-open{overflow:hidden;overscroll-behavior:none}
  .dsv3-assessments{padding:16px}
  .dsv3-assessments>header{padding-bottom:13px}
  .dsv3-assessments h3{font-size:1.3rem}
  .dsv3-assessments header span{line-height:1.5}
  .dsv3-assessment-filters{display:flex;gap:7px;overflow-x:auto;margin:14px -2px 0;padding:1px 2px 7px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .dsv3-assessment-filters::-webkit-scrollbar{display:none}
  .dsv3-assessment-filters button{flex:0 0 auto;border:1px solid #dce7e2;border-radius:999px;background:#fff;padding:8px 11px;color:#526b63;font:700 .72rem Manrope,sans-serif;white-space:nowrap}
  .dsv3-assessment-filters button b{margin-left:2px;color:#87968f;font-size:.67rem}
  .dsv3-assessment-filters button.is-active{border-color:#123746;background:#123746;color:#fff}
  .dsv3-assessment-filters button.is-active b{color:#cfe1da}
  .dsv3-assessment-groups{gap:16px;margin-top:14px}
  .dsv3-assessment-group>header{margin-bottom:7px}
  .dsv3-assessment-group h4{font-size:.9rem}
  .dsv3-assessment-group>div{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px}
  .dsv3-assessment-card{grid-template-columns:44px minmax(0,1fr);gap:9px;min-height:68px;padding:8px 9px;border-radius:14px}
  .dsv3-assessment-card:hover{transform:none}
  .dsv3-assessment-copy{min-width:0}
  .dsv3-assessment-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem}
  .dsv3-assessment-copy small{margin-top:3px;font-size:.68rem;white-space:nowrap}
  .dsv3-gauge{width:44px;height:44px}
  .dsv3-gauge:before{inset:5px}
  .dsv3-gauge strong{font-size:.88rem}
  .dsv3-gauge small{font-size:.54rem}
  .dsv3-assessment-card.is-selected{box-shadow:0 0 0 1px rgba(18,55,70,.08)}

  .dsv3-detail-backdrop{display:block;position:fixed;inset:0;z-index:1090;background:rgba(11,31,38,.42);opacity:0;pointer-events:none;transition:opacity .2s ease}
  .dsv3-detail-backdrop.is-open{opacity:1;pointer-events:auto}
  .dsv3-detail{position:fixed;left:0;right:0;bottom:0;z-index:1100;max-height:min(84dvh,760px);margin:0!important;padding:0!important;border-radius:24px 24px 0 0!important;overflow:auto;overscroll-behavior:contain;box-shadow:0 -16px 44px rgba(10,38,45,.22);transform:translateY(calc(100% + 28px));opacity:0;pointer-events:none;transition:transform .24s ease,opacity .2s ease;background:#fff;padding-bottom:env(safe-area-inset-bottom)!important}
  .dsv3-detail.is-open{transform:translateY(0);opacity:1;pointer-events:auto}
  .dsv3-detail-head{position:sticky;top:0;z-index:3;display:flex!important;align-items:flex-start!important;gap:12px!important;padding:20px 18px 14px!important;background:rgba(255,255,255,.97);backdrop-filter:blur(10px);border-bottom:1px solid #e5ece8!important}
  .dsv3-detail-head:before{content:"";position:absolute;top:7px;left:50%;width:42px;height:4px;border-radius:99px;background:#d7e2dd;transform:translateX(-50%)}
  .dsv3-detail-head>div{min-width:0;padding-top:4px}
  .dsv3-detail-head h3{font-size:1.25rem}
  .dsv3-detail-head span{font-size:.74rem;line-height:1.45}
  .dsv3-detail-close{display:grid;place-items:center;flex:0 0 36px;width:36px;height:36px;margin-left:auto;border:1px solid #dce7e2;border-radius:50%;background:#f8faf9;color:#123746;font:400 1.5rem/1 Arial,sans-serif}
  .dsv3-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px;margin:0;padding:14px 14px 10px}
  .dsv3-detail-grid>article{min-width:0;padding:14px;border-radius:15px}
  .dsv3-primary-result{grid-column:1/-1;display:grid;grid-template-columns:96px minmax(0,1fr);gap:16px;min-height:126px}
  .dsv3-gauge.is-large{width:94px;height:94px}
  .dsv3-gauge.is-large:before{inset:9px}
  .dsv3-gauge.is-large strong{font-size:1.8rem}
  .dsv3-primary-result>div:last-child strong{margin:5px 0;font-size:1.3rem}
  .dsv3-primary-result>div:last-child small{line-height:1.45}
  .dsv3-confidence{grid-column:1/-1;min-height:96px;padding-right:92px!important}
  .dsv3-confidence>strong{margin-top:5px;font-size:1.65rem}
  .dsv3-confidence-ring{right:15px;bottom:15px;width:58px;height:58px}
  .dsv3-interpretation{grid-column:1/-1;display:block}
  .dsv3-interpretation strong{font-size:1rem}
  .dsv3-interpretation p{margin-top:9px;font-size:.8rem;line-height:1.62}
  .dsv3-detail-history,.dsv3-next-check{grid-column:1/-1}
  .dsv3-scale,.dsv3-probability-card{grid-column:1/-1!important}
  .dsv3-scale-steps{margin-top:14px}
  .dsv3-probability>div{height:126px}
  .dsv3-detail-nav{position:sticky;bottom:0;z-index:3;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:9px;padding:11px 14px calc(11px + env(safe-area-inset-bottom));border-top:1px solid #e5ece8;background:rgba(255,255,255,.97);backdrop-filter:blur(10px)}
  .dsv3-detail-nav>span{color:#7b8b85;font:700 .68rem Manrope,sans-serif;white-space:nowrap}
  .dsv3-detail-nav button{min-width:0;border:1px solid #dce7e2;border-radius:12px;background:#f8faf9;padding:8px 10px;color:#123746;text-align:left}
  .dsv3-detail-nav button:last-child{text-align:right}
  .dsv3-detail-nav button span,.dsv3-detail-nav button b{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .dsv3-detail-nav button span{font-size:.64rem;color:#71827b}
  .dsv3-detail-nav button b{margin-top:2px;font-size:.7rem}
  .dsv3-detail-nav button:disabled{opacity:.42}
}

@media(max-width:380px){
  .dsv3-assessment-card{grid-template-columns:40px minmax(0,1fr);gap:7px;padding:8px 7px}
  .dsv3-gauge{width:40px;height:40px}
  .dsv3-assessment-copy b{font-size:.76rem}
  .dsv3-assessment-copy small{font-size:.63rem}
}

/* 2026-10-03 Capture Standard Phase 1: camera Geometry Lock.
   Geometry is evaluated before lighting normalization or any model-input correction. */
.camera-stage.live .face-guide{width:64%;height:76%;max-width:290px;max-height:380px;transition:border-color .2s ease,box-shadow .2s ease,opacity .2s ease}
.camera-stage.geometry-adjust .face-guide{border-color:rgba(255,209,102,.92);box-shadow:0 0 0 999px rgba(4,23,33,.24)}
.camera-stage.geometry-adjust .face-guide:before,.camera-stage.geometry-adjust .face-guide:after,.camera-stage.geometry-adjust .face-guide span:before,.camera-stage.geometry-adjust .face-guide span:after{background:#ffd166}
.camera-stage.geometry-locked .face-guide{border-color:rgba(114,241,198,.98);box-shadow:0 0 0 999px rgba(4,23,33,.18),0 0 0 4px rgba(114,241,198,.12)}
.geometry-lock-panel{position:absolute;z-index:5;left:50%;bottom:14px;width:min(calc(100% - 28px),430px);transform:translateX(-50%);padding:10px 12px;border:1px solid rgba(255,255,255,.22);border-radius:14px;background:rgba(8,31,43,.82);backdrop-filter:blur(12px);color:#fff;box-shadow:0 12px 28px rgba(4,23,33,.18)}
.geometry-lock-panel[hidden]{display:none}.geometry-lock-panel strong{display:block;font-size:.82rem;line-height:1.4}.geometry-lock-checks{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.geometry-lock-checks span{padding:4px 7px;border-radius:99px;background:rgba(255,255,255,.10);font-size:.66rem;font-weight:800}.geometry-lock-checks span.is-passed{background:rgba(114,241,198,.18);color:#b8ffe7}.geometry-lock-checks span.is-failed{background:rgba(255,209,102,.18);color:#ffe29a}.geometry-lock-checks span.is-pending{color:#d8e4df}
.camera-stage.geometry-locked .geometry-lock-panel{border-color:rgba(114,241,198,.36)}
#takePhoto:disabled{opacity:.48;filter:saturate(.65)}
@media(max-width:520px){.camera-stage.live .face-guide{width:66%;height:75%}.geometry-lock-panel{bottom:10px;width:calc(100% - 20px);padding:9px 10px}.geometry-lock-checks{gap:5px}.geometry-lock-checks span{font-size:.62rem}}
.capture-quality-summary{margin:10px 0 0;padding:11px 13px;border:1px solid #dce7e2;border-radius:13px;background:#f7faf8;color:#315d50}.capture-quality-summary[hidden]{display:none}.capture-quality-summary strong{display:block;font-size:.78rem}.capture-quality-summary ul{margin:6px 0 0;padding-left:18px;color:#647680;font-size:.7rem;line-height:1.5}.capture-quality-summary.is-pass{border-color:#bfe2d6;background:#edf8f4}.capture-quality-summary.is-warn{border-color:#ead9a7;background:#fff9e9}.capture-quality-summary.is-warn strong{color:#8b6815}.capture-quality-summary.is-retake{border-color:#ecc4bd;background:#fff2ee}.capture-quality-summary.is-retake strong{color:#a63a32}
.baseline-face-guide{position:absolute;z-index:4;inset:0;width:100%;height:100%;pointer-events:none}.baseline-face-guide[hidden]{display:none}.baseline-face-guide polyline{fill:none;stroke:rgba(255,255,255,.82);stroke-width:.48;stroke-dasharray:1.2 1.1;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(0,0,0,.45))}.camera-stage.has-baseline-guide .face-guide{opacity:.28}.camera-stage.geometry-locked .baseline-face-guide polyline{stroke:rgba(114,241,198,.96)}
.dsv3-quality.is-warn{background:#fff6dc;color:#8a6713}

/* 2026-10-04 Capture workflow split: file import shows QC review only. */
.capture-quality-summary ul{list-style:none;padding-left:0;display:grid;gap:6px}
.capture-quality-summary li{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:6px 8px;border-radius:8px;background:rgba(255,255,255,.58)}
.capture-quality-summary li b{font-size:.72rem;white-space:nowrap}
.capture-quality-summary li small{display:block;margin:0;color:#647680;text-align:right;font-size:.67rem;line-height:1.35}
.capture-quality-summary li.qc-pass b{color:#26715d}.capture-quality-summary li.qc-warn b{color:#956e13}.capture-quality-summary li.qc-fail b{color:#a63a32}
.capture-quality-summary li.qc-detail{display:block;background:transparent;padding:2px 4px}.capture-quality-summary li.qc-detail small{text-align:left;color:#7b6c57}
.capture-panel-mode .capture-actions button[hidden]{display:none!important}

/* 2026-10-04 Capture Workflow UX v2
   File review paints immediately and uses a wide desktop review layout.
   Camera mode auto-starts; redundant file/camera buttons stay hidden. */
.capture-quality-summary.is-loading{border-color:#d8e5df;background:#f7faf8;color:#536b66}
.capture-file-mode.capture-panel-mode #today>.capture-grid{width:min(940px,calc(100vw - 28px))}
.capture-file-mode.capture-panel-mode .camera-card{display:grid;grid-template-columns:minmax(280px,390px) minmax(300px,1fr);grid-template-areas:"stage quality" "actions quality" "analyze analyze";align-items:start;gap:14px 22px;width:100%}
.capture-file-mode.capture-panel-mode .camera-stage{grid-area:stage;width:100%;max-width:390px}
.capture-file-mode.capture-panel-mode .capture-actions{grid-area:actions;width:100%;display:flex;justify-content:flex-start}
.capture-file-mode.capture-panel-mode .capture-quality-summary{grid-area:quality;margin:0;width:100%;align-self:stretch}
.capture-file-mode.capture-panel-mode #analyze{grid-area:analyze;width:100%}
.capture-camera-mode.capture-panel-mode .capture-actions{display:flex;justify-content:center}
.capture-camera-mode.capture-panel-mode #takePhoto{min-width:180px}
@media(max-width:760px){
  .capture-file-mode.capture-panel-mode .camera-card{grid-template-columns:1fr;grid-template-areas:"stage" "quality" "actions" "analyze"}
  .capture-file-mode.capture-panel-mode .camera-stage{margin:auto}
}


/* Capture Mobile Camera Fix v4 — native-like preview and non-occluding guidance */
.capture-camera-mode.capture-panel-mode .camera-stage video{
  object-fit:contain;
  background:#10191d;
  transform:scaleX(-1);
  transform-origin:center center;
}
.live-face-guide{position:absolute;z-index:4;inset:0;width:100%;height:100%;pointer-events:none}
.live-face-guide[hidden]{display:none}
.live-face-guide polyline{fill:none;stroke:#ffd166;stroke-width:2;vector-effect:non-scaling-stroke;filter:drop-shadow(0 1px 2px rgba(0,0,0,.42))}
.camera-stage.geometry-locked .live-face-guide polyline{stroke:rgba(114,241,198,.98)}
/* Guidance belongs outside the skin ROI: never cover lips/chin/cheeks. */
.capture-camera-mode.capture-panel-mode .geometry-lock-panel{
  position:relative;left:auto;bottom:auto;transform:none;z-index:2;
  width:min(100%,620px);margin:8px auto 0;padding:9px 11px;
  border-color:#dce8e3;background:#f5faf7;color:var(--ink);box-shadow:none;backdrop-filter:none;
}
.capture-camera-mode.capture-panel-mode .geometry-lock-panel strong{font-size:.76rem}
.capture-camera-mode.capture-panel-mode .geometry-lock-checks{margin-top:5px;gap:5px}
.capture-camera-mode.capture-panel-mode .geometry-lock-checks span{background:#edf2ef;color:#6b7d76;font-size:.62rem;padding:4px 7px}
.capture-camera-mode.capture-panel-mode .geometry-lock-checks span.is-passed{background:#dff5ec;color:#167963}
.capture-camera-mode.capture-panel-mode .geometry-lock-checks span.is-failed{background:#fff2d1;color:#8b6819}
.capture-camera-mode.capture-panel-mode .capture-actions{position:sticky;bottom:0;z-index:12;background:#fff;padding:8px 0 2px;margin:0 auto;width:min(100%,620px)}
.capture-camera-mode.capture-panel-mode #takePhoto{width:100%;min-height:54px;font-size:1rem}
.capture-camera-mode.capture-panel-mode #analyze[hidden]{display:none!important}
@media(max-width:520px){
  .capture-camera-mode.capture-panel-mode #today>.capture-grid{top:8px;bottom:8px;inset-inline:8px;transform:none;width:auto;max-height:none;overflow:auto;padding:12px;border-radius:22px}
  .capture-camera-mode.capture-panel-mode .capture-panel-heading{gap:8px}
  .capture-camera-mode.capture-panel-mode .capture-panel-heading h2{font-size:1.12rem;margin:2px 0;line-height:1.25}
  .capture-camera-mode.capture-panel-mode .capture-panel-heading small{font-size:.68rem;line-height:1.35}
  .capture-camera-mode.capture-panel-mode .camera-stage{width:auto;max-width:100%;height:min(52dvh,430px);max-height:430px;margin:4px auto 0;min-height:0}
  .capture-camera-mode.capture-panel-mode .face-guide{width:65%;height:75%}
  .capture-camera-mode.capture-panel-mode .geometry-lock-panel{margin-top:6px;padding:7px 9px}
  .capture-camera-mode.capture-panel-mode .geometry-lock-panel strong{font-size:.71rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .capture-camera-mode.capture-panel-mode .geometry-lock-checks{display:grid;grid-template-columns:repeat(auto-fit,minmax(74px,1fr));gap:4px}
  .capture-camera-mode.capture-panel-mode .geometry-lock-checks span{text-align:center;white-space:nowrap;font-size:.58rem;padding:4px 2px}
  .capture-camera-mode.capture-panel-mode .capture-actions{padding-top:6px}
  .capture-camera-mode.capture-panel-mode #takePhoto{min-height:50px}
}

/* 2026-10-04 Capture Protocol + one-screen mobile camera v5 */
.capture-protocol-panel{
  width:min(100%,620px);margin:0 auto 6px;padding:8px 10px;
  border:1px solid #dce8e3;border-radius:12px;background:#f7faf8;color:var(--ink);
}
.capture-protocol-panel[hidden]{display:none!important}
.capture-protocol-confirm{display:flex;align-items:center;gap:9px;cursor:default}
.capture-protocol-confirm input{width:19px;height:19px;flex:0 0 auto;accent-color:var(--mint-dark)}
.capture-protocol-confirm span{min-width:0;display:block}
.capture-protocol-confirm b{display:block;font-size:.73rem;color:#173f4c;line-height:1.25}
.capture-protocol-confirm small{display:block;margin-top:2px;color:#657871;font-size:.64rem;line-height:1.35}
.capture-protocol-auto{display:block;margin:5px 0 0 28px;color:#75867f;font-size:.61rem;line-height:1.3}
.capture-protocol-panel.is-confirmed{border-color:#bfe2d6;background:#eef8f4}
.capture-protocol-panel.is-confirmed .capture-protocol-confirm small{color:#3f6d61}
.capture-protocol-panel.needs-confirmation{border-color:#e6b8ac;background:#fff4ef;box-shadow:0 0 0 3px rgba(166,58,50,.08)}

/* In live camera mode, protocol + geometry guidance are always outside the image. */
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-card{
  display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:6px;min-height:0;
}
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-panel{grid-row:1}
.capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel{grid-row:2;margin:0 auto;padding:7px 9px}
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage{grid-row:3;min-height:0}
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-actions{grid-row:4}
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-quality-summary{display:none!important}
.capture-camera-mode.capture-live-mode.capture-panel-mode #photoFrameControls{display:none!important}
.capture-camera-mode.capture-live-mode.capture-panel-mode #analyze{display:none!important}

@media(max-width:520px){
  body.capture-camera-mode.capture-live-mode.capture-panel-mode{overflow:hidden;overscroll-behavior:none}
  .capture-camera-mode.capture-live-mode.capture-panel-mode #today>.capture-grid{
    top:max(4px,env(safe-area-inset-top));bottom:max(4px,env(safe-area-inset-bottom));
    left:6px;right:6px;inset-inline:6px;transform:none;width:auto;height:auto;max-height:none;
    overflow:hidden;padding:9px 10px 8px;border-radius:20px;
    display:grid!important;grid-template-rows:auto minmax(0,1fr);gap:6px;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading{min-height:0;align-items:center;gap:6px}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading .eyebrow{display:none}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading h2{font-size:1rem;margin:0;line-height:1.18}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading small{display:none}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading button{width:34px;height:34px;flex:0 0 34px;font-size:1.35rem}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-card{
    height:100%;min-height:0;overflow:hidden;grid-template-rows:auto auto minmax(0,1fr) auto;gap:5px;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-panel{
    margin:0;padding:6px 8px;border-radius:10px;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-confirm{gap:7px}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-confirm input{width:18px;height:18px}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-confirm b{font-size:.68rem}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-confirm small{font-size:.58rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-auto{display:none}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-panel.is-confirmed .capture-protocol-confirm small{display:block}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel{
    margin:0;padding:5px 7px;border-radius:10px;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel strong{
    display:block;font-size:.66rem;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks{
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:3px;margin-top:4px;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks span{
    min-width:0;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
    font-size:.54rem;padding:3px 2px;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage{
    /* Mobile capture target: portrait frame instead of the previous square-like box.
       The WebRTC frame itself still uses contain/full-FOV, so no analysis pixels are cropped. */
    width:auto!important;height:100%!important;max-width:100%!important;max-height:none!important;min-height:0!important;
    margin:0 auto!important;aspect-ratio:4 / 5!important;border-radius:16px;justify-self:center!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage video{
    width:100%;height:100%;object-fit:contain;background:#10191d;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .face-guide{
    /* A face-shaped portrait oval.  Combined with the 4:5 stage this is visibly
       taller/narrower than the old near-circular target. */
    width:70%;height:76%;max-width:none;max-height:none;border-radius:48% 48% 44% 44%;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-actions{
    position:relative;bottom:auto;z-index:12;margin:0;width:100%;padding:4px 0 0;background:#fff;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode #takePhoto{
    width:100%;min-height:48px;height:48px;border-radius:14px;font-size:.9rem;
  }
}

/* 2026-10-04 Capture Centering + overlay coordinate fix v7 */
.capture-camera-mode.capture-live-mode.capture-panel-mode #today>.capture-grid,
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-card,
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-panel,
.capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel,
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage,
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-actions{
  min-width:0;
  max-width:100%;
}
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading,
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading>div{
  min-width:0;
}
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading>div{
  flex:1 1 auto;
}
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-card{
  width:100%;
  justify-self:stretch;
}
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-panel,
.capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel,
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage,
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-actions{
  width:100%;
  justify-self:stretch;
  margin-left:0;
  margin-right:0;
}
/* Keep the static capture target visible even after FaceMesh arrives.  The
   live contour shows what the engine sees; the oval remains the user's target. */
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage.has-live-contour .face-guide{
  opacity:.78;
}

@media(max-width:760px){
  .capture-camera-mode.capture-live-mode.capture-panel-mode #today>.capture-grid{
    left:max(6px,env(safe-area-inset-left));
    right:max(6px,env(safe-area-inset-right));
    width:auto!important;
    max-width:none!important;
    min-width:0!important;
    inset-inline:auto!important;
    margin:0!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading{
    width:100%;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-confirm span{
    min-width:0;
    flex:1 1 auto;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-confirm small,
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel strong{
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    overflow-wrap:anywhere;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    width:100%;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks span{
    min-width:0;
    max-width:100%;
    overflow:hidden;
    text-overflow:ellipsis;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage{
    overflow:hidden;
    margin-inline:auto!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage video,
  .capture-camera-mode.capture-live-mode.capture-panel-mode .live-face-guide,
  .capture-camera-mode.capture-live-mode.capture-panel-mode .baseline-face-guide{
    inset:0;
    width:100%;
    height:100%;
  }
}

/* Capture integrity v8: protocol is instructional, not a manual checkbox gate. */
.capture-protocol-instruction{padding-left:2px}
.capture-protocol-instruction small{white-space:normal!important;overflow:visible!important;text-overflow:clip!important;overflow-wrap:anywhere}


/* User-owned measurement management v10 */
.history-item-head{position:static!important;padding-right:0!important;display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.history-item-head>div{min-width:0}
.history-quality{display:block;margin-top:4px;color:#708078;font-size:.72rem;font-weight:700}
.history-delete{position:static!important;width:auto!important;height:auto!important;padding:8px 12px!important;border:1px solid #e4bcbc!important;background:#fff8f8!important;color:#a24141!important;border-radius:10px!important;font-size:.76rem!important;line-height:1.2!important;font-weight:800!important;opacity:1!important;white-space:nowrap}
.history-delete::before{content:none!important}
.history-delete:hover{background:#fff0f0!important;color:#8f3030!important}
.history-delete:disabled{opacity:.45!important;cursor:wait}
.report-capture-actions .report-delete-measurement{background:#fff8f8!important;color:#a24141!important;border-color:#e4bcbc!important}
@media(max-width:600px){
  .measurement-history .history-heading{gap:10px}
  .history-item-head{align-items:center}
  .history-delete{min-height:40px!important;padding:9px 12px!important;font-size:.78rem!important}
  .report-capture-actions .report-delete-measurement{flex-basis:100%}
}

/* 2026-10-04 v11 — camera-first mobile capture + user measurement review */
.dsv3-photo-unavailable{min-height:360px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;text-align:center;background:#f3f7f5;color:#667b74}
.dsv3-photo-unavailable b{font-size:1rem;color:#173e50}.dsv3-photo-unavailable span{max-width:320px;font-size:.78rem;line-height:1.55}

/* The live camera should dominate the viewport. Protocol text is folded into the
   compact status area instead of consuming a separate block above the image. */
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-protocol-panel{display:none!important}
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-card{
  grid-template-rows:auto minmax(0,1fr) auto!important;
  gap:5px!important;
}
.capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel{grid-row:1!important}
.capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage{grid-row:2!important}
.capture-camera-mode.capture-live-mode.capture-panel-mode .capture-actions{grid-row:3!important}

@media(max-width:760px){
  .capture-camera-mode.capture-live-mode.capture-panel-mode #today>.capture-grid{
    padding:8px 9px 7px!important;
    gap:4px!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-panel-heading h2{
    font-size:.96rem!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel{
    padding:5px 6px!important;
    border-radius:9px!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-panel strong{
    font-size:.64rem!important;
    line-height:1.2!important;
    margin:0!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks{
    display:flex!important;
    gap:4px!important;
    margin-top:4px!important;
    overflow-x:auto!important;
    overflow-y:hidden!important;
    scrollbar-width:none;
    -webkit-overflow-scrolling:touch;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks::-webkit-scrollbar{display:none}
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks span{
    flex:0 0 auto!important;
    width:auto!important;
    min-width:72px!important;
    max-width:none!important;
    padding:4px 8px!important;
    font-size:.55rem!important;
    border-radius:999px!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage{
    /* Match the actual WebRTC stream. This removes the artificial black bars
       created by forcing a 4:5 box around a 3:4 (or device-specific) stream. */
    aspect-ratio:var(--camera-stream-ratio,3 / 4)!important;
    width:auto!important;
    height:min(67dvh,700px)!important;
    max-width:100%!important;
    max-height:none!important;
    min-height:0!important;
    margin:0 auto!important;
    border-radius:15px!important;
    justify-self:center!important;
    background:#10191d;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage video{
    width:100%!important;height:100%!important;object-fit:contain!important;background:#10191d;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .face-guide{
    width:66%!important;height:78%!important;border-radius:48% 48% 45% 45%!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .capture-actions{
    padding:2px 0 0!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode #takePhoto{
    min-height:46px!important;height:46px!important;
  }
}

/* Measurement review before user-owned deletion. */
.measurement-review-backdrop{position:fixed;inset:0;z-index:3000;background:rgba(6,25,34,.55);display:flex;align-items:center;justify-content:center;padding:18px}
.measurement-review-modal{width:min(860px,100%);max-height:min(90dvh,860px);overflow:auto;background:#fff;border-radius:24px;box-shadow:0 24px 70px rgba(0,0,0,.25);padding:22px;color:var(--ink)}
.measurement-review-modal>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.measurement-review-modal>header p{margin:0 0 4px;color:#168b75;font-size:.66rem;font-weight:900;letter-spacing:.12em}
.measurement-review-modal>header h3{margin:0;font-size:1.35rem}
.measurement-review-close{width:38px;height:38px;flex:0 0 38px;border:1px solid #d8e3de;border-radius:50%;background:#fff;color:#173e50;font-size:1.5rem;cursor:pointer}
.measurement-review-loading{padding:50px 16px;text-align:center;color:#71827b}
.measurement-review-body{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(300px,1.1fr);gap:20px;align-items:start}
.measurement-review-photo{border-radius:18px;overflow:hidden;background:#edf3f0;min-height:320px;display:flex;align-items:center;justify-content:center}
.measurement-review-photo img{display:block;width:100%;height:auto;max-height:58dvh;object-fit:contain;background:#edf3f0}
.measurement-review-photo>div{text-align:center;padding:30px;color:#71827b}.measurement-review-photo b,.measurement-review-photo span{display:block}.measurement-review-photo b{color:#173e50;margin-bottom:7px}
.measurement-review-info dl{margin:0 0 14px;padding:12px 14px;background:#f7faf8;border-radius:14px}.measurement-review-info dl>div{display:flex;justify-content:space-between;gap:14px;padding:5px 0}.measurement-review-info dt{color:#708078;font-size:.75rem}.measurement-review-info dd{margin:0;font-weight:800;color:#173e50;font-size:.78rem;text-align:right}
.measurement-review-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.measurement-review-metrics>div{padding:12px;background:#f7faf8;border:1px solid #e6eeea;border-radius:12px}.measurement-review-metrics small,.measurement-review-metrics b{display:block}.measurement-review-metrics small{color:#71817b;font-size:.7rem}.measurement-review-metrics b{margin-top:4px;color:#173e50;font-size:1rem}.measurement-review-info>p{margin:14px 0 0;color:#8f5555;font-size:.74rem;line-height:1.55}
.measurement-review-modal>footer{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.measurement-review-delete{background:#fff5f5!important;color:#a13f3f!important;border:1px solid #e3baba!important}
@media(max-width:680px){
  .measurement-review-backdrop{padding:8px;align-items:flex-end}
  .measurement-review-modal{width:100%;max-height:94dvh;border-radius:22px 22px 0 0;padding:16px}
  .measurement-review-modal>header h3{font-size:1.05rem}
  .measurement-review-body{grid-template-columns:1fr;gap:12px}
  .measurement-review-photo{min-height:0;max-height:44dvh}
  .measurement-review-photo img{max-height:44dvh}
  .measurement-review-metrics{grid-template-columns:repeat(3,minmax(0,1fr))}
  .measurement-review-modal>footer{position:sticky;bottom:-16px;background:#fff;padding:10px 0 16px}
  .measurement-review-modal>footer .button{flex:1}
}

/* 2026-10-04 v14 — visible camera crop = analyzed crop; no mobile letterbox */
@media(max-width:760px){
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage{
    width:100%!important;
    max-width:100%!important;
    height:auto!important;
    min-height:0!important;
    aspect-ratio:3 / 4!important;
    background:#10191d!important;
    overflow:hidden!important;
    margin:0!important;
    justify-self:stretch!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .camera-stage video{
    position:absolute!important;
    inset:0!important;
    width:100%!important;
    height:100%!important;
    object-fit:cover!important;
    object-position:center center!important;
    background:transparent!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .live-face-guide,
  .capture-camera-mode.capture-live-mode.capture-panel-mode .baseline-face-guide{
    position:absolute!important;
    inset:0!important;
    width:100%!important;
    height:100%!important;
  }
  .capture-camera-mode.capture-live-mode.capture-panel-mode .face-guide{
    width:64%!important;
    height:80%!important;
    border-radius:48% 48% 45% 45%!important;
  }
}

/* 2026-10-05 i18n v21 */
.topbar-actions{display:flex;align-items:center;gap:10px}.language-select-wrap{display:inline-flex;align-items:center}.language-select{min-height:36px;max-width:138px;padding:0 30px 0 11px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font-size:.78rem;font-weight:700}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
html[lang^="ja"] body,html[lang^="zh"] body{word-break:normal}html[lang="th"] body{line-height:1.7}
@media(max-width:700px){.topbar-actions{gap:6px}.language-select{max-width:104px;min-height:34px;padding-left:9px;font-size:.72rem}.privacy-chip{display:none}}

/* 2026-10-05 v24 — mobile multilingual responsive shell.
   Desktop layout is intentionally unchanged.  Some Android/Samsung browser
   configurations expose a layout viewport wider than 760 CSS px even on a
   phone, so the handheld shell is enabled through 900px.  This keeps the
   header, tabs and content on one viewport width across KO/EN/JA/ZH/ES/VI/TH. */
@media(max-width:900px){
  html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
  html,body{width:100%;max-width:100%;min-width:0;overflow-x:hidden}
  .topbar{
    box-sizing:border-box;width:100vw;max-width:100vw;margin:0;height:auto;min-height:62px;padding:8px 12px;
    display:grid;grid-template-columns:minmax(0,1fr) auto auto;
    align-items:center;gap:8px
  }
  .topbar>.brand{min-width:0;max-width:100%;gap:7px;font-size:.9rem;line-height:1.05;overflow:hidden}
  .topbar>.brand .brand-mark{width:32px;height:32px;flex:0 0 32px;border-radius:10px;font-size:16px}
  .topbar>.brand>span:last-child{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
  .topbar>.brand b{display:none}
  .topbar-actions{display:contents}
  .topbar-actions .privacy-chip{display:none!important}
  .language-select-wrap{grid-column:2;min-width:0}
  .language-select{width:100px;max-width:100px;min-height:38px;padding:0 26px 0 10px;font-size:.74rem;white-space:nowrap}
  .account-quick,.account-quick.signed-in{
    grid-column:3;position:relative;width:40px;min-width:40px!important;max-width:40px;height:40px;min-height:40px;
    padding:0;border-radius:50%;font-size:0;line-height:0;overflow:hidden;color:var(--ink)
  }
  .account-quick::before{content:"";position:absolute;left:50%;top:8px;width:8px;height:8px;border:2px solid currentColor;border-radius:50%;transform:translateX(-50%)}
  .account-quick::after{content:"";position:absolute;left:50%;bottom:7px;width:17px;height:9px;border:2px solid currentColor;border-bottom:0;border-radius:12px 12px 0 0;transform:translateX(-50%)}

  .tabs{
    box-sizing:border-box;width:100vw;max-width:100vw;margin:0;height:52px;padding:0 10px;gap:0;overflow-x:auto;overflow-y:hidden;
    white-space:nowrap;scrollbar-width:none;scroll-padding-inline:10px;-webkit-overflow-scrolling:touch
  }
  .tabs::-webkit-scrollbar{display:none}
  .tab{flex:0 0 auto;min-width:max-content;padding:0 12px;font-size:.84rem;white-space:nowrap;scroll-snap-align:center}

  main{box-sizing:border-box;width:100%;max-width:100vw;min-width:0;margin-inline:auto;padding:24px 14px 64px;overflow:visible}
  .view,.section-heading,.page-heading,.page-heading>div{min-width:0;max-width:100%}
  .page-heading{gap:10px;margin-bottom:20px}
  .page-heading h1{max-width:100%;font-size:clamp(1.95rem,9.4vw,2.35rem);line-height:1.14;letter-spacing:-.045em;overflow-wrap:anywhere;word-break:normal}
  .page-heading .support-lead{max-width:100%;font-size:.82rem;line-height:1.58;overflow-wrap:anywhere;word-break:normal}
  .section-heading>span{min-width:0}
  .button{max-width:100%;white-space:normal;line-height:1.25;text-align:center}
  input,select,textarea{min-width:0;max-width:100%}

  /* Keep all primary mobile cards inside the viewport. */
  .change-overview,.measurement-history,.product-eval-builder,.product-eval-list-wrap,
  .product-eval-card,.account-card,.account-login-card,.support-card,.guide-hero,.guide-section,
  .guide-note,.dsv3-assessments,.dsv3-detail,.dsv3-research,.dsv3-progress,.dsv3-ai{
    width:100%;max-width:100%;min-width:0
  }
  .change-overview>*,.measurement-history>*,.product-eval-builder>*,.product-eval-list-wrap>*,
  .product-eval-card>*,.account-card>*,.support-card>*,.guide-section>*{min-width:0;max-width:100%}

  /* Change History */
  #history .section-heading{grid-template-columns:minmax(0,1fr) auto}
  #history .section-heading>div{min-width:0}
  #history .section-heading .button{align-self:start;flex:0 0 auto;white-space:nowrap}
  .change-overview,.measurement-history{padding:16px;overflow:hidden}
  .change-overview header,.history-heading{min-width:0;max-width:100%}
  .change-overview header>div,.history-heading>div{min-width:0;max-width:100%}
  .change-overview h2,.measurement-history h2,.history-heading span,.section-help{overflow-wrap:anywhere;word-break:normal}
  .change-tabs{width:100%;max-width:100%;flex-wrap:nowrap;overflow-x:auto;overflow-y:hidden;padding-bottom:4px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .change-tabs::-webkit-scrollbar{display:none}
  .change-tabs button{flex:0 0 auto;max-width:none;white-space:nowrap}
  .trend-empty{max-width:100%;padding:24px 14px;overflow-wrap:anywhere;word-break:normal}
  .history-metrics>div{min-width:0}
  .history-metrics span{min-width:0;overflow:hidden}
  .history-metrics small,.history-metrics b{overflow-wrap:anywhere;word-break:normal}

  /* Product Effect Evaluation */
  .product-eval-layout{width:100%;max-width:100%;min-width:0}
  .product-eval-builder-head,.product-eval-list-head{min-width:0;max-width:100%;align-items:flex-start;gap:10px}
  .product-eval-builder-head>div,.product-eval-list-head>div{min-width:0;max-width:100%}
  .product-eval-builder-head h2,.product-eval-list-head h2,.product-eval-card h3{max-width:100%;overflow-wrap:anywhere;word-break:normal}
  .product-eval-builder-head>span,.product-eval-list-head>span{
    flex:0 0 auto;max-width:42%;white-space:normal!important;text-align:center;line-height:1.25;overflow-wrap:anywhere
  }
  .product-eval-builder label,.routine-recommendation,.routine-options,.routine-optional{min-width:0;max-width:100%}
  .routine-recommendation strong,.routine-recommendation small{overflow-wrap:anywhere;word-break:normal}
  .product-eval-card header{min-width:0;max-width:100%}
  .product-eval-card header>div{min-width:0}
  .product-card-tools{flex:0 0 auto;max-width:42%}
  .product-eval-meta{width:100%;min-width:0}
  .product-eval-meta span{min-width:0}
  .product-eval-meta b,.product-eval-meta small{overflow-wrap:anywhere;word-break:normal}
  .product-focus-result,.product-all-metrics,.evaluation-schedule{min-width:0;max-width:100%}
  .evaluation-schedule>div{max-width:100%;overflow:hidden}
  .schedule-point{min-width:0;overflow:hidden}
  .schedule-point b,.schedule-point small{overflow-wrap:anywhere;word-break:normal}

  /* Account */
  .account-grid{width:100%;max-width:100%;min-width:0;grid-template-columns:minmax(0,1fr)}
  .account-card{padding:17px;overflow:hidden}
  .account-card h2,.account-name-row h2{max-width:100%;font-size:1.3rem;line-height:1.3;overflow-wrap:anywhere;word-break:normal}
  .account-name-row{min-width:0;max-width:100%}
  .account-meta>div{grid-template-columns:minmax(68px,28%) minmax(0,1fr);gap:10px}
  .account-meta dt,.account-meta dd{min-width:0;max-width:100%}
  .account-meta dd{overflow-wrap:anywhere;word-break:break-word}
  .account-actions{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;width:100%}
  .account-actions>*{width:100%;min-width:0;max-width:100%;white-space:normal;overflow-wrap:anywhere;line-height:1.2;padding-inline:10px}
  .account-actions>*:first-child{grid-column:1/-1}
  .storage-choice{grid-template-columns:auto minmax(0,1fr)}
  .storage-choice>span,.storage-choice>div{min-width:0}
  .storage-choice b,.storage-choice small,.account-help{overflow-wrap:anywhere;word-break:normal}
  .retention-row{grid-template-columns:minmax(0,1fr)}
  .retention-row select{width:100%;max-width:100%}
  .image-library{grid-template-columns:minmax(0,1fr)}

  /* Support / guide */
  .support-grid,.guide-grid,.guide-steps,.guide-measurements,.guide-features{min-width:0;max-width:100%;grid-template-columns:minmax(0,1fr)}
  .support-list-item>div,.faq-list summary,.card-heading-inline{min-width:0;max-width:100%}
  .support-list-item b,.support-list-item p,.support-content h3,.support-content p,.faq-list summary span,.faq-list details p{overflow-wrap:anywhere;word-break:normal}
  .my-qna-heading{display:block}
  .my-qna-heading>span{display:block;margin-top:4px;overflow-wrap:anywhere}
  .member-thread-head{min-width:0;max-width:100%}
  .member-thread-head>div{min-width:0}
  .member-thread-head h4,.member-thread-message{overflow-wrap:anywhere;word-break:break-word}
  .guide-hero>div,.guide-grid article,.guide-section>div,.guide-section article{min-width:0;max-width:100%}
  .guide-hero h2,.guide-section h2,.guide-grid h2,.guide-note h2,.guide-hero p,.guide-section p,.guide-grid p,.guide-note p{overflow-wrap:anywhere;word-break:normal}
}

@media(max-width:420px){
  .topbar{padding-inline:10px;gap:7px}
  .topbar>.brand{font-size:.86rem}
  .topbar>.brand .brand-mark{width:30px;height:30px;flex-basis:30px}
  .language-select{width:91px;max-width:91px;min-height:36px;padding-left:8px;font-size:.7rem}
  .account-quick,.account-quick.signed-in{width:38px;min-width:38px!important;max-width:38px;height:38px;min-height:38px}
  .tabs{padding-inline:6px}.tab{padding-inline:10px;font-size:.82rem}
  main{padding:22px 12px 58px}
  .page-heading h1{font-size:clamp(1.82rem,9.2vw,2.08rem)}
  .page-heading .support-lead{font-size:.79rem}
  .change-overview,.measurement-history,.product-eval-builder,.product-eval-list-wrap,.account-card,.support-card,.guide-section{padding:15px}
  .account-actions{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}

/* 2026-10-10 v11 — final mobile type and multilingual layout contract. */
@media (max-width:760px) {
  html{font-size:15px}

  /* Keep the language control at the right, wide enough for localized names. */
  .topbar{
    display:flex!important;grid-template-columns:none!important;gap:7px!important;
    padding:8px 10px!important
  }
  .topbar>.brand{flex:1 1 auto!important;width:auto!important;min-width:0!important}
  .topbar-actions{
    display:flex!important;flex:0 0 auto!important;align-items:center!important;
    justify-content:flex-end!important;gap:7px!important;margin-left:auto!important
  }
  .language-select-wrap{
    grid-column:auto!important;flex:0 0 142px!important;width:142px!important;
    min-width:142px!important;max-width:142px!important
  }
  .language-select{
    box-sizing:border-box!important;width:142px!important;min-width:142px!important;
    max-width:142px!important;padding:0 30px 0 12px!important;font-size:.82rem!important
  }
  .account-quick,.account-quick.signed-in{grid-column:auto!important;flex:0 0 40px!important}

  /* Every menu item is one line with equal horizontal breathing room. */
  .tabs{
    display:flex!important;height:54px!important;min-height:54px!important;
    justify-content:flex-start!important;gap:0!important;padding:0 10px!important;
    overflow-x:auto!important;overflow-y:hidden!important;white-space:nowrap!important;
    scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch
  }
  .tabs .tab{
    flex:0 0 auto!important;width:auto!important;min-width:max-content!important;
    min-height:54px!important;padding:0 15px!important;font-size:.8rem!important;
    line-height:1!important;white-space:nowrap!important;word-break:keep-all!important
  }

  /* A restrained, shared mobile type scale. */
  .page-heading h1,.section-heading h1,.ds-v3-welcome h1{font-size:clamp(1.55rem,7vw,1.95rem)!important;line-height:1.2!important}
  .section-heading h2,.product-eval-list-head h2,.change-overview h2,.measurement-history h2{font-size:1.22rem!important;line-height:1.3!important}
  .support-lead,.ds-section-shortnote,.section-help{font-size:.8rem!important;line-height:1.55!important}
  .button{font-size:.84rem!important}
  .trend-empty{padding:17px 13px!important;font-size:.79rem!important;line-height:1.55!important;text-align:left!important}
  .ds-v3-profile-stats strong,.premeasure-profile-stats strong{font-size:1.35rem!important;line-height:1.1!important}
  .ds-v3-profile-stats span,.premeasure-profile-stats span{font-size:.68rem!important;line-height:1.4!important}

  /* Product cards must remain readable for long EN/VI/ES/TH labels. */
  #routine .product-eval-card{padding:14px!important;font-size:.86rem!important;overflow:hidden!important}
  #routine .product-eval-card header{
    display:grid!important;grid-template-columns:minmax(0,1fr)!important;
    align-items:start!important;gap:9px!important
  }
  #routine .product-eval-card header>div{width:100%!important;min-width:0!important;max-width:100%!important}
  #routine .product-eval-card h3{font-size:1.05rem!important;line-height:1.3!important;overflow-wrap:anywhere!important}
  #routine .product-card-tools{
    display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;
    align-items:stretch!important;width:100%!important;max-width:none!important;
    margin-top:0!important;gap:5px 8px!important
  }
  #routine .product-card-tools>b{
    grid-column:1/-1!important;min-width:0!important;white-space:normal!important;
    overflow-wrap:anywhere!important;font-size:.72rem!important;line-height:1.35!important
  }
  #routine .product-card-tools button{
    box-sizing:border-box!important;min-width:0!important;max-width:100%!important;
    min-height:36px!important;padding:5px 4px!important;font-size:.68rem!important;
    line-height:1.3!important;white-space:normal!important;overflow-wrap:anywhere!important
  }
  #routine .product-eval-actions .button{min-height:44px!important;font-size:.82rem!important}

  /* Engine readiness is metadata, not a full content row. */
  #today>.intro-row.premeasure-report-head{position:relative!important;display:block!important;padding-right:0!important}
  #today>.intro-row.premeasure-report-head>div{padding-right:0!important}
  #today #engineStatus{
    position:absolute!important;top:0!important;right:0!important;margin:0!important;
    max-width:42%!important;min-height:0!important;padding:4px 8px!important;
    border-radius:999px!important;font-size:.62rem!important;line-height:1.25!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important
  }
  #today .ds-skin-eyebrow{padding-right:43%!important}

  /* Seven live checks occupy a compact 4 + 3 grid: never more than two rows. */
  .geometry-lock-panel{padding:9px 10px!important;padding-right:34px!important}
  .geometry-lock-panel strong{font-size:.7rem!important;line-height:1.35!important;padding-right:2px!important}
  .geometry-lock-checks,
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks,
  .capture-camera-mode.capture-panel-mode .geometry-lock-checks{
    display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;
    width:100%!important;gap:4px!important;margin-top:5px!important;
    overflow:visible!important
  }
  .geometry-lock-checks span,
  .capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks span,
  .capture-camera-mode.capture-panel-mode .geometry-lock-checks span{
    box-sizing:border-box!important;width:100%!important;min-width:0!important;max-width:100%!important;
    padding:4px 1px!important;font-size:clamp(.5rem,2.15vw,.6rem)!important;line-height:1.2!important;
    text-align:center!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important
  }

  /* Identical left edge in every locale; remove button/span browser defaults. */
  footer{
    box-sizing:border-box!important;width:100%!important;margin:0!important;padding:24px 20px 34px!important;
    text-align:left!important;justify-items:start!important;align-items:start!important
  }
  footer>span{box-sizing:border-box!important;width:100%!important;margin:0!important;padding:0!important;text-align:left!important}
  footer>span:last-child{justify-content:flex-start!important;align-items:flex-start!important;margin:0!important;padding:0!important}
  footer .ds-footer-link{margin:0!important;padding:0!important;text-align:left!important}
}

@media (max-width:380px) {
  .language-select-wrap,.language-select{width:132px!important;min-width:132px!important;max-width:132px!important}
  .tabs .tab{padding-inline:13px!important}
}

/* Mobile v10 feedback: product capture must use the same full-screen canvas as general capture. */
@media (max-width:760px){
  .tabs{height:auto;min-height:58px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;padding:0 8px;overflow:visible}
  .tabs .tab{min-width:0;min-height:58px;padding:7px 3px;font-size:clamp(.64rem,2.45vw,.8rem);line-height:1.22;white-space:normal;overflow-wrap:anywhere;text-align:center}
  .topbar{height:72px;padding:0 16px;gap:8px}.brand{min-width:0;font-size:1rem;gap:8px}.brand-mark{width:33px;height:33px;flex:0 0 33px}
  .topbar-actions{margin-left:auto;min-width:0}.language-select-wrap{width:min(46vw,190px)}.language-select{width:100%!important;min-width:0!important}
  #dsProductCaptureDialog.ds-product-dialog{inset:0!important;width:100vw!important;max-width:none!important;height:100dvh!important;max-height:none!important;margin:0!important;padding:14px!important;border:0!important;border-radius:0!important;box-shadow:none!important}
  #dsProductCaptureDialog .ds-dialog-bar{top:-14px;margin:0 -2px 8px;padding:12px 2px;background:var(--card)}
  #dsProductCaptureDialog .ds-dialog-bar button{display:grid;place-items:center;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;padding:0!important;font-size:2rem!important;line-height:1!important}
  #dsProductCaptureDialog .ds-dialog-caption{display:none}
  #dsProductCaptureDialog #dsProductCameraMount{margin:0!important}
  #dsProductCaptureDialog .camera-stage{max-height:none!important;min-height:calc(100dvh - 190px)!important;aspect-ratio:3/4!important}
  /* Product capture reuses the live camera but does not set capture-panel-mode. */
  body.capture-camera-mode #dsProductCaptureDialog .camera-stage video{object-fit:contain!important;background:#10191d!important;transform:scaleX(-1)!important;transform-origin:center center!important}
  #dsProductCaptureDialog .capture-camera-mode .geometry-lock-panel{font-size:.78rem;padding:7px 9px}
  #dsProductCaptureDialog .geometry-lock-panel .quality-chip,#dsProductCaptureDialog .geometry-lock-panel span{font-size:.72rem}
  #dsProductCaptureDialog .geometry-lock-panel{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px!important}
  #dsProductCaptureDialog .geometry-lock-panel>*{min-width:0;white-space:nowrap;font-size:.68rem!important;padding:5px 3px!important;text-align:center}
  #history .history-metrics{display:block!important}
  #history .history-metrics>div{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  #history .history-item-head{display:flex!important;grid-template-columns:none!important;align-items:flex-start!important}
  #history .history-item-head time{font-size:.78rem!important;word-break:normal!important;overflow-wrap:anywhere!important}
  #history .history-delete{flex:0 0 auto!important;white-space:normal!important;min-width:96px!important}
  .premeasure-profile-card,.premeasure-profile-body{overflow:visible!important}
  .premeasure-radar{display:block!important;width:calc(100% - 26px)!important;height:auto!important;margin:0 auto!important;overflow:visible!important}
  .premeasure-radar text{font-size:11px!important;font-weight:700}
  .premeasure-profile-stats{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px!important}
  .premeasure-profile-stats>div{min-width:0!important;padding:10px 6px!important;overflow-wrap:anywhere}
  footer{display:grid!important;grid-template-columns:1fr!important;gap:12px!important;padding:26px 20px 36px!important;color:var(--ds-ink)!important;font-size:.84rem!important}
  footer>span:first-child{font-weight:800!important;color:var(--ds-ink)!important;font-size:1.05rem!important}
  footer>span:nth-child(2){display:none!important}
  footer>span:last-child{display:flex!important;flex-wrap:wrap!important;gap:8px 16px!important}
  footer .ds-footer-link{font-size:.8rem!important;line-height:1.35!important;white-space:normal!important}
}

/* =========================================================
   2026-10-05 v25 — mobile typography + multilingual content fit
   Scope: member UI <= 900px only. Desktop remains unchanged.
   ========================================================= */
@media(max-width:900px){
  /* A small, predictable type scale prevents language-dependent autosizing and
     keeps the visual hierarchy consistent across KO/EN/JA/ZH/ES/VI/TH. */
  .page-heading h1,
  .dsv3-header h2{
    font-size:1.92rem!important;
    line-height:1.16!important;
    letter-spacing:-.04em!important;
    overflow-wrap:normal!important;
    word-break:keep-all!important;
  }
  .page-heading .support-lead,
  .dsv3-header>div>span,
  .guide-hero p:not(.eyebrow),
  .guide-section>div>p:not(.eyebrow),
  .section-help,
  .history-heading span{
    font-size:.82rem!important;
    line-height:1.62!important;
  }
  .section-heading h2,
  .change-overview h2,
  .measurement-history h2,
  .product-eval-builder-head h2,
  .product-eval-list-head h2,
  .guide-section>div>h2,
  .support-card h2{
    font-size:1.14rem!important;
    line-height:1.32!important;
    letter-spacing:-.025em!important;
  }
  .guide-hero h2{
    font-size:1.62rem!important;
    line-height:1.24!important;
    letter-spacing:-.035em!important;
  }
  .button,
  .mobile-product-builder-toggle,
  .history-delete{
    font-size:.76rem!important;
  }

  /* TODAY / result dashboard: every card uses the same mobile content width.
     Long EN/ES copy must shrink/wrap inside a card, never enlarge the grid. */
  #today .result-dashboard,
  #today .dsv3-overview,
  #today .dsv3-photo-card,
  #today .dsv3-profile-card,
  #today .dsv3-assessments,
  #today .dsv3-detail,
  #today .dsv3-research,
  #today .dsv3-progress,
  #today .dsv3-ai,
  #today .dsv3-routine-cta{
    box-sizing:border-box;
    width:100%;
    max-width:100%;
    min-width:0;
  }
  #today .result-dashboard>*,
  #today .dsv3-overview>*,
  #today .dsv3-profile-card>*,
  #today .dsv3-assessments>*,
  #today .dsv3-research>*,
  #today .dsv3-progress>*,
  #today .dsv3-ai>*{
    min-width:0;
    max-width:100%;
  }
  #today .dsv3-overview{
    grid-template-columns:minmax(0,1fr)!important;
    gap:14px!important;
  }
  #today .dsv3-photo-card{
    width:min(100%,390px)!important;
    margin-inline:auto!important;
  }
  #today .dsv3-profile-card{
    width:100%!important;
    padding:18px!important;
  }
  #today .dsv3-profile-card>header{
    display:block!important;
    min-width:0;
  }
  #today .dsv3-quality{
    display:inline-flex!important;
    max-width:100%;
    margin-top:9px;
    white-space:normal!important;
    line-height:1.25;
  }
  #today .dsv3-profile-body,
  #today .dsv3-progress-grid,
  #today .dsv3-ai{
    grid-template-columns:minmax(0,1fr)!important;
  }
  #today .dsv3-profile-stats{
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
  }
  #today .dsv3-assessment-group>div,
  #today .dsv3-research-grid{
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
  }
  #today .dsv3-assessment-card{
    min-width:0;
    max-width:100%;
    grid-template-columns:44px minmax(0,1fr)!important;
    gap:9px;
  }
  #today .dsv3-assessment-copy,
  #today .dsv3-assessment-copy b,
  #today .dsv3-assessment-copy small,
  #today .dsv3-research-card,
  #today .dsv3-research-card>*{
    min-width:0;
    max-width:100%;
  }
  #today .dsv3-assessment-copy b,
  #today .dsv3-assessment-copy small,
  #today .dsv3-research-card h4,
  #today .dsv3-profile-note,
  #today .dsv3-quality-detail,
  #today .dsv3-photo-meta small{
    white-space:normal!important;
    overflow:visible!important;
    text-overflow:clip!important;
    overflow-wrap:break-word;
    word-break:normal;
  }
  #today .dsv3-photo-meta{
    display:block!important;
    min-width:0;
  }
  #today .dsv3-photo-meta small{
    display:block!important;
    margin-top:4px;
    text-align:left!important;
  }
  #today .dsv3-roi-marker{max-width:calc(100% - 12px)}
  #today .dsv3-roi-marker b{
    max-width:112px;
    white-space:normal!important;
    line-height:1.22;
    overflow-wrap:break-word;
    word-break:normal;
  }

  /* HISTORY: keep Review/Delete inside the history card in every locale. */
  .history-item-head{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(112px,42%)!important;
    align-items:center!important;
    gap:10px!important;
    width:100%;
    min-width:0;
  }
  .history-item-head>div{min-width:0;max-width:100%}
  .history-item-head time,
  .history-quality{overflow-wrap:break-word;word-break:normal}
  .history-delete{
    box-sizing:border-box;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    min-height:42px!important;
    padding:8px 8px!important;
    white-space:normal!important;
    overflow-wrap:break-word!important;
    word-break:normal!important;
    hyphens:auto;
    line-height:1.25!important;
    text-align:center;
  }

  /* PRODUCT EFFECT: give the title its own width.  The add button occupies a
     separate full-width row instead of squeezing the title to one character. */
  .product-eval-list-head{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    align-items:start!important;
    gap:8px 10px!important;
    width:100%;
    min-width:0;
  }
  .product-eval-list-head>div{
    grid-column:1;
    grid-row:1;
    width:100%;
    min-width:0;
    max-width:100%;
  }
  .product-eval-list-head>span{
    grid-column:2;
    grid-row:1;
    max-width:100%!important;
    align-self:start;
  }
  .product-eval-list-head>span:empty{display:none!important}
  .product-eval-list-head h2{
    max-width:100%;
    margin-top:3px!important;
    white-space:normal!important;
    overflow-wrap:normal!important;
    word-break:keep-all!important;
  }
  .mobile-product-builder-toggle{
    grid-column:1/-1;
    grid-row:2;
    width:100%;
    max-width:100%;
    min-height:42px;
    margin:0!important;
    padding:9px 12px!important;
    white-space:normal!important;
    overflow-wrap:break-word;
    word-break:normal;
    line-height:1.3;
  }
  .product-eval-list-wrap .empty-state{
    padding:38px 18px;
    border-radius:18px;
  }
  .product-eval-list-wrap .empty-state strong{
    font-size:1rem;
    line-height:1.45;
  }
  .product-eval-list-wrap .empty-state span{
    font-size:.8rem;
    line-height:1.6;
  }
}

@media(max-width:420px){
  .page-heading h1,.dsv3-header h2{font-size:1.78rem!important}
  #today .dsv3-assessment-group>div,
  #today .dsv3-research-grid{grid-template-columns:minmax(0,1fr)!important}
  .history-item-head{grid-template-columns:minmax(0,1fr) minmax(104px,44%)!important}
}

/* AI result explanation v26: render generated headline without changing the base card structure. */
.dsv3-ai-headline{margin:0 0 10px;padding:0 0 12px;border-bottom:1px solid #e8eeeb;color:#123746;font-size:.96rem;font-weight:800;line-height:1.5;letter-spacing:-.02em}
@media(max-width:900px){
  .dsv3-ai-headline{font-size:.9rem;line-height:1.5}
  .dsv3-ai-items article b{line-height:1.4}
  .dsv3-ai-items article span{line-height:1.62}
}


/* ============================================================
   DERMASCAN DESIGN SYSTEM · PC UI PHASE 1 · 2026-10-09
   Presentation-only: no camera geometry, ROI, measurement or API changes.
   Brand palette is PROVISIONAL, pending visual approval.
   ============================================================ */
:root {
  --ds-primary:#456B63;
  --ds-primary-hover:#35564f;
  --ds-primary-soft:#EAF1ED;
  --ds-accent:#D89E8A;
  --ds-text:#263631;
  --ds-text-muted:#64726C;
  --ds-canvas:#F7F9F7;
  --ds-surface:#FFFFFF;
  --ds-border:#D9E3DE;
  --ds-positive:#277A62;
  --ds-warning:#B17A2F;
  --ds-negative:#B85A5D;
  --ds-radius-sm:10px;
  --ds-radius-md:14px;
  --ds-radius-lg:20px;
  --ds-space-1:4px;
  --ds-space-2:8px;
  --ds-space-3:12px;
  --ds-space-4:16px;
  --ds-space-6:24px;
  --ds-space-8:32px;
  --ink:var(--ds-text);
  --ink-2:var(--ds-primary-hover);
  --paper:var(--ds-canvas);
  --card:var(--ds-surface);
  --line:var(--ds-border);
  --muted:var(--ds-text-muted);
  --mint-dark:var(--ds-primary);
  --blue:var(--ds-primary);
  --shadow:0 12px 36px rgba(38,54,49,.07);
}
body { background:var(--ds-canvas); color:var(--ds-text); font-family:"Noto Sans KR",system-ui,sans-serif; line-height:1.55; }
button,input,textarea,select { font-family:inherit; }
button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible { outline:3px solid var(--ds-primary); outline-offset:3px; }
.topbar { background:rgba(247,249,247,.96); border-bottom-color:var(--ds-border); }
.brand { font-family:"Noto Sans KR",system-ui,sans-serif; letter-spacing:-.025em; }
.brand-mark { background:var(--ds-primary);color:#fff; }
.brand b { color:var(--ds-primary); }
.tabs { border-bottom-color:var(--ds-border);gap:clamp(12px,2vw,26px); }
.tab { color:var(--ds-text-muted);font-family:inherit;font-size:.9rem; }
.tab.active { color:var(--ds-primary); }
.tab.active:after { background:var(--ds-primary); }
.eyebrow,.step-label { color:var(--ds-primary);font-family:inherit;letter-spacing:.07em; }
.intro-row h1,.page-heading h1,.section-heading h2,.prep-card h2 { font-family:"Noto Sans KR",system-ui,sans-serif; font-weight:700;letter-spacing:-.045em;line-height:1.28; }
.intro-row h1,.page-heading h1 { font-size:clamp(1.65rem,3vw,2.25rem); }
.section-heading h2 { font-size:clamp(1.25rem,2vw,1.6rem); }
.prep-card h2 { font-size:clamp(1.25rem,2.3vw,1.7rem); }
.button,.social-button { border-radius:var(--ds-radius-md);min-height:46px; }
.button.primary { background:var(--ds-primary);color:#fff; }
.button.primary:hover { background:var(--ds-primary-hover); }
.button.secondary { background:var(--ds-primary-soft);color:var(--ds-primary-hover); }
.button.ghost { border-color:var(--ds-border); }
.camera-card,.prep-card,.region-card,.ds-area,.ds-progress,.progress-panel,.notice { border-color:var(--ds-border);box-shadow:var(--shadow); }
.camera-card,.prep-card { border-radius:var(--ds-radius-lg); }
.engine-status,.privacy-chip { background:var(--ds-surface);border-color:var(--ds-border);color:var(--ds-text-muted); }
.quality-note { background:var(--ds-primary-soft);color:var(--ds-primary-hover); }
.dsv3-header h2 { font-family:"Noto Sans KR",system-ui,sans-serif;letter-spacing:-.045em;font-size:clamp(1.55rem,3vw,2.3rem); }
.dsv3-ai-headline { color:var(--ds-text);border-bottom-color:var(--ds-border); }
@media(max-width:767px) {
  .topbar { min-height:62px;height:auto; }
  .tabs { gap:16px; }
  .tab { font-size:.85rem;white-space:nowrap; }
  main { padding-top:24px; }
  .intro-row h1,.page-heading h1,.dsv3-header h2 { font-size:1.65rem!important;line-height:1.3; }
  .section-heading h2 { font-size:1.3rem; }
  .button { min-height:46px; }
}
@media (prefers-reduced-motion:reduce) {
  html { scroll-behavior:auto; }
}

/* Unified member experience — Phase 2. Keep existing camera/ROI geometry unchanged. */
.ds-home{max-width:1200px;margin:0 auto;padding-bottom:32px}
.ds-home-hero{display:flex;justify-content:space-between;align-items:center;padding:34px clamp(22px,4vw,52px);border-radius:24px;background:linear-gradient(115deg,#eaf1ed 0%,#f5f8f5 78%);border:1px solid var(--ds-border)}
.ds-home-hero h1{font-size:clamp(1.7rem,3vw,2.6rem);line-height:1.25;letter-spacing:-.04em;margin:8px 0 12px;color:var(--ds-text)}
.ds-home-hero p:last-child{color:var(--ds-text-muted);margin:0;font-size:.98rem}
.ds-home-symbol{font-size:76px;font-weight:200;color:#91aca2;line-height:1}
.ds-home-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:22px 0}
.ds-action{border:1px solid var(--ds-border);border-radius:20px;display:flex;flex-direction:column;align-items:flex-start;min-height:210px;padding:25px 28px;text-align:left;background:#fff;color:var(--ds-text);cursor:pointer;transition:transform .16s,box-shadow .16s}
.ds-action:hover{transform:translateY(-2px);box-shadow:0 12px 30px #26363112}
.ds-action-icon{display:grid;place-items:center;background:var(--ds-primary-soft);color:var(--ds-primary);font-size:30px;width:51px;height:51px;border-radius:15px;margin-bottom:14px}
.ds-action strong{font-size:1.25rem;letter-spacing:-.04em}.ds-action small{font-size:.89rem;color:var(--ds-text-muted);margin-top:6px}
.ds-action-arrow{font-size:.86rem;font-weight:700;color:var(--ds-primary);margin-top:auto;padding-top:15px}
.ds-action-product .ds-action-icon{background:#f8f0ed;color:#a36d5b}
.ds-home-content{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.ds-home-panel{border:1px solid var(--ds-border);background:#fff;padding:25px;border-radius:20px;min-width:0}
.ds-panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.ds-panel-head h2{margin:5px 0;font-size:1.2rem}.ds-home-panel>p{color:var(--ds-text-muted);font-size:.87rem;line-height:1.65}
.ds-link-button,.ds-breadcrumb button,.ds-context-banner button,.ds-footer-link{appearance:none;border:0;background:transparent;cursor:pointer;color:var(--ds-primary);font-weight:600;font-size:.82rem;white-space:nowrap}
.ds-home-inset{display:flex;align-items:center;gap:15px;background:var(--ds-canvas);padding:17px;border-radius:13px;margin-top:17px}
.ds-home-inset>span{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;color:var(--ds-primary);background:var(--ds-primary-soft);font-size:22px;flex-shrink:0}
.ds-home-inset strong,.ds-home-inset small{display:block}.ds-home-inset small{color:var(--ds-text-muted);line-height:1.55;font-size:.78rem;margin-top:3px}
.ds-home-disclaimer{font-size:.78rem;color:var(--ds-text-muted);margin-top:20px}
.ds-context-banner{display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:var(--ds-primary-soft);padding:13px 18px;border-radius:13px;margin-bottom:20px;border:1px solid var(--ds-border);color:var(--ds-text)}
.ds-context-banner strong{font-size:.92rem}.ds-context-banner span{color:var(--ds-text-muted);font-size:.82rem;flex:1}
.ds-breadcrumb{display:flex;align-items:center;gap:6px;margin:0 0 20px;font-size:.85rem;color:var(--ds-text-muted)}
footer .ds-footer-link{margin-left:12px}
@media(max-width:767px){
 .ds-home-hero{padding:27px 21px;border-radius:17px}.ds-home-hero h1{font-size:1.7rem}.ds-home-symbol{font-size:36px}
 .ds-home-actions,.ds-home-content{grid-template-columns:1fr;gap:12px;margin:15px 0}
 .ds-action{padding:18px;min-height:144px;border-radius:16px}.ds-action-icon{width:39px;height:39px;font-size:23px;margin-bottom:9px}
 .ds-action strong{font-size:1.08rem}.ds-action small{font-size:.83rem}.ds-action-arrow{padding-top:8px}
 .ds-home-panel{padding:18px;border-radius:16px}.ds-panel-head{align-items:flex-start}.ds-panel-head h2{font-size:1.08rem}
 .ds-context-banner{align-items:flex-start;flex-direction:column;gap:5px}.ds-context-banner button{padding:7px 0}
 .tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:0;width:100%;max-width:none;overflow:visible;padding:0 3px}
 .tab{padding:13px 3px;font-size:.81rem;text-align:center;white-space:nowrap}
}

/* Dermascan home V3 — personalized overview rather than brochure cards */
.ds-home-v3{max-width:1180px;margin:0 auto;padding-bottom:44px}
.ds-v3-welcome{display:flex;justify-content:space-between;align-items:center;gap:24px;min-height:175px;padding:34px 38px;background:linear-gradient(120deg,#e7f0eb 0%,#f5f8f6 65%,#e8eeea 100%);border:1px solid #d8e5dd;border-radius:24px;overflow:hidden}
.ds-v3-overline,.ds-v3-panel-title small,.ds-v3-entry-card small{display:block;font-size:11px;font-weight:800;letter-spacing:.13em;color:#55786b}
.ds-v3-welcome h1{font-size:clamp(26px,3vw,38px);line-height:1.25;letter-spacing:-.05em;margin:10px 0;color:#263c36}
.ds-v3-welcome p:not(.ds-v3-overline){font-size:14px;color:#5c7168;margin:0}
.ds-v3-welcome-decoration{width:128px;height:116px;position:relative;flex:none}.ds-v3-welcome-decoration span{position:absolute;border:2px solid #a9c2b6;border-radius:50%;transform:rotate(-35deg)}
.ds-v3-welcome-decoration span:nth-child(1){width:94px;height:113px;right:10px;top:2px}.ds-v3-welcome-decoration span:nth-child(2){width:75px;height:90px;right:19px;top:13px}.ds-v3-welcome-decoration span:nth-child(3){width:55px;height:65px;right:29px;top:25px;background:#bed8ca66}
.ds-v3-entry{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:22px 0}
.ds-v3-entry-card{display:flex;align-items:center;gap:18px;text-align:left;border:1px solid #d9e3de;border-radius:18px;padding:21px 22px;background:#fff;cursor:pointer;min-width:0;transition:border-color .2s,transform .2s,box-shadow .2s}
.ds-v3-entry-card:hover{border-color:#80a69a;transform:translateY(-2px);box-shadow:0 12px 28px #26363113}
.ds-v3-entry-icon{display:grid;place-items:center;width:64px;height:64px;border-radius:17px;background:#dbe9e2;color:#416b5e;font-size:33px;flex:none}
.ds-v3-entry-product .ds-v3-entry-icon{background:#f8e9e5;color:#a47766}
.ds-v3-entry-card strong{display:block;font-size:20px;letter-spacing:-.04em;color:#213b33;margin:4px 0 2px}.ds-v3-entry-card em{display:block;font-style:normal;color:#718078;font-size:13px}.ds-v3-entry-arrow{margin-left:auto;align-self:flex-start;color:#537668;font-size:20px}
.ds-v3-dashboard{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,1fr);gap:16px}.ds-v3-primary-panel,.ds-v3-side-panel{min-width:0;min-height:300px;background:#fff;border:1px solid #dce5df;border-radius:20px;padding:25px}
.ds-v3-panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #edf1ee;padding-bottom:18px;margin-bottom:20px}.ds-v3-panel-title h2{font-size:20px;letter-spacing:-.04em;margin:5px 0 0;color:#2b4037}
.ds-v3-text-link{border:0;background:none;color:#476f60;font-size:13px;font-weight:700;cursor:pointer;white-space:nowrap}
.ds-v3-loading{border-radius:14px;background:#f5f8f6;color:#6c7e73;padding:38px 18px;text-align:center;font-size:14px}
.ds-v3-empty{min-height:192px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:9px;padding:15px 10px}.ds-v3-empty-symbol{display:grid;place-items:center;width:58px;height:58px;border-radius:50%;background:#eaf2ed;color:#628a7c;font-size:30px;margin-bottom:6px}
.ds-v3-empty-product .ds-v3-empty-symbol{background:#f9f0ed;color:#b18373}.ds-v3-empty strong{font-size:16px;color:#304239}.ds-v3-empty span{font-size:13px;color:#7a867f;max-width:270px;line-height:1.55}
.ds-v3-inline-action{margin-top:8px;border:1px solid #bdd2c6;border-radius:9px;background:#f3f8f5;color:#3f6b5c;font-size:13px;padding:10px 16px;font-weight:700;cursor:pointer}
.ds-v3-result-head{display:flex;align-items:center;gap:15px}.ds-v3-result-emblem{display:grid;place-items:center;width:72px;height:72px;background:#e4f0e9;border-radius:20px;color:#4b7766;font-size:32px;flex:none}
.ds-v3-result-head small,.ds-v3-result-head span{display:block;font-size:12px;color:#7c8981}.ds-v3-result-head strong{display:block;margin:5px 0;font-size:18px;color:#304239}
.ds-v3-metric-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px;margin:23px 0}.ds-v3-metric{background:#f6f8f6;border-radius:12px;padding:14px 5px;text-align:center;min-width:0}.ds-v3-metric span{display:block;font-size:12px;color:#66776d;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ds-v3-metric strong{display:block;margin-top:8px;font-size:19px;color:#33584b;overflow:hidden;text-overflow:ellipsis}
.ds-v3-wide-action{display:flex;justify-content:space-between;width:100%;border:0;border-radius:12px;background:#eef4ef;color:#456b5c;cursor:pointer;padding:14px 17px;font-weight:700;font-size:13px}
.ds-v3-product-count{display:flex;align-items:baseline;gap:7px;margin-bottom:18px}.ds-v3-product-count b{font-size:38px;line-height:1;color:#406c5c}.ds-v3-product-count span{color:#6c7d71;font-size:13px}
.ds-v3-product-list{display:grid;gap:17px;margin-bottom:25px}.ds-v3-product-row-title{display:flex;justify-content:space-between;align-items:center;gap:7px;font-size:13px}.ds-v3-product-row-title strong{color:#34473d;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ds-v3-product-row-title span{color:#6b7e73;white-space:nowrap}.ds-v3-track{height:7px;background:#edf1ed;border-radius:99px;margin-top:9px;overflow:hidden}.ds-v3-track span{display:block;height:100%;background:#5c8a75;border-radius:99px}.ds-v3-footnote{margin:18px 0 0;font-size:12px;color:#8a958d}
@media(max-width:767px){.ds-v3-welcome{padding:26px 22px;min-height:150px;border-radius:18px}.ds-v3-welcome h1{font-size:25px}.ds-v3-welcome p:not(.ds-v3-overline){font-size:13px}.ds-v3-welcome-decoration{width:54px;transform:scale(.58);transform-origin:right center;margin-left:-40px}.ds-v3-entry{grid-template-columns:1fr;gap:10px;margin:15px 0}.ds-v3-entry-card{padding:16px;border-radius:15px;gap:14px}.ds-v3-entry-icon{width:51px;height:51px;font-size:27px}.ds-v3-entry-card strong{font-size:17px}.ds-v3-dashboard{grid-template-columns:1fr;gap:12px}.ds-v3-primary-panel,.ds-v3-side-panel{min-height:0;padding:18px;border-radius:16px}.ds-v3-panel-title h2{font-size:18px}.ds-v3-metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.ds-v3-result-head strong{font-size:16px}}
/* V3 consistent hierarchy across skin history and product evaluation */
.change-overview,.measurement-history,.product-eval-card{border:1px solid var(--ds-border)!important;border-radius:18px!important;box-shadow:0 4px 24px #26363108!important;background:#fff}
.change-overview,.measurement-history{padding:clamp(18px,2.5vw,28px)!important}
.change-overview h2,.measurement-history h2{font-size:clamp(18px,2vw,22px)!important;letter-spacing:-.035em;color:var(--ds-text)}
.change-tabs button{background:#f4f7f5;color:#52675c;border-color:#e0e8e2;min-height:37px;font-size:13px}
.change-tabs button.active{background:var(--ds-primary);border-color:var(--ds-primary);color:white}
.change-line-chart .series{stroke:var(--ds-primary)}.change-line-chart circle{stroke:var(--ds-primary)}
.product-focus-result{background:#f3f7f4;border:1px solid #e5ede7}.product-focus-result small{color:var(--ds-primary)}
.schedule-point.done i{background:var(--ds-primary);border-color:var(--ds-primary)}.schedule-point.next i{border-color:var(--ds-primary)}
.product-eval-progress i{background:var(--ds-primary)}
.history-metrics span{background:#f5f8f6}.history-item{border-color:var(--ds-border)}
@media(max-width:767px){.product-eval-card{padding:16px!important}.change-overview,.measurement-history{padding:17px!important}.ds-v3-metric-grid{gap:6px}}

/* 2026-10-09: visible in-page history navigation and safe product removal */
.ds-skin-quicknav{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px 16px;margin:10px 0 18px;border:1px solid #d8e4de;border-radius:14px;background:#fff}
.ds-skin-quicknav button{cursor:pointer;min-height:42px;padding:9px 16px;border-radius:10px;border:1px solid #d5e1db;background:#eef5f1;color:#345e55;font-size:.88rem;font-weight:700}
.ds-skin-quicknav button:first-child{background:#456b63;color:white;border-color:#456b63}
.ds-skin-quicknav button:focus-visible,.product-eval-delete:focus-visible{outline:3px solid #a0c1ae;outline-offset:2px}
.product-eval-delete{color:#a74646!important;border-color:#ead3d3!important}
.product-eval-delete:hover{background:#fff3f3!important}
@media(max-width:600px){.ds-skin-quicknav{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:9px}.ds-skin-quicknav button{font-size:.76rem;padding:8px 6px}}

/* Customer-selected reminders: progressive enhancement; scoped to the account page. */
.ds-notification-settings{display:flex;flex-direction:column;gap:12px}
.ds-notify-option{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1px solid #d9e3de;border-radius:12px;background:#f8faf9;cursor:pointer}
.ds-notify-option input{width:18px;height:18px;margin-top:3px;accent-color:#456b63;flex:none}
.ds-notify-option span{display:flex;flex-direction:column;gap:4px}
.ds-notify-option small{font-size:.85rem;color:#64726c;line-height:1.5}
.ds-reminder-notice{margin:12px 0 18px;padding:14px 18px;border:1px solid #bed9c7;border-radius:14px;background:#eef6ef;color:#274d43;display:flex;flex-direction:column;gap:5px}
.ds-reminder-notice span{font-size:.9rem;line-height:1.55}


/* DermaScan unified appearance — 2026-10-09: user-selectable brand palettes */
:root,[data-ds-theme="sage"]{--ds-primary:#456B63;--ds-primary-dark:#34564F;--ds-primary-soft:#EAF1ED;--ds-accent:#D89E8A;--ds-ink:#263631;--ds-canvas:#F7F9F7;--ds-line:#D9E3DE;--ds-muted:#64726C;--ink:var(--ds-ink);--ink-2:var(--ds-primary-dark);--paper:var(--ds-canvas);--mint:#CCE1D6;--mint-dark:var(--ds-primary);--blue:var(--ds-primary);--line:var(--ds-line);--muted:var(--ds-muted)}
[data-ds-theme="navy"]{--ds-primary:#304C70;--ds-primary-dark:#243B5A;--ds-primary-soft:#E9EEF5;--ds-accent:#C4A0A4;--ds-ink:#26354A;--ds-canvas:#F7F8FB;--ds-line:#D8E0EB;--ds-muted:#617084}
[data-ds-theme="rose"]{--ds-primary:#A36173;--ds-primary-dark:#84485A;--ds-primary-soft:#F7ECEF;--ds-accent:#AC9575;--ds-ink:#47353B;--ds-canvas:#FDF9F9;--ds-line:#EADDE1;--ds-muted:#79666B}
html{color-scheme:light}body{background:var(--ds-canvas);color:var(--ds-ink)}
.topbar{background:var(--ds-canvas);border-bottom-color:var(--ds-line)}.brand-mark,.button.primary,.ds-v3-entry-skin .ds-v3-entry-icon{background:var(--ds-primary);color:#fff}.brand b,.eyebrow,.tab.active,.ds-v3-overline,.ds-v3-panel-title small{color:var(--ds-primary)}
.button.primary:hover{background:var(--ds-primary-dark)}.button.ghost,.button.secondary{border-color:var(--ds-line);color:var(--ds-ink)}
.ds-context-banner,.ds-skin-quicknav,.ds-v3-welcome,.ds-v3-entry-card,.ds-v3-primary-panel,.ds-v3-side-panel,.account-card,.measurement-history,.change-overview{border-color:var(--ds-line)}
.ds-v3-welcome{background:linear-gradient(110deg,var(--ds-primary-soft),var(--ds-canvas))}.ds-v3-entry-card:hover,.ds-theme-option:hover{border-color:var(--ds-primary)}
.tab.active:after,.product-eval-progress>i{background:var(--ds-primary)}.change-tabs button.active{background:var(--ds-primary);color:#fff}
.ds-theme-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:18px 0 8px}.ds-theme-option{border:1px solid var(--ds-line);background:#fff;border-radius:16px;padding:15px;cursor:pointer;display:grid;gap:6px;position:relative;min-width:0}.ds-theme-option:has(input:checked){outline:2px solid var(--ds-primary);background:var(--ds-primary-soft)}.ds-theme-option input{position:absolute;right:12px;top:12px;accent-color:var(--ds-primary)}.ds-theme-option strong{font-size:.9rem;padding-right:16px}.ds-theme-option small{font-size:.76rem;color:var(--ds-muted)}.ds-theme-swatches{display:flex;gap:3px;margin:5px 0}.ds-theme-swatches i{height:25px;flex:1;border-radius:6px}
.ds-history-context{display:flex;justify-content:space-between;align-items:center;gap:18px;padding:18px 22px;margin-bottom:17px;background:var(--ds-primary-soft);border:1px solid var(--ds-line);border-radius:17px}.ds-history-context strong{font-size:1.06rem}.ds-history-context p{margin:5px 0 0;color:var(--ds-muted);font-size:.84rem}.ds-result-jump{display:flex;align-items:center;justify-content:space-between;gap:12px;border-radius:14px;border:1px solid var(--ds-line);padding:12px 16px;margin:12px 0 16px;background:var(--ds-primary-soft)}
body,button,input,select,textarea{font-family:"Noto Sans KR",sans-serif}.ds-v3-panel-title h2,.ds-v3-welcome h1,.intro-row h1,.history-heading h2{font-family:"Noto Sans KR",sans-serif;font-weight:700;letter-spacing:-.035em}
@media(max-width:740px){.ds-theme-options{grid-template-columns:1fr}.ds-theme-option{grid-template-columns:1fr 1fr;column-gap:15px}.ds-theme-swatches{grid-row:span 2}.ds-history-context,.ds-result-jump{flex-direction:column;align-items:stretch}.ds-history-context .button{width:100%}}


/* 2026-10-09 PC finalization pass: shared semantic palette and responsive content hierarchy.
   Overlay only: never alter image coordinates, detection markers, AI, or API behavior. */
:root{--ds-surface:#fff;--ds-shadow:0 7px 28px rgba(35,54,49,.045);--ds-radius:18px;--ds-space:18px}
body{background:var(--ds-canvas);color:var(--ds-ink)}
:where(.ds-home-v3,.result-dashboard,.product-eval-layout,.change-overview,.measurement-history,.ds-history-context){font-family:"Noto Sans KR",sans-serif}
:where(.ds-header h2,.ds-v3-panel-title h2,.change-overview h2,.measurement-history h2,.product-eval-card h3,.product-eval-builder h2,.product-eval-list-head h2){font-family:"Noto Sans KR",sans-serif!important;color:var(--ds-ink)!important;line-height:1.36;letter-spacing:-.04em}
:where(.ds-v3-primary-panel,.ds-v3-side-panel,.ds-v3-entry-card,.product-eval-builder,.product-eval-list-wrap,.product-eval-card,.change-overview,.measurement-history,.ds-focus,.ds-detail,.ds-area,.ds-progress,.ds-research,.ds-ai){border-color:var(--ds-line)!important;box-shadow:var(--ds-shadow)!important}
:where(.ds-v3-result-emblem,.ds-v3-empty-symbol,.ds-v3-metric,.ds-v3-loading,.product-focus-result,.routine-recommendation,.ds-history-context,.ds-result-jump){background:var(--ds-primary-soft)!important}
:where(.ds-v3-result-head strong,.ds-v3-metric strong,.ds-v3-product-count b,.ds-v3-wide-action,.ds-v3-text-link,.product-eval-card header span,.ds-focus strong,.ds-header p,.ds-area header>div>p,.ds-progress header p,.ds-research header p,.ds-ai>div>p){color:var(--ds-primary)!important}
.ds-v3-welcome{border-color:var(--ds-line)!important}.ds-v3-welcome h1,.ds-v3-entry-card strong{color:var(--ds-ink)!important}
.ds-v3-entry-icon{background:var(--ds-primary-soft)!important;color:var(--ds-primary)!important}
.ds-v3-entry-skin .ds-v3-entry-icon{color:var(--ds-primary)!important}
.ds-v3-track span,.product-eval-progress i,.profile-rows i b{background:var(--ds-primary)!important}
.ds-v3-inline-action,.ds-v3-wide-action{color:var(--ds-primary)!important;border-color:var(--ds-line)!important;background:var(--ds-primary-soft)!important}
.product-eval-card{padding:22px!important;overflow-wrap:anywhere}
.product-eval-card header{align-items:flex-start;flex-wrap:wrap}.product-card-tools{display:flex;align-items:center;flex-wrap:wrap;gap:8px;justify-content:flex-end}.product-card-tools button{min-height:34px;padding:6px 10px;border-radius:9px}
.product-eval-meta{background:var(--ds-primary-soft);border-radius:12px;padding:13px;gap:14px}
.product-eval-meta b{color:var(--ds-ink);font-size:.88rem}.product-eval-meta small{font-size:.73rem}
.product-eval-actions{margin-top:18px}.product-eval-actions .button{min-height:47px}
.product-eval-builder,.product-eval-list-wrap{min-width:0}.product-eval-builder input:focus,.product-eval-builder select:focus{outline:2px solid var(--ds-primary);outline-offset:2px}
.ds-area nav button.selected,.change-tabs button.active{background:var(--ds-primary)!important;border-color:var(--ds-primary)!important;color:white!important}
.ds-progress-body>article,.ds-research-cards article,.ds-detail-body,.ds-ai article{min-width:0}
.trend-chart path{stroke:var(--ds-primary)!important}.trend-chart circle{stroke:var(--ds-primary)!important}.ds-research .text-button,.compare-picker{color:var(--ds-primary)!important}
.ds-result-jump small{display:block;font-size:.79rem;color:var(--ds-muted);margin-top:5px}.ds-result-jump button{min-height:42px}
.history-item{border-radius:15px;padding:15px!important}.history-metrics span{background:var(--ds-primary-soft)!important}
.history-metrics{min-width:0}.history-metrics>*{min-width:0}
:where(.button,.ds-v3-entry-card,.ds-v3-wide-action,.tab,.ds-theme-option,.product-eval-delete):focus-visible{outline:3px solid var(--ds-primary)!important;outline-offset:3px}
@media(max-width:900px){.product-eval-layout{grid-template-columns:1fr!important}.product-eval-list-wrap{order:0}.product-eval-builder{order:1}.ds-v3-dashboard{grid-template-columns:1fr!important}.ds-v3-primary-panel,.ds-v3-side-panel{min-height:0}.ds-hero{grid-template-columns:1fr!important}.ds-hero aside{min-width:0}}
@media(max-width:600px){main{padding-inline:14px!important}.product-eval-card{padding:16px!important}.product-card-tools{width:100%;justify-content:flex-start}.product-eval-meta{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:6px;padding:12px 8px}.product-eval-meta b{font-size:.75rem}.ds-result-jump{gap:12px}.ds-result-jump button{width:100%}.ds-v3-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.ds-v3-entry{grid-template-columns:1fr!important}.ds-v3-welcome{min-height:0}.ds-v3-welcome-decoration{display:none}.ds-theme-option{min-height:72px}.history-item{padding:12px!important}}
@media(prefers-reduced-motion:reduce){.ds-v3-entry-card{transition:none!important}.ds-v3-entry-card:hover{transform:none!important}}

/* Unified PC navigation and accessible settings shortcuts */
.ds-section-switch,.ds-account-shortcuts{display:flex;flex-wrap:wrap;gap:9px;align-items:center;margin:12px 0 20px}
.ds-section-switch .button{min-height:42px}
.ds-account-link{appearance:none;display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border-radius:12px;border:1px solid var(--ds-line);background:var(--ds-primary-soft);color:var(--ds-primary);font:inherit;font-size:.88rem;font-weight:600;text-decoration:none;cursor:pointer}
.ds-account-link:hover{background:var(--ds-canvas);border-color:var(--ds-primary)}
.ds-account-link:focus-visible,.ds-section-switch button:focus-visible{outline:3px solid var(--ds-primary);outline-offset:3px}
.ds-notification-settings,.ds-theme-settings,.storage-card{scroll-margin-top:110px}
@media(max-width:600px){.ds-section-switch .button{flex:1 1 145px}.ds-account-shortcuts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.ds-account-link{padding:10px 8px;font-size:.82rem}}

/* 2026-10-09 Theme parity: selectors used by the new home, nav, result, product and preferences. */
:root,[data-ds-theme="sage"]{--ds-surface:#fff;--ds-hover:var(--ds-primary-soft);--ds-focus:var(--ds-primary);--ds-accent-soft:#f6ebe7}
[data-ds-theme="navy"]{--ds-surface:#fff;--ds-hover:var(--ds-primary-soft);--ds-focus:var(--ds-primary);--ds-accent-soft:#f4ecef}
[data-ds-theme="rose"]{--ds-surface:#fff;--ds-hover:var(--ds-primary-soft);--ds-focus:var(--ds-primary);--ds-accent-soft:#f5ece3}
body{background:var(--ds-canvas);color:var(--ds-ink)}
.topbar{background:var(--ds-canvas);border-color:var(--ds-line)}
.brand,.brand b,.tab.active,.ds-v3-entry-card strong,.ds-v3-panel-title h2,.ds-v3-result-head strong,.ds-v3-empty strong,.ds-v3-product-row-title strong{color:var(--ds-ink)}
.brand-mark,.ds-v3-entry-icon,.ds-v3-result-emblem,.ds-v3-empty-symbol{background:var(--ds-primary-soft);color:var(--ds-primary)}
.tabs,.ds-v3-entry-card,.ds-v3-primary-panel,.ds-v3-side-panel,.change-overview,.measurement-history,.product-eval-card,.ds-skin-quicknav{background:var(--ds-surface);border-color:var(--ds-line)}
.tab.active:after,.ds-v3-track span,.product-eval-progress i{background:var(--ds-primary)}
.ds-v3-welcome{background:var(--ds-primary-soft)!important;border-color:var(--ds-line)!important}
.ds-v3-welcome h1,.ds-v3-overline,.ds-v3-entry-card small,.ds-v3-text-link,.ds-v3-result-head strong,.ds-v3-metric strong,.ds-v3-product-count b,.ds-v3-wide-action{color:var(--ds-primary)}
.ds-v3-welcome p:not(.ds-v3-overline),.ds-v3-entry-card em,.ds-v3-result-head small,.ds-v3-result-head span,.ds-v3-footnote,.ds-v3-metric span,.ds-v3-empty span{color:var(--ds-muted)}
.ds-v3-welcome-decoration span{border-color:var(--ds-primary)!important;opacity:.45}
.ds-v3-welcome-decoration span:last-child{background:var(--ds-primary-soft)!important}
.ds-v3-entry-icon,.ds-v3-metric,.ds-v3-loading,.ds-v3-inline-action,.ds-v3-wide-action,.ds-v3-empty-symbol,.ds-v3-track,.history-metrics span,.product-focus-result,.ds-skin-quicknav button{background:var(--ds-primary-soft)}
.ds-v3-entry-product .ds-v3-entry-icon,.ds-v3-empty-product .ds-v3-empty-symbol{background:var(--ds-accent-soft);color:var(--ds-accent)}
.ds-v3-entry-card:hover{border-color:var(--ds-primary)}
.ds-v3-panel-title{border-color:var(--ds-line)}
.ds-v3-metric strong,.ds-v3-product-row-title strong{color:var(--ds-primary-dark)}
.ds-v3-inline-action{border-color:var(--ds-line);color:var(--ds-primary)}
.ds-skin-quicknav button{color:var(--ds-primary);border-color:var(--ds-line)}
.ds-skin-quicknav button:first-child{background:var(--ds-primary);border-color:var(--ds-primary);color:#fff}
.ds-theme-option input,.ds-notify-option input{accent-color:var(--ds-primary)}
.ds-notify-option,.ds-reminder-notice{border-color:var(--ds-line);background:var(--ds-primary-soft);color:var(--ds-ink)}
.ds-policy-page{max-width:850px;margin:auto}.ds-policy-page .account-card{padding:25px}.ds-policy-page h2{font-size:1.2rem}
.ds-footer-link[href]{display:inline-block;text-decoration:none}

/* i18n account controls: keep all desktop account actions on one line. */
@media (min-width: 761px) {
 .account-grid{grid-template-columns:minmax(395px,.9fr) minmax(0,1.1fr)}
 .account-actions{display:flex;flex-wrap:nowrap;gap:6px}
 .account-actions>*{width:auto;flex:1 1 auto;min-width:max-content;max-width:none;white-space:nowrap;word-break:keep-all;overflow-wrap:normal;line-height:1.25;padding:10px 8px;font-size:.73rem;grid-column:auto!important}
}
@media (max-width:760px){.account-actions>*{white-space:normal}}

/* Product-specific measurement history: existing result endpoint, no new data schema */
.product-measurement-history{margin:18px 0 12px;border:1px solid var(--ds-border,var(--line));border-radius:12px;padding:12px;background:var(--ds-surface,#fff)}
.product-measurement-history summary{cursor:pointer;font-weight:700;color:var(--ds-text,var(--ink));padding:4px 2px}
.product-measurement-list{display:grid;gap:9px;margin-top:12px}
.product-measurement-row{display:grid;gap:10px;border:1px solid var(--ds-border,var(--line));border-radius:10px;padding:12px}
.product-measurement-summary{display:flex;flex-wrap:wrap;gap:10px;align-items:baseline}
.product-measurement-summary small{color:var(--ds-muted,var(--muted))}
.product-measurement-values{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px}
.product-measurement-values span{min-width:0;border-radius:7px;background:var(--ds-primary-soft,#eef4f1);padding:8px}
.product-measurement-values small,.product-measurement-values strong{display:block;overflow-wrap:anywhere}
.product-measurement-values small{font-size:11px}
.product-measurement-values strong{font-size:13px}
.product-measurement-review{justify-self:start}
.history-metric-value{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}
.history-metric-value b,.history-metric-value .delta{display:inline;margin:0}
@media(max-width:680px){.product-measurement-values{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* 2026-10-09: product evaluations are a distinct workflow, not a second sidebar */
#routine .product-eval-layout{display:flex!important;flex-direction:column!important;gap:18px!important;grid-template-columns:none!important}
#routine .product-eval-list-wrap{order:0!important;width:100%!important;max-width:none!important}
#routine .product-eval-builder{order:1!important;width:100%!important;max-width:none!important}
#routine.has-active-evaluations:not(.mobile-product-builder-open) .product-eval-builder{display:none!important}
#routine .product-eval-list-wrap .product-eval-list{display:grid;grid-template-columns:minmax(0,1fr);gap:16px}
#routine .product-eval-card{width:100%;max-width:none}
#routine .product-eval-list-head{display:flex;flex-wrap:wrap;align-items:center;gap:10px}
#routine .mobile-product-builder-toggle{display:inline-flex!important;align-items:center;white-space:nowrap;min-height:36px;border:1px solid var(--ds-line);border-radius:10px;background:var(--ds-surface,#fff);color:var(--ds-primary);padding:7px 12px;cursor:pointer}
#today .ds-skin-quicknav[hidden]{display:none!important}
@media(max-width:760px){#routine .product-eval-layout{gap:12px!important}#routine .product-eval-list-wrap,#routine .product-eval-builder{padding:16px!important}}

#routine .product-eval-list-wrap{order:0!important;align-self:stretch}
#routine .product-eval-builder{order:1!important;align-self:stretch}
#routine .product-eval-list-wrap .product-eval-list{grid-template-columns:minmax(0,1fr)!important}
#routine .product-eval-card .product-measurement-history{margin-top:16px}
#routine .product-eval-builder{scroll-margin-top:100px}
#routine .product-eval-list-head{justify-content:space-between}
#routine .product-eval-layout{align-items:stretch!important}

/* Workflow separation: shared camera, separate contexts and report/records views */
.ds-workflow-nav{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 8px}
.ds-workflow-nav button{border:1px solid var(--line);background:var(--surface,#fff);color:var(--ink);border-radius:12px;padding:13px 8px;cursor:pointer;font:inherit;font-weight:700}
.ds-workflow-nav button.active{background:var(--primary,#456b63);color:#fff;border-color:transparent}
.ds-workflow-nav button:disabled{opacity:.45;cursor:not-allowed}
.ds-workflow-current{color:var(--muted);font-size:.83rem;margin:0 0 14px}
#today .capture-grid[hidden],#today #result[hidden]{display:none!important}
.product-measurement-row .product-measurement-report{margin-right:8px;background:var(--primary,#456b63);color:#fff}
@media(max-width:560px){.ds-workflow-nav button{padding:12px 4px;font-size:.78rem}.product-measurement-row .product-measurement-report{margin-bottom:7px}}

/* Dedicated, clearly separated measurement workspaces */
.ds-product-workspace-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:12px 0 12px}
.ds-product-workspace-tabs button{border:1px solid var(--line);background:var(--card,#fff);color:var(--ink);border-radius:12px;min-height:48px;padding:10px;cursor:pointer;font:700 .88rem inherit}
.ds-product-workspace-tabs button.active{background:var(--primary,#456b63);border-color:transparent;color:#fff}
.ds-product-workspace-selection{font-size:.82rem;color:var(--muted);margin:0 0 20px}
.ds-product-analysis-host .result-section{display:block!important;margin-top:12px}
.ds-product-analysis-host .ds-result-jump{display:none}
#dsProductRecordsHost[hidden],#dsProductAnalysisHost[hidden]{display:none!important}
body.report-mode #today .capture-grid:not([hidden]){display:grid!important}
@media(max-width:600px){.ds-product-workspace-tabs button{font-size:.75rem;padding:8px 3px}}

/* Skin-only workflow hotfix: never let historical report CSS hide capture on an explicit capture step. */
#today .capture-grid[hidden],#today #result[hidden]{display:none!important}
#dsHistoryWorkflow{margin:0 0 20px}
#today .capture-actions button[hidden]{display:none!important}
#today #qualityError[hidden]{display:none!important}

/* 2026-10-10: Single navigation hierarchy for general skin pages */
#today .intro-row.premeasure-report-head{margin:18px 0 0;align-items:end}
#today #dsSkinWorkflow,#history #dsHistoryWorkflow{margin:18px 0 24px;gap:10px}
#today #dsSkinWorkflow button,#history #dsHistoryWorkflow button{padding:15px 12px;border-radius:12px;border-color:var(--ds-line);background:var(--ds-surface);color:var(--ds-text);font-weight:650;min-height:48px}
#today #dsSkinWorkflow button.active,#history #dsHistoryWorkflow button.active{background:var(--ds-primary);color:#fff;border-color:var(--ds-primary)}
#today #dsWorkflowCurrent{margin:-15px 0 23px;color:var(--ds-text-muted);font-size:.88rem}
#history .section-heading.page-heading{margin-top:28px}
#history #dsHistoryWorkflow{margin-top:18px}
#today .ds-context-banner[hidden]{display:none!important}
@media(max-width:580px){#today #dsSkinWorkflow button,#history #dsHistoryWorkflow button{padding:12px 5px;font-size:.78rem}}

/* Consistent compact headings: general skin scan, assessment, record. */
#today .intro-row.premeasure-report-head, #history .section-heading.page-heading{margin:18px 0 0;align-items:end}
#history .section-heading.page-heading h1, #today .intro-row.premeasure-report-head h1{font-family:"Noto Sans KR",sans-serif;font-weight:700;letter-spacing:-.035em}
#today #dsWorkflowCurrent, #today .premeasure-subtitle, #history .ds-history-context{display:none!important}
#today #dsSkinWorkflow, #history #dsHistoryWorkflow{margin:18px 0 24px}

/* 2026-10-10: one consistent heading and tab rhythm across skin pages */
#today .intro-row.premeasure-report-head,#history .section-heading.page-heading{margin:0 0 0!important;min-height:auto!important;display:flex;align-items:center;justify-content:space-between;gap:12px}
#today .intro-row.premeasure-report-head h1,#history .section-heading.page-heading h1{font-family:"Noto Sans KR",sans-serif!important;font-size:clamp(1.8rem,3vw,2.35rem)!important;font-weight:750!important;line-height:1.18!important;letter-spacing:-.045em!important;margin:0!important}
#today .ds-section-shortnote,#history .ds-section-shortnote{font-size:.86rem;line-height:1.45;color:var(--ds-muted,var(--muted));margin:6px 0 0;max-width:72ch}
#today #dsSkinWorkflow,#history #dsHistoryWorkflow{margin:14px 0 20px!important}
#today>.premeasure-report-head,#history>.section-heading.page-heading{padding:0!important}
#routine>.section-heading.page-heading{margin:0 0 12px!important}
#routine>.ds-product-workspace-tabs{margin:14px 0 12px!important}
#routine .ds-workspace-empty{padding:35px 20px;border:1px solid var(--ds-line,var(--line));border-radius:14px;background:var(--ds-surface,#fff);text-align:center;color:var(--ds-muted,var(--muted))}
#routine .ds-context-banner{display:none!important}
@media(max-width:600px){#today .intro-row.premeasure-report-head h1,#history .section-heading.page-heading h1{font-size:1.85rem!important}}

/* Independent product workspaces; never show the general-measurement menu in product mode. */
.ds-product-selected{display:flex;align-items:center;gap:12px;padding:12px 16px;margin:12px 0;background:var(--surface-soft,#f4f7f6);border:1px solid var(--line);border-radius:12px}
.ds-product-selected>span{color:var(--muted);font-size:.8rem}
.ds-product-selected>strong{font-size:1rem}
#dsProductCaptureHost[hidden],#dsProductAnalysisHost[hidden],#dsProductRecordsHost[hidden],#dsProductAnalysisEmpty[hidden]{display:none!important}
#dsProductCaptureHost>.capture-grid{display:grid;grid-template-columns:minmax(320px,40%) 1fr;gap:22px;align-items:start}
#dsProductCaptureHost>.capture-grid>.camera-card{overflow:hidden;padding:0}
#dsProductCaptureHost .camera-stage{aspect-ratio:3/4;min-height:0;border-radius:0}
#dsProductCaptureHost .capture-actions{padding:14px}
#dsProductCaptureHost #analyze{margin:12px;width:calc(100% - 24px)}
#dsProductCaptureHost>.capture-grid[hidden],#dsProductAnalysisHost>#result[hidden]{display:none!important}
#dsProductAnalysisHost>#result{display:block!important}
#dsProductCaptureHost #progress,#dsProductCaptureHost #qualityError{margin:12px 0}
@media(max-width:760px){#dsProductCaptureHost>.capture-grid{grid-template-columns:1fr}}

/* Product workspace choice */
.product-select { font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }

/* 2026-10-10 unified product workflow: shared theme tokens and report layouts. */
#routine .product-eval-card>.product-focus-result,
#routine .product-eval-card>.product-secondary-metrics,
#routine .product-eval-card>.product-all-metrics,
#routine .product-eval-card>.evaluation-schedule,
#routine .product-eval-card>.product-measurement-history {display:none!important}
#routine .product-eval-card .product-eval-progress,
#routine .product-eval-card .product-eval-meta {display:none!important}
#dsProductCaptureHost,#dsProductAnalysisHost,#dsProductRecordsHost{min-width:0}
#dsProductRegistrationHost,#dsProductEffectSummary,#dsProductRecordsContent{width:100%;min-width:0}
#dsProductCameraMount{margin-top:20px}
.ds-product-focused-report,.ds-product-record-panel{border:1px solid var(--line);background:var(--card,#fff);border-radius:16px;padding:clamp(16px,2.4vw,28px);color:var(--ink)}
.ds-product-focused-report>h2,.ds-product-record-panel>h2{font-size:1.2rem;margin:0 0 12px}
.ds-product-focused-report .product-focus-result,.ds-product-focused-report .product-all-metrics,.ds-product-focused-report .product-secondary-metrics,.ds-product-focused-report .evaluation-schedule{margin-top:18px}
.ds-product-record-panel .product-measurement-list{display:grid;gap:12px}
#routine .ds-product-workspace-tabs,#dsSkinWorkflow,#dsHistoryWorkflow{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:760px){.ds-product-focused-report,.ds-product-record-panel{padding:15px}.ds-product-record-panel .product-measurement-row{min-width:0}}

/* 2026-10-10 screenshot fixes: equal page heading rhythm and shared camera geometry. */
#today,#routine,#history{padding-top:0!important}
#today>.intro-row.premeasure-report-head,#routine>.section-heading.page-heading,#history>.section-heading.page-heading{margin:0 0 12px!important;padding:0!important;align-items:flex-end!important;min-height:0!important}
#today .ds-skin-eyebrow,#routine>.section-heading .eyebrow{margin:0 0 10px!important;font-size:.69rem!important;letter-spacing:.11em;color:var(--ds-primary,var(--primary))}
#today #todayTitle,#routine>.section-heading h1,#history>.section-heading h1{font-size:clamp(1.75rem,2.6vw,2.25rem)!important;font-weight:750!important;line-height:1.18!important;letter-spacing:-.04em!important;margin:0!important}
#today .ds-section-shortnote,#routine .section-heading .support-lead{font-size:.86rem!important;line-height:1.45!important;margin:7px 0 0!important;color:var(--ds-muted,var(--muted))!important}
#today #dsSkinWorkflow,#routine .ds-product-workspace-tabs,#history #dsHistoryWorkflow{margin:14px 0 12px!important;gap:9px!important}
#routine #dsProductCameraMount>.capture-grid,#dsProductCaptureHost .capture-grid{grid-template-columns:minmax(0,40%) minmax(0,60%)!important;gap:16px!important;align-items:stretch!important;min-width:0!important;max-width:100%!important}
#dsProductCaptureHost .camera-stage{aspect-ratio:auto!important;min-height:420px!important}
#dsProductCaptureHost .capture-grid>*{min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
#dsProductCaptureHost .premeasure-overview{width:100%!important}
#dsProductCaptureHost .premeasure-overview .premeasure-profile,#dsProductCaptureHost .skin-profile-card{min-width:0!important;overflow:hidden!important}
#dsProductCaptureHost .premeasure-overview svg{max-width:100%!important}
#today>.capture-grid:not([hidden]){display:grid!important}
@media(max-width:760px){#routine #dsProductCameraMount>.capture-grid,#dsProductCaptureHost .capture-grid{grid-template-columns:minmax(0,1fr)!important}#dsProductCaptureHost .camera-stage{min-height:350px!important}}

/* 2026-10-10 product list + modal workflows */
#routine #dsProductCaptureHost .product-eval-layout{display:block!important}
#routine #dsProductCaptureHost .product-eval-builder{display:none!important}
.ds-product-dialog{position:fixed;inset:0;margin:auto;border:1px solid var(--line);background:var(--card);color:var(--ink);border-radius:18px;padding:20px;width:min(1000px,calc(100vw - 28px));max-width:none;max-height:calc(100dvh - 32px);overflow:auto;box-shadow:0 25px 80px #0003}
.ds-product-dialog:not([open]){display:none!important}
.ds-product-dialog::backdrop{background:rgba(15,30,38,.65)}
.ds-product-register-dialog{width:min(700px,calc(100vw - 28px))}
.ds-dialog-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.ds-dialog-bar strong{font-size:1.14rem}
.ds-dialog-bar button{border:1px solid var(--line);border-radius:100px;width:38px;height:38px;background:var(--card);color:var(--ink);font-size:1.5rem;cursor:pointer}
.ds-dialog-caption{color:var(--muted);font-size:.83rem;margin:0 0 15px}
#dsProductRegisterBody .product-eval-builder{display:block!important;width:100%!important;max-width:none!important}
#dsProductCameraMount>.capture-grid{display:grid!important;grid-template-columns:minmax(0,40%) minmax(0,60%)!important;gap:16px;align-items:stretch;max-width:100%;min-width:0}
#dsProductCameraMount>.capture-grid[hidden]{display:none!important}
#dsProductCameraMount .camera-stage{min-height:380px;aspect-ratio:auto}
#dsProductCameraMount>.capture-grid>*{min-width:0;max-width:100%;box-sizing:border-box}
@media(max-width:760px){#dsProductCameraMount>.capture-grid{grid-template-columns:minmax(0,1fr)!important}.ds-product-dialog{padding:12px}}
/* Restore a general capture after its live DOM has been returned from the product modal. */
#today>.capture-grid:not([hidden]){display:grid!important}

/* Modal is a top-layer dialog: never clip its capture contents to routine column width. */
#dsProductCaptureDialog #dsProductCameraMount{width:100%;min-width:0}
#dsProductCaptureDialog .premeasure-overview>*{min-width:0}

/* v4: product modal has two primary acquisition choices, equal width and one line. */
#dsProductCaptureDialog #captureActions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important;width:100%!important}
#dsProductCaptureDialog #captureActions #startCamera,#dsProductCaptureDialog #captureActions #chooseFile{white-space:nowrap!important;min-width:0!important;width:100%!important;word-break:keep-all!important;line-height:1.3!important;padding:11px 6px!important}
#dsProductCaptureDialog #captureActions button[hidden]{display:none!important}
#dsProductCaptureDialog #captureActions #takePhoto,#dsProductCaptureDialog #captureActions #chooseAnotherFile{grid-column:auto;min-width:0}
.ds-product-selected select{flex:1;min-width:0;max-width:480px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface,#fff);color:inherit;font:inherit}
.ds-dismiss-capture-error{float:right;background:transparent;border:0;font-size:24px;cursor:pointer;line-height:1;color:inherit}

#geometryLockPanel{position:relative;padding-right:32px}
.ds-dismiss-geometry-notice{position:absolute;top:4px;right:4px;border:1px solid currentColor;border-radius:50%;background:transparent;color:inherit;cursor:pointer;width:23px;height:23px;line-height:18px;font-size:18px}

/* 2026-10-10 v5: consistent page heading spacing across general/product/history */
main:has(> #today.active),main:has(> #history.active),main:has(> #routine.active){padding-top:20px!important}
#today>.intro-row.premeasure-report-head,#history>.section-heading.page-heading,#routine>.section-heading.page-heading{margin:0 0 12px!important;min-height:0!important;padding:0!important}
#history .ds-history-eyebrow,#today .ds-skin-eyebrow,#routine>.section-heading .eyebrow{margin:0 0 7px!important;color:var(--ds-primary,var(--primary))!important;font-size:.69rem!important;letter-spacing:.11em!important;font-weight:800!important}
#history .ds-section-shortnote,#today .ds-section-shortnote,#routine .section-heading .support-lead{margin-top:6px!important}
@media(max-width:600px){main:has(> #today.active),main:has(> #history.active),main:has(> #routine.active){padding-top:14px!important}}

/* v6: moved capture error notice must respect dismissed state in both workspaces. */
#qualityError[hidden], #dsProductCameraMount #qualityError[hidden], #dsProductCaptureDialog #qualityError[hidden] { display:none!important; }


/* 2026-10-10 mobile layout consolidation: scoped overrides; desktop remains unchanged.
   Shared color tokens remain theme-driven. */
@media (max-width: 760px) {
  html,body{max-width:100%;overflow-x:clip}
  main,main>section,#today,#routine,#history,#home{min-width:0;max-width:100%}
  main:has(> #today.active),main:has(> #history.active),main:has(> #routine.active){padding-top:12px!important}
  #today>.intro-row.premeasure-report-head,#routine>.section-heading.page-heading,#history>.section-heading.page-heading{align-items:flex-start!important;gap:8px!important;margin-bottom:10px!important}
  #today #todayTitle,#routine>.section-heading h1,#history>.section-heading h1{font-size:clamp(1.48rem,6vw,1.85rem)!important;line-height:1.24!important}
  #today .ds-section-shortnote,#routine .section-heading .support-lead,#history .ds-section-shortnote{font-size:.82rem!important;line-height:1.5!important}
  #today #dsSkinWorkflow,#routine .ds-product-workspace-tabs,#history #dsHistoryWorkflow{gap:5px!important;margin:10px 0!important}
  #today #dsSkinWorkflow button,#routine .ds-product-workspace-tabs button,#history #dsHistoryWorkflow button{min-width:0!important;min-height:46px!important;padding:9px 3px!important;font-size:clamp(.67rem,2.5vw,.83rem)!important;line-height:1.35!important;word-break:keep-all!important;overflow-wrap:break-word!important}
  #today>.capture-grid,#dsProductCameraMount>.capture-grid,#dsProductCaptureHost>.capture-grid{grid-template-columns:minmax(0,1fr)!important;gap:12px!important;width:100%!important}
  #today>.capture-grid>* ,#dsProductCameraMount>.capture-grid>*,#dsProductCaptureHost>.capture-grid>*{min-width:0!important;width:100%!important;max-width:100%!important}
  #today .camera-stage,#dsProductCameraMount .camera-stage{min-height:0!important;aspect-ratio:3/4!important;height:auto!important;max-height:min(66dvh,580px);overflow:hidden}
  #today .premeasure-overview,#dsProductCameraMount .premeasure-overview{min-width:0!important;width:100%!important;overflow:hidden}
  #today .premeasure-overview svg,#dsProductCameraMount .premeasure-overview svg{max-width:100%!important;height:auto}
  #routine .ds-product-selected{gap:8px;padding:10px 12px;flex-wrap:wrap}
  #routine .ds-product-selected select{max-width:100%!important;flex:1 1 180px}
  #routine .product-eval-card{padding:14px!important}
  #routine .product-card-tools{gap:6px;flex-wrap:wrap}
  #routine .product-card-tools button{min-height:40px}
  #routine .ds-product-focused-report,#routine .ds-product-record-panel{min-width:0;max-width:100%;padding:14px!important;overflow-wrap:anywhere}
  #routine .product-measurement-values{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  #routine .product-measurement-row{min-width:0;overflow-wrap:anywhere}
  #routine .product-measurement-report{width:100%;margin:0!important;min-height:44px}
  #history .history-item{min-width:0;overflow-wrap:anywhere}
  #history .history-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}
  .ds-v3-metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
  .ds-v3-metric{min-width:0;padding:12px 8px}
  .ds-product-dialog{box-sizing:border-box;inset:0!important;margin:auto!important;width:calc(100% - 16px)!important;max-width:520px!important;max-height:calc(100dvh - 16px)!important;padding:12px!important;border-radius:16px!important;overscroll-behavior:contain}
  .ds-product-register-dialog{max-width:520px!important}
  .ds-dialog-bar{position:sticky;top:-12px;z-index:3;background:var(--card);padding:6px 0 10px}
  .ds-dialog-bar button{flex:0 0 40px;min-width:40px;min-height:40px}
  #dsProductCaptureDialog #captureActions{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
  #dsProductCaptureDialog #captureActions #startCamera,#dsProductCaptureDialog #captureActions #chooseFile{min-height:46px!important;white-space:normal!important;word-break:keep-all!important;overflow-wrap:break-word!important;padding:10px 4px!important}
  #dsProductCaptureDialog #dsProductCameraMount{margin-top:8px!important}
  #dsProductCaptureDialog #qualityError{max-width:100%;overflow-wrap:anywhere}
}
@media(max-width:420px){
  #today .camera-stage,#dsProductCameraMount .camera-stage{max-height:57dvh}
  #routine .product-eval-list-wrap{padding:12px!important}
  #routine .product-eval-card header{gap:8px}
  #routine .product-eval-card h3{font-size:1rem}
  .ds-product-dialog{width:calc(100% - 10px)!important;max-height:calc(100dvh - 10px)!important;padding:10px!important}
  #history .history-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* v11 cascade guard: these user-facing mobile rules must stay last. */
@media (max-width:760px) {
  .topbar{display:flex!important;grid-template-columns:none!important;gap:7px!important;padding:8px 10px!important}
  .topbar>.brand{flex:1 1 auto!important;width:auto!important;min-width:0!important}
  .topbar-actions{display:flex!important;flex:0 0 auto!important;align-items:center!important;justify-content:flex-end!important;gap:7px!important;margin-left:auto!important}
  .language-select-wrap{grid-column:auto!important;flex:0 0 142px!important;width:142px!important;min-width:142px!important;max-width:142px!important}
  .language-select{box-sizing:border-box!important;width:142px!important;min-width:142px!important;max-width:142px!important;padding:0 30px 0 12px!important;font-size:.82rem!important}
  .account-quick,.account-quick.signed-in{grid-column:auto!important;flex:0 0 40px!important}

  .tabs{display:flex!important;height:54px!important;min-height:54px!important;justify-content:flex-start!important;gap:0!important;padding:0 10px!important;overflow-x:auto!important;overflow-y:hidden!important;white-space:nowrap!important;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch}
  .tabs .tab{flex:0 0 auto!important;width:auto!important;min-width:max-content!important;min-height:54px!important;padding:0 15px!important;font-size:.8rem!important;line-height:1!important;white-space:nowrap!important;word-break:keep-all!important}

  #routine .product-eval-card{padding:14px!important;font-size:.86rem!important;overflow:hidden!important}
  #routine .product-eval-card header{display:grid!important;grid-template-columns:minmax(0,1fr)!important;align-items:start!important;gap:9px!important}
  #routine .product-eval-card header>div{width:100%!important;min-width:0!important;max-width:100%!important}
  #routine .product-card-tools{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;align-items:stretch!important;width:100%!important;max-width:none!important;margin-top:0!important;gap:5px 8px!important}
  #routine .product-card-tools>b{grid-column:1/-1!important;min-width:0!important;white-space:normal!important;overflow-wrap:anywhere!important;font-size:.72rem!important;line-height:1.35!important}
  #routine .product-card-tools button{box-sizing:border-box!important;min-width:0!important;max-width:100%!important;min-height:36px!important;padding:5px 4px!important;font-size:.68rem!important;line-height:1.3!important;white-space:normal!important;overflow-wrap:anywhere!important}

  #today>.intro-row.premeasure-report-head{position:relative!important;display:block!important;padding-right:0!important}
  #today #engineStatus{position:absolute!important;top:0!important;right:0!important;margin:0!important;max-width:42%!important;min-height:0!important;padding:4px 8px!important;border-radius:999px!important;font-size:.62rem!important;line-height:1.25!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  #today .ds-skin-eyebrow{padding-right:43%!important}

  #dsProductCaptureDialog .geometry-lock-panel,.geometry-lock-panel{display:block!important;padding:9px 34px 9px 10px!important}
  .geometry-lock-checks,.capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks,.capture-camera-mode.capture-panel-mode .geometry-lock-checks{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;width:100%!important;gap:4px!important;margin-top:5px!important;overflow:visible!important}
  .geometry-lock-checks span,.capture-camera-mode.capture-live-mode.capture-panel-mode .geometry-lock-checks span,.capture-camera-mode.capture-panel-mode .geometry-lock-checks span{box-sizing:border-box!important;width:100%!important;min-width:0!important;max-width:100%!important;padding:4px 1px!important;font-size:clamp(.5rem,2.15vw,.6rem)!important;line-height:1.2!important;text-align:center!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}

  footer{box-sizing:border-box!important;width:100%!important;margin:0!important;padding:24px 20px 34px!important;text-align:left!important;justify-items:start!important;align-items:start!important}
  footer>span{box-sizing:border-box!important;width:100%!important;margin:0!important;padding:0!important;text-align:left!important}
  footer>span:last-child{justify-content:flex-start!important;align-items:flex-start!important;margin:0!important;padding:0!important}
  footer .ds-footer-link{margin:0!important;padding:0!important;text-align:left!important}
}
@media (max-width:380px){.language-select-wrap,.language-select{width:132px!important;min-width:132px!important;max-width:132px!important}.tabs .tab{padding-inline:13px!important}}

/* 2026-10-10 v12 — one live warning surface and centered close glyphs. */
.capture-protocol-panel{display:none!important}
#closeAuthGate,#closeCapture,#dsDismissGeometryNotice,#dsDismissCaptureError,
#dsProductCaptureClose,#dsProductRegisterClose,#scheduleEditClose,
.dialog-close,.modal-close,.auth-gate-close,.measurement-review-close,.dsv3-detail-close,
.ds-dialog-bar button{
  box-sizing:border-box!important;display:grid!important;place-items:center!important;
  padding:0!important;text-align:center!important;text-indent:0!important;
  font-family:Arial,sans-serif!important;font-weight:400!important;line-height:1!important
}
#dsDismissGeometryNotice{
  top:7px!important;right:7px!important;width:30px!important;height:30px!important;
  min-width:30px!important;min-height:30px!important;font-size:22px!important
}
#dsDismissCaptureError{float:right!important;width:30px!important;height:30px!important;border:1px solid currentColor!important;border-radius:50%!important;font-size:22px!important}

/* 2026-10-10 v13 — shared capture copy and one coherent mobile type scale. */
@media (max-width:760px) {
  :root{
    --ds-mobile-title:1.65rem;
    --ds-mobile-section:1.2rem;
    --ds-mobile-body:.86rem;
    --ds-mobile-control:.82rem;
    --ds-mobile-meta:.74rem
  }
  body{font-size:var(--ds-mobile-body)!important;line-height:1.55!important}

  .page-heading h1,.section-heading h1,.intro-row h1,.ds-v3-welcome h1,
  #today #todayTitle,#routine>.section-heading h1,#history>.section-heading h1{
    font-size:var(--ds-mobile-title)!important;line-height:1.22!important
  }
  .section-heading h2,.product-eval-list-head h2,.product-eval-builder-head h2,
  .change-overview h2,.measurement-history h2,.dsv3-profile-card h3,
  .ds-v3-panel-title h2,.ds-product-focused-report>h2,.ds-product-record-panel>h2{
    font-size:var(--ds-mobile-section)!important;line-height:1.3!important
  }
  .support-lead,.ds-section-shortnote,.section-help,.ds-workflow-current,
  .ds-product-workspace-selection,.dsv3-profile-note,.premeasure-profile-note,
  .ds-home-panel>p,.ds-v3-welcome p:not(.ds-v3-overline){
    font-size:var(--ds-mobile-body)!important;line-height:1.55!important
  }

  .button,.tab,.tabs .tab,.ds-workflow-nav button,.ds-product-workspace-tabs button,
  .change-tabs button,.ds-skin-quicknav button,.ds-account-link,
  .product-card-tools button,.product-eval-actions .button,
  input,select,textarea,.language-select,.ds-product-selected select{
    font-size:var(--ds-mobile-control)!important;line-height:1.35!important
  }
  .eyebrow,.step-label,.ds-v3-overline,.product-eval-card header span,
  .product-eval-meta small,.dsv3-quality,.premeasure-quality,
  .product-eval-list-head>span,.product-eval-builder-head>span{
    font-size:var(--ds-mobile-meta)!important;line-height:1.35!important
  }
  .product-eval-card h3,.ds-product-selected>strong,.routine-recommendation strong,
  .ds-v3-entry-card strong,.ds-v3-result-head strong{
    font-size:1rem!important;line-height:1.35!important
  }
  .product-eval-card,.product-eval-meta b,.product-card-tools>b,
  .ds-home-inset small,.ds-context-banner span,.ds-v3-entry-card em{
    font-size:var(--ds-mobile-body)!important;line-height:1.5!important
  }
  .dsv3-profile-stats strong,.premeasure-profile-stats strong{
    font-size:1.08rem!important;line-height:1.2!important;overflow-wrap:anywhere!important
  }
  .dsv3-profile-stats span,.premeasure-profile-stats span{
    font-size:var(--ds-mobile-meta)!important;line-height:1.4!important;overflow-wrap:anywhere!important
  }

  /* The shared camera message uses the same two-line contract in both hosts. */
  .geometry-lock-panel strong,
  #dsProductCaptureDialog .geometry-lock-panel strong,
  #dsProductCameraMount .geometry-lock-panel strong{
    display:-webkit-box!important;min-height:2.7em!important;max-height:2.7em!important;
    padding-right:32px!important;font-size:var(--ds-mobile-control)!important;line-height:1.35!important;
    white-space:normal!important;overflow:hidden!important;text-overflow:clip!important;
    overflow-wrap:anywhere!important;-webkit-box-orient:vertical!important;-webkit-line-clamp:2!important
  }

  /* Radar labels remain inside the SVG in every language. */
  .dsv3-radar{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;overflow:visible!important}
  .dsv3-radar text{font-size:10px!important;font-weight:700!important}
  .dsv3-radar tspan{font-size:inherit!important}
}

/* 2026-10-10 v14 — one centered, light camera UI for every capture route. */
@media (max-width:760px) {
  body.capture-camera-mode.capture-live-mode .geometry-lock-panel,
  body.capture-camera-mode #dsProductCaptureDialog .geometry-lock-panel,
  body.capture-camera-mode #dsProductCameraMount .geometry-lock-panel{
    position:relative!important;left:auto!important;right:auto!important;bottom:auto!important;
    transform:none!important;display:block!important;box-sizing:border-box!important;
    width:100%!important;max-width:none!important;margin:0!important;
    padding:8px 34px 8px 10px!important;border:1px solid #dce8e3!important;
    border-radius:12px!important;background:#f5faf7!important;color:var(--ink)!important;
    box-shadow:none!important;backdrop-filter:none!important;overflow:visible!important
  }
  body.capture-camera-mode .geometry-lock-panel strong,
  body.capture-camera-mode #dsProductCaptureDialog .geometry-lock-panel strong,
  body.capture-camera-mode #dsProductCameraMount .geometry-lock-panel strong{
    display:block!important;min-height:0!important;max-height:none!important;
    padding:0!important;font-size:var(--ds-mobile-control)!important;line-height:1.35!important;
    white-space:normal!important;overflow:visible!important;text-overflow:clip!important;
    overflow-wrap:anywhere!important;word-break:keep-all!important;
    -webkit-box-orient:initial!important;-webkit-line-clamp:unset!important
  }
  body.capture-camera-mode .geometry-lock-checks,
  body.capture-camera-mode #dsProductCaptureDialog .geometry-lock-checks,
  body.capture-camera-mode #dsProductCameraMount .geometry-lock-checks{
    display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;
    width:100%!important;gap:4px!important;margin-top:6px!important;overflow:visible!important
  }
  body.capture-camera-mode .geometry-lock-checks span,
  body.capture-camera-mode #dsProductCaptureDialog .geometry-lock-checks span,
  body.capture-camera-mode #dsProductCameraMount .geometry-lock-checks span{
    box-sizing:border-box!important;width:100%!important;min-width:0!important;max-width:100%!important;
    padding:4px 2px!important;border-radius:999px!important;background:#edf2ef!important;
    color:#6b7d76!important;font-size:clamp(.5rem,2.15vw,.6rem)!important;line-height:1.2!important;
    text-align:center!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important
  }
  body.capture-camera-mode .geometry-lock-checks span.is-passed{background:#dff5ec!important;color:#167963!important}
  body.capture-camera-mode .geometry-lock-checks span.is-failed{background:#fff2d1!important;color:#8b6819!important}

  #dsDismissGeometryNotice{
    top:6px!important;right:6px!important;width:26px!important;height:26px!important;
    min-width:26px!important;min-height:26px!important;font-size:18px!important
  }
  .capture-panel-heading #closeCapture,
  #dsProductCaptureDialog #dsProductCaptureClose{
    width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;
    flex:0 0 34px!important;font-size:1.35rem!important
  }
}

/* 2026-10-10 v15 — one physical app-level capture surface. */
.ds-unified-capture-host{display:none}
body.capture-panel-mode #dsUnifiedCaptureHost{
  position:fixed;inset:0;z-index:1000;display:grid;place-items:center;
  box-sizing:border-box;padding:14px;background:rgba(9,31,43,.46);backdrop-filter:blur(3px)
}
body.capture-panel-mode #dsUnifiedCaptureHost>.capture-grid{
  position:relative!important;inset:auto!important;transform:none!important;z-index:1;
  display:grid!important;grid-template-columns:minmax(0,1fr);box-sizing:border-box;
  width:min(760px,calc(100vw - 28px));max-height:calc(100dvh - 28px);overflow:auto;
  padding:22px;background:#fff;border:1px solid #d7e5df;border-radius:24px;
  box-shadow:0 30px 90px rgba(6,28,42,.32)
}
@media(max-width:520px){
  body.capture-panel-mode #dsUnifiedCaptureHost{padding:max(4px,env(safe-area-inset-top)) 6px max(4px,env(safe-area-inset-bottom))}
  body.capture-camera-mode.capture-live-mode.capture-panel-mode #dsUnifiedCaptureHost>.capture-grid{
    width:100%!important;height:100%!important;max-height:none!important;overflow:hidden!important;
    padding:9px 10px 8px!important;border-radius:20px!important;
    grid-template-rows:auto minmax(0,1fr)!important;gap:6px!important
  }
}

/* 2026-10-10 v16 — hide pre-camera checks and keep one stable mobile viewport. */
.geometry-lock-panel[hidden]{display:none!important}
@media(max-width:520px){
  body.capture-panel-mode #dsUnifiedCaptureHost>.capture-grid,
  body.capture-camera-mode.capture-live-mode.capture-panel-mode #dsUnifiedCaptureHost>.capture-grid{
    width:100%!important;height:auto!important;max-height:100%!important;overflow-y:auto!important;
    padding:9px 10px 8px!important;border-radius:20px!important;
    grid-template-rows:auto auto!important;gap:6px!important
  }
  body.capture-panel-mode #dsUnifiedCaptureHost .camera-card,
  body.capture-camera-mode.capture-live-mode.capture-panel-mode #dsUnifiedCaptureHost .camera-card{
    width:100%!important;height:auto!important;grid-template-rows:auto auto auto!important;gap:6px!important
  }
  body.capture-panel-mode #dsUnifiedCaptureHost .camera-stage,
  body.capture-camera-mode.capture-live-mode.capture-panel-mode #dsUnifiedCaptureHost .camera-stage{
    box-sizing:border-box!important;width:100%!important;height:auto!important;min-height:0!important;
    max-width:100%!important;max-height:none!important;aspect-ratio:3 / 4!important;
    margin:0!important;border-radius:16px!important;justify-self:stretch!important
  }
  body.capture-camera-mode.capture-live-mode.capture-panel-mode #dsUnifiedCaptureHost .face-guide{
    width:64%!important;height:80%!important;max-width:none!important;max-height:none!important;
    border-radius:48% 48% 45% 45%!important
  }
}

/* 2026-10-10 v17 — previous-capture contour and facial landmarks. */
.baseline-face-guide .baseline-contour-line{
  stroke:rgba(255,255,255,.9);stroke-width:1.6;stroke-dasharray:5 5
}
.baseline-face-guide .baseline-feature-line{
  fill:none;stroke:rgba(120,255,216,.96);stroke-width:2;stroke-dasharray:none;
  stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;
  filter:drop-shadow(0 1px 2px rgba(0,0,0,.55))
}
.camera-stage.geometry-locked .baseline-face-guide .baseline-contour-line,
.camera-stage.geometry-locked .baseline-face-guide .baseline-feature-line{
  stroke:rgba(114,241,198,.98)
}

/* 2026-10-10 v18 — previous-photo ghost overlay shared by every capture route. */
.baseline-ghost-image{
  position:absolute!important;inset:0!important;z-index:2!important;
  display:none!important;width:100%!important;height:100%!important;
  object-fit:cover!important;object-position:center!important;background:transparent!important;
  transform:scaleX(-1)!important;transform-origin:center!important;pointer-events:none!important;
  opacity:var(--baseline-ghost-opacity,.15)!important;filter:none!important;
  transition:opacity .15s ease!important
}
.camera-stage.live.has-ghost-overlay .baseline-ghost-image{display:block!important}
.camera-stage.live video,.camera-stage.live .baseline-ghost-image{
  object-fit:cover!important;object-position:center center!important
}
.baseline-ghost-controls{
  position:absolute;z-index:6;top:8px;left:8px;right:8px;display:flex;align-items:center;
  gap:5px;pointer-events:none
}
.baseline-ghost-controls[hidden],.baseline-ghost-controls label[hidden]{display:none!important}
.baseline-ghost-controls button,.baseline-ghost-controls label{
  box-sizing:border-box;min-height:30px;border:1px solid rgba(255,255,255,.78);border-radius:999px;
  background:rgba(24,51,59,.78);color:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2);
  backdrop-filter:blur(4px);font:inherit;font-size:.72rem;font-weight:700;pointer-events:auto
}
.baseline-ghost-controls button{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;cursor:pointer}
.baseline-ghost-controls button.is-off{opacity:.68}
.baseline-ghost-controls label{display:flex;align-items:center;gap:6px;max-width:min(250px,55vw);padding:4px 9px}
.baseline-ghost-controls label span{white-space:nowrap}
.baseline-ghost-controls input{width:min(110px,22vw);accent-color:#70e2c2}
.camera-stage.has-ghost-overlay .face-guide{
  opacity:.92!important;border-color:#ffd166!important;
  box-shadow:0 0 0 999px rgba(4,23,33,.10)!important
}
.camera-stage.has-ghost-overlay .face-guide:before,
.camera-stage.has-ghost-overlay .face-guide:after,
.camera-stage.has-ghost-overlay .face-guide span:before,
.camera-stage.has-ghost-overlay .face-guide span:after{background:#ffd166!important}
.baseline-oval-guide{
  position:absolute;z-index:3;display:none;box-sizing:border-box;pointer-events:none;
  border:2px solid #ffd166;border-radius:48% 48% 45% 45%;
  box-shadow:0 0 0 999px rgba(4,23,33,.10)
}
.baseline-oval-guide[hidden]{display:none!important}
.camera-stage.live.has-ghost-overlay.has-baseline-oval .baseline-oval-guide{display:block}
.camera-stage.live.has-ghost-overlay.has-baseline-oval .face-guide{display:none!important}
.baseline-oval-guide:before,.baseline-oval-guide:after,
.baseline-oval-guide span:before,.baseline-oval-guide span:after{
  content:"";position:absolute;background:#ffd166
}
.baseline-oval-guide:before,.baseline-oval-guide:after{width:22px;height:3px;top:49%}
.baseline-oval-guide:before{left:-12px}.baseline-oval-guide:after{right:-12px}
.baseline-oval-guide span:before,.baseline-oval-guide span:after{width:3px;height:22px;left:50%}
.baseline-oval-guide span:before{top:-12px}.baseline-oval-guide span:after{bottom:-12px}
.camera-stage.has-ghost-overlay .live-face-guide{opacity:.38!important}
.camera-stage.has-ghost-overlay .baseline-face-guide{opacity:.72!important}
@media(max-width:520px){
  .baseline-ghost-controls{top:6px;left:6px;right:6px}
  .baseline-ghost-controls button,.baseline-ghost-controls label{min-height:28px;font-size:.64rem}
  .baseline-ghost-controls label span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}
}
