:root{--ok:#2FBF71;--warn:#FFC83D;--danger:#FF4D4D;--info:#5AA9FF}.numgrid-page{min-height:100dvh;background:var(--bg-deep);display:flex;flex-direction:column}.numgrid-page>.topbar{flex:0 0 auto}.numgrid-page>main{flex:1 0 auto}.numgrid-head{display:flex;flex-wrap:wrap;gap:clamp(8px,2vw,12px) clamp(10px,3vw,20px);align-items:center;margin-bottom:16px}.numgrid-stat{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.04em;font-size:.82rem;color:var(--fg-muted)}.numgrid-stat b{color:var(--fg)}.numgrid-tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}.numgrid-tools input[type=number],.numgrid-tools input[type=search]{background:var(--bg-base);color:var(--fg);border:1px solid var(--border);border-radius:12px;padding:10px 14px;min-height:44px;min-width:clamp(100px,40vw,140px)}.numgrid-legend{display:flex;flex-wrap:wrap;gap:14px;font-size:.8rem;color:var(--fg-muted);margin-bottom:12px}.numgrid-legend span{display:inline-flex;align-items:center;gap:6px}.swatch{width:14px;height:14px;border-radius:4px;border:1px solid var(--border);display:inline-block}.swatch.av{background:var(--surface)}.swatch.sel{background:var(--cta-grad)}.swatch.mine{background:rgba(90,169,255,.18);border-color:var(--info)}.swatch.rsv{background:rgba(255,200,61,.3);border-color:var(--warn)}.swatch.sold{background:rgba(47,191,113,.34);border-color:var(--ok)}.swatch.lost{background:rgba(255,77,77,.3);border-color:var(--danger)}.numgrid-scroll{height:clamp(360px,58vh,640px);overflow:auto;position:relative;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-base);padding:8px}.numrow{position:absolute;top:0;left:0;width:100%;display:flex;gap:8px;padding:0 4px}.numcell{flex:1 1;min-width:0;height:44px;border-radius:10px;display:grid;place-items:center;cursor:pointer;font-family:var(--font-heading);font-weight:600;letter-spacing:.02em;font-size:.92rem;background:var(--surface);border:1px solid var(--border);color:var(--fg-muted);transition:transform .1s ease,border-color .12s ease,background .12s ease;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;-moz-user-select:none;user-select:none}.numcell--available:hover{border-color:var(--brand-bright);color:var(--fg)}.numcell--available:active{transform:scale(.96)}.numcell--selected{background:var(--cta-grad);color:var(--cta-ink);border-color:transparent;font-weight:700}.numcell--mine{background:rgba(90,169,255,.16);border-color:var(--info);color:#cfe6ff;cursor:default}.numcell--reserved{background:rgba(255,200,61,.3);border-color:var(--warn);color:#ffe7a3;cursor:not-allowed}.numcell--sold{background:rgba(47,191,113,.34);border-color:var(--ok);color:#d6ffe6;cursor:not-allowed}.numcell--blocked{background:var(--surface);border-color:var(--border);color:var(--fg-muted);cursor:not-allowed}.numcell--forfeited{background:rgba(255,77,77,.3);border-color:var(--danger);color:#ffd5d5;cursor:not-allowed}.numgrid-map .numcell{cursor:pointer;text-decoration:none}.numgrid-chips{flex:0 0 auto;display:flex;gap:8px;overflow-x:auto;padding:8px 2px;margin-top:10px;scrollbar-width:thin}.numchip{flex:0 0 auto;display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border-radius:999px;border:none;cursor:pointer;background:var(--cta-grad);color:var(--cta-ink);font-family:var(--font-heading);font-weight:700;font-size:.84rem;letter-spacing:.02em}.numchip span{font-size:1.05rem;line-height:1;opacity:.75}.numchip:hover span{opacity:1}.numgrid-bar{position:-webkit-sticky;position:sticky;bottom:0;z-index:5;margin-top:14px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;background:rgba(7,7,10,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border:1px solid var(--border);border-radius:var(--radius);padding:14px 18px max(14px,env(safe-area-inset-bottom))}.numgrid-bar .sum{margin-right:auto}@media (max-width:480px){.numgrid-tools input[type=number],.numgrid-tools input[type=search]{flex:1 1 100%;min-width:0}.numgrid-bar{flex-direction:column;align-items:stretch}.numgrid-bar .sum{margin:0 0 4px}.numgrid-bar .btn{width:100%}}@media (max-height:560px){.numgrid-scroll{height:clamp(220px,46vh,420px)}}.numgrid-bar .sum b{font-family:var(--font-display);color:var(--fg);font-size:1.2rem}.numgrid-msg{font-size:.9rem}.numgrid-msg.ok{color:var(--ok)}.numgrid-msg.err{color:var(--danger)}.qty{display:flex;align-items:stretch;width:100%;background:var(--bg-deep);border:1px solid var(--border-strong);border-radius:12px;overflow:hidden;transition:border-color .15s ease,box-shadow .15s ease}.qty:focus-within{border-color:var(--brand-bright);box-shadow:0 0 0 3px rgb(var(--brand-rgb)/.18)}.qty button{flex:0 0 auto;width:46px;min-height:46px;background:transparent;border:none;cursor:pointer;color:var(--fg-muted);font-family:var(--font-heading);font-size:1.4rem;font-weight:600;line-height:1;transition:background .15s ease,color .15s ease}.qty button:hover{background:var(--surface);color:var(--brand-bright)}.qty button:active{background:rgb(var(--brand-rgb)/.12)}.qty button:focus-visible{outline:2px solid var(--brand-bright);outline-offset:-2px}.qty input{flex:1 1 auto;min-width:0;background:transparent;border:none;border-left:1px solid var(--border);border-right:1px solid var(--border);color:var(--fg);text-align:center;font-family:var(--font-display);font-size:1.3rem;letter-spacing:.02em;padding:0 4px;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.qty input:focus{outline:none}.qty input::-webkit-inner-spin-button,.qty input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.qty--sm{width:auto}.qty--sm button{width:40px;min-height:40px;font-size:1.2rem}.qty--sm input{font-size:1.05rem;width:52px;flex:0 0 52px}.qp-line{display:flex;align-items:center;justify-content:center;gap:6px 10px;flex-wrap:wrap;text-align:center;margin-top:10px;padding:9px 16px;border-radius:999px;border:1px solid rgba(224,166,60,.28);background:rgba(224,166,60,.07);color:var(--fg-muted);font-size:.85rem;line-height:1.4}.qp-line b{color:#E8B457;font-family:var(--font-heading);font-weight:700}.qp-line__sep{opacity:.45}@media (max-width:480px){.qp-line{border-radius:14px}}