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

:root{--ink:#211b1b;--muted:#7f7572;--line:#e7dfdc;--paper:#f8f5f3;--white:#fff;--accent:#b8836e;--accent-soft:#f1e3dc;--deep:#191515;--shadow:0 24px 70px rgba(35,25,22,.13)}
*{box-sizing:border-box}
html{font-size:16px;background:#ece7e4}
body{margin:0;color:var(--ink);font-family:"DM Sans","Noto Sans JP",sans-serif;background:radial-gradient(circle at 8% 15%,#fff 0,transparent 28%),linear-gradient(135deg,#f0ebe8,#e9e3e0);min-height:100vh}
button,input,label{font:inherit}
button{color:inherit}
.app-shell{max-width:1560px;margin:0 auto;min-height:100vh;background:var(--paper);box-shadow:0 0 90px rgba(51,38,32,.1)}
.topbar{height:82px;padding:0 34px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:rgba(255,255,255,.78);backdrop-filter:blur(18px)}
.brand{display:flex;gap:13px;align-items:center;text-decoration:none;color:var(--ink)}
.brand-mark{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--deep);color:#f4d8cb;font:600 .78rem/1 "DM Sans";letter-spacing:.08em}
.brand strong,.brand small{display:block}.brand strong{font-size:.92rem;letter-spacing:.18em}.brand small{font-size:.58rem;letter-spacing:.24em;color:var(--muted);margin-top:3px}
.session-status{font-size:.78rem;color:#675d5a;display:flex;align-items:center;gap:8px}.session-status span{width:7px;height:7px;border-radius:50%;background:#b37d69;box-shadow:0 0 0 5px #efe1da}
.workspace{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(420px,.75fr);min-height:calc(100vh - 82px)}
.preview-column{padding:30px 34px 28px;min-width:0}
.preview-toolbar{display:flex;justify-content:space-between;align-items:end;margin-bottom:18px}.eyebrow{font-size:.64rem;letter-spacing:.22em;color:var(--accent);font-weight:600;margin:0 0 5px}.preview-toolbar h1,.panel-heading h2{font-family:"Noto Sans JP",sans-serif;margin:0;font-size:1.45rem;letter-spacing:.04em}
.eye-toggle{display:flex;background:#e9e3e0;padding:4px;border-radius:999px}.eye-button{border:0;background:transparent;padding:9px 19px;border-radius:999px;color:#746967;font-size:.82rem;cursor:pointer;transition:.2s}.eye-button.active{background:#fff;color:#292222;box-shadow:0 3px 12px rgba(35,25,22,.08)}
.portrait-card{position:relative;border-radius:28px;overflow:hidden;background:#c9b9b2;box-shadow:var(--shadow);aspect-ratio:1.08/1;isolation:isolate}
.zoom-layer>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 41%;transition:filter .25s,opacity .25s}.comparing .zoom-layer>img{filter:saturate(.9)}
.photo-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0) 58%,rgba(20,13,12,.42) 100%);z-index:1;pointer-events:none}
.lash-overlay{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;filter:drop-shadow(0 1px 1px rgba(255,255,255,.08));transition:opacity .2s}.comparing .lash-overlay{opacity:0}
.compare-hint{position:absolute;z-index:3;left:23px;bottom:22px;color:#fff;display:flex;align-items:center;gap:9px;font-size:.73rem;text-shadow:0 1px 5px rgba(0,0,0,.3)}.compare-hint>span:first-child{width:25px;height:1px;background:#fff;display:block}
.compare-button{position:absolute;z-index:4;right:20px;bottom:18px;border:1px solid rgba(255,255,255,.55);color:#fff;background:rgba(25,18,17,.32);backdrop-filter:blur(7px);border-radius:999px;padding:8px 13px;letter-spacing:.12em;font-size:.65rem;cursor:pointer}
.upload-button{position:absolute;z-index:4;right:18px;top:18px;color:#fff;background:rgba(25,18,17,.38);backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:9px 14px;font-size:.75rem;cursor:pointer}.upload-button span{font-size:1rem;margin-right:3px}
.result-strip{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;margin-top:16px;border:1px solid var(--line);background:var(--line);border-radius:17px;overflow:hidden}.result-strip>div{background:#fff;padding:13px 16px}.result-strip small,.result-strip strong{display:block}.result-strip small{font-size:.68rem;color:var(--muted);margin-bottom:3px}.result-strip strong{font-size:.9rem;font-weight:600}.design-result strong{color:#a96f59}
.controls-panel{background:#fff;border-left:1px solid var(--line);padding:30px 34px 34px;overflow:auto;max-height:calc(100vh - 82px)}
.panel-heading{display:flex;justify-content:space-between;align-items:end;padding-bottom:22px}.reset-button{border:0;background:transparent;color:#9a7d72;font-size:.75rem;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.control-section{border:0;border-top:1px solid var(--line);padding:19px 0 0;margin:0 0 19px}.control-section legend,.control-label label{font-size:.86rem;font-weight:600;letter-spacing:.03em;padding:0}.control-label{display:flex;align-items:center;justify-content:space-between}.control-label output{font-size:1rem;color:var(--accent);font-weight:600}
input[type="range"]{width:100%;height:4px;margin:21px 0 7px;appearance:none;border-radius:3px;background:linear-gradient(90deg,var(--accent) 50%,#e7dfdc 50%)}input[type="range"]::-webkit-slider-thumb{appearance:none;width:19px;height:19px;border-radius:50%;background:#fff;border:5px solid var(--accent);box-shadow:0 2px 8px rgba(60,40,31,.23);cursor:pointer}.range-labels{display:flex;justify-content:space-between;color:#a09491;font-size:.66rem}
.segmented{display:grid;margin-top:13px;border:1px solid var(--line);border-radius:12px;overflow:hidden}.segmented.four{grid-template-columns:repeat(4,1fr)}.segmented.five{grid-template-columns:repeat(5,1fr)}.segmented button{border:0;border-right:1px solid var(--line);background:#fff;padding:10px 6px;cursor:pointer;font-size:.78rem}.segmented button:last-child{border-right:0}.segmented button.active{background:var(--deep);color:#fff}.unit-note{font-size:.65rem;color:#aaa09d;margin:6px 0 0;text-align:right}
.color-options{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:13px}.color-choice{display:flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--line);border-radius:11px;background:#fff;padding:10px 5px;font-size:.7rem;cursor:pointer}.color-choice span{display:block;width:13px;height:13px;border-radius:50%;background:var(--swatch);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}.color-choice.active{border-color:#9b7566;background:#faf4f1;box-shadow:inset 0 0 0 1px #9b7566}
.design-section{margin-bottom:14px}.design-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:13px}.design-grid button{min-height:65px;padding:8px 4px;border:1px solid var(--line);border-radius:12px;background:#fff;font-size:.66rem;cursor:pointer;display:flex;flex-direction:column;gap:5px;align-items:center;justify-content:center}.design-grid button.active{border-color:#9b7566;background:#fbf5f2;box-shadow:inset 0 0 0 1px #9b7566;color:#855b4c}
.lash-icon{display:block;width:38px;height:13px;border-bottom:1.5px solid currentColor;border-radius:50%;position:relative}.lash-icon:before{content:"";position:absolute;inset:-2px 2px 0;background:repeating-linear-gradient(104deg,transparent 0 5px,currentColor 6px 7px,transparent 8px 9px);clip-path:polygon(0 100%,100% 100%,87% 0,12% 23%)}.lash-icon.cute:before{clip-path:polygon(0 100%,100% 100%,75% 28%,50% 0,25% 28%)}.lash-icon.sexy:before{clip-path:polygon(0 100%,100% 100%,100% 0,62% 37%,20% 70%)}.lash-icon.reverse:before{transform:scaleX(-1)}.lash-icon.glamorous:before{clip-path:polygon(0 100%,100% 100%,90% 5%,50% 10%,10% 5%)}.lash-icon.wanghong:before{background:repeating-linear-gradient(100deg,transparent 0 7px,currentColor 8px 10px,transparent 11px 14px)}
.recommendation{display:flex;gap:12px;background:#f7efeb;border-radius:14px;padding:13px 14px;color:#64534d}.recommendation-mark{display:grid;place-items:center;flex:0 0 22px;width:22px;height:22px;border-radius:50%;background:#d4aa98;color:white;font-family:serif;font-size:.77rem}.recommendation p{margin:0;font-size:.72rem;line-height:1.65}.recommendation strong{font-size:.76rem}
@media (max-width:1050px){.workspace{grid-template-columns:1fr}.controls-panel{max-height:none;border-left:0;border-top:1px solid var(--line)}.portrait-card{aspect-ratio:1.3/1}.preview-column{padding-bottom:32px}}
@media (max-width:650px){.topbar{height:68px;padding:0 18px}.session-status{display:none}.workspace{min-height:calc(100vh - 68px)}.preview-column,.controls-panel{padding:22px 18px}.preview-toolbar{align-items:start;gap:15px}.preview-toolbar h1,.panel-heading h2{font-size:1.18rem}.eye-button{padding:8px 12px;font-size:.72rem}.portrait-card{aspect-ratio:.86/1;border-radius:20px}.upload-button{font-size:.68rem}.compare-hint{display:none}.result-strip{grid-template-columns:repeat(3,1fr)}.result-strip>div{padding:10px 11px}.design-result{grid-column:span 2}.design-grid{grid-template-columns:repeat(3,1fr)}.color-options{grid-template-columns:1fr}.color-choice{justify-content:flex-start;padding-left:16px}}
@media (prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* MELLOW — restrained editorial salon workspace */
:root{--ink:#30332d;--muted:#7c8077;--line:#dedfd7;--paper:#f4f4ee;--white:#fff;--accent:#69715c;--accent-soft:#e9ecdf;--deep:#343c30;--shadow:none}
html,body{background:var(--paper)}
body{background:var(--paper)}
.app-shell{max-width:1680px;background:var(--paper);box-shadow:none}
.topbar{height:100px;padding:0 44px;background:transparent;backdrop-filter:none}
.brand-mark{font-family:Georgia,serif;font-size:30px;font-weight:400;width:43px;height:57px;border:1px solid #777f6e;border-radius:50%;color:var(--ink);background:transparent}
.brand strong{font-family:Georgia,serif;font-size:23px;font-weight:400;letter-spacing:.025em}.brand small{font-size:10px;letter-spacing:.22em;margin-top:5px}
.session-status{font-size:11px;letter-spacing:.14em}.session-status span{width:22px;height:1px;border-radius:0;box-shadow:none;background:#a5aa9d}
.workspace{grid-template-columns:minmax(0,1.55fr) minmax(375px,1fr);min-height:calc(100vh - 100px)}
.preview-column{padding:38px 40px;align-self:start;position:sticky;top:0}
.preview-toolbar{align-items:center;margin-bottom:30px}.eyebrow{font-size:11px;letter-spacing:.18em;color:#7d8573;margin-bottom:12px}
.preview-toolbar h1{font-family:Georgia,serif;font-weight:400;font-size:clamp(32px,3.4vw,54px);letter-spacing:-.04em}.heading-ja{display:block;font-family:'Noto Sans JP',sans-serif;font-weight:400;font-size:14px;letter-spacing:.13em;margin-top:11px;color:#7c8077}
.eye-toggle{background:transparent;border:1px solid #cfd3c6;border-radius:2px;padding:3px;flex-shrink:0}.eye-button{border-radius:0;font-size:14px;padding:10px 15px}.eye-button.active{background:var(--deep);color:#fff;box-shadow:none}
.portrait-card{border-radius:2px;box-shadow:none;aspect-ratio:1.5;background:#e8ddd4;overflow:hidden}
.zoom-layer>img{object-fit:fill;object-position:center;filter:none}.comparing .zoom-layer>img{filter:none}.lash-overlay{filter:none}
.photo-shade{background:linear-gradient(0deg,rgba(27,26,20,.24),transparent 23%);pointer-events:none}
.upload-button{top:15px;right:15px;border-radius:2px;background:rgba(251,251,246,.87);backdrop-filter:blur(8px);color:#414738;border:0;font-size:12px;padding:9px 12px}
.compare-button{border-radius:2px;background:#fafbf5;color:#3d4435;border:0;letter-spacing:.03em;font-size:12px;bottom:14px;right:15px;padding:11px 14px}
.compare-hint{left:18px;bottom:24px;font-size:11px;letter-spacing:.10em}.compare-hint>span:first-child{display:none}
.preview-note{font-size:12px;line-height:1.8;color:#777d6d;margin:15px 0 25px}
.result-strip{grid-template-columns:repeat(3,1fr);border-radius:0;border-left:0;border-right:0;background:transparent;gap:0}.result-strip>div{background:transparent;padding:15px 12px;border-right:1px solid var(--line)}.result-strip>div:nth-child(3n){border-right:0}.result-strip>div:last-child{border-right:0}.result-strip small{font-size:12px;margin-bottom:8px}.result-strip strong{font-size:15px;font-weight:500}.design-result{grid-column:auto}.design-result strong{color:var(--ink)}
.controls-panel{max-height:none;overflow:visible;background:#fafbf6;padding:38px 30px;border-left:1px solid var(--line)}
.panel-heading{padding-bottom:25px}.panel-heading h2{font-size:18px;font-weight:500;letter-spacing:.03em}.reset-button{font-size:12px;color:#7d8573}
.control-section{position:relative;padding-top:20px;margin-bottom:24px}.control-section legend,.control-label label{font-size:14px;font-weight:500;letter-spacing:.06em}.control-section legend{padding-right:12px}.control-label output{font-size:23px;font-family:Georgia,serif;color:#505b45}
input[type=range]{margin:25px 0 10px;height:2px}input[type=range]::-webkit-slider-thumb{width:16px;height:16px;border:1px solid #667057;background:#667057;box-shadow:0 0 0 4px #fafbf6}
.range-labels{font-size:12px}.segmented{border:0;gap:6px;border-radius:0;margin-top:9px}.segmented button{border:1px solid var(--line)!important;border-radius:2px;font-size:14px;background:transparent;padding:11px 5px}.segmented button.active{background:var(--deep);border-color:var(--deep)!important}
.segmented.three{grid-template-columns:repeat(3,1fr)}
#curl-options button{display:flex;flex-direction:column;align-items:center;gap:4px}
#curl-options svg{width:48px;height:33px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round}
#curl-options small{font-size:12px;opacity:.78}
.thickness-sample{display:block;width:32px;height:var(--hair-width);background:currentColor;margin:6px auto 12px;border-radius:100%}
.unit-note{font-size:12px}.color-options{gap:7px}.color-choice{font-size:12px;border-radius:2px;padding:12px 4px;background:transparent;gap:5px}.color-choice.active{border-color:#7c876c;box-shadow:none;background:#edf0e6}.color-choice span{width:12px;height:12px;flex-shrink:0}
.design-grid{grid-template-columns:repeat(2,1fr);gap:7px}.design-grid button{flex-direction:row;justify-content:flex-start;padding:12px 13px;gap:12px;min-height:48px;border-radius:2px;font-size:13px;background:transparent}.design-grid button.active{background:#e9edde;border-color:#7c876c;color:#465139;box-shadow:none}.lash-icon{width:30px;flex-shrink:0;opacity:.75}
.recommendation{background:transparent;border-top:1px solid var(--line);border-radius:0;padding:17px 0;gap:10px}.recommendation-mark{background:transparent;color:#79846b;border:1px solid #adb5a1}.recommendation p{font-size:13px;color:#777f6d;line-height:1.9}.recommendation strong{font-size:13px;font-weight:500;color:#3b4533}
.photo-actions{display:flex;gap:10px;margin:10px 0}.photo-actions[hidden]{display:none}.photo-actions button{background:transparent;border:1px solid #b9c0ae;padding:9px 12px;font-size:13px;color:#536046;cursor:pointer}.fitting{cursor:crosshair}.fitting .compare-hint{top:12px;bottom:auto;left:12px;right:12px;background:#fafbf6;color:#343c30;padding:15px;z-index:5;pointer-events:none}
button:focus-visible,input:focus-visible,label:focus-within{outline:2px solid #586b41;outline-offset:3px}
@media(min-width:1500px){.preview-column{padding:45px 55px}.controls-panel{padding:45px 40px}}
@media(max-width:1050px){.workspace{grid-template-columns:1fr}.preview-column{position:static;padding:28px}.controls-panel{padding:28px;border-left:0}.design-grid{grid-template-columns:repeat(4,1fr)}.design-grid button{flex-direction:column}.color-options{grid-template-columns:repeat(3,1fr)}}
@media(max-width:650px){.topbar{height:82px;padding:0 20px}.brand strong{font-size:21px}.preview-column,.controls-panel{padding:25px 18px}.preview-toolbar{gap:12px;align-items:end;margin-bottom:22px}.preview-toolbar h1{font-size:36px}.eyebrow{font-size:10px}.heading-ja{font-size:12px}.eye-button{font-size:12px;padding:9px}.upload-button{font-size:10px;padding:6px;top:8px;right:8px}.compare-button{font-size:11px;padding:8px;bottom:8px;right:8px}.result-strip{grid-template-columns:repeat(3,1fr)}.result-strip>div{padding:12px}.result-strip>div:first-child{padding-left:12px}.design-grid{grid-template-columns:repeat(2,1fr)}.design-grid button{flex-direction:row}.color-choice{justify-content:center;padding-left:4px}.compare-hint{display:flex;bottom:16px;font-size:9px}.preview-note{font-size:12px}.preview-toolbar .eyebrow{letter-spacing:.10em}}

.camera-modal{position:fixed;inset:0;z-index:50;background:rgba(30,33,28,.94);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:16px;color:#fff}.camera-modal[hidden]{display:none}.camera-modal video{max-width:100%;max-height:70vh;background:#000}.camera-modal video.mirror{transform:scaleX(-1)}.camera-modal p{font-size:13px;margin:0;text-align:center}.camera-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}.camera-actions button{background:#fafbf6;color:#343c30;border:0;padding:11px 18px;font-size:13px;cursor:pointer}.camera-actions button#camera-cancel,.camera-actions button#camera-file,.camera-actions button#camera-flip{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.5)}

/* 左右の目の切り替え */
.toggle-stack{display:flex;flex-direction:column;align-items:flex-end;gap:8px}
.toggle-stack .eye-toggle{width:max-content}
.eye-button:disabled{opacity:.45;cursor:default}
.zoom-layer>img.flip{transform:scaleX(-1)}
.eye-result{grid-column:span 2}
@media(max-width:650px){.toggle-stack{gap:6px}.preview-toolbar{flex-wrap:wrap}}

/* Mixed-case labels: relax tracking */
.brand small{letter-spacing:.1em}.session-status{letter-spacing:.06em}.eyebrow{letter-spacing:.08em}.compare-hint{letter-spacing:.05em}@media(max-width:650px){.preview-toolbar .eyebrow{letter-spacing:.05em}}

/* 写真の拡大・移動（写真・まつ毛SVGを同じレイヤーで変換） */
.zoom-layer{position:absolute;inset:0;z-index:0;transform-origin:0 0;will-change:transform}
.portrait-card.has-photo{touch-action:none}
.portrait-card.zoomed{cursor:grab}.portrait-card.zoomed.panning{cursor:grabbing}.portrait-card.fitting.zoomed{cursor:crosshair}
.zoom-controls{position:absolute;z-index:4;right:15px;top:58px;display:flex;flex-direction:column;gap:6px}
.zoom-controls button{width:38px;height:38px;border:0;border-radius:2px;background:rgba(251,251,246,.87);backdrop-filter:blur(8px);color:#414738;font-size:19px;line-height:1;cursor:pointer;padding:0}
.zoom-controls button#zoom-reset{font-size:11px}
.zoom-controls button:disabled{opacity:.4;cursor:default}
@media(max-width:650px){.zoom-controls{top:46px;right:8px}.zoom-controls button{width:40px;height:40px}}
