:root{
  --ink:#1d2622;--ink2:#4b5650;--muted:#8a918b;--line:#e8e3d8;--bg:#f6f2ea;--paper:#fffdf9;
  --green:#173a2f;--green2:#2c5a4a;--mint:#e6efe9;--gold:#b38c55;--gold2:#f3e9d8;--danger:#b4513f;
  --r:20px;--r2:14px;--shadow:0 18px 50px -24px #1d262240,0 2px 8px -4px #1d262214;
  --safe-b:env(safe-area-inset-bottom);--safe-t:env(safe-area-inset-top);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;-webkit-font-smoothing:antialiased;font-size:15px;line-height:1.55}
body{overscroll-behavior-y:none}
button{font:inherit;color:inherit;border:0;background:none;padding:0;cursor:pointer}
img{display:block;max-width:100%}
[hidden]{display:none!important}
#app{max-width:560px;margin:0 auto;min-height:100vh;min-height:100dvh;position:relative}

/* ---------- boot / empty ---------- */
.boot{min-height:100vh;display:grid;place-content:center;justify-items:center;gap:18px;color:var(--muted);font-size:14px}
.boot-mark,.spinner{width:34px;height:34px;border-radius:50%;border:3px solid #dfe6e0;border-top-color:var(--green);animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.state-card{margin:22vh 20px 0;padding:34px 24px;text-align:center;background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow)}
.state-card h2{margin:0 0 8px;font-size:19px}.state-card p{margin:0;color:var(--muted)}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:10px;padding:calc(10px + var(--safe-t)) 16px 10px;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
.topbar .back{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--paper);box-shadow:0 1px 3px #0000000f;font-size:20px}
.topbar h1{flex:1;margin:0;font-size:17px;font-weight:600;text-align:center;padding-right:48px}
.topbar .stepdots{display:flex;gap:5px;position:absolute;right:18px}
.stepdots i{width:6px;height:6px;border-radius:3px;background:#d6d0c2}.stepdots i.on{width:16px;background:var(--green)}

/* ---------- hero (home) ---------- */
.hero{position:relative;overflow:hidden;padding:calc(36px + var(--safe-t)) 22px 64px;color:#fff;background:radial-gradient(120% 90% at 100% 0%,#2f6551 0%,transparent 60%),linear-gradient(160deg,#173a2f 0%,#10291f 100%)}
.hero:after{content:"";position:absolute;right:-60px;bottom:-80px;width:220px;height:220px;border-radius:50%;border:1px solid #ffffff1c;box-shadow:0 0 0 30px #ffffff08,0 0 0 60px #ffffff05}
.hero small{display:block;color:#a9c4b6;letter-spacing:.18em;font-size:11px;text-transform:uppercase}
.hero h1{margin:12px 0 6px;font-size:28px;line-height:1.3;font-weight:650;letter-spacing:.01em}
.hero p{margin:0;color:#cddcd3;font-size:14px;max-width:300px}
.home-body{position:relative;margin-top:-34px;padding:0 16px calc(110px + var(--safe-b))}

/* ---------- step cards ---------- */
.steps{display:grid;gap:12px}
.step{position:relative;display:grid;grid-template-columns:44px 1fr auto;gap:14px;align-items:center;padding:18px 16px;background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow);text-align:left;width:100%}
.step .num{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--mint);color:var(--green);font-weight:700;font-size:17px}
.step.done .num{background:var(--green);color:#fff}
.step.locked{opacity:.55}
.step h3{margin:0;font-size:16px;font-weight:600}
.step p{margin:2px 0 0;color:var(--muted);font-size:13px;line-height:1.5}
.step .go{color:var(--green);font-size:13px;font-weight:600;white-space:nowrap}
.step .go.ghost{color:var(--muted);font-weight:400}
.step-cover{grid-column:1/-1;margin-top:4px;border-radius:14px;overflow:hidden;aspect-ratio:16/10;background:#ece7dc}
.step-cover img{width:100%;height:100%;object-fit:cover}
.badge{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border-radius:999px;font-size:11px;background:var(--gold2);color:#7d5f33;font-weight:500}
.badge.live:before{content:"";width:6px;height:6px;border-radius:50%;background:var(--gold);animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{50%{opacity:.25}}

.section-title{display:flex;align-items:baseline;justify-content:space-between;margin:28px 4px 12px}
.section-title h2{margin:0;font-size:17px}.section-title span{color:var(--muted);font-size:12px}
.history{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.history button{background:var(--paper);border-radius:var(--r2);overflow:hidden;box-shadow:0 8px 24px -16px #1d262240;text-align:left}
.history img{width:100%;aspect-ratio:4/3;object-fit:cover;background:#ece7dc}
.history div{padding:9px 11px 11px}.history b{display:block;font-size:14px}.history small{color:var(--muted);font-size:11px}

/* ---------- generic page ---------- */
.page{padding:4px 16px calc(120px + var(--safe-b))}
.lead{margin:6px 4px 18px}
.lead h2{margin:0 0 6px;font-size:23px;line-height:1.35;font-weight:650}
.lead p{margin:0;color:var(--ink2);font-size:14px}
.card{background:var(--paper);border-radius:var(--r);box-shadow:var(--shadow);padding:18px}
.muted{color:var(--muted)}

/* ---------- bottom action bar ---------- */
.actionbar{position:fixed;left:0;right:0;bottom:0;z-index:30;padding:12px 16px calc(12px + var(--safe-b));background:linear-gradient(180deg,transparent,var(--bg) 26%)}
.actionbar .inner{max-width:528px;margin:0 auto;display:flex;gap:10px}
.btn{flex:1;height:52px;border-radius:16px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-size:16px;font-weight:600;background:var(--green);color:#fff;box-shadow:0 12px 26px -14px #173a2fcc;transition:transform .15s ease,opacity .2s}
.btn:active{transform:scale(.98)}
.btn[disabled]{opacity:.4;box-shadow:none}
.btn.light{flex:0 0 auto;padding:0 18px;background:var(--paper);color:var(--ink);box-shadow:0 1px 4px #0000000f}
.btn.small{height:40px;font-size:14px;border-radius:12px;padding:0 14px}
.link{color:var(--green);font-weight:600;font-size:14px}

/* ---------- aesthetic: style chips ---------- */
.style-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.style-chip{position:relative;height:84px;border-radius:16px;padding:14px;text-align:left;display:flex;flex-direction:column;justify-content:flex-end;color:#fff;overflow:hidden;background:var(--c,#7d8b7f);box-shadow:0 10px 22px -16px #00000080;transition:transform .15s}
.style-chip{height:118px}
.style-chip img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:fade .4s ease}
.style-chip:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,transparent 35%,#000000a0)}
.style-chip b,.style-chip small{z-index:2}
.style-chip b,.style-chip small{position:relative}.style-chip b{font-size:15px}.style-chip small{font-size:11px;opacity:.85}
.style-chip.on{outline:3px solid var(--ink);outline-offset:2px}
.style-chip.on:after{content:"✓";position:absolute;top:10px;right:10px;width:24px;height:24px;border-radius:50%;background:#fff;color:var(--ink);display:grid;place-items:center;font-size:13px;font-weight:700}

/* ---------- aesthetic: swipe deck ---------- */
.deck-progress{display:flex;align-items:center;gap:10px;margin:0 4px 14px;font-size:13px;color:var(--ink2)}
.deck-progress .bar{flex:1;height:6px;border-radius:3px;background:#e6e0d3;overflow:hidden}
.deck-progress .bar i{display:block;height:100%;background:linear-gradient(90deg,var(--gold),var(--green));border-radius:3px;transition:width .35s ease}
.deck{position:relative;aspect-ratio:3/4;max-height:62vh;margin:0 auto}
.deck .card-img{position:absolute;inset:0;border-radius:24px;overflow:hidden;background:#e9e4d9;box-shadow:0 26px 50px -28px #1d262299;touch-action:pan-y;user-select:none;-webkit-user-select:none;will-change:transform}
.deck .card-img img{width:100%;height:100%;object-fit:cover;pointer-events:none}
.deck .card-img.back{transform:scale(.94) translateY(14px);opacity:.75}
.deck .card-img.fly-left{transition:transform .35s ease,opacity .35s;transform:translateX(-130%) rotate(-18deg)!important;opacity:0}
.deck .card-img.fly-right{transition:transform .35s ease,opacity .35s;transform:translateX(130%) rotate(18deg)!important;opacity:0}
.deck .stamp{position:absolute;top:22px;padding:6px 14px;border-radius:10px;font-weight:700;font-size:18px;letter-spacing:.1em;border:3px solid;opacity:0}
.deck .stamp.like{left:20px;color:#2e7d5b;border-color:#2e7d5b;background:#ffffffd9;transform:rotate(-10deg)}
.deck .stamp.nope{right:20px;color:var(--danger);border-color:var(--danger);background:#ffffffd9;transform:rotate(10deg)}
.deck .tags{position:absolute;left:0;right:0;bottom:0;padding:40px 16px 14px;background:linear-gradient(180deg,transparent,#000000a6);color:#fff;font-size:12px;display:flex;flex-wrap:wrap;gap:6px}
.deck .tags span{padding:2px 9px;border-radius:999px;background:#ffffff2e;backdrop-filter:blur(6px)}
.deck-actions{display:flex;justify-content:center;align-items:center;gap:28px;margin-top:20px}
.round{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:var(--paper);box-shadow:0 14px 30px -16px #1d262288;font-size:26px;transition:transform .15s}
.round:active{transform:scale(.92)}
.round.nope{color:var(--danger)}.round.like{color:#fff;background:var(--green);width:74px;height:74px;font-size:30px}
.deck-hint{text-align:center;color:var(--muted);font-size:12px;margin-top:12px}

/* ---------- analyzing ---------- */
.orbit{position:relative;width:150px;height:150px;margin:12vh auto 26px}
.orbit i{position:absolute;inset:0;border-radius:50%;border:1.5px solid #173a2f33;animation:spin 6s linear infinite}
.orbit i:nth-child(2){inset:22px;border-style:dashed;animation-duration:9s;animation-direction:reverse}
.orbit i:nth-child(3){inset:52px;background:radial-gradient(circle,var(--gold) 0%,#b38c5500 70%);border:0;animation:breathe 2.4s ease-in-out infinite}
.orbit b{position:absolute;top:-4px;left:50%;width:10px;height:10px;margin-left:-5px;border-radius:50%;background:var(--green)}
@keyframes breathe{50%{transform:scale(1.25);opacity:.6}}
.thinking{text-align:center}.thinking h2{margin:0 0 8px;font-size:20px}.thinking p{margin:0;color:var(--muted);font-size:14px;min-height:22px}

/* ---------- report ---------- */
.report{overflow:hidden;padding:0}
.report-head{padding:24px 20px 20px;background:linear-gradient(150deg,#173a2f,#24513f);color:#fff}
.report-head small{color:#a9c4b6;letter-spacing:.16em;font-size:11px}
.report-head h2{margin:8px 0 8px;font-size:22px;line-height:1.4}
.report-head p{margin:0;color:#d5e2da;font-size:14px}
.mosaic{display:grid;grid-template-columns:repeat(3,1fr);gap:3px}
.mosaic img{width:100%;aspect-ratio:1;object-fit:cover}
.report-body{padding:6px 20px 20px}
.report-body h4{margin:18px 0 8px;font-size:13px;color:var(--muted);font-weight:500;letter-spacing:.06em}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips span{padding:6px 12px;border-radius:999px;background:var(--mint);color:var(--green);font-size:13px}
.chips.avoid span{background:#f6e7e2;color:#924535}

/* ---------- route choose ---------- */
.route{display:block;width:100%;text-align:left;border-radius:var(--r);overflow:hidden;background:var(--paper);box-shadow:var(--shadow);margin-bottom:14px}
.route .art{height:150px;position:relative;overflow:hidden}
.route .art.rough{background:linear-gradient(135deg,#d9d2c4,#b8ae9d)}
.route .art.plan{background:#e9efe9}
.route .body{padding:16px 18px 18px;display:flex;align-items:center;gap:12px}
.route .body div{flex:1}.route h3{margin:0 0 3px;font-size:17px}.route p{margin:0;color:var(--muted);font-size:13px}
.route .arrow{width:36px;height:36px;border-radius:50%;background:var(--mint);color:var(--green);display:grid;place-items:center;font-size:18px}

/* ---------- upload ---------- */
.drop{display:grid;place-items:center;gap:10px;width:100%;aspect-ratio:4/3;border-radius:var(--r);border:1.5px dashed #c9c0ad;background:var(--paper);color:var(--ink2);text-align:center;padding:20px;overflow:hidden;position:relative}
.drop .plus{width:56px;height:56px;border-radius:50%;background:var(--mint);color:var(--green);display:grid;place-items:center;font-size:30px;font-weight:300}
.drop small{color:var(--muted);font-size:12px}
.drop.has{border:0;padding:0;box-shadow:var(--shadow)}
.drop.has img{width:100%;height:100%;object-fit:cover}
.drop .change{position:absolute;right:12px;bottom:12px;padding:6px 12px;border-radius:999px;background:#000000a0;color:#fff;font-size:12px}
.field-title{margin:24px 4px 10px;font-size:15px;font-weight:600;display:flex;justify-content:space-between;align-items:baseline}
.field-title small{color:var(--muted);font-weight:400;font-size:12px}
.space-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.space{height:46px;border-radius:13px;background:var(--paper);box-shadow:0 1px 3px #0000000d;font-size:14px;border:1.5px solid transparent;transition:all .15s}
.space.on{border-color:var(--green);background:var(--mint);color:var(--green);font-weight:600}
.room-list{display:grid;gap:9px}
.room{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:15px;background:var(--paper);box-shadow:0 1px 3px #0000000d;border:1.5px solid transparent;text-align:left;width:100%}
.room.on{border-color:var(--green);background:var(--mint)}
.room .dot{width:20px;height:20px;border-radius:50%;border:2px solid #cfc8b8;flex:none}
.room.on .dot{border:6px solid var(--green)}
.room b{flex:1;font-size:15px}.room small{color:var(--muted)}
.room em{font-style:normal;font-size:11px;color:var(--gold);margin-left:6px}
.plan-preview{border-radius:var(--r);overflow:hidden;background:#fff;box-shadow:var(--shadow);margin-bottom:6px}
.plan-preview img{width:100%;max-height:300px;object-fit:contain;background:#fff}

/* ---------- progress ---------- */
.progress-card{text-align:center;padding:26px 20px}
.progress-card .orbit{margin:6px auto 18px;width:110px;height:110px}
.progress-card h3{margin:0 0 6px;font-size:18px}.progress-card p{margin:0;color:var(--muted);font-size:13px}
.timeline{display:flex;justify-content:space-between;margin:20px 6px 0;position:relative}
.timeline:before{content:"";position:absolute;left:12%;right:12%;top:11px;height:2px;background:#e6e0d3}
.timeline div{position:relative;flex:1;display:grid;justify-items:center;gap:6px;font-size:11px;color:var(--muted)}
.timeline i{width:24px;height:24px;border-radius:50%;background:#e6e0d3;display:grid;place-items:center;font-style:normal;font-size:11px;color:#fff}
.timeline .done i{background:var(--green)}.timeline .now i{background:var(--gold);box-shadow:0 0 0 5px #b38c5530}
.timeline .done,.timeline .now{color:var(--ink)}

/* ---------- results ---------- */
.result{margin-bottom:18px}
.result-img{position:relative;border-radius:var(--r);overflow:hidden;background:#e8e2d6;aspect-ratio:4/3;box-shadow:var(--shadow)}
.result-img img{width:100%;height:100%;object-fit:cover;animation:fade .5s ease}
@keyframes fade{from{opacity:0}}
.result-img .tag{position:absolute;left:12px;top:12px;padding:4px 10px;border-radius:999px;background:#0000008a;color:#fff;font-size:12px;backdrop-filter:blur(6px)}
.result-img .zoom{position:absolute;right:12px;top:12px;width:34px;height:34px;border-radius:50%;background:#00000070;color:#fff;display:grid;place-items:center;font-size:15px;z-index:3}
/* 效果图 / 白模视角 / 滑动对比 切换 */
.modes{display:flex;gap:6px;margin-top:10px;padding:3px;border-radius:12px;background:#efe9de}
.modes button{flex:1;height:32px;border-radius:9px;font-size:13px;color:var(--ink2)}
.modes button.on{background:var(--paper);color:var(--green);font-weight:600;box-shadow:0 1px 4px #0000001a}
/* 滑动对比：底图 after 铺满，.top 里的 before 裁到 --pos 左侧；touch-action:pan-y 让竖向还能滚页面 */
.compare{position:absolute;inset:0;--pos:50%;touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:ew-resize}
.compare img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;animation:none;pointer-events:none}
.compare.contain img{object-fit:contain}
.compare .top{position:absolute;inset:0;clip-path:inset(0 calc(100% - var(--pos)) 0 0)}
.compare .handle{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;margin-left:-1px;background:#fff;box-shadow:0 0 6px #0006}
.compare .handle::after{content:"◀ ▶";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:40px;height:40px;border-radius:50%;background:#fff;color:var(--green);font-size:9px;letter-spacing:1px;display:grid;place-items:center;box-shadow:0 2px 10px #0004}
.compare .lab{position:absolute;bottom:12px;padding:4px 10px;border-radius:999px;background:#0000008a;color:#fff;font-size:12px;backdrop-filter:blur(6px)}
.compare .lab.l{left:12px}.compare .lab.r{right:12px}
.result-img .compare ~ .tag{z-index:2;pointer-events:none}
.viewer #viewerBody{width:100%;height:100%;display:grid;place-items:center}
.viewer .compare{position:relative;inset:auto;width:100%;height:auto;aspect-ratio:4/3;max-height:100%;cursor:ew-resize}
.shimmer{position:absolute;inset:0;background:linear-gradient(110deg,#e8e2d6 30%,#f5f1e8 50%,#e8e2d6 70%);background-size:220% 100%;animation:shim 1.6s linear infinite;display:grid;place-content:center;justify-items:center;gap:10px;color:var(--ink2);font-size:13px}
@keyframes shim{to{background-position:-220% 0}}
.overlay-busy{position:absolute;inset:0;background:#10291fb8;color:#fff;display:grid;place-content:center;justify-items:center;gap:10px;font-size:13px;backdrop-filter:blur(2px)}
.overlay-busy .spinner{border-color:#ffffff40;border-top-color:#fff}
.failed{position:absolute;inset:0;display:grid;place-content:center;text-align:center;padding:20px;color:var(--danger);font-size:13px;background:#f6ece8}
.result-bar{display:flex;align-items:center;gap:10px;margin-top:10px}
.result-bar .note{flex:1;font-size:12px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.regen{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 14px;border-radius:12px;background:var(--paper);box-shadow:0 1px 4px #00000012;font-size:13px;font-weight:600;color:var(--green)}
.versions{display:flex;gap:8px;overflow-x:auto;padding:10px 2px 2px;scrollbar-width:none}
.versions::-webkit-scrollbar{display:none}
.versions button{flex:none;width:58px;height:44px;border-radius:9px;overflow:hidden;border:2px solid transparent;background:#e8e2d6;opacity:.7}
.versions button.on{border-color:var(--green);opacity:1}
.versions img{width:100%;height:100%;object-fit:cover}

/* ---------- products ---------- */
.products-head{display:flex;align-items:flex-end;justify-content:space-between;margin:26px 4px 12px}
.products-head h2{margin:0;font-size:18px}
.products-head .total{text-align:right;font-size:12px;color:var(--muted)}
.products-head .total b{display:block;font-size:18px;color:var(--ink)}
.plist{display:grid;gap:10px}
.pitem{display:grid;grid-template-columns:76px 1fr auto;gap:12px;align-items:center;padding:10px;border-radius:16px;background:var(--paper);box-shadow:0 1px 4px #0000000d;text-align:left;width:100%}
.pitem img{width:76px;height:76px;border-radius:12px;object-fit:cover;background:#f1ede4}
.pitem b{display:block;font-size:14px;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pitem small{display:block;color:var(--muted);font-size:12px;margin-top:3px}
.pitem .price{font-weight:650;font-size:15px;white-space:nowrap}
.pitem .price small{text-align:right}
.ai-note{margin-top:10px;padding:12px 14px;border-radius:14px;background:var(--gold2);color:#7d5f33;font-size:12px;line-height:1.6}

/* ---------- sheet ---------- */
.sheet{position:fixed;inset:0;z-index:60}
.sheet-mask{position:absolute;inset:0;background:#0b1a1466;animation:fadein .2s ease}
@keyframes fadein{from{opacity:0}}
.sheet-panel{position:absolute;left:0;right:0;bottom:0;max-width:560px;margin:0 auto;max-height:90vh;overflow-y:auto;background:var(--paper);border-radius:24px 24px 0 0;padding:8px 18px calc(22px + var(--safe-b));animation:up .28s cubic-bezier(.2,.8,.2,1)}
@keyframes up{from{transform:translateY(100%)}}
.sheet-grip{width:38px;height:5px;border-radius:3px;background:#ddd6c8;margin:4px auto 14px}
.sheet h3{margin:0 0 4px;font-size:18px}.sheet .sub{margin:0 0 14px;color:var(--muted);font-size:13px}
.sheet textarea{width:100%;min-height:110px;border-radius:14px;border:1.5px solid var(--line);background:#fff;padding:12px 14px;font:inherit;font-size:15px;resize:none;outline:none}
.sheet textarea:focus{border-color:var(--green)}
.quick{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 18px}
.quick button{padding:7px 12px;border-radius:999px;background:var(--mint);color:var(--green);font-size:13px}
.gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:8px;margin:0 -18px 14px;padding:0 18px;scrollbar-width:none}
.gallery::-webkit-scrollbar{display:none}
.gallery img{flex:none;width:86%;aspect-ratio:1;object-fit:cover;border-radius:16px;scroll-snap-align:center;background:#f1ede4}
.pd-price{font-size:24px;font-weight:700;color:var(--danger);margin:6px 0 2px}
.pd-name{font-size:17px;font-weight:600;line-height:1.45;margin:0}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;margin:16px 0 4px;font-size:13px}
.kv dt{color:var(--muted)}.kv dd{margin:0}
.sku-list{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}
.sku-list span{padding:6px 11px;border-radius:10px;background:#f3efe6;font-size:12px;border:1.5px solid transparent}
.sku-list span.on{border-color:var(--green);background:var(--mint);color:var(--green)}

/* ---------- viewer / toast ---------- */
.viewer{position:fixed;inset:0;z-index:70;background:#000;display:grid;place-items:center;animation:fadein .2s}
.viewer img{max-width:100%;max-height:100%;object-fit:contain}
.viewer-close{position:absolute;top:calc(14px + var(--safe-t));right:14px;width:40px;height:40px;border-radius:50%;background:#ffffff26;color:#fff;font-size:24px;z-index:1}
.toast{position:fixed;left:50%;bottom:calc(96px + var(--safe-b));transform:translateX(-50%);z-index:80;max-width:86vw;padding:11px 18px;border-radius:14px;background:#1d2622ee;color:#fff;font-size:14px;text-align:center;animation:fadein .2s}
.white-host{position:fixed;left:-20000px;top:0;width:1600px;height:1200px;border:0;visibility:hidden}
.style-chip.on:after{z-index:3}
.result-img img.placeholder{filter:saturate(.35);animation:none}
.result-img .overlay-busy{background:#10291f8c}
.plan-preview{position:relative}
.plan-preview .seg{position:absolute;top:10px;left:50%;transform:translateX(-50%);z-index:2;display:flex;padding:3px;border-radius:999px;background:#ffffffe6;box-shadow:0 2px 10px #0000001a}
.plan-preview .seg button{padding:5px 14px;border-radius:999px;font-size:12px;color:var(--ink2)}
.plan-preview .seg button.on{background:var(--green);color:#fff}
.plan-preview img{min-height:220px}
.axo-wait{height:260px;display:grid;place-content:center;justify-items:center;gap:10px;color:var(--muted);font-size:13px;background:#f3f1ec}
