: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(150px,1fr));gap:.75rem;display:grid}@media (min-width:641px){.row .field.wide{grid-column:span 2}.row.userform{grid-template-columns:1.3fr 1.7fr 1fr 1fr}}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 minmax(0,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;white-space:nowrap;min-width:3rem;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{gap:.4rem;padding:.3rem 0 .6rem;display:grid}.entry+.entry{border-top:1px dashed var(--line);padding-top:.6rem}.entry .head{flex-wrap:wrap;align-items:baseline;gap:.75rem;display:flex}.entry .time{font-variant-numeric:tabular-nums;font-weight:600}.entry .brk{color:var(--muted);font-size:.9rem}.entry .desc{background:var(--field);border-radius:var(--radius);color:var(--ink);overflow-wrap:anywhere;padding:.45rem .65rem;font-size:.95rem}.entry .tools{flex-wrap:wrap;justify-content:flex-end;gap:.5rem;display:flex}.entry .tools form{display:inline}.entry .tools .btn,.entry .tools button{min-height:38px;padding:.3rem .9rem;font-size:.9rem;font-weight:600}.entry .tools .danger{background:var(--paper)}.weektotal{padding:1rem 0;font-size:1.1rem}.weektotal .line{justify-content:space-between;align-items:baseline;display:flex}.weektotal strong{font-variant-numeric:tabular-nums;font-size:2rem}.split{grid-template-columns:repeat(3,minmax(0,1fr));gap:.5rem;margin-top:.5rem;display:grid}.split div{background:var(--tint);border-radius:var(--radius);text-align:center;padding:.4rem .5rem}.split small{color:var(--muted);white-space:nowrap;font-size:.75rem;display:block}.split b{font-variant-numeric:tabular-nums;font-size:1.05rem}.badge{color:#fff;background:var(--muted);white-space:nowrap;text-align:center;border-radius:999px;min-width:8.5rem;padding:.25rem .6rem;font-size:.8rem;font-weight:600;line-height:1.2;display:inline-block}.badge.inprogress{color:#3d3000;background:#f6d55c}.badge.review{background:var(--accent)}.badge.submitted{background:#8803fc}.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);min-width:0;margin-bottom:1rem;padding:1rem;overflow:hidden}.sheet header{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.sheet header h2{margin:0}.filterbar{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;align-items:flex-end;gap:.75rem;margin:1rem 0 .75rem;padding:1rem;display:flex}.filterbar .field{flex:240px;margin:0}.filterbar .check{min-height:48px;color:var(--ink);white-space:nowrap;align-items:center;gap:.5rem;margin:0;font-size:1rem;display:flex}.filterbar .check input{width:26px;height:26px;min-height:0;margin:0}.filterbar button,.filterbar .btn{flex:none}@media (max-width:640px){.filterbar .field{flex-basis:100%}.filterbar button,.filterbar .btn{flex:auto}}.hsum{cursor:pointer;align-items:center;gap:.75rem;min-height:44px;font-weight:600;list-style:none;display:flex}.hsum::-webkit-details-marker{display:none}.hsum .who{flex:auto;min-width:0}.hsum .meta{color:var(--muted);font-weight:400}.hsum .badge{flex:none;margin-left:auto}.wsum{cursor:pointer;grid-template-columns:minmax(0,1fr) auto 7.5rem;grid-template-areas:"name name name""badge hours action";align-items:center;gap:.5rem .6rem;list-style:none;display:grid}.wsum::-webkit-details-marker{display:none}.wsum .name{grid-area:name;font-weight:700}.wsum .name .role{color:var(--muted);margin-left:.5rem;font-weight:400}.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{white-space:nowrap;text-overflow:ellipsis;grid-area:action;width:100%;min-height:40px;padding:.3rem .4rem;font-size:.9rem;overflow:hidden}@media (max-width:640px){.wsum .badge{width:100%;min-width:0;max-width:8.5rem}.wsum .action{font-size:.85rem}}@media (min-width:641px){.wsum{grid-template-columns:1fr 12rem 4.5rem 10rem;grid-template-areas:"name badge hours action"}.wsum .badge{justify-self:end}}.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.4rem minmax(0,1fr) auto;gap:.5rem .6rem}.day .sum{min-width:2.4rem;font-size:1.35rem}.week{padding:0 .6rem}.entry .tools .btn,.entry .tools button{padding:.3rem .7rem}}@media (prefers-reduced-motion:no-preference){button,.btn{transition:background .12s}}
