/* 墨壤 · 展陈模式：三米外可读的大屏。仅在 html[data-exhibit="on"] 下生效。 */
html[data-exhibit="on"]{
  --ex-gap:48px; --ex-radius:28px; --ex-ink:#FCF8EF; --ex-shadow:0 18px 48px rgba(0,0,0,.28);
  --ex-scrim:rgba(20,16,11,.58); --ex-touch:112px;
}
/* 工作台的一切面板、按钮、提示都退场，只留器物与真人画面 */
html[data-exhibit="on"] .top,html[data-exhibit="on"] .control,html[data-exhibit="on"] .pv-top,html[data-exhibit="on"] .pv-hint,
html[data-exhibit="on"] .wheel-ctl,html[data-exhibit="on"] .view-zoom,html[data-exhibit="on"] .thickness-hud,html[data-exhibit="on"] .craft-touch-hud,
html[data-exhibit="on"] #result,html[data-exhibit="on"] .camera-entry,html[data-exhibit="on"] .gesture-panel,html[data-exhibit="on"] #resumeModal,
html[data-exhibit="on"] .ai-kiln,html[data-exhibit="on"] .stoke-btn,html[data-exhibit="on"] .kiln-reveal-copy{display:none!important}
html[data-exhibit="on"] body{overflow:hidden;background:#211e1a}
html[data-exhibit="on"] .preview{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;margin:0!important;border-radius:0!important}

.ex{position:fixed;inset:0;z-index:60;pointer-events:none;color:var(--ex-ink);font-family:var(--cjk)}
.ex [data-pick]{pointer-events:auto}
.ex>*{transition:opacity .5s ease,visibility .5s}
.ex:not([data-phase="attract"]) .ex-attract,.ex:not([data-phase="choose"]) .ex-cards,.ex:not([data-phase="claim"]) .ex-claim,.ex:not([data-phase="shape"]) .ex-next{visibility:hidden}

/* 顶栏：品牌 + 三幕进度 */
.ex-top{position:absolute;left:var(--ex-gap);right:var(--ex-gap);top:36px;display:flex;justify-content:space-between;align-items:center;text-shadow:0 2px 12px rgba(0,0,0,.45)}
.ex-brand{font-family:var(--serif);font-size:40px;letter-spacing:.12em}
.ex-brand i{font-style:normal;font-family:var(--latin-d);font-size:22px;letter-spacing:.3em;opacity:.75;margin-left:10px}
.ex-progress{font-size:40px;letter-spacing:.08em}
.ex-progress b{font-size:64px;font-family:var(--latin-d);font-weight:500}

/* 唯一一行指令 */
.ex-line{position:absolute;left:0;right:0;bottom:0;padding:120px var(--ex-gap) 64px;text-align:center;background:linear-gradient(to top,var(--ex-scrim),transparent);display:grid;gap:14px;justify-items:center}
.ex-line b{font-family:var(--serif);font-weight:600;font-size:88px;line-height:1.1;letter-spacing:.04em;text-shadow:0 4px 24px rgba(0,0,0,.4)}
.ex-line small{font-size:36px;opacity:.88}
.ex-line b:empty,.ex-line small:empty{display:none}
.ex:not([data-phase="shape"]):not([data-phase="fire"]):not([data-phase="photo"]):not([data-phase="choose"]) .ex-line{opacity:0}
.ex[data-phase="choose"] .ex-line{top:110px;bottom:auto;padding-top:24px;padding-bottom:24px;background:none}

/* 倒计时环 */
.ex-timer{position:absolute;right:var(--ex-gap);top:130px;width:168px;height:168px;opacity:0;display:grid;place-items:center}
.ex.timing .ex-timer{opacity:1}
.ex-timer svg{position:absolute;inset:0;transform:rotate(-90deg)}
.ex-timer circle{fill:none;stroke-width:10}
.ex-timer .bg{stroke:rgba(252,248,239,.25)}
.ex-timer .fg{stroke:var(--ex-ink);stroke-linecap:round;stroke-dasharray:339.3;stroke-dashoffset:0}
.ex-timer b{font-family:var(--latin-d);font-size:60px;font-weight:500;text-shadow:0 2px 12px rgba(0,0,0,.4)}

/* 通用的大按钮：悬停只有阴影与浅底，手掌停留时从左往右填满 */
/* font 归零特异性，好让 .ex-start / .ex-bgs 等自己的字号生效 */
:where(.ex [data-pick]){font:inherit}
.ex [data-pick]{--hold:0;border:0;cursor:pointer;color:var(--fg);background:linear-gradient(90deg,rgba(156,109,28,.22) calc(var(--hold)*100%),var(--card-hi) 0);box-shadow:var(--ex-shadow);transition:transform .2s ease,box-shadow .2s ease,opacity .5s ease}
.ex [data-pick]:hover,.ex [data-pick].hovering{transform:translateY(-4px);box-shadow:0 26px 60px rgba(0,0,0,.34)}
.ex [data-pick]:active{transform:scale(.97)}
.ex [data-pick]:focus-visible{outline:4px solid var(--amber);outline-offset:6px}

.ex-next{position:absolute;right:var(--ex-gap);bottom:72px;min-height:var(--ex-touch);padding:0 56px;border-radius:999px;font-size:40px;font-weight:600;opacity:0;pointer-events:none!important}
.ex[data-phase="shape"] .ex-next{opacity:1;pointer-events:auto!important}
.ex[data-phase="shape"] .ex-line{padding-right:380px;padding-left:380px}

/* 待机 */
.ex-attract{position:absolute;inset:0;display:grid;grid-template-rows:auto auto 1fr auto;justify-items:center;padding:150px var(--ex-gap) 64px;text-align:center;opacity:0;pointer-events:none}
.ex[data-phase="attract"] .ex-attract{opacity:1;pointer-events:auto}
.ex-attract h1{margin:0;font-family:var(--serif);font-weight:600;font-size:112px;line-height:1.08;letter-spacing:.04em;text-shadow:0 4px 28px rgba(0,0,0,.45)}
.ex-sub{margin:20px 0 0;font-size:38px;opacity:.88;text-shadow:0 2px 12px rgba(0,0,0,.4)}
.ex.no-cam .ex-sub{visibility:hidden}
.ex-start{grid-row:4;width:240px;height:240px;border-radius:50%;position:relative;display:grid;place-items:center;font-size:48px;font-weight:600}
.ex-ring{position:absolute;inset:-14px}
.ex-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ex-ring circle{fill:none;stroke:var(--ex-ink);stroke-width:6;stroke-dasharray:339.3;stroke-dashoffset:339.3}
.ex.arming .ex-start{animation:ex-breathe 1.2s ease-in-out infinite alternate}
@keyframes ex-breathe{to{transform:scale(1.05)}}
.ex-bgs{grid-row:3;align-self:end;display:flex;gap:28px;margin-bottom:40px}
.ex-bgs:empty{display:none}
.ex-bgs::before{content:attr(data-label);position:absolute;bottom:100%;left:0;margin-bottom:14px;font-size:26px;color:var(--fg-soft)}
.ex-bgs{position:relative}
.ex-bgs button{width:220px;padding:14px;border-radius:var(--ex-radius);display:grid;gap:10px;font-size:26px}
.ex-bgs button[aria-checked="true"]{box-shadow:0 0 0 6px var(--ex-ink),var(--ex-shadow)}
.ex-thumb{display:block;height:124px;border-radius:18px;background:var(--bg-1) center/cover}

/* 第二幕：三张推荐卡 */
.ex-cards{position:absolute;left:var(--ex-gap);right:var(--ex-gap);bottom:64px;display:grid;grid-template-columns:repeat(3,1fr);gap:40px;opacity:0;pointer-events:none}
.ex[data-phase="choose"] .ex-cards{opacity:1;pointer-events:auto}
.ex-cards button{min-height:240px;border-radius:var(--ex-radius);display:grid;grid-template-columns:120px 1fr;grid-template-rows:1fr auto;column-gap:32px;align-items:center;text-align:left;padding:32px 40px}
.ex-cards b{font-family:var(--serif);font-size:44px;line-height:1.2}
.ex-cards small{grid-column:2;font-size:26px;color:var(--fg-soft)}
.ex-cards .first small{color:var(--amber-hi);font-weight:600}
.ex-swatch{grid-row:1/3;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle at 34% 30%,rgba(255,255,255,.7),transparent 42%),var(--tint);box-shadow:inset 0 -10px 24px rgba(0,0,0,.22)}
.ex-hold{display:none}

