:root{--ink:#0f172a;--ink-soft:#334155;--muted:#64748b;--line:#e2e8f0;--line-strong:#cbd5e1;--bg:#f6f7f9;--paper:#fff;--paper-2:#f8fafc;--primary:#0f172a;--primary-hi:#000;--ok:#16a34a;--ok-soft:#ecfdf5;--ok-border:#bbf7d0;--warn:#f59e0b;--warn-soft:#fffbeb;--warn-border:#fde68a;--danger:#dc2626;--danger-soft:#fef2f2;--danger-border:#fecaca;--info:#2563eb;--info-soft:#eff6ff;--info-border:#bfdbfe;--shadow-sm:0 1px 2px #0f172a0a,0 1px 1px #0f172a08;--shadow-md:0 4px 12px #0f172a0f,0 2px 4px #0f172a0a;--shadow-lg:0 20px 40px #0f172a2e,0 4px 12px #0f172a14;--r-sm:8px;--r-md:10px;--r-lg:14px;--r-xl:18px;--ring:0 0 0 3px #0f172a1f}*{box-sizing:border-box}html,body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-webkit-tap-highlight-color:transparent;text-rendering:optimizeLegibility;margin:0;padding:0;font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue,Arial,sans-serif;font-size:17px;line-height:1.5}body{min-height:100dvh;padding-bottom:32px}a{color:inherit;text-decoration:none}.topbar{position:sticky;z-index:50;backdrop-filter:saturate(180%)blur(10px);-webkit-backdrop-filter:saturate(180%)blur(10px);display:flex;border-bottom:1px solid var(--line);background:#ffffffd9;justify-content:space-between;align-items: center;gap:24px;padding:10px 28px;top:0}.brand{display:flex;cursor:pointer;border-radius:var(--r-md);background:0 0;border:0;align-items: center;padding:4px;transition:background .15s}.brand:hover{background:var(--paper-2)}.brand:focus-visible{outline:none;box-shadow:var(--ring)}.brand-logo{position:relative;overflow:hidden;flex-shrink:0;width:320px;height:84px}.brand-logo img{position:absolute;pointer-events:none;user-select:none;width:auto;height:410px;top:50%;left:50%;transform:translate(-50%,-50%)}@media (max-width:700px){.brand-logo{width:220px;height:60px}.brand-logo img{height:290px}.topbar{gap:12px;padding:8px 16px}}@media (max-width:420px){.brand-logo{width:160px;height:46px}.brand-logo img{height:220px}}.tabs{display:flex;gap:6px}.tab{color:var(--muted);border-radius:var(--r-md);cursor:pointer;letter-spacing:.1px;background:0 0;border:0;min-height:44px;padding:10px 18px;transition:color .15s,background .15s;font-family:inherit;font-size:15px;font-weight:600}.tab:hover{color:var(--ink);background:var(--paper-2)}.tab.active{background:var(--ink);color:#fff}.tab:focus-visible{outline:none;box-shadow:var(--ring)}main{max-width:1120px;margin:0 auto;padding:28px 24px}@media (max-width:600px){main{padding:20px 14px}}h1{letter-spacing:-.6px;display:flex;flex-wrap:wrap;align-items: center;gap:12px;margin:4px 0 6px;font-size:30px;font-weight:700}h2{color:var(--muted);text-transform:uppercase;letter-spacing:1.4px;margin:0 0 14px;font-size:13px;font-weight:700}.page-meta{color:var(--muted);margin-bottom:22px;font-size:14px}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-lg);box-shadow:var(--shadow-sm);margin-bottom:14px;padding:22px}.card.running{border-left:4px solid var(--ok)}.card.paused{border-left:4px solid var(--warn)}.card.stopped{border-left:4px solid var(--muted)}.card.idle{border-left:4px solid var(--info)}.card-link{display:block;cursor:pointer;transition:transform .12s,box-shadow .15s,border-color .15s}.card-link:hover{box-shadow:var(--shadow-md);border-color:var(--line-strong);transform:translateY(-1px)}.card-link:active{transform:translateY(0)}.card-link:focus-visible{outline:none;box-shadow:var(--ring),var(--shadow-sm)}.card-header{display:flex;align-items: flex-start;gap:16px;margin-bottom:14px}.card-title{letter-spacing:-.2px;margin:0;font-size:19px;font-weight:700}.card-subtitle{color:var(--muted);margin-top:2px;font-size:14px}.btn{display:inline-flex;background:var(--primary);color:#fff;border-radius:var(--r-md);cursor:pointer;letter-spacing:.1px;text-decoration:none;white-space:nowrap;border:0;justify-content:center;align-items: center;gap:10px;min-height:48px;padding:12px 20px;transition:background .15s,transform 50ms,box-shadow .15s,opacity .15s;font-family:inherit;font-size:15px;font-weight:600}.btn:hover{background:var(--primary-hi)}.btn:active{transform:scale(.98)}.btn:focus-visible{outline:none;box-shadow:var(--ring)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn .icon{width:18px;height:18px}.btn.big{border-radius:var(--r-lg);width:100%;min-height:64px;padding:18px 24px;font-size:17px}.btn.big .icon{width:22px;height:22px}.btn.secondary{background:#475569}.btn.secondary:hover{background:#334155}.btn.warn{background:var(--warn);color:#1f1300}.btn.warn:hover{color:#fff;background:#d97706}.btn.danger{background:var(--danger)}.btn.danger:hover{background:#b91c1c}.btn.ok{background:var(--ok)}.btn.ok:hover{background:#15803d}.btn.ghost{background:var(--paper);color:var(--ink);border:1px solid var(--line);box-shadow:var(--shadow-sm)}.btn.ghost:hover{border-color:var(--ink);background:var(--paper-2)}.btn-row{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;margin:14px 0 0}.btn-row.three{grid-template-columns:repeat(3,1fr)}@media (max-width:600px){.btn-row,.btn-row.three{grid-template-columns:1fr 1fr}}form .field{display:flex;flex-direction:column;margin-bottom:16px}form label{color:var(--ink-soft);text-transform:uppercase;letter-spacing:.8px;margin-bottom:6px;font-size:13px;font-weight:600}input[type=text],input[type=password],input[type=number],input[type=date],input[type=time],textarea,select{border:1px solid var(--line-strong);border-radius:var(--r-md);background:var(--paper);color:var(--ink);width:100%;min-height:48px;padding:12px 14px;transition:border-color .15s,box-shadow .15s;font-family:inherit;font-size:16px}input:hover,textarea:hover,select:hover{border-color:var(--muted)}input:focus,textarea:focus,select:focus{outline:none;border-color:var(--ink);box-shadow:var(--ring)}textarea{resize:vertical;min-height:88px;line-height:1.5}select{appearance:none;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2364748b' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");background-position:right 14px center;background-repeat:no-repeat;padding-right:40px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}@media (max-width:700px){.grid-2,.grid-3{grid-template-columns:1fr}}main.login{max-width:420px;padding-top:12vh}.login-logo{display:flex;justify-content:center;margin-bottom:16px}.login-logo img{width:auto;height:56px}.login .btn{width:100%}.login-error{border-radius:var(--r-md);background:var(--danger-soft);color:var(--danger);margin:0 0 16px;padding:10px 14px;font-weight:600}.stepper{display:flex;background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-md);align-items: center;gap:8px;padding:4px}.stepper input{text-align:center;font-variant-numeric:tabular-nums;background:0 0;border:0;min-height:48px;padding:8px;font-size:22px;font-weight:700;box-shadow:none!important}.stepper input:focus{box-shadow:none}.stepper button{background:var(--paper);color:var(--ink);border:1px solid var(--line);border-radius:var(--r-sm);cursor:pointer;display:flex;justify-content:center;align-items: center;width:52px;height:52px;transition:background .15s,border-color .15s,transform 50ms;font-size:24px;font-weight:600}.stepper button:hover{background:var(--ink);color:#fff;border-color:var(--ink)}.stepper button:active{transform:scale(.94)}.stepper button:focus-visible{outline:none;box-shadow:var(--ring)}.timer{text-align:center;font-variant-numeric:tabular-nums;color:var(--ink);letter-spacing:-1.5px;margin:8px 0 6px;font-size:72px;font-weight:700;line-height:1}.timer.running{color:var(--ok)}.timer.paused{color:var(--warn)}.timer.stopped{color:var(--muted)}.timer-meta{text-align:center;color:var(--muted);display:flex;flex-wrap:wrap;justify-content:center;gap:18px;font-size:14px}.timer-meta b{color:var(--ink-soft);font-variant-numeric:tabular-nums;font-weight:600}.status-pill{display:inline-flex;letter-spacing:.6px;text-transform:uppercase;vertical-align:middle;border:1px solid #0000;border-radius:999px;align-items: center;gap:6px;padding:5px 12px;font-size:12px;font-weight:600}.status-pill:before{content:"";background:currentColor;border-radius:50%;width:7px;height:7px}.status-pill.running{background:var(--ok-soft);color:var(--ok);border-color:var(--ok-border)}.status-pill.running:before{animation:1.6s ease-in-out infinite pulse}.status-pill.paused{background:var(--warn-soft);color:#b45309;border-color:var(--warn-border)}.status-pill.stopped{color:var(--muted);border-color:var(--line-strong);background:#f1f5f9}.status-pill.idle{background:var(--info-soft);color:var(--info);border-color:var(--info-border)}@keyframes pulse{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.7)}}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:4px}@media (max-width:700px){.stats{grid-template-columns:repeat(2,1fr)}}.stat{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-md);text-align:left;padding:14px}.stat .label{color:var(--muted);text-transform:uppercase;letter-spacing:.8px;font-size:11px;font-weight:600}.stat .value{color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.3px;margin-top:4px;font-size:22px;font-weight:700}.table-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper);box-shadow:var(--shadow-sm)}table{border-collapse:collapse;background:var(--paper);width:100%}th,td{text-align:left;border-bottom:1px solid var(--line);padding:14px;font-size:14px}th{background:var(--paper-2);color:var(--muted);text-transform:uppercase;letter-spacing:.8px;border-bottom:1px solid var(--line-strong);position:sticky;font-size:11px;font-weight:700;top:0}tbody td{color:var(--ink-soft);font-variant-numeric:tabular-nums}tbody td b{color:var(--ink)}tr:last-child td{border-bottom:0}tbody tr{cursor:pointer;transition:background .12s}tbody tr:hover{background:var(--paper-2)}.history-toolbar{display:flex;flex-wrap:wrap;align-items: center;gap:12px;margin:12px 0 14px}.pager{display:inline-flex;align-items: center;gap:8px}.pager-info{color:var(--muted);font-variant-numeric:tabular-nums;padding:0 6px;font-size:14px}.pager-info b{color:var(--ink)}.page-size{display:inline-flex;color:var(--muted);align-items: center;gap:8px;font-size:14px}.page-size select{border:1px solid var(--line);border-radius:var(--r-md);background:var(--paper);color:var(--ink);font-variant-numeric:tabular-nums;cursor:pointer;height:40px;padding:0 12px;font-size:14px}.page-size select:focus-visible{outline:none;box-shadow:var(--ring)}.virtual-table{border:1px solid var(--line);border-radius:var(--r-lg);background:var(--paper);box-shadow:var(--shadow-sm);overflow:hidden;--vt-cols:minmax(96px,1fr)minmax(120px,1.2fr)minmax(80px,.9fr)minmax(72px,.8fr)minmax(72px,.8fr)minmax(80px,.9fr)minmax(80px,.9fr)minmax(80px,.9fr)minmax(80px,.9fr)minmax(90px,1fr)}.virtual-header,.virtual-row{display:grid;grid-template-columns:var(--vt-cols);align-items: center;gap:0;padding:0 14px}.virtual-header{background:var(--paper-2);color:var(--muted);text-transform:uppercase;letter-spacing:.8px;border-bottom:1px solid var(--line-strong);height:44px;font-size:11px;font-weight:700}.virtual-header>div{padding:0 6px}.virtual-body{overflow:auto;background:var(--paper);height:clamp(360px,100vh - 320px,1200px)}.virtual-row{text-align:left;cursor:pointer;border:0;border-bottom:1px solid var(--line);color:var(--ink-soft);font-variant-numeric:tabular-nums;background:0 0;transition:background .12s;font-family:inherit;font-size:14px}.virtual-row>div{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding:0 6px}.virtual-row b{color:var(--ink)}.virtual-row:hover{background:var(--paper-2)}.virtual-row:focus-visible{outline:none;background:var(--paper-2);box-shadow:inset 0 0 0 2px var(--ink)}.virtual-body[aria-busy=true]{opacity:.65}@media (max-width:720px){.virtual-table{--vt-cols:minmax(80px,1fr)minmax(100px,1.2fr)minmax(70px,.8fr)minmax(64px,.7fr)minmax(64px,.7fr)minmax(70px,.8fr)minmax(70px,.8fr)minmax(70px,.8fr)minmax(70px,.8fr)minmax(80px,1fr)}.virtual-body{height:clamp(320px,100vh - 280px,900px)}}.muted{color:var(--muted);font-size:14px}.row{display:flex;flex-wrap:wrap;align-items: center;gap:10px}.spacer{flex:1}.empty{background:var(--paper);border:1px dashed var(--line-strong);text-align:center;border-radius:var(--r-lg);color:var(--muted);padding:56px 24px;font-size:15px}.modal-overlay{position:fixed;backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);display:flex;z-index:100;animation:.15s ease-out fadeIn;background:#0f172a8c;justify-content:center;align-items: center;padding:20px;inset:0}.modal-content{background:var(--paper);border-radius:var(--r-xl);overflow-y:auto;border:1px solid var(--line);box-shadow:var(--shadow-lg);animation:.2s ease-out slideUp;width:100%;max-width:560px;max-height:90vh;padding:28px}.modal-content h2{color:var(--ink);text-transform:none;letter-spacing:-.2px;margin-bottom:6px;font-size:20px;font-weight:700}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.tag{display:inline-flex;background:var(--paper-2);color:var(--ink-soft);border:1px solid var(--line);font-variant-numeric:tabular-nums;border-radius:999px;align-items: center;gap:8px;padding:6px 12px;font-size:13px;font-weight:600}.tag .icon{color:var(--muted);width:14px;height:14px}.tag b{color:var(--ink);font-weight:700}.staff-bar{display:flex;flex-wrap:wrap;gap:8px;margin:0}.staff-bar .tag{padding:8px 14px;font-size:14px}.staff-bar .tag .icon{width:16px;height:16px}.icon{display:inline-block;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0;width:1em;height:1em}.pause-list,.edit-list{list-style:none;display:flex;flex-direction:column;gap:8px;margin:0;padding:0}.pause-list li,.edit-list li{background:var(--paper-2);border:1px solid var(--line);border-radius:var(--r-md);color:var(--ink-soft);font-variant-numeric:tabular-nums;padding:10px 14px;font-size:14px}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
