:root{--bg:#f5f6f2;--panel:#fff;--ink:#1f2933;--ink-soft:#607079;--border:#e2e6e3;--accent:#1b7f6f;--accent-soft:#1b7f6f24;--shadow:0 18px 35px #0d25221a;--font-body:"Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", "Yu Gothic", "Meiryo", sans-serif;--font-display:"Shippori Mincho", "Yu Mincho", "Hiragino Mincho ProN", serif;font-family:var(--font-body);color:var(--ink);background:var(--bg);text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-size:16px;line-height:1.6}*{box-sizing:border-box}body{background:radial-gradient(circle at 10% 20%,#fff 0%,#fff0 55%),radial-gradient(circle at 90% 10%,#eef5f1 0%,#eef5f100 50%),linear-gradient(#f8f9f6 0%,#f1f3ef 100%);min-height:100vh;margin:0}#root{min-height:100vh}button,input{font-family:inherit}.app{flex-direction:column;gap:20px;width:min(980px,92vw);margin:40px auto 64px;display:flex}.header h1{font-family:var(--font-display);letter-spacing:.02em;color:var(--ink);margin:0;font-size:clamp(28px,4vw,44px)}.content{grid-template-columns:minmax(260px,1fr) minmax(320px,1.2fr);gap:20px;display:grid}.panel{background:var(--panel);box-shadow:none;border:1px solid #d6dbd8;border-radius:12px;padding:16px;animation:.3s panelIn}.controls{flex-direction:column;gap:16px;display:flex}.field{flex-direction:column;gap:8px;display:flex}.field label{color:var(--ink);font-weight:600}.field input{border:1px solid var(--border);color:var(--ink);background:#fff;border-radius:12px;outline:none;padding:12px 14px;font-size:16px;transition:border-color .2s,box-shadow .2s}.field input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.button-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;display:grid}button{cursor:pointer;border:1px solid #0000;border-radius:12px;padding:10px 12px;font-size:14px;font-weight:600;transition:border-color .2s}button:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}button.primary{background:var(--accent);color:#fff}button.secondary{color:var(--ink);background:#f1f5f4;border-color:#e4ebe8}button.ghost{border-color:var(--border);color:var(--ink-soft);background:#fff}button:not(:disabled):hover{box-shadow:none;transform:none}.visual{flex-direction:column;display:flex}.meta{color:var(--ink-soft);justify-content:space-between;align-items:baseline;font-size:14px;display:flex}.meta strong{color:var(--ink);font-size:20px}.tube{flex-direction:column;align-items:center;gap:4px;margin:16px 0;display:flex}.tube-rim{background:#fff;border:2px solid #bfc7c3;border-radius:999px;width:100%;height:28px}.tube-body{border-inline:2px solid #bfc7c3;background:#fff;border-top:0;border-bottom:0;border-radius:22px;width:100%;min-height:320px;padding:10px;display:flex}.tube-base{background:#fff;border:2px solid #bfc7c3;border-radius:999px;width:88%;height:18px}.stack{background:0 0;border:1px dashed #1f29331a;border-radius:14px;flex-direction:column-reverse;flex:1;justify-content:flex-start;gap:8px;padding:8px 8px 12px;display:flex}.empty{color:var(--ink-soft);margin:auto;font-weight:500}.stack-item{box-shadow:none;background:#f8faf9;border:1px solid #dfe5e2;border-radius:999px;justify-content:space-between;align-items:center;padding:7px 10px;animation:.25s itemIn;display:flex}.stack-item.top{border-color:var(--accent);background:#edf7f4}.stack-item.peek{animation:.6s peekPulse}.stack-item.pop{animation:.28s forwards popOut}.stack-value{color:var(--ink);font-weight:600}.badge{letter-spacing:.12em;border:1px solid var(--border);color:var(--ink-soft);background:#fff;border-radius:999px;padding:4px 8px;font-size:11px}.top-display{color:var(--ink);background:#f1f5f4;border:1px solid #e4ebe8;border-radius:12px;justify-content:space-between;align-items:center;padding:10px 12px;display:flex}.top-display strong{font-size:18px}@keyframes panelIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes itemIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@keyframes popOut{to{opacity:0;transform:translateY(-26px)scale(.96)}}@keyframes peekPulse{0%{box-shadow:0 0 #1b7f6f66}to{box-shadow:0 0 0 10px #1b7f6f00}}@media (width<=900px){.app{margin-top:32px}.content{grid-template-columns:1fr}}