/* 合影倒计时与闪光 */
.ex-count{position:absolute;inset:0;display:grid;place-items:center;font-family:var(--latin-d);font-size:360px;font-weight:500;text-shadow:0 8px 40px rgba(0,0,0,.4)}
.ex-count:empty{display:none}
.ex-flash{position:absolute;inset:0;background:#fff;opacity:0;transition:opacity .45s ease}
.ex.flashing .ex-flash{opacity:.9;transition:none}

/* 领取 */
.ex-claim{position:absolute;inset:0;background:var(--bg-0);color:var(--fg);display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:64px;padding:130px 80px 72px;opacity:0;pointer-events:none!important}
.ex[data-phase="claim"] .ex-claim{opacity:1;pointer-events:auto!important}
.ex[data-phase="claim"] .ex-top{color:var(--fg);text-shadow:none}
.ex-claim figure{margin:0;display:grid;grid-template-rows:1fr auto;gap:24px;min-height:0}
.ex-claim img{width:100%;height:100%;min-height:0;object-fit:cover;border-radius:var(--ex-radius);background:var(--bg-1);box-shadow:var(--ex-shadow)}
.ex-claim figcaption{display:flex;align-items:baseline;gap:24px}
.ex-name{font-family:var(--serif);font-size:56px}
.ex-grade{font-size:30px;color:var(--fg-soft)}
.ex-claim-side{display:grid;align-content:center;gap:32px}
.ex-qr-box{display:grid;grid-template-columns:280px 1fr;grid-template-rows:auto auto;column-gap:36px;align-items:center;background:var(--card-hi);border-radius:var(--ex-radius);padding:28px;box-shadow:0 10px 30px rgba(26,23,18,.08)}
.ex-qr{grid-row:1/3;width:280px;height:280px;border-radius:16px;background:var(--bg-1);display:grid;place-items:center;overflow:hidden}
.ex-qr:empty::after{content:"";width:64px;height:64px;border-radius:50%;background:var(--line-soft)}
.ex.uploading .ex-qr:empty::after{animation:ex-breathe .7s ease-in-out infinite alternate}
.ex-qr svg{width:100%;height:100%;display:block}
.ex-qr-title{font-family:var(--serif);font-size:40px;line-height:1.25;align-self:end}
.ex-qr-sub{font-size:26px;color:var(--fg-soft);align-self:start;margin-top:10px}
.ex.upload-failed .ex-qr-sub{color:#9b2c1f}
.ex-consent{display:flex;gap:24px;align-items:center;font-size:28px;line-height:1.35;cursor:pointer;min-height:var(--ex-touch)}
.ex-consent input{appearance:none;flex:none;width:96px;height:56px;border-radius:999px;background:var(--line);position:relative;cursor:pointer;transition:background .2s ease;margin:0}
.ex-consent input::after{content:"";position:absolute;top:6px;left:6px;width:44px;height:44px;border-radius:50%;background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.2);transition:transform .2s ease}
.ex-consent input:checked{background:var(--fg)}
.ex-consent input:checked::after{transform:translateX(40px)}
.ex-consent input:focus-visible{outline:4px solid var(--amber);outline-offset:4px}
.ex-save,.ex-done{min-height:var(--ex-touch);border-radius:999px;font-size:34px;font-weight:600;border:0;cursor:pointer;font-family:inherit;transition:box-shadow .2s ease,background .2s ease,transform .2s ease}
.ex-save{background:var(--card-hi);color:var(--fg);box-shadow:0 10px 30px rgba(26,23,18,.1)}
.ex.uploaded .ex-save,.ex.uploading .ex-save{display:none}
.ex-save:hover{box-shadow:0 16px 40px rgba(26,23,18,.18);background:#fff}
.ex-real{display:grid;grid-template-columns:150px 1fr;gap:28px;align-items:center}
.ex-qr-sm{grid-row:auto;width:150px;height:150px}
.ex-real b{display:block;font-family:var(--serif);font-size:38px}
.ex-real small{font-size:24px;color:var(--fg-soft)}
.ex .ex-done{background:var(--fg);color:var(--ex-ink)}
.ex .ex-done:hover,.ex .ex-done.hovering{background:#2b261e}

/* 掌心光标 */
.ex-palm{position:absolute;left:-60px;top:-60px;width:120px;height:120px;border-radius:50%;background:radial-gradient(circle,rgba(252,248,239,.55),rgba(252,248,239,.08) 70%);box-shadow:0 0 0 4px rgba(252,248,239,.7);opacity:0;transition:opacity .25s ease}
.ex-palm.show{opacity:1}
.ex[data-phase="shape"] .ex-palm,.ex[data-phase="fire"] .ex-palm{opacity:0}

@media (prefers-reduced-motion:reduce){.ex *{animation:none!important;transition:none!important}}
/* 小屏调试兜底：缩放整套比例，不出现横向滚动 */
@media (max-width:1200px){html[data-exhibit="on"] .ex{zoom:.6}}
/* 没有摄像头时背景是米色工作台：文字改成墨色、遮罩改成浅色 */
.ex.no-cam{--ex-ink:var(--fg);--ex-scrim:rgba(247,242,233,.92)}
.ex.no-cam .ex-top,.ex.no-cam .ex-line b,.ex.no-cam .ex-attract h1,.ex.no-cam .ex-timer b,.ex.no-cam .ex-count{text-shadow:none}
.ex.no-cam .ex-timer .bg{stroke:var(--line)}
/* 待机：背景缩略图与开始键沉到底部一行，中间留给转动的泥坯 */
.ex-bgs{position:absolute;left:var(--ex-gap);right:calc(var(--ex-gap) * 2 + 240px);bottom:64px;margin:0;gap:20px}
.ex-bgs button{width:176px;flex:0 1 176px;min-width:0;padding:12px;font-size:22px}  /* 窄于 1920 的屏幕上缩略图收窄，不压住开始键 */
.ex-thumb{height:100px}
.ex-start{position:absolute;right:var(--ex-gap);bottom:64px}
