:root{--bg:#f3f4f6;--fg:#14171a;--muted:#5b6470;--accent:#2f6fdf;--grid-line:#e3e6eb;--grid-hour:#d5d9e0;--now:#c92a2a;--shadow:0 1px 2px #1018281f, 0 1px 1px #1018280f;color:var(--fg);background:var(--bg);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#0f1115;--fg:#e8eaee;--muted:#9aa3ae;--accent:#7aa7ff;--grid-line:#22262e;--grid-hour:#2c313b;--now:#ff6b6b;--shadow:0 1px 2px #00000080}}*{box-sizing:border-box}body{background:var(--bg);min-height:100dvh;margin:0}.app-shell{max-width:1280px;margin:0 auto;padding:12px 16px 16px}.app-shell:has(.calendar-page){height:100dvh;padding-bottom:env(safe-area-inset-bottom,0px);flex-direction:column;display:flex}.app-header{justify-content:space-between;align-items:center;gap:12px;min-height:44px;margin-bottom:8px;display:flex}.app-header h1{letter-spacing:-.01em;margin:0;font-size:clamp(1.15rem,3.5vw,1.5rem);font-weight:700}.account-menu{align-items:center;gap:4px;display:flex}.account-link{min-height:44px;font:inherit;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;align-items:center;padding:0 10px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.account-link:hover{color:var(--fg);background:var(--surface)}.app-placeholder{color:var(--muted)}:root{--surface:#fff;--border:#c9ced6;--danger:#b3261e;--success:#1e6b35}@media (prefers-color-scheme:dark){:root{--surface:#181b21;--border:#3a404b;--danger:#ff8a80;--success:#7fd69a}}.auth-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;max-width:420px;margin:24px auto;padding:24px}.auth-card h2{margin-top:0}.auth-card form{flex-direction:column;gap:8px;display:flex}.auth-card label{font-weight:600}.auth-card input[type=email],.auth-card input[type=password],.auth-card input[type=text]{width:100%;min-height:44px;font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 12px}.auth-card .auth-checkbox{align-items:center;gap:8px;min-height:44px;font-weight:400;display:flex}.auth-card .auth-checkbox input{width:20px;height:20px}.auth-card button{min-height:44px;font:inherit;color:#fff;cursor:pointer;background:#2f6fdf;border:0;border-radius:8px;margin-top:8px;font-weight:600}.auth-card button.auth-secondary{color:var(--accent);border:1px solid var(--accent);background:0 0}.auth-card button:disabled{opacity:.6;cursor:wait}.auth-hint,.auth-muted{color:var(--muted);margin:0}.auth-muted{margin-top:16px}.auth-error{color:var(--danger);margin:0;font-weight:600}.auth-notice{color:var(--success);margin:0}a{color:var(--accent)}.link-button{font:inherit;color:var(--accent);cursor:pointer;background:0 0;border:0;padding:0;text-decoration:underline}.setup-card{max-width:560px}.setup-intro{margin:0 0 16px}.auth-card select{width:100%;min-height:44px;font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 12px}.setup-columns{border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:8px;margin:8px 0 0;padding:12px;display:flex}.setup-columns legend{padding:0 4px;font-weight:600}.setup-column{grid-template-columns:20px minmax(0,1fr) minmax(0,8rem) auto;align-items:center;gap:8px;display:grid}.setup-column .auth-secondary,.setup-columns>.auth-secondary{margin-top:0;padding:0 12px}.colour-swatch{border-radius:50%;width:20px;height:20px}@media (width<=420px){.setup-column{grid-template-columns:20px minmax(0,1fr)}.setup-column select,.setup-column .setup-remove{grid-column:2}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.members-card{max-width:640px}.members-card h3{margin:24px 0 8px}.invite-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.invite{border:1px solid var(--border);border-radius:8px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;padding:12px;display:flex}.invite-details{flex-direction:column;min-width:0;display:flex}.invite-email{overflow-wrap:anywhere}.invite-actions{gap:8px;display:flex}.invite-actions .auth-secondary{margin-top:0;padding:0 16px}.invite-choices{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.button-link{color:#fff;background:#2f6fdf;border-radius:8px;justify-content:center;align-items:center;min-height:44px;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.button-link.secondary{color:var(--accent);border:1px solid var(--accent);background:0 0}.calendar-heading{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 16px;display:flex}.event-card{max-width:560px}.event-card textarea{width:100%;font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--border);resize:vertical;border-radius:8px;padding:8px 12px}.event-card input[type=date],.event-card input[type=time],.event-card input[type=number]{width:100%;min-height:44px;font:inherit;color:var(--fg);background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:8px 12px}.event-times{grid-template-columns:1fr 1fr;gap:12px;display:grid}.event-times>div{flex-direction:column;gap:8px;display:flex}.event-columns{border:1px solid var(--border);border-radius:8px;flex-direction:column;gap:4px;margin:8px 0 0;padding:12px;display:flex}.event-columns legend{padding:0 4px;font-weight:600}.event-card .button-link.secondary{margin-top:8px}.upcoming h3{margin:16px 0 8px}.upcoming-list{flex-direction:column;gap:8px;margin:0;padding:0;list-style:none;display:flex}.upcoming-event{background:var(--surface);border:1px solid var(--border);border-radius:8px;align-items:flex-start;gap:12px;padding:12px;display:flex}.upcoming-colours{flex-direction:column;gap:4px;padding-top:2px;display:flex}.upcoming-colours .colour-swatch{width:12px;height:12px}.upcoming-details{overflow-wrap:anywhere;flex-direction:column;min-width:0;display:flex}.upcoming-title{font-weight:600}.event-details{grid-template-columns:max-content minmax(0,1fr);gap:8px 16px;margin:0 0 16px;display:grid}.event-details dt{color:var(--muted);font-weight:600}.event-details dd{overflow-wrap:anywhere;margin:0}.event-notes{white-space:pre-wrap}.event-who{flex-wrap:wrap;gap:4px 12px;display:flex}.event-who-item{align-items:center;gap:6px;display:inline-flex}.event-who-item .colour-swatch{width:12px;height:12px}.event-actions{flex-wrap:wrap;gap:8px;display:flex}.event-actions button,.event-actions .button-link{min-height:44px;margin-top:0;padding:0 16px}.event-confirm p{margin:0 0 8px;font-weight:600}.auth-card button.danger,button.danger{color:#fff;font:inherit;cursor:pointer;background:#b3261e;border:0;border-radius:8px;font-weight:600}.toast{left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:10;max-width:calc(100% - 32px);color:var(--bg);background:var(--fg);border-radius:8px;align-items:center;gap:12px;padding:12px 16px;display:flex;position:fixed;transform:translate(-50%)}.toast .link-button{min-height:44px;color:var(--bg);font-weight:600}@media (width<=420px){.event-details{grid-template-columns:minmax(0,1fr)}.event-details dd{margin-bottom:8px}}.calendar-page,.upcoming-page{flex-direction:column;gap:10px;min-height:0;display:flex}.calendar-page{flex:1}.calendar-bar{justify-content:space-between;align-items:center;gap:8px;display:flex}.calendar-tabs{background:var(--surface);border:1px solid var(--grid-line);border-radius:999px;align-self:flex-start;padding:3px;display:inline-flex}.calendar-tab{min-height:38px;color:var(--muted);white-space:nowrap;border-radius:999px;align-items:center;padding:0 16px;font-size:.9rem;font-weight:600;text-decoration:none;display:inline-flex}.calendar-tab[aria-current=page]{color:#fff;background:#2f6fdf}.day-toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;display:flex}.day-nav{align-items:center;gap:4px;min-width:0;display:flex}.day-title{letter-spacing:-.01em;white-space:nowrap;align-items:center;gap:8px;margin:0;padding:0 4px;font-size:clamp(1.05rem,3.6vw,1.35rem);font-weight:700;display:flex}.today-badge{color:var(--now);text-transform:uppercase;letter-spacing:.05em;border:1px solid;border-radius:999px;padding:2px 8px;font-size:.7rem;font-weight:700}.icon-button{width:44px;height:44px;font:inherit;color:var(--fg);cursor:pointer;background:var(--surface);border:1px solid var(--grid-line);border-radius:12px;flex:none;justify-content:center;align-items:center;padding:0;font-size:1.6rem;line-height:1;text-decoration:none;display:inline-flex}.icon-button:disabled{cursor:default;opacity:.35}.day-actions{align-items:center;gap:8px;display:flex}.pill-button{min-height:44px;color:var(--fg);white-space:nowrap;background:var(--surface);border:1px solid var(--grid-line);border-radius:999px;align-items:center;padding:0 16px;font-weight:600;text-decoration:none;display:inline-flex}.add-button{white-space:nowrap;box-shadow:var(--shadow);border-radius:999px;gap:6px}.add-button .plus{font-size:1.2em;line-height:1}.fab{display:none}@media (width<=639px){.calendar-page .add-button{display:none}.fab{right:16px;bottom:calc(20px + env(safe-area-inset-bottom,0px));z-index:6;color:#fff;background:#2f6fdf;border-radius:50%;justify-content:center;align-items:center;width:60px;height:60px;font-size:2rem;font-weight:400;line-height:1;text-decoration:none;display:flex;position:fixed;box-shadow:0 6px 16px #2f6fdf73,0 2px 4px #10182833}.fab:active{transform:scale(.95)}.fab:focus-visible{outline:3px solid var(--accent);outline-offset:3px}.calendar-page{gap:8px}.calendar-tab{min-height:36px;padding:0 14px}.icon-button{border-radius:10px;width:40px;height:40px}}.board-scroller{overscroll-behavior:contain;scroll-snap-type:x proximity;background:var(--surface);border:1px solid var(--grid-line);min-height:240px;box-shadow:var(--shadow);border-radius:16px;flex:1;position:relative;overflow:auto;container-type:inline-size}.board{--column-min:calc(100cqw / 2.4);grid-template-columns:repeat(var(--columns), minmax(var(--column-min), 1fr));align-content:start;min-width:100%;display:grid}@media (width>=640px){.board{--column-min:180px}}@media (width>=1100px){.board{--column-min:200px}}.board.layout-day{grid-template-rows:auto 1fr;min-height:100%}.board-name{z-index:3;background:var(--surface);border-bottom:1px solid var(--grid-hour);border-left:1px solid var(--grid-line);scroll-snap-align:start;align-items:center;gap:8px;min-width:0;padding:12px 12px 10px;font-weight:700;display:flex;position:sticky;top:0}.board-name:first-child{border-left:0}.board-dot{width:12px;height:12px;box-shadow:0 0 0 2px var(--surface), 0 0 0 3px var(--grid-hour);border-radius:50%;flex:none}.board-name-text{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.board-cell{border-left:1px solid var(--grid-line);flex-direction:column;gap:6px;min-width:0;padding:8px 6px;display:flex}.board-cell.first{border-left:0}.board-empty{color:var(--muted);margin:4px 6px;font-size:.85rem}.board-add{min-height:44px;color:var(--muted);border:1.5px dashed var(--border);border-radius:10px;justify-content:center;align-items:center;gap:6px;font-weight:600;text-decoration:none;display:flex}.board-add span{font-size:1.3em;line-height:1}.board-add:hover{color:var(--accent);border-color:var(--accent)}.board-day{background:var(--bg);border-top:1px solid var(--grid-hour);border-bottom:1px solid var(--grid-line);grid-column:1/-1}.board-name+.board-day{border-top:0}.board-day-bar{box-sizing:border-box;justify-content:space-between;align-items:center;gap:8px;width:100cqw;padding:2px 6px 2px 2px;display:flex;position:sticky;left:0}.board-day-link{min-height:40px;color:var(--fg);white-space:nowrap;border-radius:8px;align-items:center;gap:8px;padding:0 10px;font-weight:700;text-decoration:none;display:inline-flex}.board-day-add{width:40px;height:40px;color:var(--accent);background:var(--surface);border:1px solid var(--grid-line);box-shadow:var(--shadow);border-radius:50%;flex:none;justify-content:center;align-items:center;font-size:1.5rem;line-height:1;text-decoration:none;display:inline-flex}.layout-week .board-cell{min-height:20px;padding:6px}.board-day.is-today{background:color-mix(in srgb, var(--accent) 12%, var(--surface))}.card{min-width:0;box-shadow:var(--shadow), inset 0 0 0 1px #ffffff2e;border-radius:10px;flex-direction:column;gap:2px;padding:8px 10px;font-size:.9rem;line-height:1.25;text-decoration:none;transition:transform .12s,box-shadow .12s;display:flex}.card:hover{transform:translateY(-1px);box-shadow:0 4px 10px #10182833}.card:active{transform:scale(.98)}.card-title{overflow-wrap:anywhere;-webkit-line-clamp:2;-webkit-box-orient:vertical;font-weight:700;display:-webkit-box;overflow:hidden}.card-time,.card-place{font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap;font-size:.8rem;overflow:hidden}.card.all-day .card-time{text-transform:uppercase;letter-spacing:.04em;font-size:.72rem;font-weight:700}.card:focus-visible,.board-add:focus-visible,.board-day-link:focus-visible,.board-day-add:focus-visible,.board-scroller:focus-visible,.icon-button:focus-visible,.calendar-tab:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.arrange-list{flex-direction:column;gap:8px;margin:16px 0;padding:0;list-style:none;display:flex}.arrange-item{background:var(--bg);border:1px solid var(--grid-line);border-radius:12px;align-items:center;gap:10px;padding:6px 6px 6px 14px;display:flex}.arrange-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-weight:600;overflow:hidden}.arrange-page .link-button{margin-bottom:16px;display:block}@media (prefers-reduced-motion:reduce){.card{transition:none}}.arrange-show{cursor:pointer;flex:1;align-items:center;gap:10px;min-width:0;min-height:44px;display:flex}.arrange-show input{accent-color:#2f6fdf;width:20px;height:20px;margin:0}.arrange-item.is-hidden .arrange-name{color:var(--muted);text-decoration:line-through}@media (width<=420px){.calendar-tab{padding:0 11px;font-size:.85rem}}.month{grid-template-columns:repeat(7,minmax(0,1fr));grid-template-rows:auto repeat(var(--weeks), minmax(92px, 1fr));overscroll-behavior:contain;background:var(--surface);border:1px solid var(--grid-line);box-shadow:var(--shadow);border-radius:16px;flex:1;display:grid;overflow:auto}.month-weekday{z-index:2;background:var(--surface);color:var(--muted);text-align:center;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid var(--grid-hour);padding:8px 6px;font-size:.75rem;font-weight:700;position:sticky;top:0}.month-day{border-top:1px solid var(--grid-line);border-left:1px solid var(--grid-line);flex-direction:column;gap:3px;min-width:0;padding:4px 3px 6px;display:flex;position:relative}.month-day:nth-child(7n+1){border-left:0}.month-day.is-other-month{background:var(--bg)}.month-day.is-other-month .month-day-number{color:var(--muted);font-weight:500}.month-day-link{color:var(--fg);align-self:flex-start;text-decoration:none}.month-day-link:after{content:"";position:absolute;inset:0}.month-day-link:focus-visible{outline:none}.month-day-link:focus-visible:after{outline:3px solid var(--accent);outline-offset:-3px}.month-day-number{font-variant-numeric:tabular-nums;border-radius:999px;justify-content:center;align-items:center;min-width:26px;height:26px;padding:0 4px;font-size:.85rem;font-weight:700;display:inline-flex}.month-day.is-today .month-day-number{color:#fff;background:#2f6fdf}.month-chip,.month-more{z-index:1;white-space:nowrap;border-radius:6px;align-items:baseline;gap:4px;min-width:0;padding:2px 5px;font-size:.75rem;line-height:1.3;text-decoration:none;display:flex;position:relative;overflow:hidden}.month-chip{box-shadow:var(--shadow);font-weight:650}.month-chip-time{font-variant-numeric:tabular-nums;flex:none;font-weight:500}.month-chip-title{text-overflow:ellipsis;overflow:hidden}.month-more{color:var(--accent);font-weight:700}.month-chip:focus-visible,.month-more:focus-visible{outline:3px solid var(--accent);outline-offset:1px}@media (width<=639px){.month{grid-template-rows:auto repeat(var(--weeks), minmax(84px, 1fr));border-radius:12px}.month-weekday{letter-spacing:0;padding:6px 0;font-size:.68rem}.month-day{gap:2px;padding:3px 2px 4px}.month-day-number{min-width:22px;height:22px;font-size:.78rem}.month-chip-time,.month-more-word{display:none}.month-chip,.month-more{border-radius:4px;padding:1px 3px;font-size:.68rem}}.date-picker{flex:none;display:inline-flex;position:relative}.date-picker-input{opacity:0;pointer-events:none;border:0;width:100%;height:100%;padding:0;position:absolute;inset:0}.day-nav .day-title{margin-left:6px}.event-repeat{background:var(--bg);border:1px solid var(--grid-line);border-radius:10px;margin:4px 0 8px;padding:12px}.event-repeat-days{border:0;flex-wrap:wrap;gap:6px;margin:0 0 12px;padding:0;display:flex}.event-repeat-days legend{margin-bottom:6px;padding:0;font-weight:600}.repeat-day{display:inline-flex;position:relative}.repeat-day input{appearance:none;opacity:0;cursor:pointer;width:100%;height:100%;margin:0;position:absolute;inset:0}.repeat-day span{min-width:44px;min-height:40px;color:var(--fg);background:var(--surface);border:1px solid var(--border);border-radius:999px;justify-content:center;align-items:center;padding:0 8px;font-weight:600;display:inline-flex}.repeat-day input:checked+span{color:#fff;background:#2f6fdf;border-color:#2f6fdf}.repeat-day input:disabled+span{cursor:default;opacity:.85}.repeat-day input:focus-visible+span{outline:3px solid var(--accent);outline-offset:2px}.event-card #event-repeat-every{max-width:7rem;display:block}
