  :root{
    /* all-cream palette · ink black + white · no colour accents */
    --page:#E2DAC7; --card:#F5F0E6; --card-hi:#FCF8EF; --line:#D8CDB7; --line-soft:#E6DCC9;
    --fg:#1A1712; --fg-soft:#5B5446; --fg-faint:#8A8069;
    --panel:#F5F0E6; --bg-0:#F7F2E9; --bg-1:#EFE8D9; --bg-2:#FBF8F1;
    --stage-a:#FCF9F2; --stage-b:#E6DECC;
    --seal:#17140F; --seal-hi:#17140F; --seal-deep:#000000; --seal-glow:#17140f12;
    --amber:#9c6d1c; --amber-hi:#7d5714; --gold:#9c8038; --body-ink:#211D19;
    --serif:"Noto Serif SC",serif;
    --latin-d:"Jost","PingFang SC",sans-serif;
    --sans:"PingFang SC","Noto Sans SC",system-ui,sans-serif;
    --cjk:"PingFang SC","Noto Sans SC",system-ui,sans-serif;
    --brush:"Noto Serif SC",serif;
    --shadow:0 1px 3px rgba(50,38,16,.07),0 14px 34px rgba(50,38,16,.10);
    --radius:18px;
    --fs-xs:11px; /* minimum text size; nothing renders smaller */
  }
  html[lang="en"]{--serif:"Jost",Georgia,serif;--latin-d:"Jost",sans-serif;--sans:"Hanken Grotesk",system-ui,sans-serif;--cjk:"Hanken Grotesk",system-ui,sans-serif;--brush:"Jost",Georgia,serif;}
  *{box-sizing:border-box;}
  html,body{height:100%;margin:0;}
  body{
    font-family:var(--sans); color:var(--fg); background:var(--page);
    -webkit-font-smoothing:antialiased; overflow:hidden;
  }
  html[lang="en"] body{letter-spacing:.025em;}
  /* faint paper grain */
  body::before{
    content:""; position:fixed; inset:0; z-index:0; pointer-events:none; opacity:.5;
    background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.5'/%3E%3C/svg%3E");
    background-size:180px 180px;
    mix-blend-mode:multiply;
  }
  .app{position:relative; z-index:1; height:100dvh; display:flex; flex-direction:column;}

  /* ---------- top bar ---------- */
  .top{display:flex; align-items:center; gap:12px; padding:15px clamp(16px,3vw,30px) 12px;}
  .brand{font-family:var(--serif);font-weight:400;font-size:18px;letter-spacing:5px;color:var(--fg);}
  .brand span{font-family:var(--latin-d);font-weight:400;font-size:var(--fs-xs);letter-spacing:3px;color:var(--fg-faint);margin-left:9px;}
  .top .sp{flex:1;}
  .gesture-btn{height:28px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--fg);font:500 11.5px/1 var(--cjk);cursor:pointer;}
  .gesture-btn[aria-pressed="true"]{background:var(--amber);border-color:var(--amber);color:#fff;}
  .gesture-btn:disabled{opacity:.6;cursor:default;}
  .gesture-panel{position:fixed;z-index:95;right:18px;bottom:88px;width:200px;padding:6px;border:1px solid var(--line);border-radius:12px;background:var(--card-hi);box-shadow:0 12px 28px rgba(44,32,14,.2);}
  .gesture-panel video,.gesture-panel canvas{display:block;width:188px;height:141px;border-radius:8px;}
  .gesture-panel video{transform:scaleX(-1);background:#2b2620;object-fit:cover;}
  .gesture-panel canvas{position:absolute;left:6px;top:6px;pointer-events:none;}
  .gesture-status{display:flex;align-items:baseline;gap:6px;padding:5px 3px 1px;}
  .gesture-status b{flex:none;width:14px;color:var(--amber);font:600 13px/1 var(--cjk);}
  .gesture-status small{min-width:0;color:var(--fg-soft);font:var(--fs-xs)/1.35 var(--cjk);}
  .gesture-recal{width:100%;margin-top:4px;height:26px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--fg);font:500 var(--fs-xs)/1 var(--cjk);cursor:pointer;}
  .gesture-recal:active{background:var(--fg);color:var(--bg-0);}
  .gesture-cursor,.gesture-target{position:fixed;z-index:94;border-radius:50%;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.6);transition:opacity .12s,transform .16s cubic-bezier(.2,.8,.2,1);}
  .gesture-cursor{width:16px;height:16px;background:var(--amber);box-shadow:0 0 0 5px color-mix(in srgb,var(--amber) 22%,transparent);}
  .gesture-target{width:30px;height:30px;border:2px dashed color-mix(in srgb,var(--amber) 80%,transparent);}
  .gesture-cursor.show,.gesture-target.show{opacity:1;transform:translate(-50%,-50%) scale(1);}
  @media (prefers-reduced-motion:reduce){.gesture-cursor,.gesture-target{transition:none;}}
  @media (max-width:760px){.gesture-panel{right:10px;bottom:auto;top:56px;width:148px;}.gesture-panel video,.gesture-panel canvas{width:136px;height:102px;}}
  .icon-btn{width:28px;height:28px;border:none;background:transparent;
    color:var(--fg-soft);cursor:pointer;display:grid;place-items:center;transition:.16s;}
  .icon-btn svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
  .icon-btn:hover{color:var(--fg);}
  .icon-btn:focus-visible{outline:2px solid var(--seal);outline-offset:2px;}
  .acct{display:flex;align-items:center;justify-content:center;gap:7px;height:36px;font-family:var(--sans);font-size:13px;font-weight:500;line-height:1;letter-spacing:.3px;color:var(--fg);
    background:transparent;border:1px solid var(--line);border-radius:6px;padding:0 12px;cursor:pointer;transition:.16s;box-sizing:border-box;text-decoration:none;white-space:nowrap;}
  .acct:hover{border-color:var(--fg-faint);}
  .acct .av{width:16px;height:16px;color:var(--fg-soft);display:grid;place-items:center;}
  #langBtn .lang-toggle-label{width:auto;min-width:36px;white-space:nowrap;}
  .acct .av svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
  .top-cta{display:inline-flex;align-items:center;justify-content:center;height:36px;font-family:var(--sans);font-weight:500;font-size:13px;line-height:1;letter-spacing:.3px;padding:0 14px;border-radius:6px;white-space:nowrap;
    border:1px solid var(--line);background:var(--card);color:var(--fg);cursor:pointer;transition:.16s;box-sizing:border-box;}
  .top-cta:hover{border-color:var(--fg-faint);}

  /* ---------- main: two rounded cards on cream ---------- */
  .main{flex:1; display:grid; grid-template-columns:minmax(300px,380px) 1fr; gap:14px; min-height:0;
    padding:2px clamp(14px,3vw,26px) clamp(14px,3vw,22px);}
  @media(max-width:860px){
    .main{grid-template-columns:1fr;grid-template-rows:minmax(300px,52svh) auto;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;-webkit-overflow-scrolling:touch;align-content:start;padding-bottom:max(14px,env(safe-area-inset-bottom));}
    .preview{order:-1;min-height:300px;}
    .preview.reveal .view-zoom{display:none;}
  }
  html[lang="en"] .top :where(.acct, .top-cta){text-transform:uppercase;}

  .control{display:flex; flex-direction:column; min-width:0; min-height:0; background:var(--card); border:1px solid var(--line);
    border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow);position:relative;}

  /* AI firing preflight: a compact desktop co-pilot in the panel's top-right.
     The diagnosis remains rule-backed and expands without covering the vessel. */
  .control:has(.c-body[data-stage="fire"]) .c-head{padding-right:72px;}
  .ai-kiln-advisor{position:absolute;z-index:18;top:57px;right:13px;width:46px;border:1px solid color-mix(in srgb,var(--seal) 30%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--card-hi) 96%,transparent);box-shadow:0 9px 24px rgba(54,38,18,.11);font-family:var(--cjk);}
  .ai-kiln-advisor.open{width:min(330px,calc(100% - 26px));}
  .ai-kiln-summary{width:100%;min-height:50px;display:flex;align-items:center;gap:8px;padding:7px 8px;border:0;background:transparent;color:var(--fg);text-align:left;cursor:pointer;}
  .ai-kiln-mark{width:30px;height:30px;flex:none;display:grid;place-items:center;}
  .ai-kiln-mark img{width:25px;height:25px;display:block;object-fit:contain;transform-origin:50% 68%;animation:ceramicistMark 4.2s cubic-bezier(.45,0,.55,1) infinite;}
  .ai-kiln-summary:hover .ai-kiln-mark img{animation-duration:2.4s;}
  .ai-kiln-advisor.warn .ai-kiln-mark{background:var(--amber);}
  .ai-kiln-advisor.good .ai-kiln-mark{background:var(--seal-hi);}
  .ai-kiln-summary-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px;}
  .ai-kiln-summary-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg-faint);font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:.08em;}
  .ai-kiln-summary-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 var(--fs-xs)/1.25 var(--cjk);}
  .ai-kiln-chevron{width:18px;flex:none;color:var(--fg-soft);font:400 17px/1 var(--sans);text-align:center;}
  .ai-kiln-advisor:not(.open) .ai-kiln-summary{min-height:44px;padding:7px;justify-content:center;}
  .ai-kiln-advisor:not(.open) .ai-kiln-summary-copy,
  .ai-kiln-advisor:not(.open) .ai-kiln-chevron{display:none;}
  .ai-kiln-detail{padding:1px 11px 11px;border-top:1px solid var(--line-soft);}
  .ai-kiln-detail[hidden]{display:none;}
  .ai-kiln-odds{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:10px 0;}
  .ai-kiln-odds span{padding:8px 4px;border-radius:8px;background:var(--card);text-align:center;}
  .ai-kiln-odds b{display:block;font:600 17px/1 var(--latin-d);font-variant-numeric:tabular-nums;}
  .ai-kiln-odds small{display:block;margin-top:4px;color:var(--fg-faint);font:var(--fs-xs)/1 var(--cjk);}
  .ai-kiln-reasons{display:grid;gap:7px;}
  .ai-kiln-reasons>div{padding:2px 0;}
  .ai-kiln-reasons b{display:block;font:600 11px/1.35 var(--cjk);}
  .ai-kiln-reasons p{margin:2px 0 0;color:var(--fg-soft);font:var(--fs-xs)/1.5 var(--cjk);}
  .ai-kiln-advice{display:flex;flex-direction:column;gap:3px;margin-top:10px;padding:9px 10px;border-radius:9px;background:color-mix(in srgb,var(--seal) 8%,var(--card));}
  .ai-kiln-advice small{color:var(--seal-hi);font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:.1em;}
  .ai-kiln-advice b{font:600 11px/1.45 var(--cjk);}
  .ai-kiln-apply{width:100%;min-height:36px;margin-top:8px;border:1px solid var(--fg);border-radius:8px;background:var(--fg);color:var(--bg-0);font:500 11px/1 var(--cjk);cursor:pointer;}
  .ai-kiln-apply:hover{box-shadow:0 6px 16px rgba(45,34,18,.18);}
  .ai-kiln-disclaimer{margin:7px 1px 0;color:var(--fg-faint);font:var(--fs-xs)/1.45 var(--cjk);}
  .studio-loading-copy{padding:20px 0;color:var(--fg-faint);font:500 11px/1.5 var(--sans);letter-spacing:.08em;}
  .pv-loading{position:absolute;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;background:var(--card);color:var(--fg-soft);transition:opacity .28s ease,visibility .28s ease;}
  .pv-loading.done{opacity:0;visibility:hidden;pointer-events:none;}
  .pv-loading-vessel{width:76px;height:96px;margin-bottom:10px;border-radius:34% 34% 44% 44%/18% 18% 64% 64%;background:linear-gradient(100deg,#d3c8b4,#f4eee2 48%,#bcae96);box-shadow:0 18px 30px rgba(67,48,21,.14);animation:loadingVessel 1.8s ease-in-out infinite;}
  .pv-loading-vessel:before{content:"";display:block;width:32px;height:25px;margin:-8px auto 0;border-radius:8px 8px 2px 2px;background:inherit;}
  .pv-loading b{font:600 13px/1.3 var(--cjk);}
  .pv-loading small{font:var(--fs-xs)/1.4 var(--sans);color:var(--fg-faint);letter-spacing:.04em;}
  @keyframes loadingVessel{50%{transform:translateY(-5px);filter:brightness(1.04)}}

  /* compact dot stepper inside the card */
  .stepper{display:flex; align-items:center; padding:16px clamp(16px,2.2vw,22px) 2px;}
  .step{flex:1; display:flex; align-items:center; justify-content:center; background:none; border:none; cursor:pointer; padding:0; position:relative;}
  .step .dot{width:21px;height:21px;border-radius:50%;display:grid;place-items:center;font-family:var(--latin-d);font-size:var(--fs-xs);
    border:1px solid var(--line);color:var(--fg-faint);background:var(--card);transition:.18s;z-index:1;}
  .step-name{position:absolute;top:27px;left:50%;transform:translateX(-50%);padding:3px 6px;border-radius:4px;background:var(--fg);color:var(--bg-0);font:var(--fs-xs)/1.2 var(--cjk);white-space:nowrap;opacity:0;pointer-events:none;transition:.15s;z-index:5;}
  .step:hover .step-name,.step:focus-visible .step-name{opacity:1;}
  .step:not(:last-child)::after{content:"";position:absolute;left:50%;right:-50%;top:10px;height:1px;background:var(--line);z-index:0;}
  .step[data-s="done"] .dot{border-color:var(--fg);color:var(--fg);}
  .step[data-s="active"] .dot{background:var(--fg);color:var(--bg-0);border-color:var(--fg);transform:scale(1.12);}
  .step:disabled{cursor:default;}
  .step:not(:disabled):hover .dot{box-shadow:0 2px 8px rgba(45,34,18,.14);}

  .c-head{padding:16px clamp(18px,2.4vw,26px) 10px;}
  .c-head .kick{display:flex;align-items:center;gap:9px;font-family:var(--sans);font-size:var(--fs-xs);font-weight:600;letter-spacing:2.2px;text-transform:uppercase;color:var(--fg-soft);margin-bottom:8px;}
  .c-head .kick .num{font-family:var(--latin-d);font-size:14px;color:var(--fg);}
  .c-head h2{font-family:var(--serif);font-weight:600;font-size:clamp(22px,2.6vw,27px);margin:0 0 6px;letter-spacing:1px;line-height:1.15;text-wrap:balance;}
  .c-head p{margin:0;color:var(--fg-soft);font-size:12.5px;line-height:1.65;font-family:var(--cjk);font-weight:400;}
  .c-body{padding:4px clamp(18px,2.4vw,26px) 14px; overflow-y:auto; flex:1; scrollbar-width:thin;}
  .c-body::-webkit-scrollbar{width:7px;} .c-body::-webkit-scrollbar-thumb{background:var(--line);border-radius:4px;}

  .sect-label{display:flex;align-items:center;gap:8px;font-size:var(--fs-xs);font-weight:600;letter-spacing:1.8px;text-transform:uppercase;color:var(--fg-soft);margin:15px 0 8px;font-family:var(--sans);}
  .sect-label::after{content:"";flex:1;height:1px;background:var(--line-soft);}
  .sect-label:first-child{margin-top:6px;}

  /* graphic option grid */
  .grid{display:grid;gap:9px;}
  .grid.c2{grid-template-columns:1fr 1fr;} .grid.c3{grid-template-columns:1fr 1fr 1fr;}
  .tile{position:relative;cursor:pointer;background:var(--card-hi);border:1px solid var(--line);border-radius:11px;
    padding:8px 8px 9px;font-family:var(--cjk);color:var(--fg);text-align:center;transition:.14s;display:flex;flex-direction:column;align-items:center;gap:4px;}
  .tile:hover{border-color:var(--fg-faint);transform:translateY(-1px);}
  .tile:focus-visible{outline:2px solid var(--seal);outline-offset:2px;}
  .tile[aria-pressed="true"]{border-color:var(--seal);box-shadow:0 0 0 1px var(--seal) inset;}
  .tile.craft-conflict{border-color:color-mix(in srgb,var(--seal) 48%,var(--line));background:color-mix(in srgb,var(--seal) 5%,var(--card));}
  .tile.craft-conflict .td{color:var(--seal);}
  .tile[aria-pressed="true"]::before{content:"";position:absolute;top:6px;right:6px;width:15px;height:15px;border-radius:50%;background:var(--seal);}
  .tile[aria-pressed="true"]::after{content:"✓";position:absolute;top:6px;right:6px;width:15px;height:15px;color:var(--bg-0);font-size:var(--fs-xs);display:grid;place-items:center;font-weight:700;}
  .tile .thumb{width:100%;aspect-ratio:1/1;border-radius:8px;overflow:hidden;background:transparent;display:grid;place-items:center;}
  .tile .thumb canvas,.tile .thumb .glz{width:100%;height:100%;display:block;}
  .tile .glz{border-radius:8px;}
  .tile .ic-wrap{width:32px;height:32px;display:grid;place-items:center;color:var(--fg-soft);}
  .tile .ic-wrap svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
  .tile[aria-pressed="true"] .ic-wrap{color:var(--fg);}
  .tile .tn{font-size:12px;letter-spacing:.3px;font-weight:500;}
  .tile .td{font-size:var(--fs-xs);color:var(--fg-soft);line-height:1.35;font-weight:400;}
  .tile.row{flex-direction:row;align-items:center;text-align:left;gap:10px;padding:8px 10px;}
  .tile.row .sw{width:30px;height:30px;border-radius:4px;flex:none;border:1px solid rgba(0,0,0,.14);box-shadow:inset 0 -4px 8px rgba(0,0,0,.12);}
  .tile.row canvas.sw{box-shadow:none;}
  .tile.row .rt{display:flex;flex-direction:column;gap:1px;min-width:0;}
  .tile.row .rt .tn,.tile.row .rt .td{text-align:left;}
  .tile .mth{width:100%;height:64px;border-radius:6px;display:block;border:1px solid var(--line-soft);background:var(--card);}
  .motif-tile .td{min-height:14px;}
  .over-motif-grid{gap:10px;}
  .over-motif-grid .tile{padding:10px;}
  .over-motif-grid .mth{height:96px;}
  .over-motif-grid .tn{margin-top:8px;font-size:14px;line-height:1.35;}
  .pattern-source{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;margin:9px 0 2px;padding:11px 12px;border:1px solid var(--line-soft);border-radius:10px;background:color-mix(in srgb,var(--card-hi) 78%,transparent);}
  .pattern-source div{display:flex;flex-direction:column;gap:2px;min-width:0;}
  .pattern-source span{font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:1.4px;color:var(--seal);}
  .pattern-source b{font:600 12px/1.35 var(--cjk);}
  .pattern-source small{font:var(--fs-xs)/1.35 var(--cjk);color:var(--fg-soft);}
  .pattern-source a{max-width:118px;text-align:right;color:var(--fg-soft);font:var(--fs-xs)/1.45 var(--sans);text-decoration:none;}
  .pattern-source a:hover{color:var(--fg);text-decoration:underline;}

  /* slider */
  .fld{margin:16px 0;}
  .fld .flab{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:9px;}
  .fld .flab .n{font-size:13px;font-family:var(--cjk);}
  .fld .flab .v{font-family:var(--latin-d);font-size:16px;color:var(--seal-hi);font-variant-numeric:tabular-nums;}
  .fld .flab .v .u{font-size:11px;color:var(--fg-soft);font-family:var(--sans);margin-left:1px;}
  input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;border-radius:4px;background:var(--line);cursor:pointer;}
  input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:19px;height:19px;border-radius:50%;background:var(--seal);border:3px solid var(--panel);box-shadow:var(--shadow);cursor:grab;}
  input[type=range]::-webkit-slider-thumb:active{cursor:grabbing;transform:scale(1.12);}
  input[type=range]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--seal);border:3px solid var(--panel);}
  input[type=range]:focus-visible::-webkit-slider-thumb{outline:2px solid var(--seal-hi);outline-offset:2px;}
  .scale{display:flex;justify-content:space-between;font-size:var(--fs-xs);color:var(--fg-faint);margin-top:6px;font-family:var(--sans);letter-spacing:.5px;}

  /* fun fact / tip */
  .tip{margin-top:16px;padding:10px 13px;border-radius:12px;position:relative;
    background:color-mix(in srgb,var(--seal) 8%,transparent);border:1px solid color-mix(in srgb,var(--seal) 22%,transparent);
    font-size:12px;line-height:1.6;color:var(--fg-soft);font-family:var(--cjk);font-weight:400;}
  .tip::before{display:none;}
  .tip b{font-weight:600;color:var(--fg);}
  .note{margin-top:9px;padding:10px 13px;border-radius:10px;font-size:12px;line-height:1.55;font-family:var(--cjk);font-weight:400;color:var(--fg-soft);
    background:var(--card-hi);border:1px solid var(--line);}
  .note.good{border-color:var(--fg-faint);background:var(--card-hi);}
  .note.warn{border-color:color-mix(in srgb,var(--amber) 45%,transparent);background:color-mix(in srgb,var(--amber) 12%,transparent);}
  .note b{font-weight:600;}
  .note.good b{color:var(--fg);} .note.warn b{color:var(--amber);}

  /* upload */
  .upload{margin-top:10px;border:1.5px dashed var(--line);border-radius:12px;padding:16px;text-align:center;cursor:pointer;transition:.16s;font-family:var(--cjk);color:var(--fg-soft);font-size:12.5px;}
  .upload:hover{border-color:var(--seal);color:var(--fg);}
  .upload svg{width:24px;height:24px;stroke:currentColor;fill:none;stroke-width:1.5;margin-bottom:6px;}
  .upload.has{border-style:solid;border-color:var(--seal);color:var(--fg);}
  .custom-placement{margin-top:12px;padding:0 2px;}
  .placement-modes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:7px 0 12px;}
  .placement-mode{min-height:38px;padding:8px 6px;border:1px solid var(--line);border-radius:9px;background:var(--card-hi);color:var(--fg-soft);font:500 11px var(--cjk);cursor:pointer;transition:.16s;}
  .placement-mode:hover{border-color:var(--fg-faint);color:var(--fg);}
  .placement-mode.on{border:2px solid var(--fg);padding:7px 5px;background:var(--card);color:var(--fg);font-weight:600;}
  .placement-mode:focus-visible{outline:2px solid var(--seal-hi);outline-offset:2px;}

  .skip-row{display:flex;align-items:center;gap:10px;margin:6px 0 4px;font-family:var(--cjk);font-size:13px;color:var(--fg-soft);}
  .toggle{width:44px;height:24px;border-radius:999px;background:var(--line);border:none;cursor:pointer;position:relative;transition:.18s;flex:none;}
  .toggle::after{content:"";position:absolute;top:3px;left:3px;width:18px;height:18px;border-radius:50%;background:var(--fg-soft);transition:.18s;}
  .toggle[aria-checked="true"]{background:var(--seal);} .toggle[aria-checked="true"]::after{left:23px;background:#fff;}

  /* footer nav */
  .c-foot{padding:12px clamp(18px,2.4vw,26px) 11px;display:flex;gap:8px;align-items:center;justify-content:flex-end;border-top:1px solid var(--line-soft);}
  .step-status{margin-right:auto;max-width:220px;color:var(--fg-soft);font:var(--fs-xs)/1.35 var(--cjk);}
  .step-status[hidden]{display:none;}
  .step-status[data-tone="primary"]{color:var(--fg);font-weight:600;}
  .tn-en{font-family:var(--latin-d);font-size:var(--fs-xs);color:var(--fg-faint);}
  .secondary-skip{width:100%;margin-top:9px;padding:9px 12px;border:1px dashed var(--fg-faint);border-radius:8px;background:transparent;color:var(--fg-soft);font:500 11px var(--cjk);cursor:pointer;}
  .secondary-skip:hover{color:var(--fg);background:color-mix(in srgb,var(--fg) 4%,transparent);box-shadow:0 4px 14px rgba(45,34,18,.08);}.secondary-skip:focus-visible{color:var(--fg);outline:2px solid var(--seal);outline-offset:2px;}
  .inline-actions{display:flex;gap:7px;margin-top:8px;}
  .inline-actions .btn{min-height:34px;}
  .c-body[data-needs-action="true"]{animation:needsAction .85s ease;}
  @keyframes needsAction{0%,100%{background:transparent}35%{background:color-mix(in srgb,var(--amber) 10%,transparent)}}
  .btn{font-family:var(--sans);font-weight:600;font-size:11px;letter-spacing:.55px;cursor:pointer;border-radius:4px;padding:5px 12px;min-height:25px;border:1px solid transparent;transition:.16s;display:inline-flex;align-items:center;justify-content:center;gap:5px;}
  .c-foot .btn[hidden]{display:none;}
  .btn:focus-visible{outline:2px solid var(--seal-hi);outline-offset:2px;}
  .resume-sheet{max-width:430px;text-align:left;}
  .resume-sheet h3{margin:8px 0 10px;font:500 28px/1.15 var(--sans);}
  .resume-sheet p:not(.sect-label){color:var(--fg-soft);font:14px/1.6 var(--sans);}
  .resume-actions{display:grid;gap:9px;margin-top:24px;}
  .resume-input{width:100%;margin-top:12px;padding:12px 13px;border:1px solid var(--line);border-radius:6px;background:var(--card-hi);color:var(--fg);font:14px var(--sans);}
  .btn-next{background:var(--fg);color:var(--bg-0);}
  .btn-next:hover{transform:translateY(-1px);filter:brightness(1.05);}
  .btn-next:disabled{opacity:.35;cursor:not-allowed;transform:none;}
  .btn-fire{background:var(--fg);color:var(--bg-0);}
  .btn-fire:hover{transform:translateY(-1px);filter:brightness(1.08);}
  .btn-back{background:transparent;color:var(--fg-soft);border-color:var(--line);flex:none;}
  .btn-back:hover{color:var(--fg);border-color:var(--fg-faint);}

  /* ---------- preview (light product backdrop) ---------- */
  .preview{position:relative;min-width:0;background:
      radial-gradient(115% 100% at 50% 34%, var(--stage-a), var(--stage-b) 90%);
    border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);
    display:flex;align-items:center;justify-content:center;overflow:hidden;min-height:0;}
  #stage{width:100%;height:100%;display:block;touch-action:none;}   /* 2D fallback until 3D is ready */
  #stage3d{width:100%;height:100%;display:none;touch-action:none;cursor:grab;}
  .paint-preview{position:absolute;inset:0;z-index:6;width:100%;height:100%;pointer-events:none;overflow:visible;opacity:0;transition:opacity .08s}.paint-preview.show{opacity:1}.paint-preview path{fill:none;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 1px rgba(255,255,255,.32))}
  #stage3d:active{cursor:grabbing;}
  .preview.shaping #stage3d{cursor:ns-resize;}
  /* per-step tool cursors */
  .preview[data-tool="trim"] #stage3d{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Cpath d='M4 24 L16 12 L21 17 L9 24 Z' fill='%232a2118' stroke='%23f2ead9' stroke-width='1'/%3E%3Cpath d='M16 12 L23 5' stroke='%232a2118' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") 4 24, crosshair;}
  .preview[data-tool="deco"] #stage3d,.preview[data-tool="over"] #stage3d{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Crect x='12' y='3' width='3' height='11' rx='1' fill='%232a2118'/%3E%3Cpath d='M10 13 h7 l-2 9 h-3 z' fill='%23b5763a' stroke='%232a2118' stroke-width='1'/%3E%3C/svg%3E") 13 23, crosshair;}
  .preview.shaping[data-tool="trim"] #stage3d{cursor:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28'%3E%3Cpath d='M4 24 L16 12 L21 17 L9 24 Z' fill='%232a2118' stroke='%23f2ead9' stroke-width='1'/%3E%3Cpath d='M16 12 L23 5' stroke='%232a2118' stroke-width='2.6' stroke-linecap='round'/%3E%3C/svg%3E") 4 24, crosshair;}
  .pv-top{position:absolute;top:16px;left:20px;right:20px;display:flex;justify-content:space-between;gap:12px;pointer-events:none;}
  .pv-name{font-family:var(--serif);font-weight:600;font-size:19px;letter-spacing:2px;}
  .pv-sub{font-family:var(--sans);font-size:11px;letter-spacing:1px;color:var(--fg-soft);margin-top:3px;text-transform:uppercase;}
  .pv-tools{display:flex;gap:7px;pointer-events:auto;}
  .pv-tool{width:32px;height:32px;border-radius:4px;border:1px solid var(--line);background:color-mix(in srgb,var(--card) 80%,transparent);backdrop-filter:blur(8px);color:var(--fg-soft);cursor:pointer;display:grid;place-items:center;transition:.16s;}
  .pv-tool:hover{color:var(--fg);border-color:var(--fg-faint);}
  .pv-tool.on{background:var(--fg);color:var(--bg-0);border-color:var(--fg);}
  .tile.locked{opacity:.48;filter:grayscale(.72)}.tile.locked:hover{border-color:var(--line);box-shadow:none}
  .pv-tool svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
  .pv-mode-tool{width:auto;min-width:78px;padding:0 11px;display:flex!important;gap:7px;font:600 var(--fs-xs)/1 var(--cjk);letter-spacing:.06em}
  .pv-mode-tool[style*="display:none"]{display:none!important}
  .pv-hint{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);font-family:var(--cjk);font-size:11.5px;color:var(--fg-faint);letter-spacing:.5px;pointer-events:none;display:flex;align-items:center;gap:6px;background:color-mix(in srgb,var(--bg-0) 55%,transparent);padding:6px 13px;border-radius:999px;backdrop-filter:blur(4px);transition:opacity .3s;}
  .view-zoom{position:absolute;left:18px;bottom:18px;z-index:5;display:flex;align-items:center;gap:2px;padding:3px;background:color-mix(in srgb,var(--card) 86%,transparent);border:1px solid var(--line);border-radius:7px;backdrop-filter:blur(10px);box-shadow:0 8px 24px rgba(45,34,18,.08);}
  .zoom-btn{width:27px;height:27px;border:0;border-radius:4px;background:transparent;color:var(--fg-soft);font:500 18px/1 var(--sans);cursor:pointer;transition:.18s;}
  .zoom-btn:hover{background:color-mix(in srgb,var(--fg) 6%,transparent);color:var(--fg)}.zoom-btn:active{transform:scale(.94)}
  .zoom-readout{min-width:48px;text-align:center;color:var(--fg);font:500 var(--fs-xs)/1 var(--sans);font-variant-numeric:tabular-nums;letter-spacing:.4px;border-left:1px solid var(--line-soft);border-right:1px solid var(--line-soft);padding:6px 5px;}
  .thickness-hud{position:absolute;right:18px;bottom:18px;display:none;align-items:center;gap:10px;padding:8px 10px;background:color-mix(in srgb,var(--card) 84%,transparent);border:1px solid var(--line);border-radius:10px;backdrop-filter:blur(8px);pointer-events:none;}
  .thickness-hud.show{display:flex;}
  .craft-touch-hud,.craft-contact{display:none;}
  .thickness-ring{width:42px;height:42px;border-radius:50%;position:relative;background:#5d4a39;box-shadow:inset 0 0 0 var(--wall-ring,8px) #e7decc,inset 0 0 0 calc(var(--wall-ring,8px) + 1px) rgba(50,38,24,.25);}
  .thickness-hud small{display:block;font:var(--fs-xs) var(--sans);letter-spacing:1px;color:var(--fg-faint);text-transform:uppercase}.thickness-hud b{font:500 12px var(--cjk);}
  .process-fx{position:absolute;inset:0;pointer-events:none;overflow:hidden;display:none;z-index:4;}
  .process-fx.show{display:block;pointer-events:auto;}
  .fire-pace .tile{min-height:82px}.slow-firing-card{position:absolute;inset:20% 10%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:28px;border:1px solid color-mix(in srgb,var(--amber) 45%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--bg-0) 91%,transparent);box-shadow:0 20px 60px rgba(20,10,2,.28);color:var(--fg)}.slow-firing-card b{font:600 22px/1.3 var(--serif);margin:9px 0}.slow-firing-card p{max-width:330px;margin:0;color:var(--fg-soft);font:12px/1.7 var(--sans)}.slow-firing-kicker{font:600 var(--fs-xs) var(--sans);letter-spacing:1.7px;color:var(--amber)}.kiln-check{margin-top:17px;border:1px solid var(--line);background:transparent;color:var(--fg);border-radius:99px;padding:8px 16px;font:600 11px var(--cjk);cursor:pointer}.kiln-reveal{position:absolute;inset:0;background:radial-gradient(ellipse at 50% 72%,#5a240f 0%,#19100b 42%,rgba(10,8,6,.94) 100%);overflow:hidden;display:grid;place-items:center}.kiln-door{position:absolute;width:min(66%,330px);height:min(72%,360px);bottom:-2%;border-radius:52% 52% 7px 7px;background:repeating-linear-gradient(0deg,#3b291b 0 18px,#2b1d14 19px 21px),linear-gradient(90deg,#443020,#23170f);border:7px solid #735138;box-shadow:inset 0 0 70px #0e0805,0 0 0 3px #1c120c;transform-origin:8% 84%;transition:transform 1s cubic-bezier(.2,.8,.15,1),filter .6s}.kiln-door:before{content:"";position:absolute;inset:10px;border:1px solid rgba(234,181,109,.2);border-radius:48% 48% 3px 3px}.kiln-door i{position:absolute;left:50%;top:48%;width:56px;height:11px;border-radius:9px;background:#97714c;box-shadow:0 2px 0 #22150d}.kiln-door b{position:absolute;left:calc(50% + 44px);top:43%;width:11px;height:25px;background:#6d4c31;border-radius:2px}.kiln-steam{position:absolute;inset:15% 12%;background:radial-gradient(ellipse at 50% 76%,rgba(255,206,139,.8),transparent 25%),radial-gradient(ellipse at 40% 52%,rgba(244,237,215,.38),transparent 42%);filter:blur(18px);opacity:0;transform:translateY(24px);transition:opacity .4s,transform 1.1s}.kiln-reveal-copy{position:absolute;top:14%;text-align:center;color:#f1dfbd;transition:opacity .3s}.kiln-reveal-copy span{display:block;font:600 var(--fs-xs) var(--sans);letter-spacing:2px;color:#dda15d}.kiln-reveal-copy strong{display:block;margin:9px 0 5px;font:600 20px var(--serif)}.kiln-reveal-copy small{font:11px var(--sans);color:#c4ae91}.kiln-handle{position:absolute;bottom:10%;z-index:2;border:1px solid rgba(239,200,139,.65);background:rgba(40,22,12,.78);color:#f2ddba;border-radius:99px;padding:10px 18px;display:flex;gap:8px;align-items:center;font:600 12px var(--cjk);cursor:pointer;touch-action:none}.kiln-handle i{width:8px;height:8px;border-radius:50%;background:#e6a858;box-shadow:0 0 14px #e6a858}.kiln-hold{position:absolute;bottom:6.5%;width:136px;height:2px;background:rgba(245,224,191,.25);overflow:hidden}.kiln-hold i{display:block;width:100%;height:100%;background:#e6a858;transform:scaleX(0);transform-origin:left}.kiln-reveal.opening .kiln-steam{opacity:1;transform:translateY(-12px)}.kiln-reveal.opened .kiln-door{transform:perspective(850px) rotateY(-95deg);filter:brightness(.65)}.kiln-reveal.opened .kiln-reveal-copy,.kiln-reveal.opened .kiln-handle,.kiln-reveal.opened .kiln-hold{opacity:0}.kiln-reveal.opened .kiln-steam{opacity:.8;transform:translateY(-55px)}
  .kiln-hud{position:absolute;top:14px;left:50%;transform:translateX(-50%);display:none;gap:8px;pointer-events:none;}
  .kiln-hud .g{background:color-mix(in srgb,var(--bg-0) 55%,transparent);border:1px solid var(--line);border-radius:11px;padding:6px 13px;backdrop-filter:blur(6px);text-align:center;min-width:78px;}
  .kiln-hud .g .k{font-size:var(--fs-xs);letter-spacing:1.5px;text-transform:uppercase;color:var(--fg-soft);font-family:var(--sans);}
  .kiln-hud .g .v{font-family:var(--latin-d);font-size:20px;font-variant-numeric:tabular-nums;line-height:1.2;}
  .kiln-hud .g .v small{font-size:11px;color:var(--fg-soft);}
  .fire-curve{box-sizing:border-box;width:100%;height:auto;display:block;border:1px solid var(--line);border-radius:12px;background:var(--card-hi);padding-top:2px;}
  .stoke-btn{position:absolute;z-index:7;left:50%;bottom:72px;transform:translateX(-50%);border:1px solid color-mix(in srgb,var(--amber) 70%,var(--line));border-radius:99px;background:rgba(56,28,12,.9);color:#f3d7ad;padding:9px 17px;font:600 12px var(--cjk);box-shadow:0 6px 20px rgba(0,0,0,.22);cursor:pointer}.stoke-btn:active{transform:translateX(-50%) scale(.96)}
  /* The chamber remains behind the new single shutter. */
  .kiln-chamber{position:absolute;left:50%;bottom:18%;width:min(62%,310px);height:min(70%,350px);transform:translateX(-50%);overflow:hidden;border:9px solid #6f4a31;border-radius:48% 48% 5px 5px;background:radial-gradient(ellipse at 50% 78%,#8c3518 0,#3b1d12 34%,#130d0a 72%);box-shadow:inset 0 0 70px #000,0 0 55px rgba(218,83,30,.22)}
  .kiln-shelves{position:absolute;left:12%;right:12%;bottom:24%;height:8px;border-radius:3px;background:#80604a;box-shadow:0 6px 12px #090504}
  .kiln-piece{position:absolute;left:50%;bottom:26%;width:33%;height:38%;transform:translateX(-50%);border-radius:22% 22% 42% 42% / 12% 12% 18% 18%;background:linear-gradient(90deg,#7c2e1b,#e49354 45%,#8e351f);box-shadow:inset -12px 0 18px rgba(30,7,3,.4),0 0 22px rgba(255,116,49,.38);opacity:.78}
  .kiln-piece:before{content:"";position:absolute;left:35%;top:-13%;width:30%;height:20%;border-radius:30% 30% 8% 8%;background:#b85c32}
  .kiln-ember{position:absolute;left:8%;right:8%;bottom:5%;height:18%;background:radial-gradient(ellipse,#ff8a33 0,#c13713 24%,transparent 68%);filter:blur(5px);animation:emberBreath 1.8s ease-in-out infinite alternate}
  .kiln-reveal.opened .kiln-piece{animation:pieceReveal .9s .25s both}
  .kiln-afterglow{position:absolute;inset:0;z-index:4;pointer-events:none;background:radial-gradient(circle at 50% 56%,rgba(255,220,170,.28),rgba(245,236,215,.06) 40%,transparent 72%);opacity:0;transition:opacity .65s ease,background .65s ease}
  .kiln-reveal.opened .kiln-afterglow{opacity:1}
  .kiln-reveal.departing{opacity:0;background:#f2ecdf;transition:opacity .62s ease,background .62s ease}
  .kiln-reveal.departing .kiln-afterglow{opacity:.92;background:radial-gradient(circle at 50% 48%,#fbf7ee 0,#eee5d4 72%)}
  .kiln-reveal .kiln-handle{bottom:24%}
  .kiln-reveal .kiln-hold{bottom:13.5%}

  /* A single continuous application gesture keeps the vessel visible while the coat forms. */
  .glaze-scene{position:absolute;inset:0;overflow:hidden;pointer-events:none}
  .glaze-vessel-mask{position:absolute;z-index:2;left:34%;top:25%;width:32%;height:59%;border-radius:38% 38% 29% 29% / 20% 20% 13% 13%;overflow:hidden;opacity:.82;mix-blend-mode:multiply;mask-image:linear-gradient(#000 7%,#000 93%,transparent)}
  .glaze-wash{position:absolute;inset:-8% 0 0;background:linear-gradient(90deg,transparent 2%,color-mix(in srgb,var(--fx-color) 60%,transparent) 18%,color-mix(in srgb,var(--fx-color) 82%,#fff) 49%,color-mix(in srgb,var(--fx-color) 62%,transparent) 81%,transparent 98%);transform:translateY(-105%);animation:glazeWash 2.35s cubic-bezier(.28,.66,.22,1) both}
  .glaze-run{position:absolute;top:0;width:5px;height:34%;border-radius:0 0 8px 8px;background:color-mix(in srgb,var(--fx-color) 76%,#fff);transform:translateY(-110%);filter:blur(.3px);animation:glazeRun 2.35s ease-in both}.glaze-run.r1{left:29%;height:43%;animation-delay:.08s}.glaze-run.r2{left:51%;height:31%;animation-delay:.18s}.glaze-run.r3{left:69%;height:48%;animation-delay:.12s}
  .pour-cup{position:absolute;z-index:5;left:51%;top:10%;width:118px;height:76px;border-radius:12px 12px 64px 64px;background:linear-gradient(155deg,#fbf7ed 4%,#d8cbb5 54%,#8f7c62);border:1px solid rgba(72,54,34,.38);box-shadow:inset 0 8px 16px rgba(255,255,255,.72),0 14px 30px rgba(31,22,12,.2);transform-origin:88% 20%;animation:pourCup 2.35s cubic-bezier(.2,.72,.18,1) both}
  .pour-cup:before{content:"";position:absolute;right:-48px;top:17px;width:58px;height:18px;border:10px solid #b4a58f;border-left:0;border-radius:0 22px 22px 0}.pour-cup i{position:absolute;left:-10px;top:9px;width:30px;height:16px;border-radius:80% 12% 70% 20%;background:#c7b89e}.pour-cup-glaze{position:absolute;left:8%;right:8%;top:10px;height:17px;border-radius:50%;background:color-mix(in srgb,var(--fx-color) 74%,#fff);box-shadow:inset 0 2px 5px rgba(255,255,255,.65)}
  .glaze-scene .pour-stream{position:absolute;z-index:4;left:51%;top:20%;width:11px;height:36%;border-radius:50% 46% 54% 48%;background:linear-gradient(90deg,color-mix(in srgb,var(--fx-color) 68%,#fff),var(--fx-color) 55%,rgba(255,255,255,.72));box-shadow:0 0 7px color-mix(in srgb,var(--fx-color) 44%,transparent);transform-origin:top;animation:glazeStream 2.35s cubic-bezier(.24,.7,.23,1) both}
  .pour-impact{position:absolute;z-index:3;left:45%;top:51%;width:12%;height:4%;border:3px solid color-mix(in srgb,var(--fx-color) 70%,#fff);border-top-color:transparent;border-radius:50%;animation:glazeImpact 2.35s ease both}
  .spray-tool{position:absolute;z-index:6;right:7%;top:41%;width:108px;height:30px;border-radius:12px 5px 5px 12px;background:linear-gradient(#dad8cf,#77786f);box-shadow:inset 0 2px 2px rgba(255,255,255,.7),0 8px 18px rgba(30,26,20,.22);animation:sprayToolPass 2.6s cubic-bezier(.3,.7,.28,1) both}.spray-tool:before{content:"";position:absolute;left:-28px;top:7px;width:31px;height:16px;border-radius:10px 2px 2px 10px;background:linear-gradient(#c4c2b8,#64655e)}.spray-tool i{position:absolute;right:20px;top:25px;width:22px;height:45px;border-radius:4px 4px 10px 10px;background:linear-gradient(90deg,#77786f,#b6b3a7);transform:rotate(-14deg);transform-origin:top}.spray-cup{position:absolute;right:11px;top:-36px;width:42px;height:39px;border-radius:8px 8px 14px 14px;background:linear-gradient(135deg,#e5e0d3,#8e887b)}
  .spray-plume{position:absolute;z-index:3;right:23%;top:32%;width:42%;height:38%;clip-path:polygon(100% 45%,0 10%,0 90%);background:radial-gradient(ellipse at 100% 50%,rgba(255,255,255,.7),color-mix(in srgb,var(--fx-color) 34%,transparent) 37%,transparent 74%);filter:blur(5px);transform-origin:right center;animation:sprayPlumePass 2.6s cubic-bezier(.3,.7,.28,1) both}
  .spray-deposit{position:absolute;inset:0;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--fx-color) 54%,transparent) 20%,color-mix(in srgb,var(--fx-color) 72%,transparent) 50%,color-mix(in srgb,var(--fx-color) 54%,transparent) 80%,transparent);clip-path:inset(100% 0 0);animation:sprayDeposit 2.6s ease-out both}
  .spray-particles{position:absolute;z-index:4;right:31%;top:50%;width:5px;height:5px;border-radius:50%;background:color-mix(in srgb,var(--fx-color) 62%,#fff);box-shadow:-28px -18px 0 -1px var(--fx-color),-54px 20px 0 -1px var(--fx-color),-82px -32px 0 -2px var(--fx-color);animation:sprayParticles 2.6s linear both}.spray-particles.p2{top:43%;animation-delay:.15s}.spray-particles.p3{top:58%;animation-delay:.28s}
  .glaze-action-label{position:absolute;z-index:7;left:50%;top:13%;transform:translateX(-50%);padding:7px 11px;border:1px solid color-mix(in srgb,var(--fx-color) 38%,var(--line));border-radius:999px;background:color-mix(in srgb,var(--bg-0) 78%,transparent);backdrop-filter:blur(10px);color:var(--fg-soft);font:600 var(--fs-xs)/1 var(--sans);letter-spacing:1.6px;animation:glazeLabel 2.45s ease both}
  .glaze-specular{position:absolute;inset:-8% 0;background:linear-gradient(105deg,transparent 29%,rgba(255,255,255,.05) 43%,rgba(255,255,255,.58) 50%,rgba(255,255,255,.08) 57%,transparent 70%);transform:translateX(-80%);animation:glazeSpecular 2.45s .55s cubic-bezier(.2,.7,.2,1) both}
  .glaze-scene .pour-stream{left:50%;top:0;width:7px;height:52%;opacity:.88;filter:blur(.15px);box-shadow:0 0 4px color-mix(in srgb,var(--fx-color) 30%,transparent)}
  .pour-impact{left:46%;top:50%;width:8%;height:3%;border-width:2px}
  .spray-plume{right:8%;top:29%;width:52%;height:42%;opacity:.68;filter:blur(9px)}
  .spray-particles{right:18%;width:3px;height:3px;box-shadow:-24px -16px 0 -1px var(--fx-color),-49px 17px 0 -1px var(--fx-color),-78px -28px 0 -1px var(--fx-color),-108px 8px 0 -1px color-mix(in srgb,var(--fx-color) 72%,#fff)}
  @keyframes pourCup{0%,10%{transform:translate(90px,-32px) rotate(6deg);opacity:0}24%{opacity:1}38%,78%{transform:translate(0,0) rotate(-46deg);opacity:1}100%{transform:translate(55px,-22px) rotate(-20deg);opacity:0}}
  @keyframes glazeStream{0%,34%{transform:scaleY(0);opacity:0}43%,76%{transform:scaleY(1);opacity:.96}90%,100%{transform:scaleY(.05) translateY(90%);opacity:0}}
  @keyframes glazeImpact{0%,42%{transform:scale(.2);opacity:0}52%,76%{transform:scale(1);opacity:.72}91%,100%{transform:scale(1.45);opacity:0}}
  @keyframes glazeWash{0%,46%{transform:translateY(-105%);opacity:0}60%{opacity:.7}87%{transform:translateY(0);opacity:.72}100%{transform:translateY(0);opacity:0}}
  @keyframes glazeRun{0%,46%{transform:translateY(-110%);opacity:0}58%{opacity:.8}87%{transform:translateY(260%);opacity:.62}100%{transform:translateY(290%);opacity:0}}
  @keyframes sprayToolPass{0%,8%{transform:translate(90px,72px) rotate(-8deg);opacity:0}20%{opacity:1}31%{transform:translate(0,66px) rotate(-6deg)}52%{transform:translate(-10px,-62px) rotate(7deg)}73%{transform:translate(0,52px) rotate(-4deg);opacity:1}94%,100%{transform:translate(85px,30px);opacity:0}}
  @keyframes sprayPlumePass{0%,16%{transform:translate(70px,66px) scaleX(.16);opacity:0}29%{opacity:.68;transform:translate(0,66px) scaleX(1)}52%{transform:translate(-8px,-62px) scaleX(1.04)}74%{transform:translate(0,52px) scaleX(1);opacity:.58}95%,100%{transform:translate(65px,30px) scaleX(.1);opacity:0}}
  @keyframes sprayDeposit{0%,25%{clip-path:inset(100% 0 0);opacity:0}51%{clip-path:inset(44% 0 0);opacity:.28}82%{clip-path:inset(0);opacity:.55}100%{clip-path:inset(0);opacity:0}}
  @keyframes sprayParticles{0%,22%{transform:translate(0,0) scale(.4);opacity:0}31%{opacity:.8}63%{transform:translate(-185px,-20px) scale(1.6);opacity:.16}100%{transform:translate(-205px,-25px) scale(.2);opacity:0}}
  @keyframes glazeLabel{0%,8%{opacity:0;transform:translate(-50%,8px)}20%,72%{opacity:.72;transform:translate(-50%,0)}100%{opacity:0;transform:translate(-50%,-5px)}}
  @keyframes glazeSpecular{0%,18%{transform:translateX(-80%);opacity:0}35%{opacity:.7}82%{transform:translateX(80%);opacity:.62}100%{transform:translateX(100%);opacity:0}}

  /* One arched shutter lowers away from a single kiln mouth; no stacked door layers. */
  .kiln-mouth{position:absolute;left:50%;bottom:17%;width:min(62%,310px);height:min(69%,346px);transform:translateX(-50%);perspective:900px}
  .kiln-mouth .kiln-chamber{inset:0;width:auto;height:auto;transform:none;border:9px solid #6f4a31;border-radius:48% 48% 7px 7px}
  .kiln-shutter{position:absolute;z-index:3;inset:0;border:8px solid #765139;border-radius:48% 48% 7px 7px;background:repeating-linear-gradient(0deg,#402c20 0 18px,#2b1d15 19px 21px);box-shadow:inset 0 0 55px #100906,0 10px 30px #080504;transform-origin:center bottom;transition:transform 1.05s cubic-bezier(.2,.78,.18,1),filter .55s,opacity .5s}
  .kiln-shutter:before{content:"";position:absolute;inset:13px;border:1px solid rgba(226,177,115,.2);border-radius:45% 45% 4px 4px}.kiln-shutter i{position:absolute;left:50%;top:50%;width:62px;height:10px;transform:translateX(-50%);border-radius:10px;background:#a47a50;box-shadow:0 3px 0 #21140d}.kiln-shutter-ring{position:absolute;left:50%;top:50%;width:24px;height:30px;transform:translate(-50%,-4px);border:5px solid #7c593b;border-radius:50%}
  .kiln-heat-veil{position:absolute;z-index:2;inset:5%;border-radius:45% 45% 5px 5px;background:radial-gradient(ellipse at 50% 72%,rgba(255,189,105,.65),rgba(130,48,19,.18) 42%,transparent 72%);filter:blur(12px);opacity:0;transform:translateY(18px);transition:opacity .45s,transform 1.1s}
  .kiln-reveal.opening .kiln-shutter{transform:perspective(900px) translateY(8%) rotateX(-7deg)}
  .kiln-reveal.opened .kiln-shutter{transform:perspective(900px) translateY(108%) rotateX(-18deg);filter:brightness(.58);opacity:.3}
  .kiln-reveal.opened .kiln-heat-veil{opacity:.75;transform:translateY(-48px)}
  .kiln-reveal.opened .kiln-piece{animation:pieceReveal .9s .2s both}
  @media(max-width:720px){.glaze-vessel-mask{left:27%;width:46%;top:28%;height:52%}.pour-cup{left:48%;transform:scale(.84)}.glaze-scene .pour-stream{left:48%}.spray-tool{right:2%;transform:scale(.84)}.spray-plume{right:18%;width:50%}.kiln-mouth{width:min(72%,300px);height:min(58%,330px);bottom:22%}}

  html[data-embed="work"],html[data-embed="work"] body{background:#d6cdbc}
  html[data-embed="work"] body::before,
  html[data-embed="work"] .top,
  html[data-embed="work"] .control,
  html[data-embed="work"] .pv-top,
  html[data-embed="work"] .pv-hint,
  html[data-embed="work"] .view-zoom,
  html[data-embed="work"] .thickness-hud,
  html[data-embed="work"] .craft-touch-hud,
  html[data-embed="work"] .craft-contact,
  html[data-embed="work"] .result,
  html[data-embed="work"] .intro,
  html[data-embed="work"] .modal{display:none!important}
  html[data-embed="work"] .app{height:100dvh}
  html[data-embed="work"] .main{display:block;height:100%;padding:0}
  html[data-embed="work"] .preview{display:block;width:100%;height:100%;min-height:0;border:0;border-radius:0;box-shadow:none;background:radial-gradient(circle at 50% 38%,#f7f1e5 0,#d6cbbb 72%)}
  html[data-embed="work"] #stage3d{display:block;width:100%;height:100%}
  @keyframes emberBreath{to{opacity:.48;transform:scaleX(.88)}}
  @keyframes pieceReveal{from{opacity:.28;filter:brightness(.45)}to{opacity:1;filter:brightness(1.08)}}

  /* result card overlay */
  /* Final actions stay with the work: the eye lands on the piece, then moves
     directly into collect, publish and sharing without crossing panels. */
  /* 3D 不可用时的兜底：显示重试卡片，绝不静默切回 2D 预览 */
  .pv-error{position:absolute;inset:0;z-index:20;display:flex;align-items:center;justify-content:center;padding:24px;
    background:radial-gradient(120% 100% at 50% 40%, color-mix(in srgb,var(--stage-a) 92%,transparent), color-mix(in srgb,var(--stage-b) 94%,transparent));
    backdrop-filter:blur(2px);}
  .pv-error[hidden]{display:none;}
  .pv-error-card{max-width:320px;display:flex;flex-direction:column;align-items:center;gap:11px;text-align:center;
    padding:26px 24px;border:1px solid var(--line);border-radius:16px;background:color-mix(in srgb,var(--card) 92%,transparent);
    box-shadow:0 20px 48px rgba(45,34,18,.14);}
  .pv-error-mark{font-size:30px;line-height:1;color:var(--fg-faint);}
  .pv-error-card b{font-family:var(--serif);font-weight:600;font-size:17px;letter-spacing:1px;color:var(--fg);}
  .pv-error-card p{margin:0;font-family:var(--cjk);font-weight:400;font-size:12.5px;line-height:1.65;color:var(--fg-soft);}
  .pv-error-card .btn{margin-top:4px;}
  .result{position:absolute;left:0;right:0;bottom:0;display:none;flex-direction:column;align-items:center;justify-content:flex-end;
    z-index:6;padding:120px 20px 16px;pointer-events:none;
    background:linear-gradient(to top,color-mix(in srgb,var(--stage-b) 82%,transparent) 0,color-mix(in srgb,var(--stage-b) 44%,transparent) 48%,transparent 100%);}
  .result .nameplate{display:flex;flex-direction:column;align-items:center;gap:7px;text-shadow:0 1px 18px color-mix(in srgb,var(--stage-b) 76%,transparent);}
  .result-eyebrow{font:500 var(--fs-xs)/1.2 var(--sans);letter-spacing:2.5px;color:var(--fg-faint);text-transform:uppercase;}
  .preview.failure-broke .result .nameplate{display:none;}
  .failure-verdict{margin:2px 0 22px;padding:17px 0 18px;border:0;border-top:1px solid color-mix(in srgb,var(--seal) 52%,var(--line));border-bottom:1px solid var(--line);background:transparent}
  .failure-copy{min-width:0;display:flex;flex-direction:column;gap:7px}
  .failure-copy::before{content:"窑口判定  /  KILN VERDICT";font:600 var(--fs-xs)/1.2 var(--sans);letter-spacing:1.8px;color:var(--fg-faint)}
  .failure-verdict b{font:600 22px/1.2 var(--serif);letter-spacing:.16em;color:var(--fg)}
  .failure-verdict .failure-copy>span{max-width:38em;font:13px/1.72 var(--cjk);color:var(--fg)}
  .failure-verdict small{font:var(--fs-xs)/1.7 var(--sans);color:var(--fg-soft)}
  .result .grade{font-family:var(--sans);font-weight:600;font-size:var(--fs-xs);letter-spacing:2.4px;padding:0;background:transparent;color:var(--seal-hi);}
  .result .grade.bad{background:transparent;color:var(--amber);border:1px solid var(--amber);}
  .result .pname{font-family:var(--serif);font-weight:500;font-size:clamp(25px,3vw,34px);letter-spacing:2px;text-align:center;color:var(--fg);}
  .result .pen{font-family:var(--latin-d);font-size:var(--fs-xs);letter-spacing:2.1px;text-transform:uppercase;color:var(--fg-faint);}
  .result-action-panel{width:calc(100% - 40px);max-width:560px;margin-top:12px;padding:9px;border:1px solid color-mix(in srgb,var(--line) 72%,transparent);border-radius:10px;
    background:color-mix(in srgb,var(--card-hi) 78%,transparent);box-shadow:0 12px 30px rgba(54,40,17,.09),inset 0 1px rgba(255,255,255,.62);backdrop-filter:blur(18px);pointer-events:auto;
    animation:resultActionsIn .5s .12s cubic-bezier(.2,.8,.2,1) both;}
  .result-action-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:1px 2px 8px;}
  .result-action-head b{font:600 11.5px/1.4 var(--cjk);letter-spacing:.2px;}
  .result-action-head span{font:var(--fs-xs)/1.4 var(--cjk);color:var(--fg-soft);}
  .result-primary-actions{display:grid;grid-template-columns:1fr 1.18fr;gap:7px;}
  .result-primary-actions .btn{min-height:34px;border-radius:6px;font-size:11.5px;}
  .result-make-real{width:100%;min-height:34px;margin-top:7px;border-radius:6px;font-size:11.5px;}
  .result-save-status{min-height:0;margin-top:5px;text-align:center;color:var(--amber);font:var(--fs-xs)/1.4 var(--cjk);}
  .result-save-status:empty{display:none;}
  .result-utility-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:0;margin-top:6px;}
  .result-utility{border:0;background:transparent;color:var(--fg-soft);padding:5px 9px;font:500 var(--fs-xs)/1.2 var(--cjk);cursor:pointer;transition:color .18s,background .18s;border-radius:4px;}
  .result-utility:hover{color:var(--fg);background:color-mix(in srgb,var(--fg) 6%,transparent);}
  .result-utility:focus-visible{outline:2px solid var(--seal);outline-offset:1px;}
  .result-utility+.result-utility::before{content:"";display:inline-block;width:1px;height:9px;margin:0 9px 0 0;background:var(--line);vertical-align:-1px;}
  .ract{display:flex;flex-wrap:wrap;gap:8px;margin:2px 0 4px;}
  .pdesc-c{font-family:var(--cjk);font-weight:400;font-size:12.5px;line-height:1.7;color:var(--fg-soft);margin:12px 0 2px;}
  .preview.reveal .view-zoom{display:none;}
  @keyframes resultActionsIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}

  /* intro — cinematic dark hero with a live throwing animation */
  .intro{position:fixed;inset:0;z-index:60;display:flex;align-items:center;justify-content:center;
    background:#0d0b09;transition:opacity .8s,visibility .8s;overflow:hidden;}
  .intro.hide{opacity:0;visibility:hidden;pointer-events:none;}
  #heroCv,#heroFallback{position:absolute;inset:0;width:100%;height:100%;display:block;}
  .i-wrap{position:absolute;inset:0;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:space-between;text-align:center;padding:clamp(40px,7vh,72px) 30px clamp(42px,7vh,70px);pointer-events:none;}
  .i-top,.i-bot{display:flex;flex-direction:column;align-items:center;}
  .i-wrap .go,.intro-home{pointer-events:auto;}
  .intro-home{position:absolute;top:clamp(20px,3vw,34px);left:clamp(20px,3vw,36px);display:inline-flex;align-items:center;gap:12px;padding:11px 15px;border:1px solid rgba(242,234,217,.48);color:#f2ead9;font:400 11px/1 var(--cjk);letter-spacing:.12em;text-decoration:none;background:rgba(13,11,9,.28);backdrop-filter:blur(8px);transition:border-color .2s,background .2s;}
  .intro-home:hover{box-shadow:0 6px 20px rgba(0,0,0,.3);background:rgba(13,11,9,.58);}
  .i-actions{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}
  .i-zh{font-family:var(--serif);font-weight:400;font-size:clamp(68px,13vw,144px);letter-spacing:.18em;text-indent:.18em;color:#f6edda;line-height:.94;text-shadow:0 4px 40px rgba(0,0,0,.68);animation:rise 1s both;}

  html[lang="en"] .brand,
  html[lang="en"] .i-zh{font-family:var(--latin-d);font-weight:400;letter-spacing:.28em;}
  html[lang="en"] .c-head h2{font-family:var(--latin-d);font-weight:400;letter-spacing:-.025em;}
  .i-en{font-family:var(--latin-d);font-weight:500;font-size:clamp(10px,1.3vw,13px);letter-spacing:.38em;text-indent:.38em;color:#d2c3a7;margin-top:18px;animation:rise 1s .12s both;}
  .i-steps{font-family:var(--cjk);font-weight:400;font-size:12.5px;letter-spacing:.18em;color:#d0c1a5;margin:0 0 20px;text-shadow:0 2px 20px rgba(0,0,0,.8);animation:rise 1s .22s both;}
  .go{font-family:var(--latin-d);font-weight:300;font-size:13px;letter-spacing:.3em;text-indent:.3em;text-transform:uppercase;
    color:#0d0b09;background:#f2ead9;border:1px solid #f2ead9;padding:15px 50px;cursor:pointer;transition:.25s;animation:rise 1s .32s both;position:relative;z-index:3;}
  .go:hover{background:#f2ead9;color:#0d0b09;border-color:#f2ead9;}
  .go-future{border-color:rgba(242,234,217,.34);color:rgba(242,234,217,.72);background:rgba(13,11,9,.46);}
  .go-future:hover{box-shadow:0 6px 20px rgba(0,0,0,.3);color:#f2ead9;background:rgba(13,11,9,.62);}
  .go:disabled{cursor:wait;opacity:.62;background:rgba(13,11,9,.34);color:#f2ead9;border-color:#8f806a;}
  /* account modal + my works */
  .modal{position:fixed;inset:0;z-index:70;display:none;align-items:center;justify-content:center;padding:24px;background:rgba(30,24,14,.4);backdrop-filter:blur(4px);}
  .modal.show{display:flex;}
  .sheet{position:relative;width:min(92vw,760px);max-height:88vh;overflow-y:auto;background:var(--card);border:1px solid var(--line);border-radius:20px;box-shadow:0 20px 60px rgba(30,20,8,.3);padding:32px;}
  .sheet-x{position:absolute;top:16px;right:16px;width:28px;height:28px;border-radius:4px;border:1px solid var(--line);background:var(--card-hi);color:var(--fg-soft);cursor:pointer;font-size:14px;}
  .sheet h3{font-family:var(--serif);font-weight:600;font-size:22px;margin:0 0 4px;letter-spacing:1px;}
  .sheet .msub{font-family:var(--cjk);font-weight:400;font-size:12.5px;color:var(--fg-soft);margin-bottom:18px;}
  .sheet input.name{width:100%;font-family:var(--cjk);font-size:15px;padding:13px 15px;border:1px solid var(--line);border-radius:11px;background:var(--card-hi);color:var(--fg);margin-bottom:12px;}
  .sheet input.name:focus{outline:2px solid var(--seal);outline-offset:1px;}
  .sheet .mhint{font-family:var(--cjk);font-size:11.5px;color:var(--amber);min-height:16px;margin:-4px 0 8px;}
  .sheet .mbtn{width:100%;font-family:var(--sans);font-weight:600;font-size:14px;padding:11px;border-radius:4px;border:none;background:var(--fg);color:var(--bg-0);cursor:pointer;}
  .sheet .mbtn.ghost{background:transparent;border:1px solid var(--line);color:var(--fg-soft);margin-top:9px;}
  .account-list{margin:18px 0 8px;border-top:1px solid var(--line-soft);}
  .account-row{width:100%;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 0;border-bottom:1px solid var(--line-soft);background:transparent;border-left:0;border-right:0;border-top:0;color:var(--fg);font:400 13px var(--cjk);text-align:left;cursor:pointer;}
  .account-row small{display:block;margin-top:3px;color:var(--fg-faint);font:11px var(--sans);letter-spacing:.25px;}
  .account-row .chev{color:var(--fg-faint);font:16px var(--sans);}
  .paint-loupe{position:fixed;z-index:95;display:none;width:92px;height:92px;border:3px solid #f8f2e6;border-radius:50%;pointer-events:none;background:#f4ecdd center/400% 400% no-repeat;box-shadow:0 8px 28px rgba(25,18,10,.32);}
  .paint-loupe.show{display:block;}
  .category-tabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;padding:2px 0 8px;background:none}
  .cat-tab{scroll-snap-align:start;}
  .cat-tab{min-width:0;white-space:normal;border:1px solid var(--line);background:transparent;color:var(--fg-soft);border-radius:6px;padding:7px 4px;font:500 var(--fs-xs)/1.25 var(--cjk);cursor:pointer}.cat-tab.on{background:var(--fg);color:var(--bg-0);border-color:var(--fg)}
  .cat-name,.cat-desc{display:block}.cat-desc{margin-top:2px;font-size:var(--fs-xs);color:var(--fg-faint)}.cat-tab.on .cat-desc{color:color-mix(in srgb,var(--bg-0) 72%,transparent)}
  .tool-callout{display:flex;align-items:flex-start;gap:10px;padding:11px 12px;border:1px solid var(--line);background:var(--card-hi);border-radius:10px;font:12px/1.55 var(--cjk);color:var(--fg-soft)}.tool-callout b{color:var(--fg)}
  .ring-painter{margin:10px 0 12px;padding:13px;border:1px solid var(--fg);border-radius:12px;background:var(--card-hi);font-family:var(--cjk)}
  .ring-painter b{display:block;font-size:13px;font-weight:600;color:var(--fg)}.ring-painter small{display:block;margin-top:3px;font-size:11px;line-height:1.45;color:var(--fg-soft)}
  .sculpt-lab{margin:16px 0 4px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--card-hi) 76%,transparent);overflow:hidden}
  .form-mode-switch{position:sticky;top:-1px;z-index:3;display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:0 0 7px;padding:4px;border:1px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--card) 94%,transparent);backdrop-filter:blur(12px)}
  .form-mode-switch button{min-height:42px;border:0;border-radius:8px;background:transparent;color:var(--fg-soft);font:600 12px/1 var(--cjk);cursor:pointer}
  .form-mode-switch button.on{background:var(--fg);color:var(--bg-0);box-shadow:0 5px 16px rgba(31,25,17,.14)}
  .form-mode-copy{margin:0 2px 14px;font:var(--fs-xs)/1.5 var(--cjk);color:var(--fg-soft);text-align:center}
  .form-advanced-toggle{display:none}
  .form-advanced-panel{display:block}
  .sculpt-lab.open{border-color:color-mix(in srgb,var(--fg) 72%,var(--line));box-shadow:inset 0 1px rgba(255,255,255,.55)}
  .sculpt-entry{width:100%;min-height:68px;padding:13px 15px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:0;background:transparent;color:var(--fg);text-align:left;cursor:pointer}
  .sculpt-entry span{display:flex;flex-direction:column;gap:4px}.sculpt-entry small{font:600 var(--fs-xs)/1 var(--sans);letter-spacing:.18em;color:var(--fg-faint)}
  .sculpt-entry b{font:500 16px/1.25 var(--serif);letter-spacing:.02em}.sculpt-entry i{font:300 25px/1 var(--sans);font-style:normal}
  .sculpt-intro{padding:0 15px 13px;font:11px/1.55 var(--cjk);color:var(--fg-soft)}
  .sculpt-grid{padding:0 12px 12px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
  .sculpt-modifier{min-height:66px;padding:10px 9px 10px 11px;display:flex;align-items:center;justify-content:space-between;gap:7px;border:1px solid var(--line);border-radius:10px;background:var(--card);color:var(--fg);text-align:left;cursor:pointer}
  .sculpt-modifier.on{border-color:var(--fg);background:var(--fg);color:var(--bg-0);box-shadow:0 7px 18px rgba(31,25,17,.12)}
  .sculpt-modifier span{min-width:0;display:flex;flex-direction:column;gap:3px}.sculpt-modifier b{font:600 12px/1.25 var(--cjk)}.sculpt-modifier small{font:var(--fs-xs)/1.35 var(--cjk);color:var(--fg-soft)}
  .sculpt-modifier.on small{color:color-mix(in srgb,var(--bg-0) 70%,transparent)}.sculpt-modifier i{flex:none;font:400 15px/1 var(--sans);font-style:normal}
  .sculpt-settings{margin:0 12px 10px;padding:12px;border:1px solid var(--line);border-radius:10px;background:var(--card)}
  .sculpt-settings>b{display:block;margin-bottom:9px;font:600 var(--fs-xs)/1 var(--sans);letter-spacing:.17em;color:var(--fg-faint)}
  .sculpt-settings .fld{margin:10px 0}.sculpt-risk{margin:0 12px 12px;padding:10px 11px;border-left:2px solid var(--amber);background:color-mix(in srgb,var(--amber) 8%,var(--card));font-family:var(--cjk)}
  .sculpt-risk b,.sculpt-risk span{display:block}.sculpt-risk b{font-size:var(--fs-xs);letter-spacing:.08em}.sculpt-risk span{margin-top:4px;font-size:var(--fs-xs);line-height:1.45;color:var(--fg-soft)}
  .ring-kinds{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:11px}
  .ring-kind{min-height:34px;border:1px solid var(--line);border-radius:7px;background:transparent;color:var(--fg-soft);font:500 11px var(--cjk);cursor:pointer}
  .ring-kind.on{border-color:var(--fg);background:var(--fg);color:var(--bg-0)}
  .zone-picker{display:flex;flex-wrap:wrap;gap:6px}.zone-btn{min-height:34px;padding:0 13px;border:1px solid var(--line);border-radius:999px;background:var(--card-hi);color:var(--fg-soft);font:500 11px var(--cjk);cursor:pointer;transition:.16s}.zone-btn.on{border-color:var(--fg);background:var(--fg);color:var(--bg-0)}
  .ring-add{width:100%;margin-top:8px;justify-content:center}
  .knead-card{display:grid;grid-template-columns:1fr auto;gap:9px 12px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:12px;background:var(--card-hi)}
  .knead-card .knead-meter{grid-column:1/-1;height:5px;border-radius:5px;background:var(--line-soft);overflow:hidden}
  .knead-card .knead-meter span{display:block;height:100%;border-radius:inherit;background:var(--seal);transition:width .35s cubic-bezier(.2,.8,.2,1)}
  .knead-card b{display:block;font:500 13px/1.4 var(--sans)}.knead-card small{display:block;margin-top:3px;color:var(--fg-soft);font:11px/1.45 var(--sans)}
  .knead-card .btn{height:34px;padding-inline:14px}
  .first-reveal-card{position:relative;overflow:hidden;padding:22px 20px 20px;border:1px solid var(--line);border-radius:14px;background:radial-gradient(120% 160% at 100% 0,color-mix(in srgb,var(--amber) 14%,transparent),transparent 55%),var(--card-hi)}
  .first-reveal-card .first-seal{font:500 var(--fs-xs)/1 var(--latin-d);letter-spacing:.22em;color:var(--seal);margin-bottom:18px}
  .first-reveal-card h3{margin:0 0 9px;font:600 24px/1.2 var(--serif);letter-spacing:.03em}
  .first-reveal-card p{margin:0;color:var(--fg-soft);font:12px/1.75 var(--sans)}
  .kiln-map{position:relative;height:128px;border-radius:12px;background:radial-gradient(circle at 50% 90%,#ab421e 0 8%,#38241a 28%,#1a120d 70%);border:1px solid #6e4d35;overflow:hidden;margin-top:8px}
  .kiln-map::before{content:"";position:absolute;inset:12px 22px;border:9px solid #70533b;border-radius:48% 48% 16px 16px;box-shadow:inset 0 0 24px #000}
  .kiln-spot{position:absolute;width:25px;height:25px;border-radius:50%;border:1px solid #d7b987;background:#3b2b20;color:#eadbc3;display:grid;place-items:center;font:var(--fs-xs) var(--latin-d);cursor:pointer;transition:.2s}.kiln-spot.on{background:#d6b16d;color:#24170e;box-shadow:0 0 18px #e45d22}.kiln-spot[data-key="front"]{left:26%;bottom:24px}.kiln-spot[data-key="middle"]{left:48%;bottom:52px}.kiln-spot[data-key="back"]{right:24%;top:22px}
  .community-head{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin:0 34px 22px 0}.community-count{flex:none;font:500 var(--fs-xs) var(--sans);letter-spacing:1.2px;color:var(--fg-faint);text-transform:uppercase}
  .gallery-en{margin-left:8px;font:400 var(--fs-xs) var(--sans);letter-spacing:2.4px;color:var(--fg-faint);vertical-align:middle}
  .community-grid{columns:3 230px;column-gap:14px}.community-card{display:inline-block;width:100%;margin:0 0 14px;break-inside:avoid;border:1px solid var(--line);background:var(--card-hi);border-radius:14px;overflow:hidden;transition:transform .22s,box-shadow .22s;cursor:pointer}.community-card:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(67,48,21,.12)}.community-art{height:var(--art-h,190px);display:grid;place-items:center;background:radial-gradient(circle at 50% 30%,#fbf8f0,#ddd1ba);overflow:hidden}.community-art canvas,.community-art img{width:100%;height:100%;object-fit:contain;display:block}.community-meta{padding:12px 13px 14px}.community-meta b{display:block;font:600 14px var(--serif);letter-spacing:.3px}.community-meta small{display:block;margin-top:5px;font:var(--fs-xs)/1.55 var(--cjk);color:var(--fg-soft)}.community-meta .public-mark{display:inline-flex;margin-top:8px;padding:3px 6px;border-radius:3px;background:color-mix(in srgb,var(--seal) 10%,transparent);color:var(--seal-hi);font:500 var(--fs-xs) var(--sans);letter-spacing:.7px}
  .works{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:6px;}
  .works .wk{background:var(--card-hi);border:1px solid var(--line);border-radius:12px;overflow:hidden;text-align:center;padding-bottom:9px;}
  .works .wk img{width:100%;height:120px;object-fit:contain;display:block;background:var(--stage-a);}
  .works .wk .wn{font-family:var(--serif);font-size:13px;margin-top:7px;letter-spacing:.5px;}
  .works .wk .wg{font-family:var(--cjk);font-size:var(--fs-xs);color:var(--fg-soft);margin-top:2px;}
  .works-empty{font-family:var(--cjk);font-size:13px;color:var(--fg-soft);text-align:center;padding:26px 0;line-height:1.7;}
  .result-guide{padding:12px 13px;margin:0 0 12px;border-radius:10px;background:color-mix(in srgb,var(--seal) 9%,var(--card-hi));border:1px solid color-mix(in srgb,var(--seal) 28%,var(--line));font:12px/1.6 var(--cjk);color:var(--fg-soft)}.result-guide b{color:var(--seal-hi)}
  .btn-collect{background:var(--seal);color:#fff;border-color:var(--seal);box-shadow:0 7px 18px color-mix(in srgb,var(--seal) 24%,transparent)}.btn-collect:hover{background:var(--seal-hi);transform:translateY(-1px)}
  .btn-publish{background:#b28a45;color:#fff;border-color:#b28a45}.btn-publish:hover{background:#947039;transform:translateY(-1px)}
  @media(max-width:1450px) and (min-width:761px){
    .preview.is-firing .kiln-hud{top:auto;bottom:20px;left:50%;transform:translateX(-50%);z-index:7;}
    .preview.is-firing .pv-hint{display:none;}
  }
  @media(max-width:760px){
    /* Let the phone page own vertical scrolling. This avoids a short nested
       scroller that hides choices beneath the fixed control heading. */
    .control{height:max-content;min-height:0;overflow:visible;align-self:start;}
    .control:has(.c-body[data-stage="fire"]) .c-head{padding-right:clamp(18px,2.4vw,26px);}
    .c-body{flex:0 0 auto;overflow:visible;}
    .ai-kiln-advisor,.ai-kiln-advisor.open{position:static;order:0;width:auto;margin:4px clamp(18px,2.4vw,26px) 10px;border-radius:12px;box-shadow:none;}
    .ai-kiln-summary{min-height:56px;padding:9px 10px;}
    .ai-kiln-mark{width:34px;height:34px;}
    .ai-kiln-summary-copy small{font-size:var(--fs-xs);}
    .ai-kiln-summary-copy b{font-size:12px;}
    .ai-kiln-detail{padding:1px 12px 12px;}
    .ai-kiln-reasons p{font-size:var(--fs-xs);}
    .ai-kiln-apply{min-height:44px;font-size:12px;}
    .c-foot{position:sticky;bottom:0;z-index:12;background:linear-gradient(to bottom,color-mix(in srgb,var(--card) 84%,transparent),var(--card) 26%);border-radius:0 0 var(--radius) var(--radius);backdrop-filter:blur(10px);}
    .community-grid{columns:2 180px}.works{grid-template-columns:repeat(2,minmax(0,1fr))}
    .view-zoom{left:10px;bottom:10px}
    /* Turn the large wall-thickness card into a small, non-obstructive status chip. */
    .thickness-hud{top:54px;right:10px;bottom:auto;gap:6px;padding:5px 7px;border-radius:999px;z-index:6;}
    .thickness-ring{width:25px;height:25px;}
    .thickness-hud small{display:none;}
    .thickness-hud b{font-size:var(--fs-xs);white-space:nowrap;}
    .pv-hint{bottom:58px;max-width:calc(100% - 24px);padding:5px 10px;font-size:var(--fs-xs);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    /* Firing readouts sit above the zoom rail, never over the title or toolbar. */
    .kiln-hud{top:auto;right:10px;bottom:52px;left:10px;transform:none;justify-content:flex-end;gap:4px;z-index:6;}
    .kiln-hud .g{min-width:0;padding:5px 7px;border-radius:8px;}
    .kiln-hud .g .k{font-size:var(--fs-xs);letter-spacing:.8px;}
    .kiln-hud .g .v{font-size:15px;}
    .kiln-hud .g .v small{font-size:var(--fs-xs);}
    .preview.is-firing .pv-hint{display:none;}
    .main{grid-template-rows:minmax(480px,62svh) auto;}
    .preview{min-height:480px;}
    .stepper{padding-top:9px;}
    .c-head{padding-top:8px;padding-bottom:6px;}
    .c-head .kick{margin-bottom:3px;}
    .c-head h2{font-size:20px;}
    .c-head p{display:none;}
    /* Choice families become tap-and-swipe rails. The task stays in one
       working view instead of turning every group into another long page. */
    .c-body>.grid{display:flex;grid-template-columns:none;gap:8px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;margin-inline:-2px;padding:1px 2px 8px;scrollbar-width:none;}
    .c-body>.grid::-webkit-scrollbar{display:none;}
    .c-body>.grid>.tile{flex:0 0 138px;min-height:68px;padding:8px;scroll-snap-align:start;}
    .c-body>.grid>.tile .td{display:none;}
    .c-body>.grid>.tile.row{min-height:68px;}
    .mobile-decision-active .c-body{padding-bottom:8px;}
    .mobile-decision-active .c-foot{display:none;}
    .mobile-decision-deck{margin:0 -2px;border:1px solid var(--line);border-radius:12px;background:var(--card-hi);overflow:hidden;}
    .mobile-decision-head{min-height:39px;padding:8px 11px;display:flex;align-items:center;gap:10px;border-bottom:1px solid var(--line-soft);}
    .mobile-decision-progress{flex:none;color:var(--seal-hi);font:600 var(--fs-xs)/1 var(--latin-d);letter-spacing:.12em;}
    .mobile-decision-title{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font:600 12px/1.25 var(--cjk);}
    .mobile-decision-swipe-hint{flex:none;margin-left:auto;color:var(--fg-faint);font:500 var(--fs-xs)/1 var(--cjk);letter-spacing:.08em;}
    .mobile-decision-swipe-hint[hidden]{display:none;}
    .mobile-decision-body{height:clamp(132px,21svh,196px);overflow-y:auto;overscroll-behavior:contain;padding:10px 11px 6px;scrollbar-width:thin;}
    .mobile-decision-page{display:none;animation:decisionIn .18s ease both;}
    .mobile-decision-page.active{display:block;}
    .mobile-decision-page>.sect-label:first-child{display:none;}
    .mobile-decision-page>.grid,.mobile-decision-page>.category-tabs{display:flex;grid-template-columns:none;gap:7px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;padding:1px 1px 7px;scroll-padding-inline:1px;scrollbar-width:none;}
    .mobile-decision-page>.grid::-webkit-scrollbar,.mobile-decision-page>.category-tabs::-webkit-scrollbar{display:none;}
    .mobile-decision-page>.grid>.tile{flex:0 0 calc((100% - 14px)/3);min-width:0;min-height:68px;padding:7px 4px;scroll-snap-align:start;}
    .mobile-decision-page>.grid>.tile .td{display:none;}
    .mobile-decision-page>.grid>.tile .tn{font-size:11.5px;line-height:1.25;}
    .mobile-decision-page>.grid>.tile .ic-wrap{width:28px;height:28px;}
    .mobile-decision-page>.grid>.tile .ic-wrap svg{width:19px;height:19px;}
    .mobile-decision-page>.grid>.tile[aria-pressed="true"]::before,
    .mobile-decision-page>.grid>.tile[aria-pressed="true"]::after{top:5px;right:5px;width:14px;height:14px;}
    .mobile-decision-page .tile[aria-pressed="true"]{background:color-mix(in srgb,var(--seal) 5%,var(--card-hi));animation:choiceSet .22s ease both;}
    .mobile-decision-page .form-mode-switch{position:static;margin:0;}
    .mobile-decision-page .form-mode-copy{margin:7px 2px 0;}
    .mobile-decision-page .fld{margin:3px 0 8px;}
    .mobile-decision-page .note,.mobile-decision-page .tool-callout{margin-top:6px;}
    .mobile-decision-nav{display:grid;grid-template-columns:minmax(88px,.65fr) 1.35fr;gap:7px;padding:8px;border-top:1px solid var(--line-soft);background:var(--card);}
    .mobile-decision-nav .btn{min-height:42px;padding:8px 10px;font-size:11px;line-height:1.25;}
    .mobile-decision-next[data-final="true"]{background:var(--seal);border-color:var(--seal);color:#fff;}
    .result{padding:62px 10px 10px;}
    .result .nameplate{gap:3px;}
    .result .pname{font-size:20px;letter-spacing:1.5px;}
    .result .pen{font-size:var(--fs-xs);letter-spacing:1.2px;}
    .result .grade{font-size:var(--fs-xs);letter-spacing:2.5px;padding:3px 10px;}
    .result-action-panel{width:calc(100% - 4px);max-width:520px;margin-top:8px;padding:7px;border-radius:10px;}
    .result-action-head{padding:0 1px 6px;}
    .result-action-head span{display:none;}
    .result-primary-actions .btn{min-height:31px;font-size:var(--fs-xs);}
    .result-utility{padding:4px 6px;font-size:var(--fs-xs);}
    .result-utility+.result-utility::before{margin-right:6px;}
  }
  @media(max-width:560px){
    .top{padding:10px 12px 8px;gap:7px;}.brand{font-size:16px;letter-spacing:3px;}.brand span{display:none;}
    .i-wrap{padding:110px 24px max(32px,5vh);}
    .intro-home{top:16px;left:16px;min-height:40px;padding:0 12px;font-size:var(--fs-xs);gap:9px;}
    .i-actions{width:min(100%,380px);flex-direction:column;gap:10px;}
    .i-actions .go{width:100%;min-height:52px;padding:14px 18px;}
    .main{grid-template-rows:minmax(300px,48svh) auto;gap:10px;padding:2px 10px max(10px,env(safe-area-inset-bottom));}
    .main:has(.preview.reveal){grid-template-rows:minmax(430px,55svh) auto;}
    .preview{min-height:300px;border-radius:15px;}.control{min-height:0;border-radius:15px;}
    .preview.reveal{min-height:clamp(380px,50svh,430px);}
    .stepper{padding:13px 14px 1px;}
    .c-head{padding:13px 16px 8px;}
    .c-head .kick{margin-bottom:6px;}
    .c-head h2{font-size:20px;line-height:1.25;}
    .c-head p{font-size:12px;line-height:1.55;}
    .c-body{padding:4px 16px 18px;}
    .pv-top{top:12px;left:12px;right:12px;gap:8px;align-items:flex-start;}
    .pv-top>div:first-child{min-width:0;max-width:calc(100% - 126px);}
    .pv-name{font-size:15px;letter-spacing:.6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .pv-sub{font-size:var(--fs-xs);letter-spacing:.7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
    .pv-tools{gap:3px;flex:none;}.pv-tool{width:27px;height:27px;}
    .c-foot{padding:12px 14px max(10px,env(safe-area-inset-bottom));gap:6px;}
    .failure-verdict{padding:13px 0 15px;}.failure-verdict b{font-size:18px;}
    .result-action-head{justify-content:center;}
    .result-utility-actions{max-height:44px;overflow:hidden;}
  }
  /* Phone-first controls: the workshop is frequently used one-handed. Keep
     every action comfortably tappable and avoid shrinking labels into targets. */
  @media(max-width:760px){
    button,.tile,.upload,.toggle,.kiln-spot,.cat-tab,.account-row{touch-action:manipulation;}
    .step{min-height:44px;}
    .step:not(:last-child)::after{top:21px;}
    .tile{min-height:52px;}
    .tile.row{min-height:58px;padding:10px 12px;}
    .tile .tn{font-size:12.5px;}
    .tile .td{font-size:var(--fs-xs);}
    .tile:active,.btn:active,.pv-tool:active,.acct:active,.icon-btn:active,.top-cta:active,.cat-tab:active,.kiln-spot:active{transform:scale(.97);}
    .c-foot{gap:9px;padding-top:12px;}
    .c-foot .btn{min-height:44px;padding:9px 16px;font-size:12px;}
    .c-foot .btn-next,.c-foot .btn-fire{flex:1;}
    .c-foot .btn-back{min-width:92px;}
    .pv-tool{width:40px;height:40px;}
    .view-zoom{min-height:40px;padding:3px 4px;}
    .zoom-btn{width:32px;height:32px;}
    .zoom-readout{min-width:48px;font-size:11px;}
    .kiln-handle{min-height:48px;padding:12px 21px;font-size:13px;}
    .kiln-check,.knead-card .btn,.cat-tab{min-height:44px;}
    .stoke-btn{min-height:46px;padding:11px 20px;font-size:13px;}
    .result-primary-actions .btn{min-height:44px;font-size:12px;}
    .result-utility-actions{display:flex;justify-content:flex-start;flex-wrap:nowrap;overflow-x:auto;max-height:none;margin:7px -2px -2px;padding:0 2px 3px;scrollbar-width:none;}
    .result-utility-actions::-webkit-scrollbar{display:none;}
    .result-utility{white-space:nowrap;min-height:38px;padding:8px 10px;font-size:var(--fs-xs);}
    .craft-touch-hud{position:absolute;z-index:8;left:10px;right:10px;bottom:10px;min-height:48px;display:none;align-items:center;gap:9px;padding:6px 7px 6px 8px;border:1px solid color-mix(in srgb,var(--line) 82%,transparent);border-radius:13px;background:color-mix(in srgb,var(--card-hi) 86%,transparent);box-shadow:0 12px 28px rgba(44,32,14,.14),inset 0 1px rgba(255,255,255,.7);backdrop-filter:blur(14px);}
    .preview[data-craft="true"] .craft-touch-hud{display:flex;}
    .craft-tool-mark{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:9px;background:var(--fg);color:var(--bg-0);font:600 13px var(--cjk);}
    .craft-touch-copy{min-width:0;display:flex;flex:1;flex-direction:column;gap:1px;}
    .craft-touch-copy b{font:600 12px/1.3 var(--cjk);letter-spacing:.2px;}
    .craft-touch-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fg-soft);font:var(--fs-xs)/1.3 var(--cjk);}
    .craft-undo{width:40px}.craft-mode{width:58px}.craft-undo,.craft-mode{height:40px;flex:none;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--fg);font:500 12px/1 var(--cjk);cursor:pointer;}
    .craft-undo svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;}
    .craft-undo:active,.craft-mode:active{transform:scale(.94);background:var(--fg);color:var(--bg-0);}
    .craft-mode.on{background:var(--amber);border-color:var(--amber);color:#fff;}
    .craft-contact{position:fixed;z-index:90;width:28px;height:28px;margin:-14px 0 0 -14px;border:2px solid rgba(255,255,255,.9);border-radius:50%;background:color-mix(in srgb,var(--seal) 30%,transparent);box-shadow:0 0 0 4px color-mix(in srgb,var(--card-hi) 42%,transparent);pointer-events:none;transform:scale(.7);opacity:0;transition:opacity .12s,transform .16s cubic-bezier(.2,.8,.2,1);}
    .craft-contact.show{display:block;opacity:1;transform:scale(1);}
    .paint-loupe{width:70px;height:70px;border-width:2px;background-size:400% 400%;}
    .preview[data-craft-mode="view"] .craft-tool-mark{background:var(--amber);}
    .preview[data-craft-mode="view"] .craft-touch-hud{border-color:color-mix(in srgb,var(--amber) 45%,var(--line));}
    .preview[data-craft="true"] .pv-hint{bottom:68px;}
    .preview[data-craft="true"] .view-zoom{bottom:70px;}
    .preview[data-craft="true"] .thickness-hud{top:58px;}
  }
  @media(prefers-reduced-motion:reduce){
    *,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;}
    .craft-contact,.craft-touch-hud,.craft-undo,.craft-mode{transition:none!important;animation:none!important;}
  }
  /* The workshop switches to one column at 760px, so the form picker must
     switch at the same breakpoint. Otherwise small laptop and tablet windows
     get the phone layout with desktop-sized cards. */
  @media(max-width:760px){
    .form-mobile-picker{margin-inline:-16px;}
    .control:has(.c-body[data-stage="form"]) .stepper{padding-top:9px;}
    .control:has(.c-body[data-stage="form"]) .c-head{padding-top:8px;padding-bottom:5px;}
    .control:has(.c-body[data-stage="form"]) .c-head .kick{margin-bottom:3px;}
    .control:has(.c-body[data-stage="form"]) .c-head h2{font-size:20px;}
    .control:has(.c-body[data-stage="form"]) .c-head p{display:none;}
    .control:has(.c-body[data-stage="form"]) .step-status{display:none;}
    .form-mobile-picker>.sect-label{margin-inline:16px;}
    .form-category-rail{display:flex;grid-template-columns:none;gap:6px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;padding:2px 16px 8px;background:none;scrollbar-width:none;}
    .form-category-rail::-webkit-scrollbar,.form-shape-rail::-webkit-scrollbar{display:none;}
    .form-category-rail .cat-tab{flex:0 0 auto;min-width:68px;max-width:none;min-height:40px;padding:6px 14px;white-space:nowrap;line-height:1.3;text-align:center;}
    .form-category-rail .cat-desc{display:none;}
    .form-shape-rail{display:flex!important;grid-template-columns:none!important;gap:8px!important;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;padding:1px 16px 10px;scroll-padding-inline:16px;scrollbar-width:none;}
    .form-shape-rail .tile{flex:0 0 92px;min-height:98px;padding:5px;scroll-snap-align:start;border-radius:10px;}
    .form-shape-rail .tile .thumb{height:58px;margin-bottom:3px;}
    .form-shape-rail .tile .tn{font-size:11px;line-height:1.25;}
    .form-shape-rail .tile .td{display:none;}
    .form-advanced-toggle{width:calc(100% - 32px);min-height:48px;margin:1px 16px 5px;padding:8px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:10px;background:var(--card-hi);color:var(--fg);text-align:left;cursor:pointer;}
    .form-advanced-toggle span{display:flex;min-width:0;flex-direction:column;gap:3px;}
    .form-advanced-toggle b{font:600 12px/1.25 var(--cjk);}
    .form-advanced-toggle small{color:var(--fg-soft);font:var(--fs-xs)/1.25 var(--cjk);}
    .form-advanced-toggle i{font:300 22px/1 var(--sans);font-style:normal;}
    .form-advanced-panel{display:none;padding:8px 16px 0;border-top:1px solid var(--line-soft);}
    .form-advanced-panel.open{display:block;}
    .form-advanced-panel .form-mode-switch{position:static;}
  }
  @media(max-width:560px){
    .top{position:relative;gap:4px;padding:8px 10px 6px;}
    .top .sp{display:none;}
    .brand{margin-right:auto;font-size:16px;letter-spacing:3px;}
    .icon-btn,.acct{width:40px;height:40px;padding:0;justify-content:center;border-radius:8px;}
    .acct>span:not(.av){display:none;}
    .acct .av,.acct .av svg{width:18px;height:18px;}
    .icon-btn svg{width:19px;height:19px;}
    .top-cta{display:none;}
    .main{grid-template-rows:minmax(480px,62svh) auto;padding-top:0;}
    .pv-top>div:first-child{max-width:calc(100% - 178px);}
    .preview.reveal .pv-top>div:first-child{max-width:calc(100% - 138px);}
    .pv-tools{gap:4px;}
    .pv-tool{width:40px;height:40px;}
    .preview{min-height:480px;}
    .preview[data-craft="true"]{min-height:480px;}
    .grid.c3{gap:7px;}
    .form-mobile-picker{margin-inline:-16px;}
    .control:has(.c-body[data-stage="form"]) .stepper{padding-top:9px;}
    .control:has(.c-body[data-stage="form"]) .c-head{padding-top:8px;padding-bottom:5px;}
    .control:has(.c-body[data-stage="form"]) .c-head .kick{margin-bottom:3px;}
    .control:has(.c-body[data-stage="form"]) .c-head h2{font-size:20px;}
    .control:has(.c-body[data-stage="form"]) .c-head p{display:none;}
    .control:has(.c-body[data-stage="form"]) .step-status{display:none;}
    .form-mobile-picker>.sect-label{margin-inline:16px;}
    .form-category-rail{display:flex;grid-template-columns:none;gap:6px;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x proximity;padding:2px 16px 8px;background:none;scrollbar-width:none;}
    .form-category-rail::-webkit-scrollbar,.form-shape-rail::-webkit-scrollbar{display:none;}
    .form-category-rail .cat-tab{flex:0 0 auto;min-width:68px;max-width:none;min-height:40px;padding:6px 14px;white-space:nowrap;line-height:1.3;text-align:center;}
    .form-category-rail .cat-desc{display:none;}
    .form-shape-rail{display:flex!important;grid-template-columns:none!important;gap:8px!important;overflow-x:auto;overscroll-behavior-inline:contain;scroll-snap-type:x mandatory;padding:1px 16px 10px;scroll-padding-inline:16px;scrollbar-width:none;}
    .form-shape-rail .tile{flex:0 0 92px;min-height:98px;padding:5px 5px;scroll-snap-align:start;border-radius:10px;}
    .form-shape-rail .tile .thumb{height:58px;margin-bottom:3px;}
    .form-shape-rail .tile .tn{font-size:11px;line-height:1.25;}
    .form-shape-rail .tile .td{display:none;}
    .form-advanced-toggle{width:calc(100% - 32px);min-height:48px;margin:1px 16px 5px;padding:8px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;border:1px solid var(--line);border-radius:10px;background:var(--card-hi);color:var(--fg);text-align:left;cursor:pointer;}
    .form-advanced-toggle span{display:flex;min-width:0;flex-direction:column;gap:3px;}
    .form-advanced-toggle b{font:600 12px/1.25 var(--cjk);}
    .form-advanced-toggle small{color:var(--fg-soft);font:var(--fs-xs)/1.25 var(--cjk);}
    .form-advanced-toggle i{font:300 22px/1 var(--sans);font-style:normal;}
    .form-advanced-panel{display:none;padding:8px 16px 0;border-top:1px solid var(--line-soft);}
    .form-advanced-panel.open{display:block;}
    .form-advanced-panel .form-mode-switch{position:static;}
    .grid.c3 .tile{padding:8px 5px;}
    .grid.c3 .tile .ic-wrap{width:28px;height:28px;}
    .grid.c3 .tile .td{font-size:var(--fs-xs);}
    .i-wrap{padding:136px 18px 36px;}
    .i-zh{font-size:clamp(66px,25vw,96px);letter-spacing:.1em;text-indent:.1em;}
    .i-en{font-size:var(--fs-xs);letter-spacing:.2em;text-indent:.2em;margin-top:12px;}
    .i-steps{max-width:330px;font-size:11.5px;line-height:1.8;letter-spacing:.1em;margin-bottom:16px;}
    .go{min-width:184px;min-height:48px;padding:13px 28px;font-size:12px;}
    .c-foot{flex-wrap:wrap;}
    .step-status{order:-1;flex:1 0 100%;max-width:none;text-align:left;padding:0 2px;}
  }
  @media(max-width:480px){.community-grid{columns:1}.works{grid-template-columns:1fr 1fr}.community-head{align-items:flex-start;flex-direction:column;gap:6px}}
  @keyframes rise{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}
  @keyframes decisionIn{from{opacity:.25;transform:translateX(8px)}to{opacity:1;transform:none}}
  @keyframes choiceSet{0%{transform:scale(.97)}65%{transform:scale(1.018)}100%{transform:none}}
  @keyframes ceramicistMark{0%,100%{transform:rotate(-2deg) translateY(0) scale(.98)}50%{transform:rotate(2deg) translateY(-1px) scale(1.025)}}
  @media(prefers-reduced-motion:reduce){.ai-kiln-mark img{animation:none}}

  .sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);}

/* Gesture preferences remain usable on touch screens and large displays. */
.gesture-settings{padding:6px 3px;font:11px/1.5 var(--cjk);color:var(--fg-soft);}
.gesture-settings summary{cursor:pointer;min-height:30px;display:flex;align-items:center;}
.gesture-settings label{display:flex;flex-direction:column;gap:3px;margin:7px 0;}
.gesture-settings input{width:100%;accent-color:var(--amber);min-height:28px;}
.gesture-neutral{width:100%;min-height:36px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--fg);font:inherit;cursor:pointer;}
.gesture-neutral:disabled{opacity:.45;cursor:default;}
.gesture-settings p{font-size:11px;line-height:1.6;}
.gesture-panel{max-height:calc(100svh - 160px);overflow:auto;}

.gesture-cursor[data-contact="hover"]{background:transparent;border:2px solid var(--amber);box-shadow:none;}
.gesture-cursor[data-contact="touch"]{box-shadow:0 0 0 8px color-mix(in srgb,var(--amber) 18%,transparent),0 0 20px color-mix(in srgb,var(--amber) 35%,transparent);}
.gesture-cursor[data-motion="out"]{outline:2px solid color-mix(in srgb,var(--amber) 35%,transparent);outline-offset:9px;}
.gesture-cursor[data-motion="in"]{outline:2px solid color-mix(in srgb,var(--amber) 55%,transparent);outline-offset:3px;}

/* Camera studio: real scene is the stage, translucent WebGL stays in front. */
.gesture-main-camera{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transform:scaleX(-1);background:#211e1a;pointer-events:none;z-index:0;filter:var(--cam-filter,none);transition:filter .4s;}
.gesture-main-overlay{position:absolute;pointer-events:none;z-index:3;}
html[data-gesture="on"] .main{grid-template-columns:1fr;}
html[data-gesture="on"] .control{display:none;}
html[data-gesture="on"] .preview{min-height:0;background:#211e1a;}
html[data-gesture="on"] #stage3d{position:relative;z-index:2;}
.gesture-mouse{width:100%;min-height:40px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--fg);font:500 12px var(--cjk);cursor:pointer;}
.gesture-transfer{display:flex;gap:6px;margin:8px 0;}
.gesture-transfer button,.gesture-import{flex:1;min-height:36px;padding:8px;border:1px solid var(--line);border-radius:6px;background:var(--card);font:inherit;cursor:pointer;text-align:center;}
.gesture-import input{max-width:100%;font-size:var(--fs-xs);}
@media(max-width:760px){html[data-gesture="on"] .main{grid-template-rows:1fr;padding-bottom:12px;}}

html[data-gesture="on"] #stage3d{transform:translate(var(--gesture-x,0%),var(--gesture-y,8%)) scale(var(--gesture-scale,1));transform-origin:50% 50%;}
html[data-gesture="on"] .pv-hint{display:none;}
.gesture-depth-note{padding:8px;border-radius:7px;background:var(--card);}

.camera-entry{display:none;position:absolute;inset:0;z-index:12;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:32px;background:linear-gradient(130deg,rgba(252,249,242,.94),rgba(230,222,204,.92));}
html:not([data-camera-entry="chosen"]):not([data-gesture="on"]) .main:has(.c-body[data-stage="form"]) .camera-entry{display:flex;}
.camera-entry-kicker{font:500 var(--fs-xs) var(--sans);letter-spacing:.18em;color:var(--fg-faint);}
.camera-entry h2{font:400 clamp(24px,3vw,42px)/1.3 var(--serif);margin:20px 0 10px;}
.camera-entry p{max-width:340px;font:13px/1.8 var(--sans);color:var(--fg-soft);margin:0 0 26px;}
.camera-entry-start{min-height:48px;padding:12px 28px;border:0;border-radius:9px;background:var(--fg);color:var(--card-hi);font:500 14px var(--sans);cursor:pointer;}
.camera-entry-mouse{margin-top:12px;min-height:40px;border:0;background:transparent;font:12px var(--sans);color:var(--fg-soft);text-decoration:underline;text-underline-offset:4px;cursor:pointer;}
@media(prefers-reduced-motion:no-preference){.camera-entry-start{transition:transform .16s;}.camera-entry-start:hover{transform:translateY(-2px);}}

.gesture-actions{display:flex;gap:7px;margin-bottom:6px;}
.gesture-actions button{min-height:40px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;font:500 12px var(--sans);cursor:pointer;}
.gesture-finish{flex:1;background:var(--fg);color:var(--card-hi);}
.gesture-fullscreen{background:var(--card);color:var(--fg);}
.gesture-status small{font-size:12px;line-height:1.5;}

.gesture-settings select{min-height:40px;width:100%;padding:6px 8px;border:1px solid var(--line);border-radius:7px;background:var(--card);color:var(--fg);font:12px var(--sans);}

.gesture-settings label[hidden]{display:none;}
.gesture-settings output{font:500 12px var(--sans);color:var(--fg);font-variant-numeric:tabular-nums;}

/* Keep session actions visible while preferences scroll independently. */
.gesture-settings{min-height:0;}
.gesture-settings[open]{overflow-y:auto;overscroll-behavior:contain;max-height:min(560px,calc(100svh - 290px));scrollbar-width:thin;}
.gesture-settings summary{min-height:44px;position:sticky;top:0;z-index:1;background:var(--card-hi);}
.gesture-settings input[type="range"]{min-height:40px;touch-action:pan-y;}
.gesture-settings select,.gesture-settings .gesture-recal,.gesture-transfer button{min-height:44px;}
.gesture-status{flex-shrink:0;}
@media(max-height:500px){.gesture-settings[open]{max-height:calc(100svh - 260px);}.gesture-settings summary{min-height:40px;}}

html[data-gesture="on"] .craft-touch-hud{display:none!important;}
.gesture-actions button,.gesture-mouse{min-height:44px;}

/* 转台转速：画面底部中央，制作阶段唯一常驻的主控件 */
.wheel-ctl{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:6;display:none;align-items:center;gap:2px;padding:4px;background:color-mix(in srgb,var(--card) 88%,transparent);border:1px solid var(--line);border-radius:999px;backdrop-filter:blur(12px);box-shadow:0 10px 28px rgba(45,34,18,.12);}
.preview.has-wheel .wheel-ctl{display:flex}
.preview.has-wheel .pv-hint{bottom:66px}
.wheel-ic{width:22px;height:22px;margin:0 6px 0 6px;border-radius:50%;border:1.5px solid var(--fg-soft);position:relative;}
.wheel-ic::after{content:"";position:absolute;top:50%;left:50%;width:8px;height:1.5px;background:var(--fg-soft);transform-origin:0 50%;}
.wheel-ctl[data-spin="1"] .wheel-ic{animation:wheelIc 1.6s linear infinite}
.wheel-ctl[data-spin="2"] .wheel-ic{animation:wheelIc .55s linear infinite}
@keyframes wheelIc{to{transform:rotate(360deg)}}
.wheel-ctl button{min-width:44px;height:32px;border:0;border-radius:999px;background:transparent;color:var(--fg-soft);font:500 13px/1 var(--cjk);letter-spacing:1px;cursor:pointer;transition:background .18s,color .18s,box-shadow .18s;}
.wheel-ctl button:hover{background:color-mix(in srgb,var(--fg) 6%,transparent);color:var(--fg)}
.wheel-ctl button:active{transform:scale(.95)}
.wheel-ctl button:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--fg) 30%,transparent)}
.wheel-ctl button[aria-checked="true"]{background:var(--fg);color:var(--bg-0)}
@media (prefers-reduced-motion:reduce){.wheel-ic{animation:none!important}}

/* 摄像头调色：暗角把视线收到中央的陶器上 */
.cam-grade{position:absolute;inset:0;z-index:1;pointer-events:none;display:none;background:radial-gradient(ellipse 70% 62% at 50% 48%,transparent 0,transparent 45%,rgba(20,14,8,.55) 100%);}
html[data-gesture="on"] .cam-grade{display:block}
html[data-gesture="on"] .preview::after{content:"";position:absolute;inset:0;z-index:7;pointer-events:none;background:#fff;opacity:0;transition:opacity .45s;}
html[data-gesture="on"]:has(.gesture-panel[data-snap="flash"]) .preview::after{opacity:.85;transition:none}
.cam-look{display:flex;gap:4px;margin-bottom:8px;}
.cam-look button{flex:1;display:flex;flex-direction:column;align-items:center;gap:5px;padding:7px 0 6px;border:0;border-radius:8px;background:transparent;color:var(--fg-soft);font:500 12px/1 var(--cjk);cursor:pointer;transition:background .18s,color .18s,box-shadow .18s;}
.cam-look i{width:20px;height:20px;border-radius:50%;background:var(--sw);box-shadow:inset 0 0 0 1px rgba(0,0,0,.08);}
.cam-look button:hover{background:color-mix(in srgb,var(--fg) 5%,transparent);color:var(--fg)}
.cam-look button[aria-checked="true"]{color:var(--fg);background:color-mix(in srgb,var(--fg) 7%,transparent)}
.cam-look button[aria-checked="true"] i{box-shadow:0 0 0 2px var(--card),0 0 0 3.5px color-mix(in srgb,var(--fg) 45%,transparent)}
.cam-look button:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--fg) 30%,transparent)}
.gesture-snap{background:var(--card);color:var(--fg);}
.gesture-panel[data-snap] .gesture-snap{opacity:.5;pointer-events:none}
.cam-count{content:attr(data-count);position:fixed;left:50%;top:44%;transform:translate(-50%,-50%);z-index:60;font:300 120px/1 "Noto Serif SC",serif;color:rgba(252,248,239,.95);text-shadow:0 6px 40px rgba(0,0,0,.35);pointer-events:none;animation:camCount .8s ease-out;}
@keyframes camCount{from{opacity:0;transform:translate(-50%,-50%) scale(1.25)}20%{opacity:1}to{opacity:.0;transform:translate(-50%,-50%) scale(.92)}}
.btn-quiet{background:transparent;color:var(--fg);border:1px solid var(--line);}
.btn-quiet:hover{background:color-mix(in srgb,var(--fg) 5%,transparent);box-shadow:0 4px 14px rgba(45,34,18,.08)}
.result-primary-actions{grid-template-columns:1.4fr 1fr}
/* 底栏按钮文字不折行，需要让位的是左侧说明 */
.c-foot .btn{white-space:nowrap;flex-shrink:0}
.skip-row{margin-bottom:14px}
.btn:disabled{opacity:.42;cursor:not-allowed;box-shadow:none;transform:none}

/* 工具按钮的悬停说明：图标看不懂时，停一下就知道它做什么 */
[data-tip]{position:relative}
[data-tip]::after{content:attr(data-tip);position:absolute;top:calc(100% + 8px);right:0;z-index:30;width:max-content;max-width:220px;padding:7px 10px;border-radius:8px;background:var(--fg);color:var(--bg-0);font:400 12px/1.5 var(--cjk);letter-spacing:.2px;text-align:left;white-space:normal;box-shadow:0 8px 22px rgba(30,22,12,.18);opacity:0;transform:translateY(-3px);pointer-events:none;transition:opacity .16s,transform .16s;}
[data-tip]:hover::after,[data-tip]:focus-visible::after{opacity:1;transform:none;transition-delay:.25s}
@media (hover:none){[data-tip]::after{display:none}}

/* ── 工艺师：悬浮在工作台左上（作品名下方），不占左侧面板 ── */
.preview .ai-kiln-advisor,.preview .ai-kiln-advisor.open{position:absolute;z-index:9;top:84px;left:18px;right:auto;width:auto;max-width:min(320px,calc(100% - 36px));margin:0;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--card-hi) 92%,transparent);backdrop-filter:blur(14px);box-shadow:0 12px 32px rgba(54,38,18,.12);transition:box-shadow .2s,background .2s;animation:aiIn .35s cubic-bezier(.2,.8,.2,1) both}
.preview .ai-kiln-advisor[hidden]{display:none}
.preview .ai-kiln-advisor.open{width:320px}
.preview .ai-kiln-advisor:hover{box-shadow:0 16px 38px rgba(54,38,18,.16)}
.preview .ai-kiln-advisor.alert{background:color-mix(in srgb,var(--amber) 9%,var(--card-hi))}
@keyframes aiIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.preview .ai-kiln-summary,.preview .ai-kiln-advisor:not(.open) .ai-kiln-summary{min-height:44px;padding:6px 12px 6px 7px;justify-content:flex-start;gap:9px;border-radius:14px}
.preview .ai-kiln-advisor:not(.open) .ai-kiln-summary-copy{display:flex}
.preview .ai-kiln-advisor:not(.open) .ai-kiln-summary-copy small{display:none}
.preview .ai-kiln-advisor:not(.open) .ai-kiln-summary-copy b{max-width:220px}
.preview .ai-kiln-summary:focus-visible{outline:none;box-shadow:0 0 0 2px color-mix(in srgb,var(--fg) 30%,transparent)}
.preview .ai-kiln-mark{width:30px;height:30px;border-radius:50%;background:var(--card)}
.preview .ai-kiln-advisor.alert .ai-kiln-mark{background:var(--amber)}
.preview .ai-kiln-summary-copy small{font:600 11px/1.2 var(--cjk);letter-spacing:.06em;color:var(--fg-faint)}
.preview .ai-kiln-advisor.alert .ai-kiln-summary-copy small{color:var(--amber)}
.preview .ai-kiln-summary-copy b{font:600 13px/1.35 var(--cjk)}
.preview .ai-kiln-chevron{font-size:16px}
.preview .ai-kiln-detail{padding:4px 14px 14px}
.preview .ai-kiln-reasons b{font-size:12.5px}
.preview .ai-kiln-reasons p{font:12.5px/1.65 var(--cjk);color:var(--fg-soft)}
.preview .ai-kiln-odds small{font-size:11px}
.preview .ai-kiln-advice small{font-size:11px}
.preview .ai-kiln-advice b{font-size:12.5px}
.preview .ai-kiln-apply{min-height:38px;font-size:12.5px;white-space:normal;line-height:1.4;padding:8px 10px}
.preview .ai-kiln-disclaimer{font-size:11px}
.ai-kiln-alert-actions{display:flex;flex-direction:column;gap:6px;margin-top:10px}
.ai-kiln-alert-actions .ai-kiln-apply{margin-top:0}
.ai-kiln-dismiss{min-height:34px;border:0;border-radius:8px;background:transparent;color:var(--fg-soft);font:500 12.5px/1 var(--cjk);cursor:pointer}
.ai-kiln-dismiss:hover{background:color-mix(in srgb,var(--fg) 5%,transparent);color:var(--fg)}
html[data-gesture="on"] .preview .ai-kiln-advisor{display:none}
.preview.reveal .ai-kiln-advisor,.preview.is-firing .ai-kiln-advisor{display:none}
@media(max-width:760px){.preview .ai-kiln-advisor,.preview .ai-kiln-advisor.open{top:64px;bottom:auto;left:10px;max-width:calc(100% - 20px)}.preview .ai-kiln-advisor.open{width:calc(100% - 20px)}}
/* 红线：悬停不加深边框，只给阴影 + 极轻底色 */
.acct:hover,.top-cta:hover,.tile:hover,.upload:hover,.placement-mode:hover,.btn-back:hover,.pv-tool:hover,.zone-btn:hover{border-color:var(--line);box-shadow:0 6px 18px rgba(45,34,18,.10);background-color:color-mix(in srgb,var(--fg) 3%,var(--card))}
.tile[aria-pressed="true"]:hover{border-color:var(--seal)}
.pv-tool:disabled,.craft-undo:disabled{opacity:.35;cursor:default;box-shadow:none;background:transparent}
.pv-tool:disabled:hover{box-shadow:none;background:transparent}
@media(max-width:760px){
  .preview.has-wheel .wheel-ctl{left:auto;right:12px;transform:none;bottom:76px}
  .preview.has-wheel .view-zoom{bottom:76px}
  .preview[data-craft="true"] .pv-hint{display:none}
  .wheel-ctl button{min-width:40px;height:36px}
}
/* 镜头模式下背景是暗的真人画面，作品名改浅色才看得见 */
html[data-gesture="on"] .pv-name{color:#f6f1e7;text-shadow:0 1px 12px rgba(0,0,0,.45)}
html[data-gesture="on"] .pv-sub{color:rgba(246,241,231,.7)}

/* ── 工艺师收起态：只是一枚没有底的小印，轻轻呼吸；有提醒时转琥珀色并起涟漪，从不自动弹字 ── */
.preview .ai-kiln-advisor:not(.open){background:transparent;border-color:transparent;box-shadow:none;backdrop-filter:none;max-width:none;width:auto;animation:none}
.preview .ai-kiln-advisor:not(.open):hover{box-shadow:none;background:transparent}
.preview .ai-kiln-advisor:not(.open) .ai-kiln-summary{min-height:0;padding:4px;border-radius:50%}
.preview .ai-kiln-advisor:not(.open) .ai-kiln-summary-copy,.preview .ai-kiln-advisor:not(.open) .ai-kiln-chevron{display:none}
.preview .ai-kiln-advisor:not(.open) .ai-kiln-mark{width:40px;height:40px;background:transparent;position:relative;transition:transform .2s}
.preview .ai-kiln-advisor:not(.open) .ai-kiln-mark img{width:28px;height:28px}
.preview .ai-kiln-advisor:not(.open) .ai-kiln-summary:hover .ai-kiln-mark{transform:scale(1.08)}
.preview .ai-kiln-advisor.alert:not(.open) .ai-kiln-mark{background:transparent}
.preview .ai-kiln-advisor.alert:not(.open) .ai-kiln-mark::before{content:"";position:absolute;inset:2px;border-radius:50%;background:color-mix(in srgb,var(--amber) 22%,transparent)}
.preview .ai-kiln-advisor.alert:not(.open) .ai-kiln-mark::after{content:"";position:absolute;inset:0;border-radius:50%;border:1.5px solid var(--amber);animation:aiRipple 1.8s ease-out infinite}
.preview .ai-kiln-advisor.alert:not(.open) .ai-kiln-mark img{position:relative}
@keyframes aiRipple{from{transform:scale(.7);opacity:.9}to{transform:scale(1.5);opacity:0}}
/* 悬停说明从图标右侧出，不压住作品名 */
.preview .ai-kiln-advisor[data-tip]::after{top:50%;left:calc(100% + 6px);right:auto;transform:translate(-3px,-50%)}
.preview .ai-kiln-advisor[data-tip]:hover::after{transform:translate(0,-50%)}
.preview .ai-kiln-advisor.open[data-tip]::after{display:none}
@media(prefers-reduced-motion:reduce){.preview .ai-kiln-advisor.alert .ai-kiln-mark::after{animation:none}}
/* 2026-10-02 视觉/移动端修正 */
.upload:hover{color:var(--fg)}
.process-fx.show{z-index:15}
#restartBtn{background:transparent;border-color:transparent;color:var(--fg-soft)}
#restartBtn:hover{border-color:transparent;color:var(--fg);background:color-mix(in srgb,var(--fg) 5%,transparent);box-shadow:none}
.category-tabs{grid-template-columns:repeat(auto-fit,minmax(104px,1fr))}
.cat-tab{padding:8px 6px;line-height:1.2}
.cat-desc{line-height:1.3}
@media(max-width:760px){
  .result-primary-actions .btn,.result-utility,.mobile-decision-nav .btn,.top-cta,.acct,.icon-btn,.zone-btn,.ai-kiln-apply,.kiln-check,.btn-back,.btn-next,.btn-fire{min-height:44px}
  .icon-btn{min-width:44px}
  .result-utility{padding:8px 10px}
  .intro-home{min-height:44px}
}
@media(max-width:760px){
  .gesture-btn,.pv-tool{min-height:44px}
  .pv-tool{min-width:44px}
  .zoom-btn{min-width:40px;min-height:40px}
  .wheel-ctl button{min-height:44px;min-width:44px}
}

@media (max-width:760px){.tile .tn-en{display:none}.tile .tn{word-break:keep-all}}

/* ── 2026-10-04 镜头模式：全屏沉浸 ──
   真人画面铺满，陶器居中。上：这一步做什么；右侧中部（手抬起来够得到）：下一步与拍照录像；
   下：转台与缩放；右上：滤镜与设置，用时才展开。所有可隔空点按的按钮都够大（≥56px）。 */
html[data-gesture="on"]:not([data-exhibit="on"]) .preview{position:fixed;inset:0;z-index:40;border:0;border-radius:0;box-shadow:none;min-height:0;margin:0}
html[data-gesture="on"]:not([data-exhibit="on"]) body{overflow:hidden}
html[data-gesture="on"] .preview::before{content:"";position:absolute;inset:0;z-index:4;pointer-events:none;background:linear-gradient(180deg,rgba(18,13,8,.5) 0,rgba(18,13,8,0) 20%,rgba(18,13,8,0) 74%,rgba(18,13,8,.45) 100%)}
html[data-gesture="on"] .pv-tools,html[data-gesture="on"] .thickness-hud{display:none}
html[data-gesture="on"] .pv-top{top:22px;left:26px;z-index:6}
html[data-gesture="on"] .pv-name{font-size:22px}
html[data-gesture="on"] .gesture-panel{position:fixed;inset:0;z-index:95;width:auto;max-height:none;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;overflow:visible;pointer-events:none}
html[data-gesture="on"] .gesture-panel>*{pointer-events:auto}
html[data-gesture="on"] .gesture-panel>.gx-coach,html[data-gesture="on"] .gesture-panel>.gx-legend,html[data-gesture="on"] .gesture-panel>.gx-toast{pointer-events:none}
.gx-coach,.gx-corner,.gx-drawer,.gx-rail,.gx-legend,.gx-toast{display:none}
html[data-gesture="on"] .gx-corner,html[data-gesture="on"] .gx-rail,html[data-gesture="on"] .gx-legend{display:flex}
html[data-gesture="on"] .gx-coach,html[data-gesture="on"] .gx-toast{display:flex}
.gx-shavings{position:absolute;inset:0;width:100%;height:100%;z-index:3;pointer-events:none}

/* 上：指令。标题 = 工序 + 转台状态；下一行随手的动作即时变化 */
.gx-coach{position:fixed;top:20px;left:50%;transform:translateX(-50%);align-items:center;gap:12px;max-width:min(560px,calc(100vw - 520px));min-width:280px;padding:12px 22px 12px 16px;border-radius:16px;background:rgba(24,18,12,.56);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#f6f1e7;box-shadow:0 10px 30px rgba(0,0,0,.22)}
.gx-coach b{display:block;font:600 17px/1.3 var(--cjk);letter-spacing:.04em}
.gx-coach small{display:block;margin-top:4px;font:400 14px/1.5 var(--cjk);color:rgba(246,241,231,.84);min-height:21px}
.gx-mark{flex:none;width:10px;height:10px;border-radius:50%;background:rgba(246,241,231,.45);transition:background .2s,box-shadow .2s}
.gx-mark[data-mark="active"]{background:#f0aa60;box-shadow:0 0 0 5px rgba(240,170,96,.22)}
.gx-mark[data-mark="ready"]{background:#f6f1e7}
.gx-mark[data-mark="lost"],.gx-mark[data-mark="off"]{background:rgba(246,241,231,.2)}

/* 右上：滤镜（收起成一枚胶囊）· 手感设置 · 全屏 · 退出 */
.gx-corner{position:fixed;top:18px;right:20px;align-items:center;gap:8px}
.gx-chip,.gx-icon{display:inline-flex;align-items:center;justify-content:center;border:0;color:#f6f1e7;background:rgba(24,18,12,.5);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:0 6px 20px rgba(0,0,0,.16);cursor:pointer;transition:background .18s,box-shadow .18s,transform .18s}
.gx-chip{gap:9px;height:48px;padding:0 18px 0 12px;border-radius:999px;font:500 14px/1 var(--cjk)}
.gx-chip i{width:20px;height:20px;border-radius:50%;background:var(--sw,#b58a5c);box-shadow:inset 0 0 0 1px rgba(255,255,255,.2)}
.gx-icon{width:48px;height:48px;border-radius:50%}
.gx-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.gx-chip:hover,.gx-icon:hover,.gx-chip[aria-expanded="true"],.gx-icon[aria-expanded="true"]{background:rgba(24,18,12,.68);box-shadow:0 10px 26px rgba(0,0,0,.26)}
.gx-chip:focus-visible,.gx-icon:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(246,241,231,.45)}
html[data-gesture="on"] .gx-drawer:not([hidden]){display:block}
.gx-drawer{position:fixed;top:78px;right:20px;width:320px;padding:12px 12px 6px;border-radius:16px;background:rgba(252,248,239,.95);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);box-shadow:0 18px 44px rgba(0,0,0,.28);animation:gxIn .2s cubic-bezier(.2,.8,.2,1)}
.gx-drawer-h{display:block;margin:2px 4px 6px;color:var(--fg-faint);font:600 11px/1 var(--cjk);letter-spacing:.12em}
.gx-drawer .cam-look button{min-height:56px}
.gx-drawer .camfx-bg button{min-height:56px}
@keyframes gxIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
/* 手感设置：从右上展开的侧卡 */
html[data-gesture="on"] .gesture-settings{display:none;position:fixed;top:78px;right:20px;width:330px;max-height:calc(100svh - 110px);overflow-y:auto;padding:4px 16px 14px;border-radius:16px;background:rgba(252,248,239,.97);box-shadow:0 18px 44px rgba(0,0,0,.28)}
html[data-gesture="on"] .gesture-settings[open]{display:block;max-height:calc(100svh - 110px)}
html[data-gesture="on"] .gesture-settings summary{pointer-events:none;font:600 13px var(--cjk);color:var(--fg);list-style:none}
html[data-gesture="on"] .gesture-settings summary::-webkit-details-marker{display:none}

/* 右侧中部：手抬起来就能指到。主按钮 = 下一步 */
.gx-rail{position:fixed;right:22px;top:50%;transform:translateY(-50%);flex-direction:column;gap:10px;width:176px}
.gx-rail .gesture-finish{min-height:68px;padding:12px 16px;border:0;border-radius:18px;background:#f6f1e7;color:#1d1813;font:600 15px/1.35 var(--cjk);letter-spacing:.02em;box-shadow:0 12px 30px rgba(0,0,0,.3);cursor:pointer;transition:transform .18s,box-shadow .18s}
.gx-rail .gesture-finish:hover{box-shadow:0 16px 36px rgba(0,0,0,.36)}
.gx-rail .gesture-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0}
.gx-rail .gesture-actions button{min-height:58px;padding:6px;border:0;border-radius:14px;background:rgba(24,18,12,.5);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#f6f1e7;font:500 13.5px/1.2 var(--cjk);box-shadow:0 6px 18px rgba(0,0,0,.16);cursor:pointer;transition:background .18s,box-shadow .18s,transform .18s}
.gx-rail .gesture-actions button:hover{background:rgba(24,18,12,.66);box-shadow:0 10px 24px rgba(0,0,0,.24)}
.gx-rail .camfx-rec{justify-content:center}
.gx-rail .camfx-rec[data-on="1"]{background:rgba(196,64,47,.86);color:#fff}
.gx-rail .camfx-rec[data-on="1"] i{background:#fff}
.gx-rail .camfx-save{margin:0;min-height:52px;border-radius:14px;background:#f6f1e7;color:#1d1813}

/* 左下：手势图例，不占交互，只是随时提醒 */
.gx-legend{position:fixed;left:24px;bottom:26px;flex-direction:column;gap:7px;padding:12px 16px 12px 12px;border-radius:14px;background:rgba(24,18,12,.4);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:rgba(246,241,231,.86);font:400 12.5px/1.35 var(--cjk)}
.gx-legend span{display:flex;align-items:center;gap:8px}
.gx-legend b{width:22px;text-align:center;font:400 16px/1 sans-serif}

.gx-toast{position:fixed;left:50%;top:38%;transform:translate(-50%,-50%);padding:14px 28px;border-radius:999px;background:rgba(24,18,12,.62);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);color:#f6f1e7;font:500 20px/1.3 var(--cjk);letter-spacing:.06em;opacity:0;transition:opacity .22s;white-space:nowrap}
.gx-toast.show{opacity:1}

/* 下：转台与缩放并排，放大到隔空也点得中 */
html[data-gesture="on"] .wheel-ctl{bottom:26px;gap:4px;padding:6px 6px 6px 14px;border:0;background:rgba(24,18,12,.5);box-shadow:0 8px 24px rgba(0,0,0,.2);z-index:6}
html[data-gesture="on"] .wheel-ctl::before{content:attr(aria-label);margin-right:4px;color:rgba(246,241,231,.7);font:500 12px/1 var(--cjk);letter-spacing:.08em;white-space:nowrap}
html[data-gesture="on"] .wheel-ic{border-color:rgba(246,241,231,.7)}
html[data-gesture="on"] .wheel-ic::after{background:rgba(246,241,231,.7)}
html[data-gesture="on"] .wheel-ctl button{min-width:66px;height:52px;color:rgba(246,241,231,.86);font-size:15px}
html[data-gesture="on"] .wheel-ctl button:hover{background:rgba(246,241,231,.12);color:#fff}
html[data-gesture="on"] .wheel-ctl button[aria-checked="true"]{background:#f6f1e7;color:#1d1813}
html[data-gesture="on"] .view-zoom{left:auto;right:22px;bottom:26px;padding:6px;gap:4px;border:0;border-radius:999px;background:rgba(24,18,12,.5);box-shadow:0 8px 24px rgba(0,0,0,.2);z-index:6}
html[data-gesture="on"] .zoom-btn{width:52px;height:52px;border-radius:50%;color:#f6f1e7;font-size:22px}
html[data-gesture="on"] .zoom-btn:hover{background:rgba(246,241,231,.12)}
html[data-gesture="on"] .zoom-readout{color:#f6f1e7;border-color:rgba(246,241,231,.2)}

/* 隔空点按：指尖处一圈进度，走满即点；被指住的按钮只发光，不加边框 */
.air-cursor{position:fixed;left:0;top:0;z-index:99;width:60px;height:60px;margin:-30px 0 0 -30px;border-radius:50%;pointer-events:none;opacity:0;transition:opacity .12s;background:conic-gradient(#f0aa60 calc(var(--p,0) * 1turn),rgba(246,241,231,.28) 0);-webkit-mask:radial-gradient(circle,transparent 23px,#000 24px);mask:radial-gradient(circle,transparent 23px,#000 24px);filter:drop-shadow(0 2px 6px rgba(0,0,0,.4))}
.air-cursor.show{opacity:1}
[data-air-hover]{box-shadow:0 0 28px rgba(240,170,96,.6),0 10px 26px rgba(0,0,0,.24)!important;transform:scale(1.04)}

@media(max-width:1100px){.gx-coach{max-width:calc(100vw - 48px);top:84px}.gx-legend{display:none!important}}
@media(max-width:760px){
  html[data-gesture="on"] .pv-top{top:16px;left:16px}
  .gx-corner{top:12px;right:12px;gap:6px}.gx-chip{height:44px;padding:0 12px 0 10px;font-size:12px}.gx-icon{width:44px;height:44px}
  .gx-coach{top:72px;min-width:0;padding:10px 14px}.gx-coach b{font-size:15px}.gx-coach small{font-size:13px}
  .gx-rail{right:12px;width:132px;top:auto;bottom:104px;transform:none}.gx-rail .gesture-finish{min-height:56px;font-size:13.5px}.gx-rail .gesture-actions button{min-height:48px;font-size:12px}
  .gx-drawer,html[data-gesture="on"] .gesture-settings{top:64px;right:12px;width:calc(100vw - 24px)}
  html[data-gesture="on"] .wheel-ctl{left:12px;right:auto;transform:none;bottom:20px}html[data-gesture="on"] .wheel-ctl::before{display:none}html[data-gesture="on"] .wheel-ctl button{min-width:52px;height:44px}
  html[data-gesture="on"] .view-zoom{right:12px;bottom:20px}html[data-gesture="on"] .zoom-btn{width:44px;height:44px}
}
@media(prefers-reduced-motion:reduce){.gx-drawer{animation:none}[data-air-hover]{transform:none}}
/* 镜头画坯：画法切换只在画坯这一步出现 */
.gx-rail .gx-deco{display:none}
.gesture-panel[data-stage="deco"] .gx-rail .gx-deco{display:grid}
.gx-rail .gx-deco button[aria-pressed="true"]{background:#f6f1e7;color:#1d1813}
