:root{--bg: #f4f5f7;--card: #fff;--text: #1b1f24;--muted: #6b7280;--line: #e3e6ea;--accent: #e53935;--holiday: #f8bbd0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:1px solid var(--line);background:#fff;border-radius:6px;padding:6px 10px}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.ghost{border-color:transparent;background:transparent}button:disabled{opacity:.5;cursor:default}input,select,textarea{border:1px solid var(--line);border-radius:6px;padding:6px 8px;width:100%;background:#fff}label{display:block;font-size:12px;color:var(--muted);margin-bottom:2px}.field{margin-bottom:10px}.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.grow{flex:1}.muted{color:var(--muted)}.small{font-size:12px}.top{background:#111;color:#fff;padding:8px 14px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;position:sticky;top:0;z-index:5}.top .brand{height:26px;width:auto;margin-right:6px;display:block}.top nav{display:flex;gap:4px}.top nav a{color:#ccc;text-decoration:none;padding:6px 10px;border-radius:6px}.top nav a.active{background:#333;color:#fff}.top select{width:auto;background:#222;color:#fff;border-color:#444}.top select.on{background:#e53935;border-color:#e53935}.top .edit{margin-left:auto;font-size:12px;color:#bbb;display:flex;gap:8px;align-items:center}.top .edit button{background:#222;color:#fff;border-color:#444;padding:4px 8px}.page{padding:12px 14px 60px;max-width:1400px;margin:0 auto}.toolbar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:10px}.chip{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;border:1px solid var(--line);background:#fff;cursor:pointer;font-size:13px}.chip.off{opacity:.4}.dot{width:10px;height:10px;border-radius:3px;display:inline-block}.year{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.month{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 10px}.month h3{margin:0 0 6px;font-size:15px}.month table{border-collapse:collapse;width:100%;table-layout:fixed}.month th{font-weight:500;color:var(--muted);font-size:11px;padding:2px 0}.month th.lbl,.month td.lbl{width:42%;text-align:left;padding-left:8px;font-size:11.5px;line-height:1.2}.month td.lbl .wk{display:block}.month td.d{height:30px;text-align:center;border:1px solid #eee;font-size:12.5px;position:relative;cursor:pointer;user-select:none;-webkit-user-select:none}.month td.d:hover{outline:2px solid #333;outline-offset:-2px;z-index:1}.month td.d.empty{border-color:transparent;cursor:default}.month td.d.empty:hover{outline:none}.month td.d.we{background:#fafafa}.month td.d.ev{color:#fff;font-weight:600;text-shadow:0 0 2px rgba(0,0,0,.55)}.month td.d.cancelled{text-decoration:line-through;opacity:.7}.month td.d.today{box-shadow:inset 0 0 0 2px #111}.month td.d .mk{position:absolute;left:2px;right:2px;bottom:1px;height:4px;border-radius:2px}.month td.d .st{position:absolute;top:1px;right:2px;font-size:8px;line-height:1}.month td.d.hol{background:var(--holiday)}.month td.d.hol .hd{position:absolute;left:2px;top:1px;font-size:8px}.list .m{margin:14px 0 6px;font-weight:700;text-transform:uppercase;font-size:13px;color:var(--muted)}.list .it{display:flex;gap:10px;align-items:baseline;padding:6px 8px;background:var(--card);border:1px solid var(--line);border-radius:6px;margin-bottom:4px;cursor:pointer}.list .it .dt{min-width:150px;font-variant-numeric:tabular-nums}.list .it .nm{flex:1}.list .it.cancelled .nm{text-decoration:line-through;color:var(--muted)}.list .hol{padding:2px 8px 2px 24px;color:#b03060;font-size:12.5px}.badge{font-size:11px;padding:1px 7px;border-radius:999px;background:#eee;white-space:nowrap}.badge.agreed{background:#dcedc8}.badge.confirmed{background:#c8e6c9}.badge.moved{background:#ffe0b2}.badge.cancelled{background:#ffcdd2}.badge.draft{background:#e0e0e0}.cf{background:var(--card);border:1px solid var(--line);border-left:5px solid #ccc;border-radius:6px;padding:8px 10px;margin-bottom:6px}.cf.red{border-left-color:#e53935}.cf.yellow{border-left-color:#fbc02d}.cf.info{border-left-color:#64b5f6}.cf.ok{border-left-color:#66bb6a}.cf a{color:inherit}table.tbl{border-collapse:collapse;width:100%;background:#fff}table.tbl th,table.tbl td{border:1px solid var(--line);padding:5px 8px;text-align:left;vertical-align:middle}table.tbl input[type=color]{width:40px;padding:0;height:26px}.ov{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:20;padding:10px}.modal{background:#fff;border-radius:10px;width:100%;max-width:440px;max-height:95dvh;display:flex;flex-direction:column}.modal .mh{padding:12px 14px;font-weight:700;border-bottom:1px solid var(--line)}.modal .mb{padding:12px 14px;overflow:auto}.modal .mf{padding:10px 14px;border-top:1px solid var(--line);display:flex;gap:8px;justify-content:flex-end}.err{color:#c62828;font-size:12.5px;margin:6px 0}.toast{position:fixed;bottom:16px;left:50%;transform:translate(-50%);background:#111;color:#fff;padding:8px 14px;border-radius:8px;z-index:30}@media (max-width: 800px){.year{grid-template-columns:1fr}.month th.lbl,.month td.lbl{width:36%;font-size:10.5px}.list .it{flex-wrap:wrap}.list .it .dt{min-width:0;width:100%}.top .edit{margin-left:0;width:100%}}@media print{.top,.toolbar,.noprint{display:none!important}body{background:#fff}.page{padding:0;max-width:none}.list .it{border:none;padding:2px 0;margin:0;break-inside:avoid}.year{grid-template-columns:repeat(2,1fr);gap:6px}.month{break-inside:avoid}.month td.d.ev,.month td.d.hol{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
