:root{--ink: #1F2450;--ink-2: #4A5080;--muted: #7A7FA3;--paper: #F2F3F7;--sheet: #FFFFFF;--rule: #DCDEEA;--track: #E7E9F2;--highlight: #F5D547;--lavoro: #5E9C7E;--malattia: #8E4B7E;--ferie: #4C86C6;--permesso: #C98A3A;--owed: #A1452F;--extra: #3E7C5F;--focus: #3D4BD1;--display: "Bricolage Grotesque", "Avenir Next", system-ui, sans-serif;--body: "Instrument Sans", system-ui, -apple-system, sans-serif;color-scheme:light}@media(prefers-color-scheme:dark){:root{--ink: #E8E9F5;--ink-2: #B9BCD8;--muted: #8A8EB0;--paper: #14162B;--sheet: #1D2040;--rule: #2E3260;--track: #262A4E;--highlight: #D9BB2E;--lavoro: #6DB592;--malattia: #C27AB2;--ferie: #6FA6E0;--permesso: #E0A458;--owed: #E58A70;--extra: #7CC9A4;--focus: #9AA3FF;color-scheme:dark}}*{box-sizing:border-box}html,body{margin:0}body{background:var(--paper);color:var(--ink);font:16px/1.5 var(--body);font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:6px}.display{font-family:var(--display);font-weight:700;letter-spacing:-.02em;line-height:1.05;margin:0}.shell{max-width:760px;margin:0 auto;padding:16px 16px 96px}.topbar{display:flex;justify-content:space-between;align-items:center;gap:12px}.who-name,.who select{font-weight:600;color:var(--ink-2)}.who select{background:transparent;border:1px solid var(--rule);border-radius:8px;padding:4px 8px}.month-nav{display:grid;grid-template-columns:44px 1fr 44px;align-items:center;margin:20px 0 4px}.month-title{font-size:clamp(2.4rem,9vw,4rem);text-align:center;text-transform:lowercase}.month-title .year{font-weight:500;color:var(--muted);font-size:.45em;letter-spacing:0}.back-today{display:block;margin:0 auto 8px}.icon-btn{width:44px;height:44px;border-radius:50%;border:1px solid var(--rule);background:var(--sheet);font-size:1.6rem;line-height:1;cursor:pointer;color:var(--ink)}.icon-btn:hover{border-color:var(--ink-2)}.btn{border-radius:10px;padding:10px 16px;border:1px solid transparent;cursor:pointer;font-weight:600}.btn.primary{background:var(--ink);color:var(--paper)}.btn.primary:disabled{opacity:.6;cursor:progress}.btn.ghost{background:transparent;border-color:var(--rule)}.btn.ghost:hover{border-color:var(--ink-2)}.link{background:none;border:0;padding:4px 0;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px;cursor:pointer}.link.small{font-size:.875rem}.link.danger{color:var(--owed)}.notice{background:var(--sheet);border-left:3px solid var(--owed);padding:10px 14px}.summary{margin:20px 0 28px}.summary-line{font-size:1.15rem;max-width:34ch;margin:0 0 14px;color:var(--ink-2)}.summary-line b{color:var(--ink);font-weight:600}.ledger{margin:0;border-top:1px solid var(--rule)}.ledger>div{display:flex;justify-content:space-between;align-items:baseline;padding:9px 0;border-bottom:1px solid var(--rule);gap:16px}.ledger dt{color:var(--ink-2)}.ledger dd{margin:0;font-weight:600}.ledger .total{border-bottom:0;padding-top:12px}.ledger .total dt{color:var(--ink);font-weight:600}.ledger .total dd{font-family:var(--display);font-size:2rem;line-height:1}.ledger .owed{color:var(--owed)}.ledger .extra{color:var(--extra)}.carry{width:5.5em;text-align:right;font-weight:600;background:transparent;border:0;border-bottom:1px dashed var(--muted);padding:0 2px}.carry:focus{border-bottom-style:solid;outline:none;border-color:var(--focus)}.summary-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.month-note{display:grid;gap:4px;margin-top:16px;font-size:.875rem;color:var(--muted)}.month-note textarea{resize:vertical;background:var(--sheet);border:1px solid var(--rule);border-radius:10px;padding:8px 10px;font-size:.95rem;color:var(--ink)}.month-note-ro{color:var(--ink-2);font-style:italic;margin-top:12px}.days{--date-w: 52px;--hours-w: 64px}.scale,.day{display:grid;grid-template-columns:var(--date-w) 1fr var(--hours-w);gap:10px;align-items:center}.scale{font-size:.75rem;color:var(--muted);padding:8px 8px 6px;position:sticky;top:0;background:var(--paper);z-index:1}.scale-track{position:relative;height:1em}.scale-track i{position:absolute;transform:translate(-50%);font-style:normal}.scale-h{text-align:right}.day-list{list-style:none;margin:0;padding:0}.day{width:100%;background:none;border:0;border-radius:10px;padding:5px 8px;cursor:pointer;text-align:left}.day:hover:not(:disabled){background:var(--sheet)}.day:disabled{cursor:default}.day-date{display:flex;align-items:baseline;gap:5px}.day-num{font-family:var(--display);font-weight:700;font-size:1.1rem;min-width:1.4em;text-align:right}.day-wd{font-size:.75rem;color:var(--muted)}.is-sunday .day-wd,.is-sunday .day-num{color:var(--owed)}.is-today{background:color-mix(in srgb,var(--highlight) 30%,transparent)}.is-today .day-num{box-shadow:inset 0 -.35em 0 var(--highlight)}.track{position:relative;height:22px;background:var(--track);border-radius:5px;overflow:hidden}.track>i{position:absolute;top:0;bottom:0;width:1px;background:var(--paper);opacity:.8}.block{position:absolute;top:3px;bottom:3px;border-radius:3px;background:var(--k)}.block.whole{left:0;right:0;background:color-mix(in srgb,var(--k) 22%,transparent);border:1px dashed var(--k);color:var(--k);font-size:.72rem;font-weight:600;display:flex;align-items:center;padding-left:8px}.day-kind{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-bottom:10px}.kind-btn{border:1px solid var(--rule);background:var(--paper);border-radius:10px;padding:8px 4px;font-weight:600;cursor:pointer;color:var(--ink-2)}.kind-btn:hover{border-color:var(--k)}.kind-btn.on{background:var(--k);border-color:var(--k);color:#fff}.kind-hint{font-size:.85rem;color:var(--ink-2);margin:0 0 12px}.block.partial{background:repeating-linear-gradient(135deg,var(--k) 0 4px,color-mix(in srgb,var(--k) 45%,transparent) 4px 8px)}.k-lavoro{--k: var(--lavoro)}.k-malattia{--k: var(--malattia)}.k-ferie{--k: var(--ferie)}.k-permesso{--k: var(--permesso)}.day-hours{display:flex;justify-content:flex-end;align-items:baseline;gap:6px}.worked{font-weight:600}.worked.none{color:var(--muted);font-weight:400}.planned{font-size:.7rem;color:var(--muted);border:1px solid var(--rule);border-radius:4px;padding:0 4px;min-width:1.6em;text-align:center}.legend{list-style:none;padding:16px 8px 0;margin:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.8rem;color:var(--ink-2)}.legend li{display:flex;align-items:center;gap:6px}.legend i{width:14px;height:10px;border-radius:2px;background:var(--k);display:inline-block}.sheet{width:min(560px,calc(100vw - 24px));max-height:calc(100dvh - 24px);border:0;border-radius:16px;padding:20px;background:var(--sheet);color:var(--ink);box-shadow:0 20px 60px #14163259}.sheet::backdrop{background:#14163273}@media(max-width:560px){.sheet{margin:auto 0 0;width:100vw;max-width:100vw;border-radius:16px 16px 0 0}}@media(prefers-reduced-motion:no-preference){.sheet[open]{animation:rise .18s ease-out}@keyframes rise{0%{transform:translateY(16px);opacity:0}}}.sheet-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.sheet-head h2{font-size:1.6rem}.sheet-head h2:first-letter{text-transform:uppercase}.sheet-empty{color:var(--muted)}.shift-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.shift{border-left:4px solid var(--k);padding:6px 0 6px 12px;display:grid;gap:8px}.shift-row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.field{display:grid;gap:4px;font-size:.875rem;color:var(--ink-2)}.field input,.field select{background:var(--paper);border:1px solid var(--rule);border-radius:8px;padding:8px 10px;min-height:40px;font-size:1rem;color:var(--ink)}.field.compact input,.field.compact select{padding:6px 8px;min-height:36px}.field.compact input[inputmode=decimal]{width:6em}.field.grow{flex:1 1 140px}.field.grow input{width:100%}.add-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:14px 0}.presets{display:flex;flex-wrap:wrap;gap:6px}.chip{border:1px solid var(--rule);background:var(--paper);border-radius:999px;padding:4px 10px;font-size:.85rem;cursor:pointer}.chip:hover{border-color:var(--ink-2)}.sheet-foot{display:flex;justify-content:space-between;align-items:flex-end;gap:12px;border-top:1px solid var(--rule);padding-top:12px}.sheet-total{margin:0;color:var(--ink-2)}.sheet-total b{color:var(--ink);font-family:var(--display);font-size:1.4rem}.sheet-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:16px}.form-error{color:var(--owed);margin:10px 0 0}.form-ok{color:var(--extra);margin:0}.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%);background:var(--ink);color:var(--paper);padding:10px 16px;border-radius:10px;font-weight:500;max-width:calc(100vw - 32px)}.login{min-height:100dvh;display:grid;place-items:center;padding:16px}.login-card{width:min(380px,100%);display:grid;gap:14px}.login-card h1{font-size:2.6rem}.lede{color:var(--ink-2);margin:0 0 8px}.stack{display:grid;gap:12px}.login-strip{position:relative;height:26px;background:var(--track);border-radius:6px;overflow:hidden}.login-strip span{position:absolute;top:4px;bottom:4px;border-radius:3px;background:var(--lavoro)}.login-strip span.today{background:var(--highlight)}.empty-access{display:grid;gap:12px;margin-top:15vh;max-width:40ch}@media(max-width:420px){.days{--date-w: 46px;--hours-w: 56px}.scale,.day{gap:8px}}.planned.custom{border-color:var(--ink-2);color:var(--ink)}.hol-label{position:absolute;inset:0;display:flex;align-items:center;padding-left:8px;font-size:.72rem;color:var(--owed)}.sheet-holiday{margin:4px 0 0;font-size:.85rem;color:var(--owed)}.schedule-line{font-size:.85rem;color:var(--muted);margin:14px 0 0;max-width:60ch}.planned.sick{border-style:dashed;border-color:var(--malattia);color:var(--malattia)}.sheet-total p{margin:0;text-align:right}.sick-note{font-size:.8rem;color:var(--malattia);margin-top:2px!important}
