:root{--bg: #f5f6f8;--panel: #fff;--border: #d8dce3;--text: #1d2330;--muted: #6b7280;--accent: #2563eb;--accent-soft: #e8efff;--header: #1f2a44;--good: #15803d;--warn: #b45309;font-family:-apple-system,SF Pro Text,system-ui,Segoe UI,Roboto,sans-serif}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-size:13px}.app{display:flex;flex-direction:column;height:100%}.empty{color:var(--muted);text-align:center;margin-top:80px}.muted{color:var(--muted)}.mono{font-family:ui-monospace,monospace}button{font:inherit;border:1px solid var(--border);background:var(--panel);color:var(--text);padding:6px 12px;border-radius:6px;cursor:pointer}button:hover{background:#eef1f6}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{background:#1d4ed8}button.primary:disabled{opacity:.5;cursor:default}button.big{width:100%;padding:11px;font-size:15px;font-weight:600;margin-top:8px}input,select,textarea{font:inherit;padding:8px 10px;border:1px solid var(--border);border-radius:6px;width:100%}textarea{resize:vertical}.topnav{display:flex;align-items:center;gap:6px;padding:10px 16px;background:var(--header);color:#fff}.brand{font-weight:700;font-size:15px;margin-right:14px;cursor:pointer}.navlink{background:transparent;border:none;color:#c4cde3;padding:6px 10px}.navlink:hover{background:#2a3550;color:#fff}.navlink.on{color:#fff;font-weight:600}.cta{background:#22c55e;color:#08240f;border:none;font-weight:700}.user{color:#9fb0d0;font-size:12px;margin:0 8px}.error{color:#b91c1c;background:#fee2e2;border:1px solid #fecaca;padding:8px 10px;border-radius:6px;margin-top:8px}.error.bar{border-radius:0;margin:0;cursor:pointer}.subbar{background:#fff7ed;color:var(--warn);border-bottom:1px solid #fed7aa;padding:8px 16px;cursor:pointer}.content{padding:18px;overflow:auto;flex:1}.proj-head{display:flex;align-items:center;margin-bottom:16px}.proj-head h2{margin:0;flex:1}.proj-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.proj-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px}.proj-name{font-weight:600;font-size:15px;cursor:pointer}.proj-name:hover{color:var(--accent)}.proj-meta{color:var(--muted);font-size:12px;margin:6px 0 12px}.proj-actions{display:flex;gap:8px}.body{display:flex;flex:1;min-height:0}.sidebar{width:244px;background:var(--panel);border-right:1px solid var(--border);overflow:auto;padding:8px 0}.group-title{padding:8px 14px 4px;font-size:11px;text-transform:uppercase;color:var(--muted);letter-spacing:.04em}.item{padding:6px 14px;cursor:pointer}.item:hover{background:var(--accent-soft)}.tabs{display:flex;align-items:center;gap:2px;border-bottom:1px solid var(--border);margin-bottom:12px}.tab{padding:9px 16px;cursor:pointer;border-bottom:2px solid transparent;color:var(--muted)}.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.ds-name{color:var(--muted);font-size:12px;padding-right:4px}table.data,table.result{border-collapse:collapse;width:100%;background:var(--panel);font-variant-numeric:tabular-nums}table.result{margin-bottom:8px}table.data th,table.data td,table.result th,table.result td{border:1px solid var(--border);padding:4px 8px;text-align:right;white-space:nowrap}table.data th,table.result th{background:#eef1f6;text-align:center;font-weight:600}table.data td:first-child,table.result td:first-child{text-align:left}.card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px;margin-bottom:14px}.result-block{margin-bottom:14px}.result-block h4{margin:0 0 6px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}.note{color:var(--warn);font-size:12px;margin:4px 0}.plot img{max-width:100%;border:1px solid var(--border);border-radius:6px}.interp{background:#f8fafc;border-left:3px solid var(--accent);padding:10px 12px;margin-top:8px;white-space:pre-wrap;line-height:1.45}.measure-chip{font-size:10px;color:var(--muted);border:1px solid var(--border);border-radius:8px;padding:0 5px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000059;display:flex;align-items:center;justify-content:center;z-index:100}.modal{background:var(--panel);border-radius:10px;padding:18px;width:520px;max-height:86vh;overflow:auto;box-shadow:0 12px 40px #00000040}.modal h2{margin:0 0 12px;font-size:16px}.field{margin-bottom:12px}.field label{display:block;font-weight:600;margin-bottom:4px}.var-list{border:1px solid var(--border);border-radius:6px;max-height:160px;overflow:auto}.var-list .opt{padding:5px 9px;cursor:pointer;display:flex;gap:8px;align-items:center}.var-list .opt.sel,.var-list .opt:hover{background:var(--accent-soft)}.var-list .opt input{width:auto}.modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px}.auth-wrap{display:flex;align-items:center;justify-content:center;height:100%}.auth-card{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:32px;width:400px;box-shadow:0 8px 40px #00000014}.brand-lg{font-size:24px;font-weight:800;color:var(--header)}.auth-sub{color:var(--muted);margin:6px 0 18px}.seg{display:flex;gap:4px;background:#eef1f6;padding:3px;border-radius:8px;margin-bottom:16px}.seg button{flex:1;border:none;background:transparent;padding:7px}.seg button.on{background:#fff;font-weight:600;box-shadow:0 1px 3px #0000001a}.lbl{display:block;font-weight:600;font-size:12px;margin:12px 0 5px}.pricing-wrap{max-width:520px;margin:40px auto;padding:0 16px;text-align:center}.pricing-h{font-size:30px;margin:0 0 6px;color:var(--header)}.pricing-lead{color:var(--muted);margin:0 0 26px}.plan-card{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:28px;box-shadow:0 10px 40px #0000000f;display:flex;flex-direction:column;text-align:left}.plan-name{font-weight:700;font-size:16px;color:var(--accent)}.plan-price{margin:10px 0 18px}.plan-price .amount{font-size:44px;font-weight:800}.plan-price .per{color:var(--muted);font-size:16px;margin-left:4px}.plan-features{list-style:none;padding:0;margin:0 0 20px}.plan-features li{display:flex;gap:8px;padding:7px 0;border-bottom:1px solid #f1f3f7;line-height:1.35}.check{color:var(--good);font-weight:700}.fineprint{color:var(--muted);font-size:11px;text-align:center;margin:12px 0 0}.badge{font-size:11px;padding:3px 10px;border-radius:10px;background:#e5e7eb;color:var(--muted)}.badge.ok{background:#dcfce7;color:var(--good)}.settings .row{display:flex;gap:8px;align-items:center;margin:10px 0;max-width:640px}.settings h3{margin-bottom:4px}.landing{min-height:100%;background:linear-gradient(180deg,#f8fafc,#eef2f9)}.lp-nav{display:flex;align-items:center;gap:12px;padding:16px 28px}.lp-link{background:none;border:none;color:var(--accent);cursor:pointer;padding:6px 8px;font:inherit;text-decoration:none}.lp-link:hover{text-decoration:underline}.lp-ghost{background:transparent;border:1px solid var(--border)}.lp-cta{background:var(--accent);color:#fff;border:none;font-weight:700}.lp-cta:hover{background:#1d4ed8}.lp-cta.big,.lp-ghost.big{padding:12px 22px;font-size:16px;border-radius:8px}.lp-hero{max-width:820px;margin:40px auto 10px;padding:0 24px;text-align:center}.lp-hero h1{font-size:44px;line-height:1.1;margin:10px 0 16px;color:var(--header);letter-spacing:-.02em}.lp-sub{font-size:18px;color:var(--muted);line-height:1.5;max-width:680px;margin:0 auto 26px}.lp-hero-cta{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}.lp-fine{color:var(--muted);font-size:13px;margin-top:16px}.lp-features{max-width:1000px;margin:48px auto;padding:0 24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:18px}.lp-feature{background:#fff;border:1px solid var(--border);border-radius:12px;padding:20px}.lp-feature h3{margin:0 0 6px;color:var(--accent)}.lp-feature p{margin:0;color:var(--muted);line-height:1.45}.lp-pricing{max-width:520px;margin:20px auto 60px;padding:0 24px;text-align:center}.lp-pricing h2{font-size:26px;color:var(--header)}.lp-plan{background:#fff;border:1px solid var(--border);border-radius:16px;padding:28px;box-shadow:0 10px 40px #0000000f;text-align:left}.lp-footer{display:flex;align-items:center;gap:8px;max-width:1000px;margin:0 auto;padding:24px;color:var(--muted);font-size:13px;border-top:1px solid var(--border)}.legal{max-width:760px;margin:0 auto;padding:28px 24px 60px}.legal-head h1{margin:10px 0 4px;color:var(--header)}.legal-section{margin:20px 0}.legal-section h3{margin:0 0 6px}.legal-section p{margin:0;color:#374151;line-height:1.55}.update-bar{display:flex;align-items:center;justify-content:center;gap:14px;background:#0f766e;color:#fff;padding:9px 16px;font-weight:500}.update-btn{background:#fff;color:#0f766e;border:none;font-weight:700;padding:6px 14px;border-radius:6px}.update-btn:hover{background:#e6fffb}.pay-box{border:1px solid var(--border);border-radius:10px;padding:16px;background:#f8fafc;text-align:left}.pay-box h3{font-size:15px}.pay-details{display:flex;flex-direction:column;gap:8px;margin:12px 0}.pay-row{display:flex;align-items:center;gap:10px}.pay-label{width:120px;color:var(--muted);font-size:13px;flex-shrink:0}.pay-value{font-weight:600;font-family:ui-monospace,monospace;word-break:break-all;flex:1}.pay-copy{font-size:12px;padding:3px 9px}.admin h3{margin-top:22px}.stat-row{display:flex;gap:12px;flex-wrap:wrap;margin:8px 0 4px}.stat-card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:14px 18px;min-width:130px}.stat-val{font-size:26px;font-weight:800}.stat-val.good{color:var(--good)}.stat-val.warn{color:var(--warn)}.stat-label{color:var(--muted);font-size:12px;margin-top:2px}.admin table.data td{text-align:center}.admin table.data input[type=number]{padding:4px 6px}
