  :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","Hanken Grotesk",sans-serif;
    --sans:"Hanken Grotesk","Noto Sans SC",system-ui,sans-serif;
    --cjk:"Noto Sans SC","Hanken Grotesk",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;
  }
  *{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;
  }
  /* 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:600;font-size:18px;letter-spacing:5px;color:var(--fg);}
  .brand span{font-family:var(--latin-d);font-weight:400;font-size:9.5px;letter-spacing:3px;color:var(--fg-faint);margin-left:9px;}
  .top .sp{flex:1;}
  .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;gap:5px;height:28px;font-family:var(--sans);font-size:10.5px;font-weight:300;letter-spacing:.55px;color:var(--fg);
    background:transparent;border:1px solid var(--line);border-radius:4px;padding:0 9px;cursor:pointer;transition:.16s;box-sizing:border-box;}
  .acct:hover{border-color:var(--fg-faint);}
  .acct .av{width:14px;height:14px;color:var(--fg-soft);display:grid;place-items:center;}
  .acct .av svg{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;}
  .top-cta{display:inline-flex;align-items:center;height:28px;font-family:var(--sans);font-weight:300;font-size:10.5px;letter-spacing:.75px;padding:0 10px;border-radius:4px;
    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;}
  }

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

  /* 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:10.5px;
    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:10px/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{border-color:var(--fg);}

  .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:10.5px;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:10.5px;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:8.5px;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:10px;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);}

  /* 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:10px;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);}

  .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:185px;color:var(--amber-hi);font:10.5px/1.35 var(--cjk);}
  .step-status[hidden]{display:none;}
  .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,.secondary-skip:focus-visible{border-style:solid;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;}
  .btn:focus-visible{outline:2px solid var(--seal-hi);outline-offset:2px;}
  .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;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;}
  #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)}
  .pv-tool svg{width:16px;height:16px;stroke:currentColor;fill:none;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;}
  .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:var(--fg);color:var(--bg-0)}.zoom-btn:active{transform:scale(.94)}
  .zoom-readout{min-width:48px;text-align:center;color:var(--fg);font:500 10px/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:9px 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;}
  .pour-scene{position:absolute;inset:0;overflow:hidden}.pour-bowl{position:absolute;z-index:3;left:57%;top:3%;width:150px;height:76px;border-radius:12px 12px 68px 68px;background:linear-gradient(160deg,#f8f2e5 8%,#b9a789 62%,#75654f);border:2px solid rgba(70,54,35,.35);box-shadow:inset 0 10px 18px rgba(255,255,255,.65),0 12px 24px rgba(41,29,14,.2);transform-origin:18% 75%;animation:pourBowl 1.65s cubic-bezier(.3,.7,.2,1) both}.pour-lip{position:absolute;z-index:4;left:56%;top:55px;width:45px;height:13px;border-radius:60% 12px 60% 12px;background:#aa987a;transform:rotate(-16deg);animation:pourLip 1.65s ease both}.process-fx .pour-stream{position:absolute;z-index:2;left:52%;top:10%;width:24px;height:58%;border-radius:45% 55% 48% 52%;background:linear-gradient(90deg,rgba(255,255,255,.24),var(--fx-color,#b8c8c4) 42%,rgba(255,255,255,.72));filter:drop-shadow(0 0 5px color-mix(in srgb,var(--fx-color) 55%,transparent));clip-path:polygon(24% 0,82% 0,100% 100%,0 100%);transform-origin:top;animation:pourRibbon 1.65s cubic-bezier(.28,.7,.22,1) both}.pour-splash{position:absolute;z-index:2;left:43%;top:47%;width:19%;height:13%;border-radius:50%;border:8px solid var(--fx-color);border-top-color:transparent;filter:blur(1px);animation:pourSplash 1.65s ease both}.pour-coat{position:absolute;z-index:1;left:36%;top:42%;width:32%;height:46%;border-radius:44% 44% 37% 37%;background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--fx-color) 76%,transparent) 22%,rgba(255,255,255,.38) 48%,color-mix(in srgb,var(--fx-color) 72%,transparent) 74%,transparent);filter:blur(2px);transform-origin:top;animation:pourCoat 1.65s ease both}
  .process-fx .mist{position:absolute;inset:14% 6%;background:radial-gradient(circle at 70% 50%,color-mix(in srgb,var(--fx-color,#b8c8c4) 75%,transparent),transparent 52%);filter:blur(12px);animation:mistBlow 1.6s ease-out both;}
  .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 9px 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 9px 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)}
  @keyframes pourBowl{0%,12%{transform:translate(70px,-55px) rotate(0);opacity:0}26%{opacity:1}42%,78%{transform:translate(0,0) rotate(-38deg);opacity:1}100%{transform:translate(-15px,-20px) rotate(-28deg);opacity:0}}
  @keyframes pourLip{0%,28%{opacity:0;transform:translate(65px,-48px) rotate(-16deg)}40%,78%{opacity:1;transform:translate(0,0) rotate(-36deg)}100%{opacity:0}}
  @keyframes pourRibbon{0%,34%{transform:scaleY(0) rotate(7deg);opacity:0}44%,78%{transform:scaleY(1) rotate(7deg);opacity:.94}100%{transform:scaleY(.18) translateY(90%);opacity:0}}
  @keyframes pourSplash{0%,45%{transform:scale(.15);opacity:0}55%,82%{transform:scale(1);opacity:.82}100%{transform:scale(1.5);opacity:0}}
  @keyframes pourCoat{0%,48%{transform:scaleY(.05);opacity:0}65%,88%{transform:scaleY(1);opacity:.78}100%{transform:scaleY(1);opacity:0}}
  @keyframes mistBlow{0%{transform:translateX(36%);opacity:0}35%{opacity:.85}100%{transform:translateX(-24%);opacity:0}}
  .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:9px;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);}
  .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)}
  /* split kiln doors reveal a real chamber instead of a flat glowing card */
  .kiln-chamber{position:absolute;left:50%;bottom:4%;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 .kiln-door{width:min(31%,155px);height:min(70%,350px);bottom:4%;border-radius:0;background:repeating-linear-gradient(0deg,#402b1e 0 19px,#2b1d15 20px 22px);border:5px solid #765139;box-shadow:inset 0 0 34px #100906,0 8px 24px #080504;transition:transform 1.15s cubic-bezier(.18,.78,.18,1),filter .65s;z-index:2}
  .kiln-reveal .kiln-door-left{left:calc(50% - min(31%,155px));border-radius:92% 0 0 4px;transform-origin:left center}
  .kiln-reveal .kiln-door-right{left:50%;border-radius:0 92% 4px 0;transform-origin:right center}
  .kiln-reveal .kiln-door i{top:48%;width:22px;height:9px;background:#a67a4f}
  .kiln-reveal .kiln-door-left i{left:auto;right:9px}.kiln-reveal .kiln-door-right i{left:9px}
  .kiln-reveal.opened .kiln-door-left{transform:perspective(900px) rotateY(-104deg);filter:brightness(.48)}
  .kiln-reveal.opened .kiln-door-right{transform:perspective(900px) rotateY(104deg);filter:brightness(.48)}
  .kiln-reveal.opened .kiln-piece{animation:pieceReveal .9s .25s both}
  @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:90px 20px 18px;pointer-events:none;
    background:linear-gradient(to top, color-mix(in srgb,var(--stage-b) 90%,transparent), transparent);}
  .result .nameplate{display:flex;flex-direction:column;align-items:center;gap:6px;}
  .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 8px/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:10.5px/1.7 var(--sans);color:var(--fg-soft)}
  .result .grade{font-family:var(--serif);font-weight:700;font-size:12.5px;letter-spacing:4px;padding:4px 15px;border-radius:4px;background:var(--fg);color:var(--bg-0);}
  .result .grade.bad{background:transparent;color:var(--amber);border:1px solid var(--amber);}
  .result .pname{font-family:var(--serif);font-weight:600;font-size:clamp(22px,3vw,30px);letter-spacing:3px;text-align:center;color:var(--fg);}
  .result .pen{font-family:var(--latin-d);font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--fg-faint);}
  .result-action-panel{width:calc(100% - 40px);max-width:620px;margin-top:14px;padding:10px;border:1px solid color-mix(in srgb,var(--line) 86%,transparent);border-radius:12px;
    background:color-mix(in srgb,var(--card-hi) 88%,transparent);box-shadow:0 14px 36px rgba(54,40,17,.12),inset 0 1px rgba(255,255,255,.72);backdrop-filter:blur(14px);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:10.5px/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-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 10px/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{pointer-events:auto;}
  .i-actions{display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}
  .i-zh{font-family:var(--serif);font-weight:600;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;}
  .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{border-color:#f2ead9;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:flex;gap:6px;overflow-x:auto;padding:2px 20px 8px 0;scrollbar-width:thin;scroll-snap-type:x proximity;background:linear-gradient(90deg,transparent 88%,var(--card) 100%)}.category-tabs::-webkit-scrollbar{height:3px}.category-tabs::-webkit-scrollbar-thumb{background:var(--fg-faint)}
  .cat-tab{scroll-snap-align:start;}
  .cat-tab{white-space:nowrap;border:1px solid var(--line);background:transparent;color:var(--fg-soft);border-radius:4px;padding:6px 10px;font:500 11px var(--cjk);cursor:pointer}.cat-tab.on{background:var(--fg);color:var(--bg-0);border-color:var(--fg)}
  .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)}
  .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)}
  .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 9px/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:10px 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 10px var(--sans);letter-spacing:1.2px;color:var(--fg-faint);text-transform:uppercase}
  .gallery-en{margin-left:8px;font:400 10px 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:10.5px/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 9px 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:10.5px;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: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;}
    .c-body{flex:0 0 auto;overflow:visible;}
    .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:10.5px;white-space:nowrap;}
    .pv-hint{bottom:58px;max-width:calc(100% - 24px);padding:5px 10px;font-size:10.5px;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:7px;letter-spacing:.8px;}
    .kiln-hud .g .v{font-size:15px;}
    .kiln-hud .g .v small{font-size:8px;}
    .preview.is-firing .pv-hint{display:none;}
    .result{padding:62px 10px 10px;}
    .result .nameplate{gap:3px;}
    .result .pname{font-size:20px;letter-spacing:1.5px;}
    .result .pen{font-size:8.5px;letter-spacing:1.2px;}
    .result .grade{font-size:10px;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:10.5px;}
    .result-utility{padding:4px 6px;font-size:9.5px;}
    .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;}.acct,.top-cta{padding:0 7px;font-size:9.5px;}
    .main{grid-template-rows:minmax(300px,48svh) auto;gap:10px;padding:2px 10px max(10px,env(safe-area-inset-bottom));}
    .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:23px;}
    .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:8.5px;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:10.5px;}
    .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:10.5px;}
    .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:10px/1.3 var(--cjk);}
    .craft-undo,.craft-mode{width:40px;height:40px;flex:none;border:1px solid var(--line);border-radius:9px;background:var(--card);color:var(--fg);font:500 13px/1 var(--cjk);cursor:pointer;}
    .craft-undo{font:500 22px/1 var(--sans);}
    .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;}
  }
  @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(320px,46svh) auto;padding-top:0;}
    .pv-top>div:first-child{max-width:calc(100% - 178px);}
    .pv-tools{gap:4px;}
    .pv-tool{width:40px;height:40px;}
    .preview{min-height:320px;}
    .preview[data-craft="true"]{min-height:360px;}
    .grid.c3{gap:7px;}
    .grid.c3 .tile{padding:8px 5px;}
    .grid.c3 .tile .ic-wrap{width:28px;height:28px;}
    .grid.c3 .tile .td{font-size:9.5px;}
    .i-wrap{padding:34px 18px 36px;}
    .i-zh{font-size:clamp(66px,25vw,96px);letter-spacing:.1em;text-indent:.1em;}
    .i-en{font-size:10px;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;}
  }
  @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;}}

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