:root{--red: #d01012;--yellow: #ffcf00;--bg: #f4f4f6;--card: #fff;--text: #1d1d22;--muted: #6b6b76;--border: #e2e2e8;--good: #2e9d4f;--mid: #e8a317;--low: #d0453c;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0}a{color:var(--red)}h2{margin:.2em 0 .4em}h3{margin:.6em 0 .4em;font-size:1.05rem}input,select,button,.button{font:inherit;padding:.55em .8em;border-radius:10px;border:1px solid var(--border);background:#fff;color:var(--text)}input:not([type=checkbox]){width:100%}input.qty{width:5.5em}button,.button{cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:.3em;white-space:nowrap}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--red);color:#fff;border-color:var(--red);font-weight:600}button.big{padding:.9em 1.2em;font-size:1.05rem;flex:1;justify-content:center}button.link{border:none;background:none;padding:0;color:var(--red);text-align:left}.small,button.small,.button.small{font-size:.85rem}button.small,.button.small{padding:.35em .6em}.muted{color:var(--muted)}.error{color:var(--low)}.row{display:flex;align-items:center}.row.gap{gap:.5em}.row.wrap{flex-wrap:wrap}.row.between{justify-content:space-between;gap:.5em}.grow{flex:1;min-width:0}.mt{margin-top:.7em}.check{display:flex;align-items:center;gap:.4em;margin:.6em 0;white-space:nowrap}.check input{width:auto}code{background:#eee;padding:.1em .3em;border-radius:4px}.app{min-height:100vh;display:flex;flex-direction:column}header{position:sticky;top:0;z-index:10;background:var(--red);color:#fff;padding:.7em 1em;display:flex;justify-content:space-between;align-items:center}.logo{font-weight:800;letter-spacing:.02em}.header-stat{background:var(--yellow);color:#000;padding:.2em .6em;border-radius:999px;font-weight:600}main{flex:1;padding-bottom:5.5em}.view{max-width:1000px;margin:0 auto;padding:1em}nav{position:fixed;bottom:0;left:0;right:0;z-index:10;display:flex;background:#fff;border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}nav button{flex:1;flex-direction:column;border:none;border-radius:0;background:none;padding:.5em .2em;gap:.1em}nav button .icon{font-size:1.3rem}nav button .label{font-size:.72rem;color:var(--muted)}nav button.active .label{color:var(--red);font-weight:700}nav button.active{box-shadow:inset 0 3px 0 var(--red)}.card{background:var(--card);border:1px solid var(--border);border-radius:14px;padding:.8em;margin-bottom:.8em}button.card{text-align:left;width:100%;display:block;color:inherit}details summary{cursor:pointer;font-weight:600;margin-bottom:.5em}.banner{background:#fff6d6;border:1px solid var(--yellow);padding:.7em;border-radius:10px;margin-bottom:.8em}.list{display:flex;flex-direction:column;gap:.5em}.list .card{margin-bottom:0}.inv{display:flex;align-items:center;gap:.7em}.inv.ok{opacity:.6}.title{font-weight:600;overflow:hidden;text-overflow:ellipsis}.thumb,.thumb-s,.img-ph{object-fit:contain;background:#fff;border-radius:8px;flex-shrink:0}.thumb{width:56px;height:56px;border:1px solid var(--border)}.thumb-s{width:36px;height:36px}.img-ph{display:flex;align-items:center;justify-content:center;width:56px;height:56px;background:#eee}.img-ph.set-img{width:100%;height:140px}.swatch{display:inline-block;width:.9em;height:.9em;border-radius:3px;border:1px solid rgba(0,0,0,.25);vertical-align:-.1em}.swatch.trans{opacity:.6}.stepper{display:flex;align-items:center;gap:.3em}.stepper button{width:2.2em;height:2.2em;justify-content:center;padding:0;font-size:1.1rem}.stepper span{min-width:2em;text-align:center;font-weight:700}.photo-wrap{position:relative;margin:1em 0;border-radius:12px;overflow:hidden;background:#000}.photo-wrap img{display:block;width:100%}.bbox{position:absolute;border:3px solid var(--yellow);border-radius:6px}.bbox.off{border-color:#ffffff80;border-style:dashed}.bbox span{position:absolute;top:-2px;left:-2px;background:var(--yellow);color:#000;font-weight:800;font-size:.8rem;padding:0 .4em;border-radius:4px 0}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;background:#0000008c;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:600}.piece{display:flex;flex-direction:column;gap:.5em}.piece.dim{opacity:.6}.piece-head{display:flex;align-items:center;gap:.6em}.piece-head input{width:auto}.badge{background:var(--yellow);font-weight:800;border-radius:6px;padding:0 .45em}.cands{display:flex;gap:.4em;overflow-x:auto}.cand{flex-direction:column;padding:.3em}.cand.sel{border-color:var(--red);box-shadow:0 0 0 2px var(--red) inset}.part-search{position:relative}.dropdown{position:absolute;z-index:20;left:0;right:0;max-height:300px;overflow:auto;background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #0000001f}.dropdown-item{width:100%;border:none;border-radius:0;text-align:left;white-space:normal;border-bottom:1px solid var(--border)}.sticky{position:sticky;bottom:5em;width:100%;margin-top:1em;box-shadow:0 6px 20px #0003}.filters label{display:flex;align-items:center;gap:.3em;white-space:nowrap}.filters input[type=number]{width:5em}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:.7em}.grid .card{margin:0;display:flex;flex-direction:column;gap:.3em;color:inherit;text-decoration:none}img.set-img{width:100%;height:140px;object-fit:contain;background:#fff}.set-head{display:flex;gap:1em;flex-wrap:wrap;margin-bottom:1em}img.set-img-l,.img-ph.set-img-l{width:260px;max-width:100%;height:200px;object-fit:contain;background:#fff;border-radius:12px;border:1px solid var(--border)}.pct{position:relative;height:1.3em;background:#eee;border-radius:999px;overflow:hidden;margin:.3em 0}.pct-bar{height:100%}.pct-bar.good{background:var(--good)}.pct-bar.mid{background:var(--mid)}.pct-bar.low{background:var(--low)}.pct span{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700}.need{font-weight:700;padding:.2em .6em;border-radius:8px}.need.miss{background:#fde3e1;color:var(--low)}.need.have{background:#dff3e5;color:var(--good)}.toast{position:fixed;bottom:5.5em;left:50%;transform:translate(-50%);background:#222;color:#fff;padding:.7em 1.1em;border-radius:10px;z-index:50;max-width:90vw;box-shadow:0 6px 20px #0000004d}.toast.error{background:var(--low)}main{overflow-x:hidden}.grid .card{align-items:stretch}.list .button{white-space:normal;text-align:left}.set-head>.grow{min-width:240px}@media (max-width: 560px){img.set-img-l,.img-ph.set-img-l{width:100%}}.login-wrap{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;background:linear-gradient(160deg,#8fc9f2,#4a97d8 55%,#1f5fa8);display:flex;align-items:center;justify-content:center}.login-brick{position:absolute;top:-120px;border-radius:7px;background-image:radial-gradient(circle at 11px 7px,rgba(255,255,255,.55) 4px,rgba(0,0,0,.1) 4.8px,transparent 6px);background-size:22px 14px;background-repeat:repeat-x;box-shadow:0 5px #00000026;opacity:.92;will-change:transform;animation:brick-fall linear infinite}@keyframes brick-fall{0%{transform:translateY(0) rotate(-14deg)}to{transform:translateY(135vh) rotate(346deg)}}.login-card{position:relative;background:#fff;border-radius:16px;padding:1.7em 1.4em 1.4em;width:min(92vw,370px);box-shadow:0 24px 60px #00000059;display:flex;flex-direction:column}.login-card .studs{position:absolute;top:-13px;left:0;right:0;display:flex;justify-content:center;gap:12px}.login-card .studs i{display:block;width:36px;height:15px;background:#fff;border-radius:9px 9px 4px 4px;box-shadow:inset 0 -3px #0000001a}.login-title{text-align:center;font-weight:800;font-size:1.45rem;margin:.15em 0 .1em}.login-sub{text-align:center;margin:0 0 1em}.login-card.shake{animation:login-shake .45s}@keyframes login-shake{0%,to{transform:translate(0)}20%{transform:translate(-9px)}40%{transform:translate(9px)}60%{transform:translate(-6px)}80%{transform:translate(6px)}}.splash{min-height:100vh;display:flex;align-items:center;justify-content:center;font-size:4rem;animation:splash-pulse .9s ease-in-out infinite alternate}@keyframes splash-pulse{0%{transform:scale(.9);opacity:.55}to{transform:scale(1.12);opacity:1}}.header-user{opacity:.85;font-weight:600}.pw-wrap{position:relative;display:flex;margin-top:.7em}.pw-wrap input{padding-right:2.6em}.pw-eye{position:absolute;right:.25em;top:50%;transform:translateY(-50%);border:none;background:none;padding:.3em;font-size:1.1rem;line-height:1}
