.auth-shell{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.auth-nav{display:flex;align-items:center;justify-content:space-between;padding:18px 28px;max-width:1240px;margin:0 auto;width:100%}.auth-nav .brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:15px;letter-spacing:-.015em;color:var(--text)}.auth-nav .brand svg{width:24px;height:24px}.auth-main{flex:1;display:flex;align-items:center;justify-content:center;padding:24px}.auth-card{width:100%;max-width:400px;background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:32px;box-shadow:0 1px #ffffff09 inset,0 24px 60px -30px #0009}.auth-card h1{font-size:22px;font-weight:600;letter-spacing:-.02em;color:var(--text)}.auth-card .sub{color:var(--text-secondary);font-size:13.5px;margin-top:6px;line-height:1.55}.auth-field{margin-top:14px}.auth-field label{display:block;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);margin-bottom:6px}.auth-field input{width:100%;height:40px;padding:0 12px;border-radius:10px;background:var(--panel-2);border:1px solid var(--border);color:var(--text);font:inherit;font-size:14px;outline:none;transition:border-color .15s var(--ease),box-shadow .15s var(--ease)}.auth-field input:focus{border-color:var(--accent-ring);box-shadow:0 0 0 3px var(--accent-soft)}input:-webkit-autofill,input:-webkit-autofill:hover,input:-webkit-autofill:focus{-webkit-text-fill-color:var(--text);-webkit-box-shadow:0 0 0 1000px var(--panel-2) inset;caret-color:var(--text);transition:background-color 9999999s ease-out 0s}.auth-submit{width:100%;height:42px;margin-top:18px;border:0;border-radius:999px;background:var(--accent);color:#180b02;font:inherit;font-size:14.5px;font-weight:500;cursor:pointer;transition:all .15s var(--ease)}.auth-submit:hover{background:#ffb182}.auth-submit:disabled{opacity:.5;cursor:default}.auth-alt{width:100%;height:42px;margin-top:10px;border:1px solid var(--border-strong);border-radius:999px;background:transparent;color:var(--text);font:inherit;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:9px;transition:background .15s var(--ease)}.auth-alt:hover{background:var(--panel-2)}.auth-alt svg{width:16px;height:16px}.auth-divider{display:flex;align-items:center;gap:12px;margin:18px 0 8px;font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary)}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--border)}.auth-switch{margin-top:16px;text-align:center;font-size:13px;color:var(--text-tertiary)}.auth-switch button{background:none;border:0;color:var(--accent);cursor:pointer;font:inherit;padding:0 3px}.auth-error{margin-top:12px;padding:10px 12px;border-radius:10px;background:var(--danger-soft);color:var(--danger);font-size:12.5px;line-height:1.5}.profile-row{display:flex;align-items:center;gap:12px;padding:14px;border-radius:14px;background:var(--panel-2);border:1px solid var(--border)}.profile-row .av{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,#3a2419,#1a0f08);display:flex;align-items:center;justify-content:center;color:var(--accent);font-size:15px;font-weight:600;overflow:hidden;flex:0 0 40px}.profile-row .av img{width:100%;height:100%;object-fit:cover}.profile-row .who b{display:block;font-size:14px;color:var(--text);font-weight:500}.profile-row .who small{font-size:12px;color:var(--text-tertiary)}.profile-row .tier{margin-left:auto;font-family:JetBrains Mono,monospace;font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--accent);background:var(--accent-soft);border:1px solid var(--accent-ring);border-radius:999px;padding:3px 9px}.device-ok{display:flex;flex-direction:column;align-items:center;gap:10px;padding:22px 0 6px;text-align:center}.device-ok .ring{width:52px;height:52px;border-radius:99px;background:var(--accent-soft);border:1px solid var(--accent-ring);display:flex;align-items:center;justify-content:center;color:var(--accent);font-size:24px}.dash-shell{min-height:100vh;background:var(--bg);display:flex;flex-direction:column}.dash-body{flex:1;max-width:1160px;margin:0 auto;width:100%;padding:28px 28px 64px}.dash-head{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:24px}.dash-head h1{font-size:24px;letter-spacing:-.025em;font-weight:600;color:var(--text)}.dash-head p{font-family:JetBrains Mono,monospace;font-size:12px;color:var(--text-tertiary);margin-top:4px}.dash-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}@media(max-width:1000px){.dash-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:520px){.dash-grid{grid-template-columns:1fr}}.dash-card{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:20px;box-shadow:0 1px #ffffff09 inset}.dash-card .k{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary)}.dash-card .v{font-size:28px;font-weight:600;letter-spacing:-.03em;color:var(--text);margin-top:10px;font-variant-numeric:tabular-nums}.dash-card .d{font-size:12px;color:var(--text-tertiary);margin-top:8px}.dash-wide{grid-column:1 / -1}.signout{background:none;border:1px solid var(--border-strong);border-radius:999px;height:36px;padding:0 16px;color:var(--text-secondary);font:inherit;font-size:13px;cursor:pointer;transition:all .15s var(--ease)}.signout:hover{color:var(--text);background:var(--panel)}.link-btn{display:inline-flex;align-items:center;height:36px;padding:0 16px;border-radius:999px;background:var(--accent);color:#180b02;font-size:13.5px;font-weight:500;text-decoration:none;transition:all .15s var(--ease)}.link-btn:hover{background:#ffb182}.center-note{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--text-tertiary);font-size:13.5px;background:var(--bg)}.range-pick{display:flex;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:3px;gap:1px}.range-pick button{height:28px;padding:0 12px;border:0;background:none;border-radius:7px;font:inherit;font-size:12px;color:var(--text-tertiary);cursor:pointer;transition:all .15s var(--ease)}.range-pick button.on{background:var(--panel-3);color:var(--text)}.kpi{position:relative;overflow:hidden}.kpi .delta{font-size:11.5px;margin-top:8px;display:flex;align-items:center;gap:5px}.kpi .delta.up{color:var(--add)}.kpi .delta.flat{color:var(--text-tertiary)}.kpi .spark{position:absolute;right:0;bottom:0;left:0;height:38px;opacity:.5;pointer-events:none}.kpi .spark svg{width:100%;height:100%;display:block}.kpi .spark .line{fill:none;stroke:var(--accent);stroke-width:1.5;stroke-dasharray:400;stroke-dashoffset:400;animation:dashDraw 1.6s var(--ease) .3s forwards}.kpi .spark .fill{opacity:0;animation:fadeIn .8s ease 1.2s forwards}@keyframes dashDraw{to{stroke-dashoffset:0}}@keyframes fadeIn{to{opacity:1}}.viz-row{display:grid;grid-template-columns:7fr 5fr;gap:14px;margin-top:14px}@media(max-width:1000px){.viz-row{grid-template-columns:1fr}}.panel-card{background:var(--panel);border:1px solid var(--border);border-radius:16px;padding:22px;box-shadow:0 1px #ffffff09 inset}.panel-card .ph{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;gap:10px;flex-wrap:wrap}.panel-card .ph .t{font-size:14px;font-weight:500;color:var(--text)}.panel-card .ph .s{font-family:JetBrains Mono,monospace;font-size:10.5px;color:var(--text-tertiary)}.bars{display:flex;align-items:flex-end;gap:4px;height:180px;padding-top:6px}.bars .b{flex:1;background:var(--panel-3);border-radius:3px 3px 0 0;position:relative;min-width:4px;transform-origin:bottom;transform:scaleY(0);animation:barUp .7s var(--ease) forwards;transition:background .15s var(--ease)}.bars .b:hover,.bars .b.hi{background:var(--accent)}.bars .b:hover:after{content:attr(data-v);position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);background:var(--panel-3);border:1px solid var(--border-strong);color:var(--text);font-size:10px;font-family:JetBrains Mono,monospace;padding:3px 7px;border-radius:6px;white-space:nowrap;z-index:4}@keyframes barUp{to{transform:scaleY(1)}}.bar-axis{display:flex;justify-content:space-between;font-family:JetBrains Mono,monospace;font-size:9.5px;color:var(--text-tertiary);margin-top:10px}.mrow{display:flex;align-items:center;gap:12px;padding:9px 0}.mrow+.mrow{border-top:1px solid rgba(255,255,255,.04)}.mrow .dot{width:7px;height:7px;border-radius:99px;flex:0 0 7px}.mrow .n{font-size:12.5px;color:var(--text);width:140px;flex:0 0 140px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mrow .track{flex:1;height:5px;background:var(--panel-3);border-radius:99px;overflow:hidden}.mrow .track i{display:block;height:100%;border-radius:99px;width:0;transition:width 1.1s var(--ease)}.mrow .pct{font-family:JetBrains Mono,monospace;font-size:11px;color:var(--text-secondary);width:80px;text-align:right;font-variant-numeric:tabular-nums;flex:0 0 80px}@media(max-width:560px){.mrow .n{width:100px;flex:0 0 100px}.mrow .pct{width:60px;flex:0 0 60px}}.stable-wrap{overflow-x:auto;margin:0 -22px;padding:0 22px}.stable{width:100%;border-collapse:collapse;font-size:12.5px}.stable th{font-family:JetBrains Mono,monospace;font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-tertiary);text-align:left;padding:0 12px 10px;font-weight:500;border-bottom:1px solid var(--border)}.stable td{padding:11px 12px;border-bottom:1px solid rgba(255,255,255,.04);color:var(--text-secondary);white-space:nowrap}.stable tr:last-child td{border-bottom:0}.stable td.t{color:var(--text);font-weight:500;max-width:280px;overflow:hidden;text-overflow:ellipsis}.stable .mono{font-family:JetBrains Mono,monospace;font-size:11px;font-variant-numeric:tabular-nums}.stable .add{color:var(--add)}.stable .del{color:#ff8a8a}.stable .badge{display:inline-flex;align-items:center;gap:5px;height:20px;padding:0 8px;font-size:10px;border-radius:99px;font-weight:500}.stable .badge.ok{background:#7cd48c1a;color:var(--add)}.stable .badge.run{background:var(--accent-soft);color:var(--accent)}.stable .badge.run:before{content:"";width:4px;height:4px;border-radius:99px;background:currentColor;animation:pulse 1.4s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.sample-note{font-family:JetBrains Mono,monospace;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-tertiary);margin-top:16px;text-align:center}
