:root{--ink:#1b1d1f;--muted:#5c6166;--paper:#fff;--page:#f3f6fa;--field:#e9eef5;--line:#cfd8e3;--tint:#e3edf8;--accent:#0670b8;--accent-ink:#fff;--accent-hover:#05589a;--ok:#1f7a3a;--wait:#1e5fa8;--bad:#b3261e;--radius:6px}*{box-sizing:border-box}html{-webkit-text-size-adjust:100%;font-size:17px}body{background:var(--page);color:var(--ink);margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;line-height:1.4}a{color:inherit}h1{letter-spacing:-.01em;margin:0 0 .75rem;font-size:1.5rem}h2{margin:1.5rem 0 .5rem;font-size:1.1rem}p{max-width:60ch}.topbar{background:var(--accent);color:#fff;z-index:5;align-items:center;gap:.75rem;padding:.6rem 1rem;display:flex;position:sticky;top:0}.topbar .brand{color:#fff;letter-spacing:-.01em;white-space:nowrap;margin-right:auto;font-weight:700;text-decoration:none}.topbar nav{flex-wrap:wrap;gap:.4rem;display:flex}.topbar nav a{border-radius:var(--radius);color:var(--accent);background:#fff;border:1px solid #fff;align-items:center;min-height:40px;padding:.45rem .8rem;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.topbar nav a:hover{background:var(--tint)}.topbar .who{color:#ffffffd9;font-size:.9rem}.topbar form button.quiet{color:#fff;white-space:nowrap;background:0 0;border-color:#fff9;flex-shrink:0;min-height:40px}.topbar form button.quiet:hover{background:#ffffff26}.topbar a:focus-visible,.topbar button:focus-visible{outline-color:#fff}.lang{border-radius:var(--radius);border:1px solid #ffffffb3;flex-shrink:0;display:flex;overflow:hidden}.lang button{color:#fff;font:inherit;cursor:pointer;background:0 0;border:0;min-width:44px;min-height:40px;padding:.4rem .6rem;font-size:.85rem;font-weight:600}.lang button[aria-pressed=true]{color:var(--accent);background:#fff}main{max-width:960px;margin:0 auto;padding:1rem}input,select,textarea,button{font:inherit}input,select,textarea{border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);width:100%;min-height:48px;padding:.55rem .7rem}textarea{min-height:72px}input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{outline:3px solid var(--accent-hover);outline-offset:2px}label{color:var(--muted);margin-bottom:.25rem;font-size:.9rem;display:block}.field{margin-bottom:.75rem}.row{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:.75rem;display:grid}button,.btn{border-radius:var(--radius);border:1px solid var(--accent);background:var(--paper);min-height:48px;color:var(--accent);cursor:pointer;justify-content:center;align-items:center;padding:.6rem 1.1rem;font-weight:600;text-decoration:none;display:inline-flex}button:hover,.btn:hover{background:var(--tint)}.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.primary:hover{background:var(--accent-hover);border-color:var(--accent-hover)}.danger{border-color:var(--bad);color:var(--bad)}.quiet{color:var(--ink);border-color:#0000;font-weight:500}button:disabled,.btn[aria-disabled=true]{opacity:.45;cursor:not-allowed}.actions{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.weeknav{justify-content:space-between;align-items:center;gap:.5rem;margin-bottom:.75rem;display:flex}.weeknav strong{text-align:center;font-size:1.25rem}.weeknav .btn{background:var(--paper);border-color:var(--line);color:var(--ink);white-space:nowrap;flex:none}.weeknav .btn:hover{background:var(--tint)}.week{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);padding:0 1rem}.day{border-bottom:1px solid var(--line);grid-template-columns:3.2rem 1fr auto;align-items:start;gap:.5rem 1rem;padding:.8rem 0;display:grid}.day:last-child{border-bottom:0}.day .dow{font-weight:700}.day .dow small{color:var(--muted);font-size:.8rem;font-weight:400;display:block}.day .sum{text-align:right;font-variant-numeric:tabular-nums;min-width:4.5rem;font-size:1.6rem;font-weight:700}.day .sum small{color:var(--muted);font-size:.75rem;font-weight:400;display:block}.day.empty .sum{color:var(--line)}.entry{flex-wrap:wrap;align-items:center;gap:.75rem;padding:.25rem 0;display:flex}.entry .time{font-variant-numeric:tabular-nums;font-weight:600}.entry .desc{color:var(--muted);flex:10ch;min-width:0}.entry form{display:inline}.entry button{min-height:36px;padding:.2rem .6rem;font-size:.85rem}.weektotal{justify-content:space-between;align-items:baseline;padding:1rem 0;font-size:1.1rem;display:flex}.weektotal strong{font-variant-numeric:tabular-nums;font-size:2rem}.split{color:var(--muted);font-size:.9rem}.badge{color:#fff;background:var(--muted);border-radius:999px;padding:.15rem .55rem;font-size:.8rem;font-weight:600;display:inline-block}.badge.submitted{background:#4a6d96}.badge.approved{background:var(--ok)}.badge.rejected{background:var(--bad)}.note{border-left:4px solid var(--bad);background:#fbeceb;margin:.75rem 0;padding:.6rem .8rem}.note.info{border-color:var(--wait);background:#eaf1fa}.note.ok{border-color:var(--ok);background:#eaf5ec}.error{color:var(--bad);margin:.5rem 0;font-weight:600}.addform{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);margin-top:1rem;padding:1rem}table{border-collapse:collapse;background:var(--paper);width:100%;font-size:.95rem}th,td{text-align:left;border-bottom:1px solid var(--line);vertical-align:top;padding:.55rem .5rem}th{color:var(--muted);font-weight:600}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.tablewrap{overflow-x:auto}.sheet{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);margin-bottom:1rem;padding:1rem}.sheet header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.sheet header h2{margin:0}.wsum{cursor:pointer;grid-template-columns:auto 1fr auto;grid-template-areas:"name role role""badge hours action";align-items:center;gap:.5rem 1rem;list-style:none;display:grid}.wsum::-webkit-details-marker{display:none}.wsum .name{grid-area:name;font-weight:700}.wsum .role{color:var(--muted);grid-area:role}.wsum .badge{grid-area:badge;justify-self:start}.wsum .hours{font-variant-numeric:tabular-nums;text-align:right;grid-area:hours;font-weight:700}.wsum .action{grid-area:action;min-height:40px;padding:.3rem .9rem;font-size:.9rem}@media (min-width:641px){.wsum{grid-template-columns:auto 1fr auto auto auto;grid-template-areas:"name role badge hours action"}}.tiles{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem;display:grid}.tile{background:var(--accent);color:#fff;border-radius:var(--radius);min-height:96px;box-shadow:0 2px 0 var(--accent-hover);align-items:flex-end;padding:1rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:flex}.tile:hover{background:var(--accent-hover)}.tile:active{box-shadow:none;transform:translateY(1px)}.login{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);max-width:400px;margin:2rem auto;padding:1.5rem}.login .logo{max-width:220px;height:auto;margin:0 auto 1.25rem;display:block}.login h1{text-align:center;margin-bottom:1.25rem;font-size:1.3rem;line-height:1.25}@media (max-width:640px){.topbar{flex-wrap:wrap;gap:.5rem;padding:.5rem .75rem}.topbar .who{display:none}.topbar nav{flex-basis:100%;order:3;gap:.5rem}.topbar nav a{text-align:center;flex:1 1 0;justify-content:center;padding:.45rem .5rem}.topbar form button.quiet{padding:.4rem .7rem;font-size:.9rem}.weeknav{grid-template-columns:1fr 1fr;display:grid}.weeknav strong{grid-area:1/1/auto/-1}.weeknav .btn{min-height:44px}main{padding:.75rem}.day{grid-template-columns:2.6rem 1fr auto}}@media (prefers-reduced-motion:no-preference){button,.btn{transition:background .12s}}
