@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/8a480f0b521d4e75-s.06d3mdzz5bre_.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/7178b3e590c64307-s.11.cyxs5p-0z~.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/caa3a2e1cccd8315-s.p.16t1db8_9y2o~.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Fallback;src:local(Arial);ascent-override:95.94%;descent-override:28.16%;line-gap-override:0.0%;size-adjust:104.76%}.geist_a71539c9-module__T19VSG__className{font-family:Geist,Geist Fallback;font-style:normal}.geist_a71539c9-module__T19VSG__variable{--font-geist-sans:"Geist", "Geist Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.0q3udbd2bu5yp.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.0gw~uztddq1df.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.0.q-h669a_dqa.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_8d43a2aa-module__8Li5zG__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_8d43a2aa-module__8Li5zG__variable{--font-geist-mono:"Geist Mono", "Geist Mono Fallback"}
:root{--bg:#0f172a;--surface:#1e293b;--surface2:#263044;--border:#ffffff14;--border2:#ffffff24;--text:#f1f5f9;--text2:#94a3b8;--text3:#64748b;--green:#10b981;--green-bg:#10b9811f;--red:#f87171;--red-bg:#f871711f;--blue:#60a5fa;--blue-bg:#60a5fa1f;--amber:#fbbf24;--radius:14px;--radius-sm:9px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{background:var(--bg);height:100%;color:var(--text);font-family:-apple-system,SF Pro Display,BlinkMacSystemFont,Segoe UI,sans-serif}body{flex-direction:column;min-height:100dvh;display:flex}nav{background:var(--surface);border-bottom:1px solid var(--border);z-index:50;align-items:center;height:56px;padding:0 16px;display:flex;position:sticky;top:0}.nav-logo{letter-spacing:-.3px;color:var(--text);flex:1;font-size:16px;font-weight:700}.nav-logo span{color:var(--green)}.nav-tabs{gap:4px;display:flex}.nav-tab{color:var(--text2);cursor:pointer;background:0 0;border:none;border-radius:8px;padding:7px 14px;font-family:inherit;font-size:13px;font-weight:500;transition:all .15s}.nav-tab.active{background:var(--surface2);color:var(--text)}main{flex:1;width:100%;max-width:520px;margin:0 auto;padding:16px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:12px;padding:18px}.card-title{letter-spacing:.08em;text-transform:uppercase;color:var(--text3);margin-bottom:14px;font-size:11px;font-weight:600}select{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-sm);width:100%;color:var(--text);appearance:none;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2394a3b8' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 14px center;background-repeat:no-repeat;outline:none;margin-bottom:10px;padding:13px 14px;font-family:inherit;font-size:16px}select:focus{border-color:var(--green)}input[type=text],input[type=password],input[type=search]{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-sm);width:100%;color:var(--text);outline:none;padding:11px 14px;font-family:inherit;font-size:15px}input:focus{border-color:var(--green)}input::placeholder{color:var(--text3)}.btn{border-radius:var(--radius-sm);cursor:pointer;letter-spacing:-.2px;border:none;width:100%;padding:15px;font-family:inherit;font-size:16px;font-weight:600;transition:all .15s}.btn:active{transform:scale(.97)}.btn-green{background:var(--green);color:#fff}.btn-green:hover{background:#0ea572}.btn-green:disabled{background:var(--surface2);color:var(--text3);cursor:not-allowed;transform:none}.btn-red{background:var(--red-bg);color:var(--red);border:1px solid #f8717140}.btn-ghost{background:var(--surface2);color:var(--text2);border:1px solid var(--border2)}.btn-sm{border-radius:8px;width:auto;padding:8px 14px;font-size:13px}.btn-remove{color:var(--text3);border:1px solid var(--border2);cursor:pointer;background:0 0;border-radius:7px;padding:5px 10px;font-family:inherit;font-size:12px}.btn-remove:hover{color:var(--red);border-color:#f8717166}.session-card{background:var(--surface2);border:1px solid var(--border2);border-radius:var(--radius-sm);align-items:center;gap:12px;margin-bottom:8px;padding:14px;display:flex}.session-dot{background:var(--green);border-radius:50%;flex-shrink:0;width:8px;height:8px;animation:2s infinite pulse}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.3)}}.session-body{flex:1;min-width:0}.session-name{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:15px;font-weight:600;overflow:hidden}.session-act{color:var(--text2);margin-top:2px;font-size:13px}.session-timer{color:var(--green);font-variant-numeric:tabular-nums;flex-shrink:0;margin-right:8px;font-size:14px;font-weight:600}.btn-end{background:var(--red-bg);color:var(--red);cursor:pointer;white-space:nowrap;border:1px solid #f8717133;border-radius:8px;flex-shrink:0;padding:8px 14px;font-family:inherit;font-size:13px;font-weight:600}.btn-end:active{transform:scale(.95)}.log-entry{border-bottom:1px solid var(--border);grid-template-columns:1fr auto;align-items:start;gap:3px 12px;padding:11px 0;display:grid}.log-entry:last-child{border-bottom:none}.log-name{color:var(--text);font-size:14px;font-weight:600}.log-activity{color:var(--text2);margin-top:1px;font-size:12px}.log-times{text-align:right}.log-dur{color:var(--green);font-size:13px;font-weight:600}.log-range{color:var(--text3);margin-top:2px;font-size:11px}.login-wrap{text-align:center;padding:2rem 0}.login-wrap h2{margin-bottom:6px;font-size:22px;font-weight:700}.login-wrap p{color:var(--text2);margin-bottom:24px;font-size:14px;line-height:1.5}.lock-icon{margin-bottom:16px;font-size:40px}.err{color:var(--red);margin-bottom:10px;font-size:13px}.ok{color:var(--green);margin-bottom:10px;font-size:13px}.manage-row{border-bottom:1px solid var(--border);align-items:center;gap:10px;padding:10px 0;display:flex}.manage-row:last-of-type{border-bottom:none}.manage-row span{color:var(--text);flex:1;font-size:15px}.add-row{gap:8px;margin-top:12px;display:flex}.add-row input{flex:1;margin:0}.empty,.no-results{text-align:center;color:var(--text3);padding:2rem 0;font-size:14px}.stats{grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:12px;display:grid}.stat{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);text-align:center;padding:14px 12px}.stat-val{color:var(--text);letter-spacing:-1px;font-size:26px;font-weight:700}.stat-lbl{letter-spacing:.06em;text-transform:uppercase;color:var(--text3);margin-top:4px;font-size:10px;font-weight:600}@keyframes slideUp{0%{opacity:0;transform:translateY(100%)}to{opacity:1;transform:translateY(0)}}
