:root{--bg: #0b0f1a;--bg-2: #131a2a;--card: rgba(255, 255, 255, .08);--card-strong: rgba(255, 255, 255, .14);--ink: #f5f5f0;--ink-muted: rgba(245, 245, 240, .65);--accent: #ff9f1c;--accent-2: #2ec4b6;--danger: #ff5d5d;--shadow: 0 20px 60px rgba(0, 0, 0, .35);--radius: 18px}*{box-sizing:border-box}body{margin:0;font-family:Space Grotesk,sans-serif;color:var(--ink);background:radial-gradient(circle at 10% 20%,rgba(46,196,182,.12),transparent 55%),radial-gradient(circle at 90% 0%,rgba(255,159,28,.18),transparent 45%),linear-gradient(140deg,#0a0f1f,#161f35 60%,#111824);min-height:100vh}a{color:inherit}.page{padding:40px 6vw 80px}.hero{display:flex;flex-direction:column;gap:16px;margin-bottom:32px}.hero h1{font-family:Fraunces,serif;font-size:clamp(2.4rem,4vw,3.5rem);margin:0}.hero p{margin:0;max-width:720px;color:var(--ink-muted)}.panel{background:var(--card);border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.grid{display:flex;flex-wrap:wrap;gap:24px;align-items:flex-start}.config-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:20px;width:100%;margin-bottom:24px}.ticker-config-card{width:100%;padding:20px;background:#ffffff0a;border-radius:var(--radius);border:1px solid rgba(255,255,255,.08);margin-bottom:24px}.ticker-config-row{display:flex;flex-wrap:wrap;gap:32px;margin-bottom:20px}.ticker-input-group{flex:1;min-width:320px}.ticker-tools-group{flex:0 0 auto}.ticker-presets-group{flex:1;min-width:320px}.ticker-pool-section{width:100%;margin-top:16px;padding-top:16px;border-top:1px solid rgba(255,255,255,.08)}.ticker-pool-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px;gap:20px;flex-wrap:wrap}.ticker-search-row{margin-bottom:0;flex:1;max-width:400px}.label{font-size:.75rem;font-weight:700;color:var(--ink-muted);margin-bottom:8px;text-transform:uppercase;letter-spacing:.1em}.ticker-manager{display:grid;gap:16px}.ticker-input-row{display:grid;grid-template-columns:1fr auto;gap:10px}.ticker-actions{display:flex;gap:10px;flex-wrap:wrap}.ticker-presets{display:flex;flex-wrap:wrap;gap:8px}.ticker-file-row{display:flex;align-items:center}.upload-label{display:inline-flex;align-items:center;gap:8px;font-size:.85rem;color:var(--ink-muted)}.upload-input{max-width:260px}.ticker-tip{font-size:.8rem;color:var(--ink-muted);line-height:1.4;margin-top:8px}.ticker-tip code{color:var(--ink)}.ticker-search-input{margin-bottom:8px;background:#ffffff0d;font-size:.85rem}.ticker-chip.failed{background:#ff5d5d26;border-color:#ff5d5d4d;color:#ff8e8e}.ticker-pool{display:flex;flex-wrap:wrap;gap:8px;min-height:34px}.ticker-chip{display:inline-flex;align-items:center;gap:8px;padding:6px 10px;border-radius:999px;background:#ffffff1a;border:1px solid rgba(255,255,255,.12);font-size:.82rem}.ticker-chip button{width:20px;height:20px;border-radius:50%;border:none;padding:0;font-size:14px;line-height:1;color:var(--ink);background:#ff5d5d2e}input,select,textarea,button{font-family:inherit}input,select,textarea{width:100%;padding:10px 12px;border-radius:12px;border:1px solid rgba(255,255,255,.14);background:#070a1299;color:var(--ink)}textarea{min-height:80px}button{border:none;padding:12px 18px;border-radius:12px;cursor:pointer;font-weight:600;background:linear-gradient(120deg,var(--accent),#ffc463);color:#10131d;transition:transform .15s ease,box-shadow .15s ease}button.secondary,.button-label{background:#ffffff1f;color:var(--ink);display:inline-flex;align-items:center;justify-content:center;text-decoration:none;border:none;padding:12px 18px;border-radius:12px;cursor:pointer;font-weight:600;font-family:inherit;font-size:1rem;transition:background .2s ease,transform .1s ease}.button-label:hover,button.secondary:hover{background:#ffffff2e}.button-label:active,button.secondary:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}.actions{display:flex;gap:12px;flex-wrap:wrap}.status-pill{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;background:#ffffff1f;font-size:.85rem}.progress-wrap{margin-top:12px}.progress-label{font-size:.8rem;color:var(--ink-muted);margin-bottom:6px}.progress-track{height:10px;border-radius:999px;background:#ffffff1f;overflow:hidden}.progress-fill{height:100%;width:0;border-radius:999px;background:linear-gradient(90deg,var(--accent),#ffd17c);transition:width .35s ease}.progress-fill.alt{background:linear-gradient(90deg,var(--accent-2),#7debe0)}.progress-fill.failed{background:linear-gradient(90deg,var(--danger),#ff8e8e)}.drawing-wrap{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:18px}.canvas-shell{border-radius:16px;border:1px solid rgba(255,255,255,.2);background:#0a0e1899;padding:14px;display:grid;gap:8px}.canvas-shell canvas{display:block;touch-action:none}.canvas-axes{display:grid;grid-template-columns:52px minmax(0,1fr);gap:12px;align-items:stretch}.canvas-frame{border:2px solid rgba(255,255,255,.25);border-radius:12px;background:#06091099;overflow:hidden}.y-axis{display:flex;flex-direction:column;justify-content:space-between;font-size:.8rem;color:#fff9;padding:4px 0}.x-axis{display:flex;justify-content:space-between;font-size:.8rem;color:#fff9;margin-left:64px}.span-track{position:relative;height:8px;margin-left:64px;border-radius:999px;background:#ffffff14;overflow:hidden}.span-chip{position:absolute;top:0;bottom:0;border-radius:999px;background:linear-gradient(90deg,#ff9f1c33,#ff9f1c99)}.pattern-preview{width:100%;height:120px;border-radius:14px;border:1px dashed rgba(255,255,255,.2);background:#0003}.matches{margin-top:24px;display:grid;gap:16px}.match-card{background:var(--card-strong);border-radius:var(--radius);padding:16px;display:grid;gap:12px}.match-header{display:flex;align-items:center;justify-content:space-between}.score{color:var(--accent-2);font-weight:600}.chart-wrap{background:#070a1299;border-radius:12px;padding:8px;position:relative}.chart-badge{position:absolute;top:10px;right:12px;background:#0a0e18e6;border:1px solid rgba(255,255,255,.12);border-radius:999px;padding:4px 10px;font-size:.8rem;color:var(--ink)}.muted{color:var(--ink-muted)}.notice{padding:12px 16px;border-radius:14px;background:#ff9f1c1f;color:var(--ink)}@media (max-width: 900px){.drawing-wrap{grid-template-columns:1fr}}
