:root{--navy:#0c2340;--accent:#d85a30;--line:#e5e7eb;--muted:#6b7280;--bg:#f9fafb}*{box-sizing:border-box}body,html{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:#111827;background:var(--bg);line-height:1.4}.wrap{max-width:1200px;margin:0 auto;padding:24px 20px 64px}header.app{margin-bottom:20px}header.app h1{margin:0;font-size:22px;color:var(--navy)}header.app .sub{color:var(--muted);font-size:13px;margin-top:4px}.weeknav{display:flex;align-items:center;gap:16px}.weeknav .weektitle{text-align:center;min-width:260px}.weeknav .arrow{display:inline-flex;align-items:center;justify-content:center;width:40px;height:40px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--navy);font-size:22px;line-height:1;text-decoration:none}.weeknav .arrow:hover{border-color:var(--navy);background:#f8fafc}.weeknav .jump,header.app .sub a{color:var(--accent);text-decoration:none}.weeknav .jump:hover,header.app .sub a:hover{text-decoration:underline}td.cell.past{opacity:.5}.summary{display:flex;flex-wrap:wrap;gap:10px 18px;margin:14px 0 4px;font-size:14px;color:#374151}.summary span{display:inline-flex;align-items:baseline;gap:5px}.summary b{color:var(--navy);font-size:15px}.summary .s-risk b{color:#991b1b}.summary .s-pto b{color:#5b21b6}.summary .s-un b{color:#92400e}.legend{display:flex;flex-wrap:wrap;gap:14px;margin:14px 0 18px;font-size:12px;color:var(--muted)}.legend .item{display:inline-flex;align-items:center;gap:6px}.swatch{width:14px;height:14px;border-radius:3px;display:inline-block}.scroll,.swatch{border:1px solid var(--line)}.scroll{overflow-x:auto;border-radius:10px;background:#fff}table.grid{border-collapse:collapse;width:100%;min-width:760px}table.grid td,table.grid th{border-bottom:1px solid var(--line);border-right:1px solid var(--line);padding:8px 10px;font-size:13px;text-align:center;vertical-align:middle}table.grid th{background:var(--navy);color:#fff;font-weight:600;position:-webkit-sticky;position:sticky;top:0}table.grid th.today{background:var(--accent)}table.grid td:last-child,table.grid th:last-child{border-right:none}table.grid tr:last-child td{border-bottom:none}td.name,th.name{text-align:left;min-width:200px}td.name .who{font-weight:600;color:#111827}td.name .meta{color:var(--muted);font-size:12px;margin-top:2px}td.name .pill{display:inline-block;font-size:11px;padding:1px 6px;border-radius:999px;margin-right:6px}.pill.risk{background:#fee2e2;color:#991b1b}.pill.free{background:#eef2ff;color:#3730a3}.pill.assumed{background:#f3f4f6;color:#6b7280}td.cell{font-size:12px}td.cell .big{font-weight:600}td.cell .small{color:var(--muted);font-size:11px}.cell-off{background:#f3f4f6;color:#b0b6bf}.cell-pto{background:#ede9fe}.cell-pto .big{color:#5b21b6}.cell-empty{background:#fff;color:#9ca3af}.cell-partial{background:#fef3c7}.cell-partial .big{color:#92400e}.cell-full{background:#dcfce7}.cell-full .big{color:#166534}.cell-at_risk{background:#fee2e2}.cell-at_risk .big{color:#991b1b}.panel{background:#fff;border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin-top:20px}.panel h2{font-size:15px;margin:0 0 10px;color:var(--navy)}.panel.warn{border-color:#fcd34d;background:#fffbeb}.panel.danger,.panel.error{border-color:#fca5a5;background:#fef2f2}.panel.danger h2{color:#991b1b}table.mini{border-collapse:collapse;width:100%;min-width:480px}table.mini td,table.mini th{text-align:left;padding:6px 10px;border-bottom:1px solid var(--line);font-size:13px}table.mini th{color:var(--muted);font-weight:600}table.mini tr:last-child td{border-bottom:none}table.mini td.late{font-weight:600;color:#991b1b}.panel ul{margin:0;padding-left:18px}.panel li{font-size:13px;margin:4px 0}.panel .reason{color:var(--muted)}code{background:#f3f4f6;padding:1px 5px;border-radius:4px;font-size:12px}