:root{--bg: #eef2ef;--bg-accent: #e2ebe4;--surface: #f7faf8;--ink: #1a2e24;--muted: #5c7266;--line: #c5d4cb;--teal: #1f6b4f;--teal-soft: #d5ebe1;--warn: #9a4a1a;--warn-soft: #f3e2d4;--good: #1f6b4f;--good-soft: #d5ebe1;--mono: "IBM Plex Mono", ui-monospace, monospace;--sans: "DM Sans", system-ui, sans-serif;color:var(--ink);background:radial-gradient(ellipse 80% 50% at 10% -10%,#d8e8de 0%,transparent 55%),radial-gradient(ellipse 60% 40% at 100% 0%,#dce6e0 0%,transparent 50%),var(--bg);font-family:var(--sans);line-height:1.4}*{box-sizing:border-box}body{margin:0;min-height:100vh}#root{min-height:100vh}button,input,select{font:inherit}.app{max-width:1100px;margin:0 auto;padding:1.5rem 1.25rem 3rem}.topbar{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:1rem;margin-bottom:1.5rem;animation:rise .45s ease-out}.brand{display:grid;gap:.2rem}.brand h1{margin:0;font-size:clamp(1.75rem,3vw,2.25rem);font-weight:700;letter-spacing:-.03em;color:var(--teal)}.brand p{margin:0;color:var(--muted);font-size:.95rem}.controls{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}select,.field input{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:.45rem .6rem;color:var(--ink)}button.primary,button.ghost{border-radius:6px;padding:.5rem .85rem;cursor:pointer;transition:transform .15s ease,background .15s ease}button.primary{background:var(--teal);color:#f4faf7;border:none;font-weight:600}button.primary:hover{transform:translateY(-1px);background:#185a42}button.ghost{background:transparent;border:1px solid var(--line);color:var(--ink)}button.ghost:hover{background:var(--bg-accent)}.panel{background:color-mix(in srgb,var(--surface) 92%,white);border:1px solid var(--line);border-radius:10px;padding:1rem 1.1rem;margin-bottom:1rem;animation:rise .5s ease-out}.panel h2{margin:0;font-size:.85rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600}.panel-toggle{display:flex;width:100%;align-items:center;justify-content:space-between;gap:.75rem;margin:0 0 .75rem;padding:0;border:none;background:transparent;cursor:pointer;text-align:left;color:inherit}.panel.collapsed .panel-toggle{margin-bottom:0}.panel-chevron{color:var(--muted);font-size:.9rem;line-height:1}.panel-toggle:hover h2,.panel-toggle:hover .panel-chevron{color:var(--teal)}.panel-body{animation:rise .2s ease-out}.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem}.field{display:grid;gap:.25rem}.field label{font-size:.8rem;color:var(--muted)}.table-wrap{overflow-x:auto}table.months{width:100%;border-collapse:collapse;font-size:.92rem}table.months th,table.months td{padding:.55rem .45rem;border-bottom:1px solid var(--line);text-align:center;white-space:nowrap}table.months th:first-child,table.months td:first-child{text-align:left}table.months th{font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);font-weight:600}table.months input{width:4.25rem;text-align:center;font-family:var(--mono);font-size:.9rem;background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:.35rem .3rem}table.months input:focus{outline:2px solid color-mix(in srgb,var(--teal) 35%,transparent);border-color:var(--teal)}table.months .readonly{font-family:var(--mono);color:var(--muted);text-align:center}.stepper{display:inline-flex;align-items:center;gap:.2rem}.stepper input{width:3.25rem}.stepper-btn{width:1.65rem;height:1.65rem;padding:0;border:1px solid var(--line);border-radius:5px;background:var(--bg-accent);color:var(--ink);cursor:pointer;font-size:1rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}.stepper-btn:hover:not(:disabled){background:var(--teal-soft);border-color:var(--teal)}.stepper-btn:disabled{opacity:.5;cursor:default}.rollup-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:.75rem}.stat{padding:.75rem .85rem;border-radius:8px;background:var(--bg-accent);border:1px solid transparent;transition:border-color .2s ease}.stat .label{display:block;font-size:.75rem;color:var(--muted);margin-bottom:.25rem}.stat .value{font-family:var(--mono);font-size:1.15rem;font-weight:500}.stat.good{background:var(--good-soft);border-color:color-mix(in srgb,var(--good) 25%,transparent)}.stat.warn{background:var(--warn-soft);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.banner{margin-top:.75rem;font-size:.9rem;color:var(--muted)}.banner strong{color:var(--ink);font-weight:600}.error{color:var(--warn);background:var(--warn-soft);padding:.75rem 1rem;border-radius:8px;margin-bottom:1rem}.empty{text-align:center;padding:2.5rem 1rem;color:var(--muted)}.empty button{margin-top:1rem}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.pto-open{width:4.25rem;font-family:var(--mono);font-size:.9rem;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:5px;padding:.35rem .3rem;cursor:pointer;color:var(--ink)}.pto-open:hover{border-color:var(--teal);background:var(--teal-soft)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:color-mix(in srgb,var(--ink) 35%,transparent);display:flex;align-items:flex-end;justify-content:center;z-index:40;padding:1rem}.modal.sheet{background:var(--surface);border-radius:14px 14px 10px 10px;width:min(560px,100%);max-height:min(92vh,820px);overflow:auto;padding:1rem 1.1rem 1.25rem;box-shadow:0 12px 40px color-mix(in srgb,var(--ink) 25%,transparent);animation:rise .25s ease-out}.sheet-header{display:grid;grid-template-columns:auto 1fr auto auto;gap:.5rem;align-items:center;margin-bottom:.75rem}.sheet-title{display:grid;text-align:center}.sheet-title strong{font-size:1.1rem}.sheet-title span{font-size:.8rem;color:var(--muted)}.sheet-title .pto-balance{display:block;margin-top:.25rem;font-size:.78rem;color:var(--teal);font-weight:500}.sheet-close{justify-self:end}.cal-weekdays,.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:.3rem}.cal-weekdays{margin-bottom:.35rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);text-align:center}.cal-day{aspect-ratio:1;border:1px solid var(--line);border-radius:8px;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.1rem;cursor:pointer;padding:.15rem;color:var(--ink)}.cal-day.empty{border:none;background:transparent;cursor:default}.cal-day.selected{outline:2px solid var(--teal)}.cal-day.copy-mark{outline:2px dashed var(--warn)}.cal-num{font-size:.85rem;font-weight:600}.cal-hrs{font-family:var(--mono);font-size:.65rem}.band-short{background:#dfe9f2;border-color:#9bb6cc}.band-partial{background:#e7efd8;border-color:#9ab06a}.band-full{background:#d5ebe1;border-color:#1f6b4f}.cal-legend{display:flex;gap:.5rem;margin:.75rem 0;flex-wrap:wrap}.cal-legend .leg{font-size:.75rem;padding:.25rem .5rem;border-radius:999px;border:1px solid var(--line)}.day-editor{border-top:1px solid var(--line);padding-top:.85rem;margin-top:.5rem}.day-editor h3{margin:0 0 .5rem;font-size:.95rem}.day-editor textarea{width:100%;font:inherit;border:1px solid var(--line);border-radius:6px;padding:.45rem .6rem;background:var(--surface);resize:vertical}@media(max-width:700px){.app{padding:1rem .75rem 2rem}table.months input{width:3.5rem}.stepper input{width:2.75rem}.modal-backdrop{padding:0}.modal.sheet{border-radius:14px 14px 0 0;width:100%;max-height:94vh}}
