:root{--bg:#fff;--surface:#f9fafb;--surface-alt:#f2f4f6;--white:#fff;--divider:#e5e8eb;--outline:#d1d6db;--ink:#191f28;--muted:#6b7684;--faint:#8b95a1;--primary:#56c87a;--primary-dark:#4bb26c;--on-primary:#0e100f;--green-deep:#1f8a4c;--green-soft:#e9f8ef;--info-soft:#e8f3ff;--info:#1b64da;--warn-soft:#fff4e0;--warn:#b25e00;--brick:#f04452;--brick-soft:#ffebee;--side:15rem;--radius:16px;--radius-sm:10px}*,:before,:after{box-sizing:border-box}html,body{height:100%}body{background:var(--bg);color:var(--ink);font-family:var(--font-sans), system-ui, sans-serif;letter-spacing:-.01em;-webkit-font-smoothing:antialiased;margin:0;font-size:.9375rem;line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}:focus-visible{outline:2px solid var(--primary);outline-offset:2px}h1,h2,h3,p{margin:0}.mono{color:var(--muted);font-size:.8125rem;font-weight:700;line-height:1.4}.num{font-variant-numeric:tabular-nums;white-space:nowrap}.muted{color:var(--muted)}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.shell{grid-template-columns:var(--side) minmax(0, 1fr);min-height:100vh;display:grid}.side{background:var(--surface);flex-direction:column;gap:.875rem;height:100vh;padding:1.25rem .875rem 1rem;display:flex;position:sticky;top:0;overflow-y:auto}.side-mark{white-space:nowrap;align-items:center;gap:.6rem;padding:0 .625rem .25rem;display:flex}.side-mark img{width:auto;height:1.6rem;display:block}.side-mark .mono{background:var(--surface-alt);color:var(--ink);border-radius:9999px;padding:.15rem .55rem;font-size:.75rem}.side-group{gap:2px;display:grid}.side-group>.mono{color:var(--faint);padding:.25rem .625rem .35rem;font-size:.75rem}.side-link{border-radius:var(--radius-sm);color:var(--muted);justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .625rem;font-weight:600;display:flex}.side-link:hover{background:var(--surface-alt);color:var(--ink)}.side-link[aria-current=page]{background:var(--white);color:var(--ink);font-weight:700}.side-count{background:var(--brick);min-width:1.4rem;color:var(--white);text-align:center;border-radius:9999px;padding:0 .4rem;font-size:.75rem;font-weight:700;line-height:1.4rem}.side-foot{border-top:1px solid var(--divider);gap:.35rem;margin-top:auto;padding:.875rem .625rem 0;display:grid}.side-foot .btn{justify-self:start;margin-top:.35rem}.main{min-width:0;padding:2rem 2.25rem 4rem}.head{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:.75rem 1.5rem;margin-bottom:1.25rem;display:flex}.head h1{letter-spacing:-.035em;font-size:1.625rem;font-weight:800;line-height:1.2}.head p{color:var(--muted);margin-top:.35rem}.toolbar{flex-wrap:wrap;align-items:center;gap:.5rem;margin-bottom:.875rem;display:flex}.input,.select,.textarea{border-radius:var(--radius-sm);background:var(--surface-alt);border:0;height:2.5rem;padding:0 .875rem}.input::placeholder,.textarea::placeholder{color:var(--faint)}.select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--muted) 50%), linear-gradient(135deg, var(--muted) 50%, transparent 50%);background-position:calc(100% - 1rem) 52%,calc(100% - .7rem) 52%;background-repeat:no-repeat;background-size:.3rem .3rem;padding-right:2rem}.textarea{resize:vertical;width:100%;height:auto;min-height:6rem;padding:.7rem .875rem;line-height:1.6}.input:disabled,.select:disabled,.textarea:disabled{box-shadow:inset 0 0 0 1px var(--divider);color:var(--faint);cursor:not-allowed;background-color:#0000}.input:focus-visible,.select:focus-visible,.textarea:focus-visible{outline:2px solid var(--primary);outline-offset:0;background-color:var(--white)}.search{position:relative}.search .input{width:18rem;padding-right:2rem}.search kbd{color:var(--faint);background:var(--white);border-radius:6px;padding:0 .35rem;font-family:inherit;font-size:.75rem;font-weight:700;position:absolute;top:50%;right:.6rem;transform:translateY(-50%)}.seg{background:var(--surface-alt);border-radius:12px;justify-self:start;gap:2px;padding:3px;display:inline-flex}.seg button{cursor:pointer;white-space:nowrap;height:2.1rem;color:var(--muted);background:0 0;border:0;border-radius:9px;padding:0 .85rem;font-weight:600}.seg button:hover{color:var(--ink)}.seg button[aria-pressed=true]{background:var(--white);color:var(--ink);font-weight:700}.btn{border-radius:var(--radius-sm);background:var(--surface-alt);height:2.5rem;color:var(--ink);cursor:pointer;white-space:nowrap;border:0;justify-content:center;align-items:center;gap:.35rem;padding:0 1rem;font-weight:700;transition:background-color .12s;display:inline-flex}.btn:hover{background:var(--divider)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:var(--primary);color:var(--on-primary)}.btn-primary:hover{background:var(--primary-dark)}.btn-danger{background:var(--brick-soft);color:var(--brick)}.btn-danger:hover{background:color-mix(in srgb, var(--brick) 18%, var(--white))}.btn-danger.btn-confirm{background:var(--brick);color:var(--white)}.btn[aria-pressed=true]{background:var(--ink);color:var(--white)}.btn-sm{border-radius:8px;height:2rem;padding:0 .75rem;font-size:.8125rem}.link{color:var(--info);cursor:pointer;background:0 0;border:0;padding:0;font-weight:600}.link:hover{text-underline-offset:.18em;text-decoration:underline}.chip{background:var(--surface-alt);color:var(--muted);white-space:nowrap;border-radius:9999px;align-items:center;gap:.3rem;padding:.1rem .6rem;font-size:.75rem;font-weight:700;line-height:1.5;display:inline-flex}.chip-ok{background:var(--green-soft);color:var(--green-deep)}.chip-warn{background:var(--warn-soft);color:var(--warn)}.chip-danger{background:var(--brick-soft);color:var(--brick)}.chip-ink{background:var(--info-soft);color:var(--info)}.table-wrap{border-radius:var(--radius);background:var(--surface);overflow-x:auto}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--faint);border-bottom:1px solid var(--divider);background:var(--surface);white-space:nowrap;padding:.85rem 1rem .6rem;font-size:.8125rem;font-weight:600;position:sticky;top:0}.table td{border-bottom:1px solid var(--divider);vertical-align:middle;white-space:nowrap;padding:.75rem 1rem}.table td.wrap{white-space:normal;min-width:12rem}.table tr:last-child td{border-bottom:0}.table .r{text-align:right}.table tbody tr[tabindex]{cursor:pointer}.table tbody tr[tabindex]:hover{background:var(--surface-alt)}.table tbody tr[aria-selected=true],.table tbody tr[aria-selected=true]:hover{background:var(--green-soft)}.table tbody tr:focus-visible{outline:2px solid var(--primary);outline-offset:-2px}.cell-main{font-weight:700}.cell-sub{color:var(--muted);font-size:.8125rem}.empty{text-align:center;color:var(--muted);padding:3rem 1rem}.pager{color:var(--muted);justify-content:space-between;align-items:center;gap:1rem;margin-top:.75rem;display:flex}.pager div{gap:.35rem;display:flex}.drawer{z-index:40;background:var(--bg);width:min(36rem,100vw);box-shadow:-1px 0 0 var(--divider), -24px 0 48px -32px #191f2847;flex-direction:column;animation:.18s ease-out drawer-in;display:flex;position:fixed;top:0;bottom:0;right:0}@keyframes drawer-in{0%{opacity:0;transform:translate(1.5rem)}}.drawer-head{justify-content:space-between;align-items:flex-start;gap:1rem;padding:1.5rem 1.5rem 1rem;display:flex}.drawer-head h2{letter-spacing:-.03em;margin-top:.2rem;font-size:1.25rem;font-weight:800}.drawer-body{flex:1;grid-auto-rows:max-content;align-content:start;gap:1.5rem;padding:.25rem 1.5rem 2.5rem;display:grid;overflow-y:auto}.close{background:var(--surface-alt);cursor:pointer;height:2rem;color:var(--muted);border:0;border-radius:9999px;padding:0 .8rem;font-size:.8125rem;font-weight:700}.close:hover{color:var(--ink);background:var(--divider)}.block{gap:.7rem;display:grid}.block>h3{letter-spacing:-.02em;color:var(--ink);justify-content:space-between;align-items:baseline;gap:1rem;font-size:.9375rem;font-weight:800;display:flex}.block>h3>span+span{color:var(--faint);font-size:.8125rem;font-weight:500}.kv{border-radius:var(--radius);background:var(--surface);grid-template-columns:7.5rem minmax(0,1fr);gap:.6rem 1rem;margin:0;padding:1rem 1.125rem;display:grid}.kv dt{color:var(--muted)}.kv dd{overflow-wrap:anywhere;margin:0;font-weight:600}.figures{grid-template-columns:repeat(auto-fit,minmax(7.5rem,1fr));gap:.5rem;display:grid}.figures>div{background:var(--surface);border-radius:14px;gap:.2rem;padding:.875rem 1rem;display:grid}.figures b{letter-spacing:-.03em;font-variant-numeric:tabular-nums;font-size:1.25rem;font-weight:800}.actions{flex-wrap:wrap;gap:.5rem;display:flex}.form{border-radius:var(--radius);background:var(--surface);gap:.9rem;padding:1.125rem;display:grid}.form .input,.form .select,.form .textarea{background-color:var(--white)}.form .input:disabled,.form .select:disabled,.form .textarea:disabled{background-color:#0000}.field{gap:.4rem;display:grid}.field>span{font-size:.875rem;font-weight:700}.field small{color:var(--muted)}.row{flex-wrap:wrap;align-items:center;gap:.5rem;display:flex}.note{background:var(--surface);border-radius:14px;padding:.8rem 1rem}.note-warn{background:var(--warn-soft);color:#7a4100}.note-danger{background:var(--brick-soft);color:#c4212f}.note-ok{background:var(--green-soft);color:#166a39}.error{color:var(--brick);font-weight:600}.tabs{border-bottom:1px solid var(--divider);gap:1.25rem;display:flex}.tabs button{cursor:pointer;color:var(--faint);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:.6rem .1rem;font-weight:700}.tabs button:hover{color:var(--muted)}.tabs button[aria-selected=true]{color:var(--ink);border-bottom-color:var(--ink)}.pre{white-space:pre-wrap;background:var(--surface);border-radius:14px;max-height:22rem;margin:0;padding:.875rem 1rem;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.75rem;line-height:1.6;overflow:auto}details>summary{cursor:pointer;color:var(--info);font-weight:600}.due{grid-template-columns:repeat(var(--n,2), minmax(0, 1fr));gap:.4rem;display:grid}.due-step{background:var(--surface);border-radius:12px;gap:.15rem;padding:.65rem .8rem;display:grid}.due-step b{font-variant-numeric:tabular-nums;font-size:1rem;font-weight:800}.due-step[data-state=soon]{background:var(--warn-soft);color:#7a4100}.due-step[data-state=over]{background:var(--brick-soft);color:#c4212f}.due-step[data-state=done]{background:var(--green-soft);color:#166a39}.confirm{background:var(--bg);width:min(26rem,100vw - 2rem);color:var(--ink);border:0;border-radius:20px;padding:0}.confirm::backdrop{background:#191f2873}.confirm-body{gap:1rem;padding:1.5rem;display:grid}.confirm h2{letter-spacing:-.03em;font-size:1.2rem;font-weight:800}.confirm-foot{grid-auto-columns:1fr;grid-auto-flow:column;gap:.5rem;display:grid}.confirm-foot .btn{border-radius:14px;height:3rem}.queue{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.75rem;margin-bottom:2.25rem;display:grid}.queue a{border-radius:var(--radius);background:var(--surface);gap:.3rem;padding:1.125rem 1.25rem;transition:background-color .12s;display:grid}.queue a:hover{background:var(--surface-alt)}.queue a[data-state=over]{background:var(--brick-soft)}.queue a[data-state=soon]{background:var(--warn-soft)}.queue strong{letter-spacing:-.04em;font-variant-numeric:tabular-nums;font-size:2rem;font-weight:800;line-height:1.1}.queue .flag{color:var(--brick);font-weight:700}.section-title{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin:0 0 .75rem;display:flex}.section-title h2{letter-spacing:-.03em;font-size:1.125rem;font-weight:800}.bar{background:var(--surface-alt);border-radius:9999px;min-width:4rem;height:.5rem;display:block;position:relative;overflow:hidden}.bar i{background:var(--primary);border-radius:9999px;position:absolute;inset:0 auto 0 0}.table tr.weekend td:first-child{color:var(--faint)}.table tfoot td{border-top:1px solid var(--divider);background:var(--surface-alt);font-weight:800}.login{background:var(--bg);place-items:center;min-height:100vh;padding:1.5rem;display:grid}.login-card{gap:1rem;width:min(24rem,100%);display:grid}.login-mark{width:auto;height:2.75rem;margin-bottom:.75rem;display:block}.login-card h1{letter-spacing:-.04em;font-size:1.5rem;font-weight:800;line-height:1.3}.login-card .input{border-radius:14px;width:100%;height:3.25rem;font-size:1rem}.login-card .btn-primary{border-radius:14px;height:3.25rem;margin-top:.5rem;font-size:1rem}.toast{z-index:60;color:var(--white);background:#191f28eb;border-radius:14px;padding:.75rem 1.25rem;font-weight:600;position:fixed;bottom:1.5rem;left:50%;transform:translate(-50%)}.secret{overflow-wrap:anywhere;-webkit-user-select:all;user-select:all;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.8125rem}@media (min-width:1280px){.main:has(.drawer){padding-right:38.25rem}}@media (max-width:1199px){.queue{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:860px){.shell{grid-template-rows:auto 1fr;grid-template-columns:1fr}.side{z-index:20;flex-flow:row;align-items:center;gap:.25rem;height:auto;padding:.6rem 1rem;overflow-x:auto}.side-mark{padding:0 .5rem 0 0}.side-mark img{height:1.25rem}.side-group{gap:.25rem;display:flex}.side-group>.mono,.side-foot .cell-sub{display:none}.side-link{white-space:nowrap}.side-foot{white-space:nowrap;border-top:0;align-items:center;gap:.5rem;margin:0;padding:0 0 0 .5rem;display:flex}.side-foot .btn{margin-top:0}.main{padding:1.25rem 1rem 3rem}.search .input{width:100%}}@media (max-width:560px){.kv{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.drawer{animation:none}.btn,.queue a{transition:none}}.usage-min{width:5.5rem}.usage-check{cursor:pointer;color:var(--muted);gap:.4rem;font-weight:600}.usage-check input{width:1rem;height:1rem;accent-color:var(--primary)}.usage-since{margin-bottom:.875rem}.usage-heat th,.usage-heat td{padding-left:.6rem;padding-right:.6rem}.usage-heat .usage-who{z-index:1;background:var(--surface);min-width:13rem;position:sticky;left:0}.usage-heat thead .usage-who{z-index:2}.usage-heat tbody tr[tabindex]:hover .usage-who,.usage-heat tfoot .usage-who{background:var(--surface-alt)}.usage-heat th.usage-wkd{color:var(--outline)}.usage-dow{font-size:.75rem;font-weight:500;display:block}.usage-cell{min-width:3rem}.usage-zero{color:var(--outline)}
