:root{--blue:#2a50c8;--blue-deep:#1c3896;--blue-soft:#e8edfb;--pink:#e5216b;--pink-deep:#c0185a;--pink-soft:#fde8f0;--yellow:#ffc83d;--yellow-soft:#fff5d6;--ivory:#fffaf3;--paper:#ffffff;--ink:#23243a;--muted:#6b6c80;--line:#ece4d8;--serif:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--ivory);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}*{box-sizing:border-box}html,body{margin:0;overflow-x:hidden}button,input{font:inherit;color:inherit}button{cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:not-allowed;opacity:.45}:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.strip{text-align:center;font-size:12px;font-weight:600;letter-spacing:.03em;padding:7px 16px;text-transform:uppercase}.strip-pink{background:var(--pink);color:#fff}.strip-yellow{background:var(--yellow);color:#3b2f00;font-weight:500;padding:5px 16px}.header{background:var(--paper);text-align:center;padding:16px 16px 12px;border-bottom:1px solid var(--line)}.wordmark{font-family:var(--serif);color:var(--blue);font-size:40px;line-height:1;text-decoration:none;letter-spacing:.01em;display:inline-block;position:relative;padding-bottom:6px;border-bottom:1.5px solid var(--blue)}.wordmark span{position:absolute;right:-12px;bottom:-9px;font-size:12px}.header p{margin:10px 0 0;color:var(--muted);font-size:14px}.layout{max-width:1180px;margin:0 auto;padding:16px;display:grid;gap:16px}.board-panel,.controls{min-width:0;display:flex;flex-direction:column;gap:12px}.segmented{display:grid;grid-template-columns:1fr 1fr;background:var(--paper);border:1px solid var(--line);border-radius:999px;padding:4px}.segmented button{min-height:44px;border:0;border-radius:999px;background:transparent;font-weight:600;font-size:16px}.segmented button.on{background:var(--blue);color:#fff;box-shadow:0 2px 8px #2a50c840}.sizes,.qty{display:flex;flex-wrap:wrap;gap:8px}.chip{min-height:44px;min-width:44px;padding:6px 14px;border:1.5px solid var(--line);background:var(--paper);border-radius:14px;font-weight:600;display:inline-flex;flex-direction:column;align-items:center;justify-content:center;line-height:1.1}.chip small{font-size:11px;font-weight:500;color:var(--muted)}.chip.on{border-color:var(--blue);background:var(--blue-soft);color:var(--blue-deep)}.chip.static{cursor:default;color:var(--muted);font-weight:500}.chip.static.on{color:var(--blue-deep)}.chip.custom{padding:0 8px;width:84px}.chip.custom input{width:100%;border:0;background:transparent;text-align:center;font-weight:600;min-height:40px;outline:none}.board-wrap{width:100%;border-radius:18px;overflow:hidden;box-shadow:0 10px 30px #6b45161f,inset 0 0 0 1px #00000010;background:#e8cc9a}.board-canvas{display:block;width:100%;height:340px;touch-action:manipulation;cursor:pointer}.meter{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:10px 14px}.meter-text{font-size:15px}.meter-bar{height:8px;border-radius:99px;background:#f1ebe1;margin:8px 0 6px;overflow:hidden}.meter-bar span{display:block;height:100%;background:linear-gradient(90deg,var(--blue),#5a78dd);border-radius:inherit;transition:width .3s}.meter-bar span.full{background:linear-gradient(90deg,var(--pink),var(--yellow))}.meter-bar span.over{background:var(--pink)}.fine{font-size:12.5px;color:var(--muted);margin:4px 0 0;line-height:1.45}.toolbar,.row{display:flex;flex-wrap:wrap;gap:8px}.toolbar>button,.row>button,.confirm>button,.callout-actions>button,.swaps>button,.wide{min-height:44px;padding:8px 14px;border-radius:12px;border:1.5px solid var(--line);background:var(--paper);font-weight:600;font-size:15px}.toolbar>button,.row>button{flex:1 1 0;white-space:nowrap}.confirm{display:flex;gap:8px;flex:2 1 0}.confirm>button{flex:1}.danger{border-color:var(--pink)!important;color:var(--pink-deep)}.confirm .danger,.callout .danger{background:var(--pink)!important;color:#fff}.primary{background:var(--blue)!important;border-color:var(--blue)!important;color:#fff}.ghost{background:var(--paper)}.wide{width:100%}.icon{margin-left:auto;min-width:44px;min-height:44px;border:0;background:transparent;font-size:18px;color:var(--muted);border-radius:12px}.callout{background:var(--yellow-soft);border:1px solid #f3dc97;border-radius:14px;padding:12px 14px;font-size:14.5px;line-height:1.45}.callout.warn{background:var(--pink-soft);border-color:#f6bfd3}.callout-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.callout-actions>button{flex:1 1 auto}.editor{background:var(--paper);border:2px solid var(--blue);border-radius:16px;padding:12px;display:flex;flex-direction:column;gap:8px}.editor-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.editor-head span:not(.dot){color:var(--muted)}.swaps{display:grid;grid-template-columns:1fr 1fr;gap:8px}.swaps>button{display:flex;align-items:center;gap:8px;font-size:14px;text-align:left}.dot{width:16px;height:16px;border-radius:50%;flex:none;display:inline-block;background:radial-gradient(circle at 35% 30%,var(--stone-light,#ddd),var(--stone,#aaa) 55%,var(--stone-dark,#666));box-shadow:0 1px 2px #0003}.label{font-size:13px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin:4px 0 0}.notice{margin:0;padding:10px 14px;border-radius:12px;font-size:14.5px;animation:pop .25s ease-out}.notice.ok{background:#e9f7ef;color:#1f6b43}.notice.info{background:var(--blue-soft);color:var(--blue-deep)}.notice.error{background:var(--pink-soft);color:var(--pink-deep)}@keyframes pop{0%{transform:translateY(-4px);opacity:0}}.tabs{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:4px}.tabs button{min-height:44px;border:0;border-radius:10px;background:transparent;font-weight:600;font-size:15px}.tabs button.on{background:var(--yellow);color:#3b2f00}.card{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:14px;display:flex;flex-direction:column;gap:10px}.card h2{font-family:var(--serif);font-weight:600;font-size:22px;color:var(--blue-deep);margin:0}.stones{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stone{min-height:120px;border:1.5px solid var(--line);border-radius:16px;background:linear-gradient(180deg,#fff,#fdf8f0);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;padding:12px 8px;transition:transform .12s}.stone:active{transform:scale(.97)}.stone-name{font-weight:700;font-size:15px;text-align:center}.stone-left{font-size:12.5px;color:var(--muted)}.stone-left.none{color:var(--pink-deep)}.bead-swatch{width:44px;height:44px;border-radius:50%;display:block;position:relative;overflow:hidden;background:radial-gradient(circle at 32% 28%,#fff 0 7%,transparent 18%),radial-gradient(circle at 38% 34%,var(--stone-light),var(--stone) 55%,var(--stone-dark));box-shadow:2px 4px 6px #5a330f40,inset -2px -3px 6px #0002}.bead-swatch.veined:after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,var(--stone-vein) 33%,transparent 37%,transparent 58%,var(--stone-vein) 60%,transparent 63%);opacity:.7}.bead-swatch.banded:after{content:"";position:absolute;inset:-30%;background:repeating-radial-gradient(circle at 0 50%,transparent 0 6px,var(--stone-vein) 6px 8px);opacity:.55}.bead-swatch.translucent:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 68% 72%,#ffffffa0,transparent 40%)}.ab{display:grid;grid-template-columns:1fr 1fr;gap:10px}.stone-select{border:1px solid var(--line);border-radius:14px;margin:0;padding:8px;display:flex;flex-wrap:wrap;gap:4px;align-items:center;min-width:0}.stone-select legend{font-size:13px;font-weight:700;color:var(--muted);padding:0 4px}.stone-select button{width:44px;height:44px;border-radius:50%;border:2px solid transparent;background:transparent;padding:0;display:grid;place-items:center}.stone-select button.on{border-color:var(--blue)}.stone-select .bead-swatch{width:32px;height:32px}.stone-select .fine{width:100%;margin:2px 0 0}.steppers{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}.stepper{border:1px solid var(--line);border-radius:14px;padding:6px 8px;display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted);font-weight:600}.stepper>div{display:flex;align-items:center;justify-content:space-between}.stepper button{width:44px;height:44px;border-radius:12px;border:1.5px solid var(--line);background:var(--ivory);font-size:20px;font-weight:700}.stepper output{font-size:18px;color:var(--ink);font-variant-numeric:tabular-nums}.dots{display:flex;flex-wrap:wrap;gap:3px;align-items:center;min-height:16px}.dots .dot{width:14px;height:14px}.more{font-size:12px;color:var(--muted);margin-left:4px}.presets{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.presets li{border:1px solid var(--line);border-radius:14px;padding:10px;display:flex;flex-direction:column;gap:8px;background:linear-gradient(180deg,#fff,#fffaf3)}.preset-head{display:flex;flex-wrap:wrap;align-items:center;column-gap:8px}.preset-head strong{font-family:var(--serif);font-size:18px;color:var(--blue-deep)}.preset-head span{font-size:13px;color:var(--muted);flex:1 1 160px}.save input{flex:3 1 160px;min-height:44px;border:1.5px solid var(--line);border-radius:12px;padding:0 12px;background:#fff;min-width:0}.summary p{margin:0;font-size:14.5px;line-height:1.5}.stock{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px;font-size:14.5px}.stock li{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.stock li span:last-child{margin-left:auto;color:var(--muted);font-size:13px}.challenges{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;font-size:14.5px}.challenges li{display:flex;gap:8px;color:var(--muted)}.challenges li.done{color:var(--ink)}.challenges li.done>span:first-child{color:var(--pink)}.footer{text-align:center;padding:24px 16px 32px;color:var(--muted);font-family:var(--serif);font-size:15px}@media(min-width:900px){.layout{grid-template-columns:minmax(0,1.15fr) minmax(360px,.85fr);align-items:start;padding:24px}.board-panel{position:sticky;top:12px}.wordmark{font-size:48px}}@media(max-width:370px){.strip{font-size:11px;letter-spacing:0}.chip{padding:6px 10px}.stone{min-height:108px}.wordmark{font-size:36px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
