:root{--bg:#eef1f6;--card:#fff;--border:#e5e9f0;--text:#101a2c;--muted:#64748b;--accent:#2563eb;--accent-2:#1d4ed8;--accent-weak:#eaf1ff;--sidebar:#0a1a35;--sidebar-2:#0d2247;--sidebar-text:#c6d2e6;--sidebar-muted:#61789e;--ok:#159a6a;--danger:#dc2626;--shadow:0 1px 2px #101a2c0a, 0 4px 16px #101a2c0d}*{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif}.muted{color:var(--muted)}.app{min-height:100vh;display:flex}.sidebar{background:linear-gradient(180deg, var(--sidebar), var(--sidebar-2));width:264px;color:var(--sidebar-text);flex-direction:column;flex-shrink:0;height:100vh;padding:26px 18px;display:flex;position:sticky;top:0}.brand{letter-spacing:-.02em;color:#fff;padding:0 10px 26px;font-size:26px;font-weight:750}.brand span{color:#3b82f6}.navwrap{flex:1}.navsection{letter-spacing:.09em;text-transform:uppercase;color:var(--sidebar-muted);padding:6px 12px 10px;font-size:11px;font-weight:650}.navitem{width:100%;color:var(--sidebar-text);cursor:pointer;text-align:left;background:0 0;border:none;border-radius:10px;align-items:center;gap:12px;margin-bottom:3px;padding:11px 12px;font-size:14.5px;font-weight:550;display:flex}.navitem:hover{background:#ffffff0f}.navitem.active{background:var(--accent);color:#fff;box-shadow:0 4px 14px #2563eb59}.navitem svg{flex-shrink:0;width:20px;height:20px}.navspinner{background:var(--danger);border-radius:50%;flex-shrink:0;width:9px;height:9px;margin-left:auto;animation:1.1s ease-in-out infinite navspinner-pulse}@keyframes navspinner-pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.7)}}.profile{border-top:1px solid #ffffff14;align-items:center;gap:12px;padding:16px 8px 4px;display:flex}.pinfo{line-height:1.25;overflow:hidden}.pname{color:#fff;white-space:nowrap;text-overflow:ellipsis;font-size:14px;font-weight:600;overflow:hidden}.prole{color:var(--sidebar-muted);font-size:12px}.content{flex:1;max-width:1080px;padding:40px 48px 72px}.pagehead{margin-bottom:24px}.pagehead h1{letter-spacing:-.02em;color:var(--text);margin:0;font-size:30px;font-weight:720}.pagehead .sub{color:var(--muted);max-width:680px;margin:8px 0 0;font-size:15px;line-height:1.5}.formulacard{box-shadow:var(--shadow);background:#fffbeb;border:1px solid #fde68a;border-radius:16px;margin-bottom:20px;padding:20px 24px 18px}.formulatitle{letter-spacing:.04em;text-transform:uppercase;color:#b45309;margin-bottom:14px;font-size:13px;font-weight:650}.formulablock{background:#fef3c7;border:1px solid #fcd34d;border-radius:12px;margin:0;padding:16px 18px;overflow-x:auto}.formulablock-secondary{margin-top:10px}.formulablock code{color:#92400e;white-space:pre-wrap;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:13.5px;line-height:1.65;display:block}.formula-comment{color:#b45309;opacity:.75}.formula-hl{color:#c2410c;background:#ffedd5;border-radius:4px;padding:0 4px;font-weight:650}.formulanote{color:#a16207;margin:14px 0 0;font-size:13.5px;line-height:1.5}.card{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:16px;overflow:hidden}table.coef{border-collapse:collapse;width:100%}table.coef td{border-top:1px solid var(--border);vertical-align:middle;padding:15px 24px}table.coef tr:first-child td{border-top:none}.rowlabel{color:var(--text);width:50%;font-size:15px;font-weight:550}.rowinput{width:150px}.numin{border:1px solid var(--border);width:120px;color:var(--text);font-variant-numeric:tabular-nums;background:#f7f9fc;border-radius:9px;padding:10px 12px;font-size:15px}.numin:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak);background:#fff;outline:none}.rowaction{align-items:center;gap:12px;min-height:40px;display:flex}.btn{color:var(--text);border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:9px;padding:9px 16px;font-size:13.5px;font-weight:600}.btn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn.primary:hover:not(:disabled){background:var(--accent-2);color:#fff}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.danger:hover:not(:disabled){color:#fff;background:#b91c1c;border-color:#b91c1c}.ok{color:var(--ok);font-size:13px;font-weight:600}.bad{color:var(--danger);font-size:12.5px}.savepanel{padding:28px 24px}.savepanel .savenote{color:var(--muted);max-width:640px;margin:0 0 20px;font-size:14.5px;line-height:1.6}.saveresult{margin-top:14px;font-size:13.5px}.lastpush{border-top:1px solid var(--border);margin:18px 0 0;padding-top:16px;font-size:13px}.lastpush.bad{color:var(--danger)}.syncing{text-align:center;flex-direction:column;align-items:center;padding:8px 12px 4px;display:flex}.syncring{width:68px;height:68px;color:var(--danger);place-items:center;margin-bottom:18px;display:grid;position:relative}.syncring-track,.syncring-arc{border:3px solid var(--border);border-radius:50%;position:absolute;inset:0}.syncring-arc{border-color:#0000;border-top-color:var(--danger);border-right-color:var(--danger);animation:.85s cubic-bezier(.5,.1,.5,.9) infinite syncspin}.syncring svg{width:26px;height:26px;animation:1.5s ease-in-out infinite syncpulse}@keyframes syncspin{to{transform:rotate(360deg)}}@keyframes syncpulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.65;transform:scale(.82)}}.syncbar{background:var(--border);border-radius:999px;width:240px;height:6px;margin-bottom:16px;position:relative;overflow:hidden}.syncbar-fill{background:linear-gradient(90deg, #f87171, var(--danger));border-radius:999px;width:42%;animation:1.15s cubic-bezier(.4,0,.2,1) infinite syncbar-slide;position:absolute;top:0;bottom:0}@keyframes syncbar-slide{0%{left:-42%}to{left:100%}}.syncphase{color:var(--text);min-height:20px;margin:0 0 4px;font-size:14.5px;font-weight:620;transition:opacity .2s}.syncnote{color:var(--muted);margin:0;font-size:13px}.modalbackdrop{z-index:50;background:#0a122380;justify-content:center;align-items:center;padding:24px;display:flex;position:fixed;inset:0}.modal{background:var(--card);box-shadow:var(--shadow);border-radius:16px;width:420px;max-width:100%;padding:28px}.modal h3{color:var(--text);margin:0 0 10px;font-size:18px;font-weight:680}.modal p{color:var(--muted);margin:0;font-size:14.5px;line-height:1.55}.modalactions{justify-content:flex-end;gap:10px;margin-top:22px;display:flex}.splash{min-height:100vh;color:var(--muted);justify-content:center;align-items:center;display:flex}.gatewrap{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.gatecard{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);text-align:center;border-radius:16px;max-width:460px;padding:40px}.gatecard .brand{color:var(--text);padding:0 0 8px}.gatecard .brand span{color:var(--accent)}.gatecard h2{margin:8px 0;font-size:20px;font-weight:680}.gatecard .sub{color:var(--muted);font-size:14.5px;line-height:1.5}.gatecard .actions{justify-content:center;margin-top:20px;display:flex}.authpage{background:linear-gradient(180deg, var(--sidebar), var(--sidebar-2));place-items:center;min-height:100vh;padding:24px;display:grid}.authbox{text-align:center}.authbox .brand{color:#fff;padding:0 0 22px;font-size:34px}.authbox .brand span{color:#3b82f6}.authcard{background:var(--card);border:1px solid var(--border);box-shadow:var(--shadow);text-align:left;border-radius:16px;width:380px;max-width:100%;padding:32px 32px 28px}.authcard h1{color:var(--text);margin:0 0 6px;font-size:19px;font-weight:680}.authcard .sub{margin:0 0 22px}.flabel{color:var(--text);margin:14px 0 6px;font-size:13px;font-weight:600;display:block}.flabel:first-of-type{margin-top:0}.finput{border:1px solid var(--border);width:100%;color:var(--text);background:#f7f9fc;border-radius:9px;padding:11px 13px;font-size:14.5px}.finput:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-weak);background:#fff;outline:none}.ferr{color:var(--danger);margin:6px 0 0;font-size:12.5px}.ferr.formerr{text-align:center;margin-top:16px}.fsubmit{width:100%;margin-top:22px;padding:11px 0;font-size:14.5px}
