:root{--purple: #6d28d9;--purple-light: #7c3aed;--bg: #0f0a1f;--card: #ffffff;--ink: #1e1b2e;--muted: #6b5b8e;--border: #e5e0f0}*{box-sizing:border-box;margin:0;padding:0}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#f4f2fb;color:var(--ink);-webkit-font-smoothing:antialiased}.app{max-width:720px;margin:0 auto;min-height:100vh;display:flex;flex-direction:column;background:#f4f2fb}.topbar{background:linear-gradient(135deg,#2a0a4a,var(--purple));color:#fff;padding:16px 20px;position:sticky;top:0;z-index:10}.brand{display:flex;align-items:center;gap:12px}.brand .logo{font-size:28px}.brand h1{font-size:18px;font-weight:800;letter-spacing:.5px}.brand p{font-size:11px;opacity:.8;text-transform:uppercase;letter-spacing:1px}.content{flex:1;padding:16px 16px 90px;display:flex;flex-direction:column;gap:16px}.card{background:var(--card);border-radius:14px;padding:18px;box-shadow:0 2px 12px #2d0a4a0f}.card h2{font-size:15px;margin-bottom:14px;color:var(--purple)}.card-head{display:flex;justify-content:space-between;align-items:center;cursor:pointer}.card-head h2{margin-bottom:0}.hint{font-size:12px;color:var(--muted);margin-bottom:12px}.upload-box{display:block;text-align:center;padding:22px 12px;border:2px dashed #6d28d9;border-radius:10px;cursor:pointer;font-weight:600;color:#6d28d9}.gantt{margin:14px 0}.timeline-hero{text-align:center;padding:14px;border-radius:12px;background:linear-gradient(135deg,#6d28d9,#4c1d95);color:#fff;margin-bottom:14px}.timeline-hero .hint{color:#ffffffbf;margin:0}.timeline-duration{font-size:28px;font-weight:800;margin:4px 0}.gantt-dates{font-size:11px;color:var(--muted);margin-top:2px}.gantt-row{margin-bottom:10px}.gantt-label{font-size:13px;margin-bottom:4px}.gantt-track{position:relative;height:22px;background:#6d28d914;border-radius:6px;overflow:hidden}.gantt-bar{position:absolute;top:0;bottom:0;background:linear-gradient(90deg,#6d28d9,#8b5cf6);border-radius:6px;color:#fff;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;min-width:26px}.subhead{font-size:13px;font-weight:600;color:var(--muted);margin:14px 0 8px}.grid3{display:grid;grid-template-columns:1fr 1fr 1fr;gap:10px}.chips{display:flex;flex-wrap:wrap;gap:6px;margin:10px 0}.chip{font-size:12px;padding:5px 10px;border-radius:999px;border:1px solid var(--border, #d4d4d8);background:transparent;color:inherit;cursor:pointer}.chip.active{background:#6d28d9;border-color:#6d28d9;color:#fff}.admin-box{margin-top:20px;padding:14px;border:1px dashed var(--border, #d4d4d8);border-radius:10px}.admin-box h3{font-size:14px;margin:0 0 6px}.field{margin-bottom:14px;display:flex;flex-direction:column}.field label{font-size:12px;font-weight:600;margin-bottom:6px;color:var(--ink)}.field small{font-size:11px;color:var(--muted);margin-top:4px}input,select{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:9px;font-size:14px;font-family:inherit;background:#fbfaff;color:var(--ink)}input:focus,select:focus{outline:none;border-color:var(--purple)}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px}.row-between{display:flex;align-items:center;justify-content:space-between;padding:6px 0;border-bottom:1px solid var(--border, #eee);font-size:14px}.stage-inline{display:flex;align-items:center;gap:8px;font-weight:600;cursor:pointer}.stage-inline input{width:auto}.block-toggle{display:grid;grid-template-columns:1fr 1fr;gap:10px}.block-toggle button{padding:12px;border:1px solid var(--border);background:#fbfaff;border-radius:9px;font-size:13px;cursor:pointer;color:var(--ink)}.block-toggle button.active{border-color:var(--purple);background:#f3edff;font-weight:600}.stage{display:flex;align-items:flex-start;gap:10px;padding:12px;border:1px solid var(--border);border-radius:10px;margin-bottom:10px;cursor:pointer}.stage.on{border-color:var(--purple);background:#f6f1ff}.stage input{width:auto;margin-top:3px}.stage div{display:flex;flex-direction:column}.stage strong{font-size:13px}.stage span{font-size:11px;color:var(--muted)}.total-card{background:linear-gradient(135deg,var(--purple),#9333ea);color:#fff;border-radius:16px;padding:22px;text-align:center}.total-label{font-size:12px;text-transform:uppercase;letter-spacing:1px;opacity:.85}.total-value{font-size:34px;font-weight:800;margin:6px 0}.fx-row{display:flex;justify-content:center;gap:6px;margin:10px 0;flex-wrap:wrap}.fx{background:#ffffff26;border:none;color:#fff;padding:5px 10px;border-radius:20px;font-size:12px;cursor:pointer}.fx.active{background:#fff;color:var(--purple);font-weight:700}.total-meta{font-size:11px;opacity:.85;margin-top:6px}.trades{width:100%;border-collapse:collapse;font-size:12px}.trades th,.trades td{text-align:right;padding:8px 6px;border-bottom:1px solid var(--border)}.trades th:first-child,.trades td:first-child{text-align:left}.trades th{color:var(--muted);font-weight:600;font-size:11px}.trades .strong{font-weight:700;color:var(--purple)}.qty-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.qty-grid div{display:flex;flex-direction:column;padding:12px;background:#f6f1ff;border-radius:10px}.qty-grid span{font-size:11px;color:var(--muted)}.qty-grid strong{font-size:16px;color:var(--ink)}.actions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.primary,.secondary{padding:14px;border-radius:10px;border:none;font-size:14px;font-weight:700;cursor:pointer}.primary{background:var(--purple);color:#fff}.secondary{background:#ede7fb;color:var(--purple)}.empty{text-align:center;color:var(--muted);padding:30px;font-size:14px}.history-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:1px solid var(--border)}.history-item strong{display:block;font-size:14px}.history-item span{font-size:12px;color:var(--muted)}.history-actions{display:flex;gap:8px}.history-actions button{border:1px solid var(--border);background:#fbfaff;padding:6px 12px;border-radius:8px;cursor:pointer;font-size:12px}.tabbar{position:fixed;bottom:0;left:0;right:0;max-width:720px;margin:0 auto;background:#fff;border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(4,1fr)}.tabbar button{background:none;border:none;padding:8px 4px;font-size:18px;cursor:pointer;color:var(--muted);display:flex;flex-direction:column;align-items:center;gap:3px}.tabbar button span{font-size:11px}.tabbar button.on{color:var(--purple);font-weight:700}
