:root{--bg: #f7f8fa;--fg: #0f1419;--muted: #6b7280;--border: #d1d5db;--border-strong: #9ca3af;--accent: #1f5af6;--attend: #16a34a;--maybe: #eab308;--wont: #dc2626;--unset: #ffffff;--selected: #1f5af6;--hover: #e5e7eb}@media (prefers-color-scheme: dark){:root{--bg: #0f1419;--fg: #e7e9ea;--muted: #9ca3af;--border: #2f3336;--border-strong: #4b5563;--hover: #1f2937;--unset: #1a1d22}}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:14px;background:var(--bg);color:var(--fg)}a{color:var(--accent)}.page{max-width:1100px;margin:0 auto;padding:24px 16px 64px}h1{font-size:28px;margin:0 0 4px}h2{font-size:20px;margin:24px 0 8px}.muted{color:var(--muted)}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.col{display:flex;flex-direction:column;gap:12px}label.field{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--muted)}label.field.grow{flex:1;min-width:240px}label.field>span{font-weight:500;color:var(--fg)}input[type=text],input[type=datetime-local],textarea{padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--unset);color:var(--fg);font:inherit;min-width:240px}input[type=text]:focus,input[type=datetime-local]:focus,textarea:focus{outline:2px solid var(--accent);border-color:transparent}textarea{width:100%;resize:vertical}.description{background:var(--unset);border:1px solid var(--border);border-radius:6px;padding:10px 14px;white-space:pre-wrap}.banner{border-radius:6px;padding:10px 14px;display:flex;align-items:center;gap:8px;border-left:4px solid var(--border-strong)}.banner.info{background:#1f5af614;border-left-color:var(--accent)}.banner.warn{background:#eab3081f;border-left-color:var(--maybe);color:var(--fg)}.banner.closed{background:#16a34a1a;border-left-color:var(--attend)}.badge{display:inline-block;margin-left:8px;padding:1px 6px;border-radius:4px;font-size:11px;font-weight:600;letter-spacing:.02em;vertical-align:middle}.badge.leading{background:#1f5af626;color:var(--accent)}.badge.final{background:var(--attend);color:#fff}button{padding:8px 14px;border:1px solid var(--border);border-radius:6px;background:var(--unset);color:var(--fg);font:inherit;cursor:pointer}button:hover{background:var(--hover)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.primary:hover{filter:brightness(1.1)}button.small{padding:4px 10px;font-size:12px}.share{background:var(--unset);border:1px solid var(--border);border-radius:8px;padding:12px 16px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.share code{background:var(--hover);padding:4px 8px;border-radius:4px;font-size:13px;word-break:break-all}.error{color:var(--wont);font-size:13px}.grid-shell{background:var(--unset);border:1px solid var(--border);border-radius:8px;padding:12px;overflow-x:auto}.grid-toolbar{display:flex;gap:8px;align-items:center;margin-bottom:8px}.grid-toolbar .spacer{flex:1}.grid-toolbar .range{font-weight:600}.grid{display:grid;grid-template-columns:56px repeat(var(--cols),minmax(64px,1fr));grid-auto-rows:22px;gap:1px;background:var(--border);border:1px solid var(--border);-webkit-user-select:none;user-select:none;touch-action:none}.grid .cell{background:var(--unset);padding:0;font-size:11px;line-height:1;display:flex;align-items:center;justify-content:center;color:var(--muted);min-height:0}.grid .header{background:var(--bg);font-weight:600;color:var(--fg);grid-row:1;height:36px;min-height:36px;padding:4px;text-align:center;flex-direction:column;font-size:12px;line-height:1.2}.grid .header .dow{font-size:11px;color:var(--muted)}.grid .time{background:var(--bg);color:var(--muted);font-size:11px;justify-content:flex-end;padding-right:6px}.grid .slot{cursor:pointer;border:none;font:inherit;color:inherit}.grid .slot.disabled{background:repeating-linear-gradient(45deg,transparent,transparent 4px,var(--border) 4px,var(--border) 5px);cursor:not-allowed}.grid .slot:hover:not(.disabled){outline:1px solid var(--accent);outline-offset:-1px;z-index:1}.grid .slot.selected{background:var(--selected);color:#fff}.grid .slot.block{flex-direction:column;gap:2px;background:#1f5af614;color:var(--fg);font-size:12px;font-weight:500;padding:4px 6px;border-radius:2px}.grid .slot.block .block-label{font-size:12px;font-weight:600}.grid .slot.block .block-choice{font-size:11px;font-weight:500;letter-spacing:.02em;opacity:.9}.grid .slot.block.attend{background:var(--attend);color:#fff}.grid .slot.block.maybe{background:var(--maybe);color:#1f2937}.grid .slot.block.wont{background:var(--wont);color:#fff}.grid .slot.block.is-final{outline:3px solid var(--attend);outline-offset:-3px}.grid .slot.block .delete{position:absolute;top:2px;right:2px;width:16px;height:16px;padding:0;border:none;border-radius:50%;background:#0f141973;color:#fff;font-size:11px;line-height:14px;text-align:center;cursor:pointer}.grid .slot.block .delete:hover{background:var(--wont)}.grid .slot.block{position:relative}.grid-shell.disabled .grid{opacity:.6;pointer-events:none}.legend{display:flex;gap:16px;font-size:12px;flex-wrap:wrap;margin-top:8px}.legend .swatch{display:inline-block;width:14px;height:14px;border-radius:3px;margin-right:6px;vertical-align:middle;border:1px solid var(--border)}.legend .swatch.attend{background:var(--attend);border-color:transparent}.legend .swatch.maybe{background:var(--maybe);border-color:transparent}.legend .swatch.wont{background:var(--wont);border-color:transparent}.legend .swatch.unset{background:var(--unset)}.tally{width:100%;border-collapse:collapse;margin-top:16px;font-size:13px}.tally th,.tally td{border-bottom:1px solid var(--border);padding:6px 8px;text-align:left}.tally th{background:var(--bg);font-weight:600}.tally td.count{text-align:center;font-variant-numeric:tabular-nums}.tally tr.leading td:first-child{border-left:3px solid var(--accent);padding-left:6px;font-weight:600}.tally tr.final td:first-child{border-left:3px solid var(--attend);padding-left:6px;font-weight:600}.tally tr.final{background:#16a34a0f}.tally tr.leading{background:#1f5af60a}footer.page-footer{margin-top:32px;font-size:12px;color:var(--muted)}
