:root{--bg:#f5f6f8;--surface:#fff;--text:#1c1f24;--muted:#6b7280;--border:#e3e5e8;--primary:#2481cc;--primary-text:#fff;--error:#c62828;color:var(--text);background:var(--bg);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif}@media (prefers-color-scheme:dark){:root{--bg:#15171a;--surface:#1e2125;--text:#e8eaed;--muted:#9aa0a6;--border:#2f3338;--error:#ef9a9a}}*{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}.muted{color:var(--muted)}.error{color:var(--error)}.center{text-align:center;padding:48px 16px}button,.button{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);cursor:pointer;border-radius:8px;padding:10px 18px;text-decoration:none;display:inline-block}.primary{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.login{place-items:center;min-height:100vh;padding:16px;display:grid}.card{background:var(--surface);border:1px solid var(--border);text-align:center;border-radius:12px;width:100%;max-width:380px;padding:32px 24px}.card h1{margin:0 0 8px;font-size:24px}.card p{margin:0 0 20px}.topbar{background:var(--surface);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:12px 16px;display:flex}.spacer{flex:1}.content{max-width:1100px;margin:0 auto;padding:24px 16px}.section{margin-bottom:32px}.section h2{margin:0 0 12px;font-size:18px}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th,td{text-align:left;border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 12px}tr:last-child td{border-bottom:0}tr.cancelled td{color:var(--muted);text-decoration:line-through}th{color:var(--muted);font-weight:500}.num{text-align:right}.form-row{flex-wrap:wrap;align-items:end;gap:8px;display:flex}.form-row label{color:var(--muted);gap:4px;font-size:13px;display:grid}input[type=text]{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;min-width:160px;padding:9px 10px}button.link{padding:4px 10px;font-size:13px}input[type=date],select{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;min-width:160px;padding:9px 10px}.filters{margin-bottom:12px}.form-row .check{align-items:center;gap:6px;display:flex}.tabs{gap:4px;margin-left:12px;display:flex}.tabs button{background:0 0;border-color:#0000}.tabs button.active{border-color:var(--border);background:var(--bg);font-weight:600}.notice{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 16px}.notice h2{margin-bottom:8px}.notice ul{margin:0;padding-left:18px}.month-grid td{vertical-align:top;white-space:normal;min-width:110px;height:76px}.month-grid .small{font-size:12px}.month-grid .day-off,.month-grid .day-excused{background:var(--bg)}input[type=time],input[type=month]{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:9px 10px}.badge{border-radius:10px;padding:1px 8px;font-size:12px;display:inline-block}.badge.overdue{background:var(--error);color:var(--primary-text)}.task-form{gap:10px;max-width:480px;margin-bottom:16px;display:grid}.task-form label{color:var(--muted);gap:4px;font-size:13px;display:grid}textarea,input[type=datetime-local]{font:inherit;border:1px solid var(--border);background:var(--surface);color:var(--text);border-radius:8px;padding:9px 10px}tr.finished td{color:var(--muted)}.task-card h2{margin:0 0 8px}.task-card .description{white-space:pre-wrap}.task-card .history{padding-left:18px;font-size:14px}.task-card .comments{padding:0;list-style:none}.task-card .comments li{margin-bottom:12px}.task-card .task-image{max-width:100%;max-height:240px;margin-top:4px;display:block}.webapp{max-width:520px;margin:0 auto;padding:12px 16px 32px}.webapp-head{padding:8px 0 12px}.webapp-tabs{gap:6px;margin-bottom:12px;display:flex}.webapp-tabs button{flex:1;padding:10px 4px}.webapp-tabs button.active{background:var(--primary);border-color:var(--primary);color:var(--primary-text)}.webapp .add{width:100%;margin-bottom:12px}.task-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.task-list li.finished .title{color:var(--muted)}button.task{text-align:left;gap:4px;width:100%;display:grid}button.task .title{font-weight:600}.webapp .back{margin-bottom:8px}.webapp-tabs.sections{border-bottom:1px solid var(--border);padding-bottom:12px}.month-switch{justify-content:space-between;align-items:center;margin-bottom:12px;display:flex}.month-switch button{padding:6px 16px}.month-grid{text-align:center;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:4px;display:grid}.month-grid.head{color:var(--muted);font-size:12px}.month-grid .day{align-content:start;gap:1px;min-height:56px;padding:4px 0;font-size:11px;display:grid}.month-grid .day .num{font-size:14px;font-weight:600}.month-grid .day.selected{outline:2px solid var(--primary)}.month-grid .day.state-on_time{border-color:#2e7d32}.month-grid .day.state-late,.month-grid .day.state-early_leave,.month-grid .day.state-late_early_leave{border-color:#ef6c00}.month-grid .day.state-absent{border-color:var(--error)}.month-grid .day.state-off,.month-grid .day.state-not_counted,.month-grid .day.state-upcoming{color:var(--muted)}.day-detail{border:1px solid var(--border);background:var(--surface);border-radius:8px;margin-top:12px;padding:12px}.day-detail p{margin:4px 0 8px}.day-detail dl{grid-template-columns:auto 1fr;gap:4px 12px;margin:0;display:grid}.day-detail dt{color:var(--muted)}.day-detail dd{margin:0}.fine-list{gap:8px;margin:0;padding:0;list-style:none;display:grid}.fine-list li{border:1px solid var(--border);background:var(--surface);border-radius:8px;grid-template-columns:auto 1fr auto;gap:2px 8px;padding:10px;display:grid}.fine-list li .muted{grid-column:1/-1;font-size:13px}.fine-list li.cancelled .title,.fine-list li.cancelled span:nth-child(3){color:var(--muted);text-decoration:line-through}
