:root{--paper: #fff4e3;--sheet: #ffffff;--board: #ffe8c9;--board-peg: rgba(90, 58, 32, .13);--ink: #3b2a1e;--ink-2: #6b5540;--ink-3: #9a8672;--rule: #e8d5ba;--rule-strong: #3b2a1e;--candy: #ff6b8a;--candy-deep: #e8455f;--mint: #35c9a0;--mint-deep: #1fa886;--sky: #58b9e8;--sky-deep: #2f97cb;--sun: #ffc94a;--sun-deep: #e8a91c;--grape: #9b7ede;--marker: var(--candy);--danger: #e8455f;--r-sheet: 20px;--r-ctl: 14px;--r-xs: 10px;--r-pill: 999px;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--fs-xs: 11px;--fs-sm: 12px;--fs-md: 14px;--fs-lg: 16px;--fs-xl: 19px;--fs-2xl: 24px;--fs-figure: 32px;--font: "PingFang SC", "HarmonyOS Sans SC", "Source Han Sans SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;--font-display: "PingFang SC", "HarmonyOS Sans SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;--tap: 44px;--topbar-h: 56px;--line-w: 2px;--line-w-thick: 3px;--shadow-hard: 0 4px 0 0 var(--ink);--shadow-hard-sm: 0 3px 0 0 var(--ink);--shadow-hard-lift: 0 6px 0 0 var(--ink);--shadow-overlay: 0 10px 0 0 var(--ink);--safe-top: env(safe-area-inset-top, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--paper);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Noto Sans SC,sans-serif;font-size:var(--fs-md);line-height:1.5;-webkit-font-smoothing:antialiased;overscroll-behavior-y:none}h1,h2,h3,p,figure{margin:0}button{font:inherit;color:inherit;cursor:pointer;border:none;background:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent}input,select{font:inherit;color:inherit}img{display:block;max-width:100%}:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:var(--r-xs)}[hidden]{display:none!important}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}.app{min-height:100dvh;padding-bottom:calc(104px + var(--safe-bottom));background-color:var(--paper);background-image:radial-gradient(circle at 1px 1px,rgba(59,42,30,.07) 1px,transparent 0);background-size:22px 22px}.stage-host{max-width:1120px;margin:0 auto;padding:var(--sp-3) var(--sp-3) 0}.layout{display:grid;grid-template-columns:1fr;gap:var(--sp-4)}@media (min-width: 900px){.layout{grid-template-columns:minmax(340px,400px) minmax(0,1fr);align-items:start;gap:var(--sp-4)}.layout-aside{position:sticky;top:var(--sp-3);max-height:calc(100dvh - 100px);overflow-y:auto;padding-right:4px;padding-bottom:var(--sp-2);scrollbar-width:thin}.layout-aside>*{flex-shrink:0}.app{padding-bottom:0}.cta-bar{position:static;max-width:1120px;margin:0 auto;padding:var(--sp-3) var(--sp-3) var(--sp-6);background:none;border-top:none;box-shadow:none}.cta-bar .cta{max-width:400px}}.layout-aside,.layout-main{display:flex;flex-direction:column;gap:var(--sp-4);min-width:0}@media (max-width: 899px){.layout{display:flex;flex-direction:column;gap:var(--sp-4)}.layout-aside,.layout-main{display:contents}.layout .preview-card{order:1;position:sticky;top:calc(var(--topbar-h) + var(--safe-top));z-index:20}.info-bar{order:2}.missing-card{order:3}.crop-card{order:4}.size-card{order:5}.param-block{order:6}.chip-card{order:7}}.topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);padding:calc(var(--sp-3) + var(--safe-top)) var(--sp-4) var(--sp-3);background:var(--candy);border-bottom:var(--line-w-thick) solid var(--ink)}.topbar-brand{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.topbar-title{margin:0;font-family:var(--font-display);font-size:var(--fs-xl);font-weight:800;letter-spacing:.01em;line-height:1.15;color:#fff;text-shadow:2px 2px 0 var(--ink),-1px -1px 0 var(--ink),1px -1px 0 var(--ink),-1px 1px 0 var(--ink)}.topbar-sub{display:none;font-size:var(--fs-xs);color:var(--ink);background:var(--sun);padding:2px 8px;border-radius:var(--r-pill);border:1.5px solid var(--ink);white-space:nowrap}@media (min-width: 480px){.topbar-sub{display:inline-block}}.topbar-btn,.icon-btn{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border-radius:var(--r-ctl);border:var(--line-w) solid var(--ink);background:var(--sheet);color:var(--ink);font-size:22px;box-shadow:var(--shadow-hard-sm);transition:transform .08s,box-shadow .08s,background .12s}.topbar-btn:hover,.icon-btn:hover{background:var(--sun)}.topbar-btn:active,.icon-btn:active{transform:translateY(3px);box-shadow:none}.card{background:var(--sheet);border:var(--line-w-thick) solid var(--ink);border-radius:var(--r-sheet);padding:var(--sp-4);box-shadow:var(--shadow-hard)}.card-head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);margin-bottom:var(--sp-3)}.card-title{display:inline-flex;align-items:center;gap:6px;margin:0;font-family:var(--font-display);font-size:var(--fs-md);font-weight:800;color:var(--ink);letter-spacing:.02em}.card-title:before{content:"";width:10px;height:10px;border-radius:50%;border:1.5px solid var(--ink);background:var(--candy)}.card-meta{font-size:var(--fs-sm);font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums;background:var(--board);border:1.5px solid var(--ink);border-radius:var(--r-pill);padding:1px 9px}.uploader-wrap{border-radius:var(--r-sheet)}.uploader{display:flex;flex-direction:column;align-items:center;gap:var(--sp-1);padding:var(--sp-6) var(--sp-4);border:var(--line-w-thick) dashed var(--ink);border-radius:var(--r-sheet);background:var(--board);cursor:pointer;text-align:center;transition:background .15s,transform .1s}.uploader:hover,.uploader-wrap.is-drag .uploader{background:#fff0b8;transform:translateY(-2px)}.uploader-icon{display:grid;place-items:center;width:48px;height:48px;margin-bottom:2px;border:var(--line-w) solid var(--ink);border-radius:50%;background:var(--candy);color:#fff;font-size:26px;font-weight:700;line-height:1;box-shadow:var(--shadow-hard-sm)}.uploader-title{font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--ink)}.uploader-sub{font-size:var(--fs-sm);color:var(--ink-2)}.empty-stage{position:relative;display:flex;flex-direction:column;align-items:center;gap:var(--sp-3);padding:var(--sp-8) var(--sp-4) var(--sp-6);max-width:520px;margin:0 auto;text-align:center}.empty-stage:before{content:"";position:absolute;inset:0;border-radius:var(--r-sheet);background-image:radial-gradient(circle at 1px 1px,var(--board-peg) 1.5px,transparent 0);background-size:16px 16px;opacity:.9;pointer-events:none;mask-image:linear-gradient(to bottom,rgba(0,0,0,.9),transparent 78%);-webkit-mask-image:linear-gradient(to bottom,rgba(0,0,0,.9),transparent 78%)}.empty-stage>*{position:relative}.empty-art{display:grid;grid-template-columns:repeat(var(--cols, 12),14px);grid-auto-rows:14px;gap:5px;margin-bottom:var(--sp-2);padding:14px;background:var(--sheet);border:var(--line-w-thick) solid var(--ink);border-radius:var(--r-ctl);box-shadow:var(--shadow-hard);transform:rotate(-1.5deg)}.empty-art i{display:block;border-radius:50%;background:var(--board);box-shadow:inset 0 0 0 1.5px #3b2a1e24}.empty-art i[style]{background:var(--dot);box-shadow:inset 0 0 0 1.5px #3b2a1e4d,inset 0 -3px #0000001f}.empty-title{margin:0;font-family:var(--font-display);font-size:var(--fs-2xl);font-weight:800;letter-spacing:.01em;line-height:1.3;color:var(--ink);text-align:center}.empty-sub{margin:0 0 var(--sp-2);font-size:var(--fs-md);color:var(--ink-2);line-height:1.75;max-width:30em;text-align:center}.empty-stage .uploader-wrap{width:100%}.empty-hint{margin:var(--sp-2) 0 0;font-size:var(--fs-sm);color:var(--ink-3)}.crop-frame{position:relative;border-radius:var(--r-ctl);overflow:hidden;background:#2a211a;border:var(--line-w) solid var(--ink)}.crop-canvas{display:block;margin:0 auto;touch-action:none;cursor:grab}.crop-canvas:active{cursor:grabbing}.preview-card{position:relative;padding:var(--sp-3);background:var(--board);background-image:radial-gradient(circle at 1px 1px,var(--board-peg) 1.5px,transparent 0);background-size:14px 14px;border:var(--line-w-thick) solid var(--ink);border-radius:var(--r-sheet);box-shadow:var(--shadow-hard);overflow:hidden}.preview-floats{position:absolute;top:calc(var(--sp-3) + 4px);right:calc(var(--sp-3) + 4px);z-index:5;display:flex;gap:6px}.preview-zooms{position:absolute;bottom:calc(var(--sp-3) + 4px);right:calc(var(--sp-3) + 4px);z-index:5;display:flex;gap:6px}.float-chip{height:32px;padding:0 11px;border-radius:var(--r-pill);background:var(--sheet);border:var(--line-w) solid var(--ink);font-size:var(--fs-sm);font-weight:700;color:var(--ink);box-shadow:var(--shadow-hard-sm);transition:transform .08s,box-shadow .08s,background .12s}.float-chip:hover{background:var(--sun)}.float-chip:active{transform:translateY(3px);box-shadow:none}.float-chip.is-active{background:var(--candy);color:#fff}.float-zoom{width:34px;padding:0;font-size:var(--fs-lg);display:inline-flex;align-items:center;justify-content:center}.preview-stage{position:relative;display:flex;align-items:center;justify-content:center;min-height:220px;padding:var(--sp-4) var(--sp-2)}.preview-canvas{display:block;border:var(--line-w) solid var(--ink);border-radius:6px;touch-action:pan-y;background:#fff}.preview-canvas.is-editing{touch-action:none;cursor:crosshair}.preview-hint{margin:0;font-size:var(--fs-sm);color:var(--ink-2)}.preview-zoom{position:absolute;left:calc(var(--sp-3) + 4px);bottom:calc(var(--sp-3) + 8px);padding:2px 9px;border-radius:var(--r-pill);border:1.5px solid var(--ink);background:var(--sheet);font-size:var(--fs-xs);font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.preview-zoom.is-small{background:var(--board)}.preview-busy{position:absolute;top:0;left:0;right:0;height:6px;overflow:hidden;opacity:0;transition:opacity .15s}.preview-busy.is-on{opacity:1}.preview-busy:after{content:"";position:absolute;inset:0;width:38%;background:var(--candy);border-radius:var(--r-pill);animation:busy-slide .9s ease-in-out infinite}@keyframes busy-slide{0%{transform:translate(-100%)}to{transform:translate(320%)}}.info-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:var(--sp-2) var(--sp-4);padding:var(--sp-3) var(--sp-4);background:var(--sheet);border:var(--line-w-thick) solid var(--ink);border-radius:var(--r-sheet);box-shadow:var(--shadow-hard)}.info-dims{grid-area:1 / 1;font-family:var(--font-display);font-size:var(--fs-figure);font-weight:800;letter-spacing:-.02em;line-height:1;color:var(--ink);font-variant-numeric:tabular-nums}.info-dims-x{margin:0 .1em;font-weight:500;color:var(--candy)}.info-sub{grid-column:1 / -1;font-size:var(--fs-sm);color:var(--ink-2);font-variant-numeric:tabular-nums}.info-sub-empty{color:var(--ink-3)}.info-boards{grid-column:1 / -1;justify-self:start;padding:2px 10px;border-radius:var(--r-pill);border:1.5px solid var(--ink);background:var(--mint);color:#fff;font-size:var(--fs-xs);font-weight:700}.info-counts{grid-area:1 / 2;display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right;font-variant-numeric:tabular-nums}.info-beads{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:800;line-height:1;color:var(--ink)}.info-beads-unit{margin-left:2px;font-size:var(--fs-sm);font-weight:600;color:var(--ink-3)}.info-colors{font-size:var(--fs-sm);font-weight:600;color:var(--ink-2)}.info-swatch-line{display:flex;gap:3px;margin-top:4px}.info-swatch-line i{width:10px;height:10px;border-radius:50%;border:1.5px solid var(--ink)}.slider-block{margin-bottom:var(--sp-3)}.slider-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);margin-bottom:var(--sp-2)}.slider-label{font-size:var(--fs-sm);font-weight:600;color:var(--ink-2)}.slider-value{font-size:var(--fs-md);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}.slider-row{display:flex;align-items:center;gap:var(--sp-2)}.slider-step{width:34px;height:34px;flex:none;border-radius:var(--r-xs);background:var(--sheet);border:var(--line-w) solid var(--ink);color:var(--ink);box-shadow:var(--shadow-hard-sm);transition:transform .08s,box-shadow .08s,background .12s}.slider-step:hover{background:var(--sun)}.slider-step:active{transform:translateY(3px);box-shadow:none}.slider{flex:1;min-width:0;height:30px;appearance:none;background:transparent;cursor:pointer}.slider::-webkit-slider-runnable-track{height:10px;border-radius:var(--r-pill);background:var(--board);border:var(--line-w) solid var(--ink)}.slider::-webkit-slider-thumb{appearance:none;width:24px;height:24px;margin-top:-9px;border-radius:50%;background:var(--candy);border:var(--line-w) solid var(--ink);box-shadow:0 3px 0 var(--ink)}.slider::-moz-range-track{height:10px;border-radius:var(--r-pill);background:var(--board);border:var(--line-w) solid var(--ink)}.slider::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--candy);border:var(--line-w) solid var(--ink)}.slider-ends{display:flex;justify-content:space-between;margin-top:var(--sp-1);font-size:var(--fs-xs);font-weight:600;color:var(--ink-3)}.field-row{display:flex;gap:var(--sp-2);margin-bottom:var(--sp-3)}.field{display:flex;flex:1;flex-direction:column;gap:var(--sp-1);min-width:0}.field-label{font-size:var(--fs-xs);font-weight:700;color:var(--ink-2);letter-spacing:.03em}.num-input{width:100%;height:42px;padding:0 var(--sp-2);border:var(--line-w) solid var(--ink);border-radius:var(--r-ctl);background:var(--sheet);color:var(--ink);font-variant-numeric:tabular-nums;font-weight:700}.num-input:focus{outline:none;background:#fffbe8;box-shadow:0 0 0 3px #ffc94aa6}.field-note{margin:calc(-1 * var(--sp-2)) 0 var(--sp-2);font-size:var(--fs-xs);font-weight:600;color:var(--danger)}.detail-note{margin:calc(-1 * var(--sp-2)) 0 var(--sp-2);padding:6px 8px;border-radius:var(--r-xs);background:var(--board);font-size:var(--fs-xs);font-weight:600;color:var(--ink-2)}.bead-group{display:flex;gap:8px}.bead-item{flex:1;height:42px;border-radius:var(--r-ctl);border:var(--line-w) solid var(--ink);background:var(--sheet);font-size:var(--fs-sm);font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums;box-shadow:var(--shadow-hard-sm);transition:transform .08s,box-shadow .08s,background .12s}.bead-item:hover{background:var(--board)}.bead-item:active{transform:translateY(3px);box-shadow:none}.bead-item.is-active{background:var(--mint);color:#fff}.switch-list{display:flex;flex-direction:column;gap:2px;margin-top:var(--sp-2)}.switch-row{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-3);min-height:var(--tap);padding:0 2px;cursor:pointer}.switch-label{font-size:var(--fs-md);font-weight:600;color:var(--ink)}.switch{position:relative;flex:none;width:48px;height:28px}.switch-input{position:absolute;inset:0;margin:0;opacity:0;cursor:pointer;z-index:1}.switch-track{position:absolute;inset:0;border-radius:var(--r-pill);background:var(--sheet);border:var(--line-w) solid var(--ink);transition:background .18s}.switch-track:after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:var(--sheet);border:3px solid var(--ink);transition:transform .18s}.switch-input:checked+.switch-track{background:var(--mint)}.switch-input:checked+.switch-track:after{transform:translate(20px)}.switch-input:focus-visible+.switch-track{outline:3px solid var(--sun);outline-offset:2px}.param-block{background:var(--sheet);border:var(--line-w-thick) solid var(--ink);border-radius:var(--r-sheet);box-shadow:var(--shadow-hard);overflow:hidden}.param-row{display:grid;grid-template-columns:repeat(3,1fr)}.param{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:var(--sp-3);border-right:var(--line-w) solid var(--ink);text-align:left;transition:background .12s}.param:last-child{border-right:none}.param:hover{background:var(--board)}.param-label{font-size:var(--fs-xs);font-weight:600;color:var(--ink-3)}.param-value{font-size:var(--fs-md);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums}.param-note,.param-source{padding:var(--sp-2) var(--sp-3);font-size:var(--fs-xs);color:var(--ink-3);line-height:1.6;border-top:1.5px dashed var(--rule)}.param-note{background:#fff6d6}.chip-list{display:flex;flex-wrap:wrap;gap:8px}.chip{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 4px 0 6px;border:var(--line-w) solid var(--ink);border-radius:var(--r-pill);background:var(--sheet);font-size:var(--fs-sm);box-shadow:0 2px 0 var(--ink)}.chip-swatch{width:16px;height:16px;border-radius:50%;border:1.5px solid var(--ink)}.chip-code{font-weight:800;font-variant-numeric:tabular-nums;color:var(--ink)}.chip-count{color:var(--ink-3);font-size:var(--fs-xs);font-weight:600;font-variant-numeric:tabular-nums}.chip-remove{display:grid;place-items:center;width:22px;height:22px;border-radius:50%;border:1.5px solid transparent;color:var(--ink-2);font-size:14px;font-weight:700;line-height:1;transition:background .12s,color .12s,border-color .12s}.chip-remove:hover{background:var(--candy);border-color:var(--ink);color:#fff}.pixel-editor{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;flex-direction:column;max-height:46dvh;background:var(--sheet);border-top:var(--line-w-thick) solid var(--ink);border-radius:var(--r-sheet) var(--r-sheet) 0 0;padding-bottom:var(--safe-bottom);box-shadow:0 -6px #3b2a1e26}body.is-editing{padding-bottom:46dvh}.editor-bar{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2) var(--sp-4)}.editor-zoom-group{display:flex;gap:6px}.editor-btn.editor-zoom{width:36px;padding:0;font-size:var(--fs-md);line-height:1}.editor-actions{margin-left:auto}.editor-label{font-family:var(--font-display);font-size:var(--fs-sm);font-weight:800;color:var(--ink)}.editor-actions{display:flex;gap:8px}.editor-btn{height:36px;padding:0 14px;border-radius:var(--r-pill);background:var(--sheet);border:var(--line-w) solid var(--ink);font-size:var(--fs-sm);font-weight:700;color:var(--ink);box-shadow:var(--shadow-hard-sm);transition:transform .08s,box-shadow .08s,background .12s}.editor-btn:hover{background:var(--board)}.editor-btn:active{transform:translateY(3px);box-shadow:none}.editor-btn.is-primary{background:var(--mint);color:#fff}.editor-btn.is-active{background:var(--candy);color:#fff}.editor-btn:disabled{opacity:.35;cursor:not-allowed;box-shadow:none}.editor-tabs{display:flex;gap:var(--sp-2);padding:0 var(--sp-4) var(--sp-2)}.tab{position:relative;height:32px;padding:0 14px;border-radius:var(--r-pill);border:var(--line-w) solid transparent;font-size:var(--fs-sm);font-weight:700;color:var(--ink-3);background:none}.tab.is-active{color:var(--ink);background:var(--sun);border-color:var(--ink)}.brush-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(56px,1fr));gap:6px;padding:0 var(--sp-4) var(--sp-4);overflow-y:auto;-webkit-overflow-scrolling:touch}.brush-swatch{display:flex;flex-direction:column;align-items:center;gap:4px;padding:6px 0 5px;border-radius:var(--r-xs);border:var(--line-w) solid transparent;transition:border-color .12s,background .12s}.brush-swatch:hover{border-color:var(--ink)}.brush-swatch.is-active{border-color:var(--ink);background:var(--sun)}.brush-chip{width:30px;height:30px;border-radius:50%;background:var(--swatch);border:1.5px solid var(--ink)}.brush-code{font-size:var(--fs-xs);font-weight:600;color:var(--ink-2);font-variant-numeric:tabular-nums}.brush-swatch.is-active .brush-code{color:var(--ink);font-weight:800}.cta-bar{position:fixed;left:0;right:0;bottom:0;z-index:35;padding:var(--sp-3) var(--sp-3) calc(var(--sp-3) + var(--safe-bottom));background:var(--paper);border-top:var(--line-w-thick) solid var(--ink)}.cta{display:flex;align-items:center;justify-content:center;gap:var(--sp-2);width:100%;height:54px;border-radius:var(--r-pill);border:var(--line-w-thick) solid var(--ink);background:var(--candy);color:#fff;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;letter-spacing:.02em;box-shadow:var(--shadow-hard);transition:transform .08s,box-shadow .08s,background .12s}.cta:hover:not(:disabled){background:var(--candy-deep)}.cta:active:not(:disabled){transform:translateY(4px);box-shadow:none}.cta:disabled{background:var(--board);color:var(--ink-3);box-shadow:none;cursor:not-allowed}.cta.is-ghost{background:var(--sheet);color:var(--ink)}.cta.is-ghost:hover:not(:disabled){background:var(--sun)}.sheet-host{position:fixed;inset:0;z-index:60;display:flex;flex-direction:column;justify-content:flex-end}.sheet-backdrop{position:absolute;inset:0;background:#3b2a1e73;animation:fade-in .16s ease}.sheet{position:relative;max-height:82dvh;overflow-y:auto;padding:var(--sp-2) var(--sp-4) calc(var(--sp-5) + var(--safe-bottom));background:var(--sheet);border-top:var(--line-w-thick) solid var(--ink);border-radius:var(--r-sheet) var(--r-sheet) 0 0;animation:sheet-up .2s cubic-bezier(.16,1,.3,1)}.sheet:before{content:"";display:block;width:44px;height:5px;margin:2px auto var(--sp-2);border-radius:var(--r-pill);background:var(--rule-strong);opacity:.35}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-1) 0 var(--sp-3)}.sheet-title{margin:0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:var(--ink)}.sheet-close{width:40px;height:40px;border-radius:50%;border:var(--line-w) solid var(--ink);background:var(--sheet);font-size:20px;font-weight:700;color:var(--ink);box-shadow:var(--shadow-hard-sm)}.sheet-close:active{transform:translateY(3px);box-shadow:none}.sheet-body{padding-top:var(--sp-2)}.sheet-value-row{display:flex;align-items:baseline;justify-content:center;gap:6px;margin:var(--sp-2) 0 var(--sp-3)}.sheet-big-value{font-family:var(--font-display);font-size:52px;font-weight:800;line-height:1;letter-spacing:-.03em;color:var(--candy);text-shadow:2px 2px 0 var(--ink);font-variant-numeric:tabular-nums}.sheet-unit{font-size:var(--fs-md);font-weight:700;color:var(--ink-2)}.preset-row{display:flex;flex-wrap:wrap;gap:8px;margin:var(--sp-3) 0}.preset{min-width:52px;height:38px;padding:0 14px;border-radius:var(--r-pill);background:var(--sheet);border:var(--line-w) solid var(--ink);font-size:var(--fs-sm);font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;box-shadow:var(--shadow-hard-sm);transition:transform .08s,box-shadow .08s,background .12s}.preset:hover{background:var(--sun)}.preset:active{transform:translateY(3px);box-shadow:none}.slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(74px,1fr));gap:8px;margin:var(--sp-3) 0 var(--sp-4)}.sheet-sub{margin:var(--sp-3) 0 0;font-size:var(--fs-sm);font-weight:700;color:var(--ink-2)}.brand-grid{display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--sp-2)}.brand-item{height:36px;padding:0 14px;border-radius:var(--r-pill);border:var(--line-w) solid var(--ink);background:var(--sheet);font-size:var(--fs-sm);font-weight:700;color:var(--ink);box-shadow:var(--shadow-hard-sm)}.brand-item.is-active{background:var(--candy);color:#fff}.slot-item{height:50px;border-radius:var(--r-ctl);border:var(--line-w) solid var(--ink);background:var(--sheet);font-size:var(--fs-md);font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums;box-shadow:var(--shadow-hard-sm);transition:transform .08s,box-shadow .08s,background .12s}.slot-item:hover{background:var(--board)}.slot-item:active{transform:translateY(3px);box-shadow:none}.slot-item.is-active{background:var(--mint);color:#fff}.hint-text{margin:var(--sp-1) 0;font-size:var(--fs-sm);line-height:1.7;color:var(--ink-3)}button:disabled,input:disabled{opacity:.45;cursor:not-allowed}.switch-row.is-disabled .switch-label,.slider-block.is-disabled .slider-label{opacity:.55}.switch-row.is-disabled .switch{opacity:.45}.result-page{position:fixed;inset:0;z-index:50;display:flex;flex-direction:column;background:#201a15}.result-page .topbar{background:var(--ink);border-bottom-color:var(--ink)}.result-page .topbar-title{color:#fff;text-shadow:2px 2px 0 var(--candy)}.result-page .topbar-btn{background:var(--sun);border-color:var(--ink);color:var(--ink)}.result-page .topbar-btn:hover{background:var(--candy);color:#fff}.result-counter{min-width:52px;text-align:right;padding:2px 9px;border-radius:var(--r-pill);border:1.5px solid rgba(255,255,255,.4);font-size:var(--fs-sm);font-weight:700;color:#ffffffd9;font-variant-numeric:tabular-nums}.result-track{flex:1;display:flex;min-height:0;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.result-slide{flex:0 0 100%;display:flex;align-items:center;justify-content:center;min-width:0;padding:var(--sp-2);scroll-snap-align:center;overflow:hidden}.result-image{max-width:100%;max-height:100%;object-fit:contain;border-radius:4px;transform-origin:center center;touch-action:pinch-zoom;-webkit-touch-callout:default;user-select:none;transition:transform .06s linear}.result-loading{margin:0;font-size:var(--fs-sm);color:#ffffff8c}.result-zoom{display:flex;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-1) 0 var(--sp-2)}.result-zoom-btn{width:38px;height:38px;border-radius:50%;border:var(--line-w) solid var(--ink);background:var(--sheet);color:var(--ink);font-size:20px;font-weight:800;line-height:1;box-shadow:0 2px 0 var(--ink)}.result-zoom-btn:active{transform:translateY(2px);box-shadow:none}.result-zoom-label{min-width:56px;text-align:center;font-size:var(--fs-sm);font-weight:700;color:#fffc;font-variant-numeric:tabular-nums}.result-dots{display:flex;justify-content:center;gap:7px;padding:var(--sp-1) 0 var(--sp-2)}.result-dot{width:8px;height:8px;border-radius:50%;background:#ffffff47;transition:background .2s,width .2s}.result-dot.is-active{width:22px;border-radius:var(--r-pill);background:var(--candy)}.result-hint{margin:0;padding-bottom:var(--sp-2);text-align:center;font-size:var(--fs-sm);color:#ffffff8c}.result-actions{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-2) var(--sp-3) calc(var(--sp-3) + var(--safe-bottom));border-top:var(--line-w) solid rgba(255,255,255,.14)}.result-actions .cta{flex:1 1 40%;height:46px;font-size:var(--fs-md);box-shadow:0 3px 0 var(--ink)}.result-actions .cta.is-ghost{background:var(--sheet);color:var(--ink)}.assist-host{position:fixed;inset:0;z-index:70;display:flex;flex-direction:column;gap:var(--sp-2);padding-bottom:var(--safe-bottom);background:var(--paper);overflow-y:auto}.assist-bar{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:calc(var(--sp-3) + var(--safe-top)) var(--sp-4) var(--sp-2);background:var(--mint);border-bottom:var(--line-w-thick) solid var(--ink)}.assist-title{margin:0;font-family:var(--font-display);font-size:var(--fs-lg);font-weight:800;color:#fff;text-shadow:2px 2px 0 var(--ink),-1px -1px 0 var(--ink),1px -1px 0 var(--ink),-1px 1px 0 var(--ink)}.assist-counter{font-size:var(--fs-sm);font-weight:800;color:var(--ink);background:#fff;border:1.5px solid var(--ink);border-radius:var(--r-pill);padding:2px 10px;font-variant-numeric:tabular-nums}.assist-close{width:38px;height:38px;border-radius:50%;border:var(--line-w) solid var(--ink);background:var(--sheet);font-size:20px;font-weight:800;color:var(--ink);box-shadow:var(--shadow-hard-sm)}.assist-stage{display:flex;align-items:center;justify-content:center;padding:0 var(--sp-3)}.assist-canvas{display:block;border:var(--line-w-thick) solid var(--ink);border-radius:6px;background:#fff}.assist-panel{margin:0 var(--sp-3);padding:var(--sp-3);background:var(--sheet);border:var(--line-w-thick) solid var(--ink);border-radius:var(--r-sheet);box-shadow:var(--shadow-hard)}.assist-current{display:flex;align-items:center;gap:var(--sp-2);margin-bottom:var(--sp-2)}.assist-swatch{width:26px;height:26px;border-radius:50%;border:var(--line-w) solid var(--ink)}.assist-code{font-family:var(--font-display);font-size:var(--fs-xl);font-weight:800;color:var(--ink)}.assist-count{margin-left:auto;font-size:var(--fs-sm);font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums}.assist-progress{height:14px;border-radius:var(--r-pill);border:var(--line-w) solid var(--ink);background:var(--board);overflow:hidden}.assist-progress-fill{display:block;height:100%;width:0;background:var(--candy);border-radius:var(--r-pill);transition:width .25s ease}.assist-progress-text{display:block;margin-top:4px;text-align:right;font-size:var(--fs-xs);font-weight:700;color:var(--ink-2);font-variant-numeric:tabular-nums}.assist-hint{margin:6px 0 0;font-size:var(--fs-xs);color:var(--ink-2)}.assist-actions{display:flex;gap:8px;margin-top:var(--sp-2)}.assist-nav,.assist-done{flex:1;height:40px;border-radius:var(--r-pill);border:var(--line-w) solid var(--ink);background:var(--sheet);font-size:var(--fs-sm);font-weight:700;color:var(--ink);box-shadow:var(--shadow-hard-sm)}.assist-done{background:var(--mint);color:#fff}.assist-nav:disabled{opacity:.35;box-shadow:none}.assist-list{display:flex;flex-wrap:wrap;gap:6px;padding:var(--sp-2) var(--sp-3) var(--sp-5)}.assist-item{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px 0 5px;border-radius:var(--r-pill);border:1.5px solid var(--ink);background:var(--sheet);font-size:var(--fs-xs);font-weight:700;color:var(--ink)}.assist-item i{width:14px;height:14px;border-radius:50%;border:1.5px solid var(--ink)}.assist-item.is-active{background:var(--sun);border-width:var(--line-w)}.toast{position:fixed;left:50%;bottom:calc(92px + var(--safe-bottom));transform:translate(-50%);z-index:80;display:flex;align-items:center;gap:var(--sp-3);max-width:min(92vw,460px);padding:10px 10px 10px 14px;border-radius:var(--r-pill);border:var(--line-w) solid var(--ink);background:var(--sun);color:var(--ink);font-size:var(--fs-sm);font-weight:600;box-shadow:var(--shadow-hard);animation:toast-in .18s ease}.toast-action{flex:none;height:30px;padding:0 12px;border-radius:var(--r-pill);border:1.5px solid var(--ink);background:var(--ink);color:#fff;font-size:var(--fs-sm);font-weight:700}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,10px)}}@keyframes fade-in{0%{opacity:0}}@keyframes sheet-up{0%{transform:translateY(100%)}}.image-saver{position:fixed;inset:0;z-index:120;display:flex;flex-direction:column;align-items:center;gap:10px;padding:calc(14px + var(--safe-top)) 12px calc(14px + var(--safe-bottom));background:#0c0a08f5;overflow:auto}.image-saver-hint{margin:0;padding:0 56px;color:#fff;font-size:var(--fs-sm);font-weight:700;text-align:center}.image-saver-close{position:absolute;top:calc(10px + var(--safe-top));right:12px;width:38px;height:38px;border-radius:50%;border:2px solid #fff;background:#00000059;color:#fff;font-size:20px;font-weight:800}.image-saver-img{display:block;width:auto;max-width:100%;height:auto;background:#fff;-webkit-touch-callout:default;user-select:auto}
