:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--font-sans:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif;--font-display:"Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;--text-xs:.75rem;--text-sm:.875rem;--text-md:1rem;--text-lg:1.125rem;--text-xl:1.375rem;--text-2xl:1.75rem;--text-3xl:2.25rem;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--space-12:48px;--surface:#f4eee4;--surface-raised:#fffdf8;--surface-sunken:#ebe4d8;--border:#ddd4c6;--border-strong:#b9ae9d;--text:#1f1b16;--text-muted:#6b6257;--accent:#1f5f5b;--accent-text:#fff;--accent-soft:#dfeae6;--danger:#b3261e;--danger-text:#fff;--danger-soft:#f9e4e1;--overlay:#1f1b167a;--category-class:#cfe3d4;--category-class-text:#173b25;--category-meeting:#d6def0;--category-meeting-text:#1f2f5c;--category-event:#f6d9b5;--category-event-text:#5c3200;--category-hire:#e8d4e8;--category-hire-text:#4b1f4e;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:999px;--shadow-1:0 1px 2px #1f1b160f, 0 1px 1px #1f1b160a;--shadow-2:0 12px 32px #1f1b1629, 0 2px 6px #1f1b1614;--duration-fast:.12s;--duration-base:.2s;--duration-slow:.32s;--ease-out:cubic-bezier(.2, .7, .2, 1);--ease-spring:cubic-bezier(.34, 1.3, .64, 1)}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--surface:#1a1816;--surface-raised:#26221e;--surface-sunken:#141210;--border:#3d3731;--border-strong:#5c544a;--text:#f1ebe2;--text-muted:#a89f93;--accent:#7fc4b7;--accent-text:#0f2a27;--accent-soft:#203733;--danger:#ff8a80;--danger-text:#3a0b08;--danger-soft:#3e1d1a;--overlay:#0000009e;--category-class:#244a33;--category-class-text:#c9ead3;--category-meeting:#2a3a66;--category-meeting-text:#d5def5;--category-event:#6b4210;--category-event-text:#fbe1bf;--category-hire:#55305a;--category-hire-text:#efd8ef;--shadow-1:0 1px 2px #0006;--shadow-2:0 12px 32px #0009, 0 2px 6px #0006}}@media (prefers-reduced-motion:reduce){:root{--duration-fast:0s;--duration-base:0s;--duration-slow:0s}}*,:before,:after{box-sizing:border-box}html{font-family:var(--font-sans);background:var(--surface);color:var(--text);-webkit-text-size-adjust:100%;-webkit-font-smoothing:antialiased;font-size:100%;line-height:1.5}body{background:radial-gradient(900px 420px at 18% -140px, color-mix(in oklab, var(--accent) 9%, transparent), transparent 70%), radial-gradient(700px 380px at 92% -120px, color-mix(in oklab, var(--category-event) 35%, transparent), transparent 70%);min-height:100dvh;margin:0;overflow-x:clip}h1,h2,h3{font-family:var(--font-display);letter-spacing:-.015em;text-wrap:balance;margin:0;font-weight:600;line-height:1.2}p{margin:0}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:color-mix(in oklab, var(--accent) 25%, transparent)}@keyframes rise-in{0%{opacity:0;transform:translateY(6px)}}@keyframes fade-in{0%{opacity:0}}.app{max-width:1440px;min-height:100dvh;padding:0 var(--space-6) var(--space-8);flex-direction:column;margin:0 auto;display:flex}.app-header{align-items:center;gap:var(--space-3);padding:var(--space-5) 0 var(--space-4);display:flex}.brand{align-items:center;gap:var(--space-3);min-width:0;display:flex}.brand__mark{border-radius:var(--radius-md);background:linear-gradient(160deg, color-mix(in oklab, var(--accent), white 14%), var(--accent) 55%, color-mix(in oklab, var(--accent), black 18%));width:40px;height:40px;color:var(--accent-text);box-shadow:inset 0 1px 0 oklab(100% 0 5.96046e-8/.25), var(--shadow-1);flex:none;place-items:center;display:grid}.brand__text{flex-direction:column;min-width:0;display:flex}.brand__name{font-size:var(--text-xl);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.brand__tagline{color:var(--text-muted);font-size:var(--text-xs);letter-spacing:.02em;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.toolbar{align-items:center;gap:var(--space-3);padding:var(--space-3) 0;border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.toolbar__nav{align-items:center;gap:var(--space-2);min-width:0;display:flex}.btn-group{display:inline-flex}.btn-group .btn{border-radius:0}.btn-group .btn:first-child{border-start-start-radius:var(--radius-md);border-end-start-radius:var(--radius-md)}.btn-group .btn:last-child{border-start-end-radius:var(--radius-md);border-end-end-radius:var(--radius-md)}.btn-group .btn+.btn{margin-inline-start:-1px}.btn-group .btn:hover,.btn-group .btn:focus-visible{z-index:1;position:relative}.toolbar__period{font-family:var(--font-display);font-size:var(--text-xl);letter-spacing:-.01em;padding:0 var(--space-2);white-space:nowrap;text-overflow:ellipsis;font-variant-numeric:tabular-nums;min-width:0;font-weight:600;overflow:hidden}.toolbar__actions{align-items:center;gap:var(--space-2);flex-wrap:wrap;margin-left:auto;display:flex}.btn{justify-content:center;align-items:center;gap:var(--space-2);height:36px;padding:0 var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-raised);color:var(--text);font-size:var(--text-sm);white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-1);transition:background-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);font-weight:500;line-height:1;display:inline-flex}.btn:hover{border-color:var(--border-strong);background:color-mix(in oklab, var(--surface-raised), var(--text) 3%)}.btn:active{box-shadow:none;transform:translateY(1px)}.btn--primary{background:var(--accent);border-color:var(--accent);color:var(--accent-text);box-shadow:inset 0 1px 0 oklab(100% 0 5.96046e-8/.18), var(--shadow-1)}.btn--primary:hover{background:color-mix(in oklab, var(--accent), var(--text) 12%);border-color:color-mix(in oklab, var(--accent), var(--text) 12%)}.btn--icon{width:36px;padding:0}.btn--quiet{box-shadow:none;background:0 0;border-color:#0000}.btn--quiet:hover{background:color-mix(in oklab, var(--text) 8%, transparent);border-color:#0000}.btn--danger{background:var(--danger);border-color:var(--danger);color:var(--danger-text)}.btn--danger:hover{background:color-mix(in oklab, var(--danger), var(--text) 12%);border-color:color-mix(in oklab, var(--danger), var(--text) 12%)}.btn--quiet-danger{color:var(--danger)}.btn--quiet-danger:hover{background:var(--danger-soft)}.btn svg{flex:none}.tabs{border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-sunken);gap:2px;padding:3px;display:inline-flex}.tab{height:30px;padding:0 var(--space-4);border-radius:calc(var(--radius-md) - 3px);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);background:0 0;border:0;font-weight:500}.tab:hover{color:var(--text)}.tab:active{transform:translateY(1px)}.tab[aria-selected=true]{background:var(--surface-raised);color:var(--text);box-shadow:var(--shadow-1);font-weight:600}.menu-anchor{position:relative}.menu{right:0;top:calc(100% + var(--space-1));min-width:200px;padding:var(--space-1);background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-md);box-shadow:var(--shadow-2);z-index:10;transform-origin:100% 0;animation:menu-pop var(--duration-base) var(--ease-spring);margin:0;list-style:none;position:absolute}.menu[hidden]{display:none}@keyframes menu-pop{0%{opacity:0;transform:translateY(-4px)scale(.98)}}.menu__item{width:100%;padding:var(--space-2) var(--space-3);border-radius:var(--radius-sm);text-align:left;font-size:var(--text-sm);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out);background:0 0;border:0;font-weight:500;display:block}.menu__item:hover{background:color-mix(in oklab, var(--text) 8%, transparent)}.menu__item:focus-visible{outline-offset:-2px}.filters{align-items:center;gap:var(--space-2);padding:0 0 var(--space-4);flex-wrap:wrap;display:flex}.filters__chips{gap:var(--space-2);flex-wrap:wrap;display:flex}.chip{align-items:center;gap:var(--space-2);height:30px;padding:0 var(--space-3) 0 var(--space-2);border:1px solid var(--border);border-radius:var(--radius-full);color:var(--text-muted);font-size:var(--text-sm);cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);background:0 0;font-weight:500;display:inline-flex}.chip:hover{border-color:var(--border-strong);color:var(--text)}.chip:active{transform:scale(.97)}.chip__dot{border-radius:var(--radius-full);background:var(--chip-colour);border:1px solid color-mix(in oklab, var(--chip-text) 35%, transparent);width:10px;height:10px;transition:background-color var(--duration-fast) var(--ease-out)}.chip[aria-pressed=false] .chip__dot{background:0 0}.chip[aria-pressed=false]{text-decoration:line-through;-webkit-text-decoration-color:color-mix(in oklab, var(--text-muted) 60%, transparent);text-decoration-color:color-mix(in oklab, var(--text-muted) 60%, transparent)}.chip[aria-pressed=true]{background:var(--chip-colour);border-color:color-mix(in oklab, var(--chip-text) 20%, var(--chip-colour));color:var(--chip-text)}.chip[aria-pressed=true] .chip__dot{background:var(--chip-text);border-color:#0000}.chip--class{--chip-colour:var(--category-class);--chip-text:var(--category-class-text)}.chip--meeting{--chip-colour:var(--category-meeting);--chip-text:var(--category-meeting-text)}.chip--event{--chip-colour:var(--category-event);--chip-text:var(--category-event-text)}.chip--hire{--chip-colour:var(--category-hire);--chip-text:var(--category-hire-text)}.filters__status{align-items:center;min-height:30px;margin-left:auto;display:flex}.filters__status:empty{display:none}.pill{align-items:center;gap:var(--space-2);height:28px;padding:0 var(--space-3) 0 var(--space-2);border-radius:var(--radius-full);font-size:var(--text-xs);letter-spacing:.01em;animation:rise-in var(--duration-base) var(--ease-out);font-weight:700;display:inline-flex}.pill--danger{background:var(--danger);color:var(--danger-text)}.pill--danger:before{content:"";border-radius:var(--radius-full);background:var(--danger-text);opacity:.9;width:8px;height:8px}.calendar{background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);min-height:480px;box-shadow:var(--shadow-1);animation:fade-in var(--duration-base) var(--ease-out);flex-direction:column;flex:1;display:flex;overflow:hidden}.filter-note{align-items:center;gap:var(--space-2) var(--space-3);padding:var(--space-2) var(--space-3) var(--space-2) var(--space-4);border-bottom:1px solid var(--border);background:var(--accent-soft);color:var(--text);font-size:var(--text-sm);flex-wrap:wrap;display:flex}.filter-note .btn--quiet{height:30px;padding:0 var(--space-3);color:var(--accent);font-weight:600}.empty-state{text-align:center;justify-content:center;align-items:center;gap:var(--space-3);margin:var(--space-6);padding:var(--space-12) var(--space-6);border-radius:var(--radius-lg);background:radial-gradient(closest-side at 50% 42%, var(--accent-soft), transparent 100%), repeating-linear-gradient(to bottom, transparent 0 47px, color-mix(in oklab, var(--border) 60%, transparent) 47px 48px);flex-direction:column;flex:1;display:flex}.empty-state__art{color:var(--accent);margin-bottom:var(--space-2);filter:drop-shadow(0 8px 16px color-mix(in oklab, var(--accent) 20%, transparent))}.empty-state__title{font-size:var(--text-2xl)}.empty-state__text{max-width:40ch;color:var(--text-muted)}.empty-state__actions{justify-content:center;gap:var(--space-3);margin-top:var(--space-3);flex-wrap:wrap;display:flex}.week{--hour-height:56px;--gutter-width:60px;flex-direction:column;flex:1;min-height:0;display:flex}.week__row{grid-template-columns:var(--gutter-width) repeat(7, minmax(0, 1fr));display:grid}.week__head{border-bottom:1px solid var(--border);background:var(--surface-raised)}.week__day{min-height:56px;padding:var(--space-2);font-size:var(--text-sm);text-align:center;color:var(--text);border-left:1px solid var(--border);flex-direction:column;justify-content:center;align-items:center;gap:2px;font-weight:600;display:flex}.week__weekday{color:var(--text-muted);font-size:var(--text-xs);letter-spacing:.08em;text-transform:uppercase;font-weight:600}.week__date{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.01em;font-variant-numeric:tabular-nums;font-weight:600}.week__day--today{color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 -2px 0 var(--accent)}.week__day--today .week__weekday{color:var(--accent)}.week__body{scroll-behavior:smooth;overscroll-behavior:contain;flex:1;max-height:70vh;overflow-y:auto}.week__grid{height:calc(var(--hour-height) * 18);position:relative}.week__hour{height:var(--hour-height);position:relative}.week__hour-label{top:var(--space-1);right:var(--space-3);font-size:var(--text-xs);color:var(--text-muted);font-variant-numeric:tabular-nums;font-weight:500;position:absolute}.week__column{border-left:1px solid var(--border);background-image:linear-gradient(to bottom, var(--border) 1px, transparent 1px), linear-gradient(to bottom, transparent calc(50% - 1px), color-mix(in oklab, var(--border) 45%, transparent) calc(50% - 1px), color-mix(in oklab, var(--border) 45%, transparent) 50%, transparent 50%);background-size:100% var(--hour-height);position:relative}.week__column--today{background-color:color-mix(in oklab, var(--accent-soft) 55%, transparent)}.week__slot{width:100%;height:var(--hour-height);cursor:copy;transition:background-color var(--duration-fast) var(--ease-out);background:0 0;border:0;padding:0;display:block}.week__slot:hover{background:color-mix(in oklab, var(--accent) 10%, transparent);box-shadow:inset 0 0 0 1px color-mix(in oklab, var(--accent) 35%, transparent)}.week__slot:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}.event-block{--block-tint:var(--surface-sunken);--block-ink:var(--text);padding:var(--space-1) var(--space-2) var(--space-1) 10px;border-radius:var(--radius-sm);background:var(--block-tint);color:var(--block-ink);box-shadow:inset 3px 0 0 var(--block-ink), inset 0 0 0 1px color-mix(in oklab, var(--block-ink) 14%, transparent), 0 0 0 1px var(--surface-raised);font:inherit;font-size:var(--text-xs);text-align:left;cursor:pointer;transition:box-shadow var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out), filter var(--duration-fast) var(--ease-out);border:0;flex-direction:column;gap:1px;line-height:1.3;display:flex;position:absolute;overflow:hidden;container-type:size}.event-block:hover{z-index:2;filter:saturate(1.15);box-shadow:inset 3px 0 0 var(--block-ink), inset 0 0 0 1px color-mix(in oklab, var(--block-ink) 28%, transparent), 0 0 0 1px var(--surface-raised), var(--shadow-2);transform:translateY(-1px)}.event-block:active{transform:translateY(0)scale(.99)}.event-block:focus-visible{outline:2px solid var(--accent);outline-offset:2px;z-index:3}.event-block__title{font-size:var(--text-sm);letter-spacing:-.005em;white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.event-block__meta{white-space:nowrap;text-overflow:ellipsis;opacity:.85;font-variant-numeric:tabular-nums;overflow:hidden}.event-block--clash{box-shadow:inset 3px 0 0 var(--danger), inset 0 0 0 2px var(--danger), 0 0 0 1px var(--surface-raised)}.event-block--clash:hover{box-shadow:inset 3px 0 0 var(--danger), inset 0 0 0 2px var(--danger), 0 0 0 1px var(--surface-raised), var(--shadow-2)}.event-block--clash .event-block__title{padding-right:44px}.event-block__badge{padding:1px var(--space-2);border-radius:var(--radius-full);background:var(--danger);color:var(--danger-text);letter-spacing:.02em;font-size:.6875rem;font-weight:700;line-height:1.4;position:absolute;top:3px;right:3px}@container (height<=64px){.event-block__meta+.event-block__meta{display:none}}@container (height<=40px){.event-block__meta{display:none}.event-block__title{font-size:var(--text-xs)}}@container (height<=24px){.event-block__badge{display:none}.event-block--clash .event-block__title{padding-right:0}}@container (width<=96px){.event-block__meta+.event-block__meta{display:none}.event-block__badge{width:10px;height:10px;padding:0;font-size:0;top:5px;right:5px}.event-block--clash .event-block__title{padding-right:14px}}.agenda{flex-direction:column;min-width:0;display:flex}.agenda__day{padding:var(--space-2) var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.agenda__day:last-child{border-bottom:0}.agenda__head{z-index:1;align-items:center;gap:var(--space-2);margin:0 calc(var(--space-3) * -1) var(--space-2);padding:var(--space-2) var(--space-3);background:color-mix(in oklab, var(--surface-raised) 92%, transparent);-webkit-backdrop-filter:blur(8px);display:flex;position:sticky;top:0}.agenda__title{font-family:var(--font-display);font-size:var(--text-lg);letter-spacing:-.01em;flex:1;font-weight:600}.agenda__day--today .agenda__title{color:var(--accent)}.agenda__today{padding:2px var(--space-2);border-radius:var(--radius-full);background:var(--accent);color:var(--accent-text);font-size:var(--text-xs);letter-spacing:.06em;text-transform:uppercase;font-weight:700}.agenda__add{flex:none}.agenda__empty{padding:var(--space-2) var(--space-3);border:1px dashed var(--border-strong);border-radius:var(--radius-md);color:var(--text-muted);font-size:var(--text-sm)}.agenda__list{gap:var(--space-2);flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.agenda__row{--marker:var(--text-muted);--tint:var(--surface-sunken);align-items:center;gap:var(--space-3);width:100%;min-height:60px;padding:var(--space-2) var(--space-3) var(--space-2) var(--space-2);border:1px solid var(--border);border-radius:var(--radius-md);background:linear-gradient(to right, color-mix(in oklab, var(--tint) 55%, var(--surface-raised)), var(--surface-raised) 60%);color:var(--text);font:inherit;text-align:left;cursor:pointer;transition:box-shadow var(--duration-fast) var(--ease-out), border-color var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out);grid-template-columns:4px auto minmax(0,1fr) auto;display:grid}.agenda__row:hover{border-color:var(--marker);box-shadow:var(--shadow-1)}.agenda__row:active{transform:scale(.995)}.agenda__row:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.agenda__marker{border-radius:var(--radius-full);background:var(--marker);align-self:stretch}.agenda__time{min-width:3.5em;font-size:var(--text-sm);font-variant-numeric:tabular-nums;flex-direction:column;font-weight:600;line-height:1.3;display:flex}.agenda__time-end{color:var(--text-muted);font-weight:500}.agenda__text{flex-direction:column;gap:1px;min-width:0;display:flex}.agenda__row-title{font-size:var(--text-md);text-overflow:ellipsis;white-space:nowrap;font-weight:600;overflow:hidden}.agenda__room{color:var(--text-muted);font-size:var(--text-sm);text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.agenda__row--clash{border-color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}.agenda__badge{padding:2px var(--space-2);border-radius:var(--radius-full);background:var(--danger);color:var(--danger-text);font-size:var(--text-xs);font-weight:700}.agenda__row--class{--marker:var(--category-class-text);--tint:var(--category-class)}.agenda__row--meeting{--marker:var(--category-meeting-text);--tint:var(--category-meeting)}.agenda__row--event{--marker:var(--category-event-text);--tint:var(--category-event)}.agenda__row--hire{--marker:var(--category-hire-text);--tint:var(--category-hire)}.month{flex-direction:column;min-width:0;display:flex}.month__head,.month__grid{grid-template-columns:repeat(7,minmax(0,1fr));display:grid}.month__row{display:contents}.month__head{border-bottom:1px solid var(--border)}.month__heading{padding:var(--space-3) var(--space-2);color:var(--text-muted);font-size:var(--text-xs);letter-spacing:.08em;text-align:center;text-transform:uppercase;font-weight:600}.month__day{min-width:0;min-height:7rem;padding:var(--space-1) var(--space-1) var(--space-2);border-right:1px solid var(--border);border-bottom:1px solid var(--border);transition:background-color var(--duration-fast) var(--ease-out);flex-direction:column;gap:2px;display:flex}.month__row>.month__day:nth-child(7n){border-right:0}.month__row:last-child>.month__day{border-bottom:0}.month__row>.month__day:nth-child(7n+6),.month__row>.month__day:nth-child(7n){background:color-mix(in oklab, var(--surface-sunken) 40%, transparent)}.month__day--outside{color:var(--text-muted)}.month__day--outside .month__chip{opacity:.55}.month__day--today,.month__row>.month__day--today:nth-child(7n+6),.month__row>.month__day--today:nth-child(7n){background:color-mix(in oklab, var(--accent-soft) 60%, transparent)}.month__number{min-width:28px;height:28px;padding:0 var(--space-1);border-radius:var(--radius-full);color:inherit;font:inherit;font-size:var(--text-sm);font-variant-numeric:tabular-nums;cursor:pointer;transition:background-color var(--duration-fast) var(--ease-out), color var(--duration-fast) var(--ease-out);background:0 0;border:0;align-self:flex-start;place-items:center;margin:2px 0 2px 2px;font-weight:600;display:inline-grid}.month__number:hover{background:color-mix(in oklab, var(--accent) 14%, transparent);color:var(--accent)}.month__day--today .month__number{background:var(--accent);color:var(--accent-text)}.month__day--today .month__number:hover{background:color-mix(in oklab, var(--accent), var(--text) 12%);color:var(--accent-text)}.month__number:focus-visible,.month__chip:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.month__chip{--block-tint:var(--surface-sunken);--block-ink:var(--text);gap:var(--space-1);min-width:0;padding:2px var(--space-2) 2px 7px;border-radius:var(--radius-sm);background:var(--block-tint);color:var(--block-ink);box-shadow:inset 2px 0 0 var(--block-ink);font:inherit;font-size:var(--text-xs);text-align:left;cursor:pointer;transition:filter var(--duration-fast) var(--ease-out), transform var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out);border:0;align-items:center;line-height:1.4;display:flex}.month__chip:hover{filter:saturate(1.15);box-shadow:inset 2px 0 0 var(--block-ink), inset 0 0 0 1px color-mix(in oklab, var(--block-ink) 28%, transparent)}.month__chip:active{transform:scale(.98)}.month__chip--clash{box-shadow:inset 2px 0 0 var(--danger), inset 0 0 0 1px var(--danger)}.month__chip .event-block__badge{padding:0 var(--space-1);margin-left:auto;font-size:.625rem;position:static}.month__time{font-variant-numeric:tabular-nums;flex:none;font-weight:600}.month__title{white-space:nowrap;text-overflow:ellipsis;min-width:0;overflow:hidden}.month__more{padding:0 var(--space-2);color:var(--text-muted);font-size:var(--text-xs);font-weight:600}.event-block--class{--block-tint:var(--category-class);--block-ink:var(--category-class-text)}.event-block--meeting{--block-tint:var(--category-meeting);--block-ink:var(--category-meeting-text)}.event-block--event{--block-tint:var(--category-event);--block-ink:var(--category-event-text)}.event-block--hire{--block-tint:var(--category-hire);--block-ink:var(--category-hire-text)}.rooms-panel{flex-direction:column;flex:1;min-height:0;display:flex;overflow-x:auto}.rooms{min-width:calc(var(--gutter-width) + var(--room-count) * 150px)}.rooms__row{grid-template-columns:var(--gutter-width) repeat(var(--room-count), minmax(0, 1fr))}.rooms .week__day{font-family:var(--font-display);font-size:var(--text-md);letter-spacing:-.005em}.modal-backdrop{z-index:100;padding:var(--space-4);background:var(--overlay);-webkit-backdrop-filter:blur(3px);animation:fade-in var(--duration-base) var(--ease-out);place-items:center;display:grid;position:fixed;inset:0}.modal{width:min(560px,100%);max-height:calc(100dvh - 2 * var(--space-4));background:var(--surface-raised);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-2);animation:modal-rise var(--duration-slow) var(--ease-spring);outline:none;flex-direction:column;display:flex}.modal__header{align-items:center;gap:var(--space-3);padding:var(--space-4) var(--space-4) var(--space-3) var(--space-6);border-bottom:1px solid var(--border);display:flex}.modal__title{font-size:var(--text-xl);flex:1}.modal__body{padding:var(--space-5) var(--space-6) var(--space-6);overscroll-behavior:contain;overflow:auto}.modal__body>p+p{margin-top:var(--space-3)}.modal__actions{justify-content:flex-end;gap:var(--space-2);margin-top:var(--space-5);flex-wrap:wrap;display:flex}@keyframes modal-rise{0%{opacity:0;transform:translateY(12px)scale(.98)}}.callout{gap:var(--space-2) var(--space-3);padding:var(--space-3) var(--space-4);border-radius:var(--radius-md);font-size:var(--text-sm);animation:rise-in var(--duration-base) var(--ease-out);grid-template-columns:auto minmax(0,1fr);display:grid}.callout--danger{background:var(--danger-soft);color:var(--text);box-shadow:inset 3px 0 0 var(--danger)}.callout__icon{width:20px;height:20px;color:var(--danger);place-items:center;margin-top:1px;display:grid}.callout__body{min-width:0}.callout__body p{margin:0}.callout__title{color:var(--danger);font-weight:600}.callout__body ul{margin:var(--space-1) 0;padding-left:var(--space-4)}.callout__body li+li{margin-top:2px}.event-form{gap:var(--space-4);flex-direction:column;display:flex}.event-form__row{gap:var(--space-3);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.event-form__row--three{grid-template-columns:1.4fr 1fr 1fr}.field{gap:var(--space-1);flex-direction:column;min-width:0;display:flex}.field__head{justify-content:space-between;align-items:baseline;gap:var(--space-2);display:flex}.field__label{font-size:var(--text-sm);font-weight:600}.field__hint{font-size:var(--text-xs);color:var(--text-muted)}.field__control{width:100%;min-width:0;height:40px;padding:0 var(--space-3);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-sunken);color:var(--text);font:inherit;font-size:var(--text-md);box-shadow:inset 0 1px 2px color-mix(in oklab, var(--text) 4%, transparent);transition:border-color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out), box-shadow var(--duration-fast) var(--ease-out)}.field__control::placeholder{color:color-mix(in oklab, var(--text-muted) 70%, transparent)}.field__control:hover{border-color:var(--border-strong)}.field__control:focus-visible{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent);background:var(--surface-raised)}.field__control[aria-invalid=true]{border-color:var(--danger);box-shadow:inset 0 0 0 1px var(--danger)}.field__error{align-items:center;gap:var(--space-1);font-size:var(--text-xs);color:var(--danger);animation:rise-in var(--duration-base) var(--ease-out);font-weight:600;display:flex}.field__error:before{content:"";border-radius:var(--radius-full);background:var(--danger);flex:none;width:6px;height:6px}.event-form__check{align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border:1px solid var(--border);border-radius:var(--radius-md);background:var(--surface-sunken);font-size:var(--text-sm);cursor:pointer;transition:border-color var(--duration-fast) var(--ease-out), background-color var(--duration-fast) var(--ease-out);font-weight:600;display:flex}.event-form__check:hover{border-color:var(--border-strong)}.event-form__check:has(input:checked){border-color:color-mix(in oklab, var(--accent) 45%, var(--border));background:var(--accent-soft)}.event-form__check:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px}.event-form__check input{width:18px;height:18px;accent-color:var(--accent);margin:0}.event-form__check input:focus-visible{outline:none}.event-form__actions{align-items:center;gap:var(--space-2);padding-top:var(--space-4);border-top:1px solid var(--border);flex-wrap:wrap;display:flex}.event-form__spacer{flex:1}.room-list{flex-direction:column;margin:0;padding:0;list-style:none;display:flex}.room-list__item{gap:var(--space-2);padding:var(--space-3) 0;border-bottom:1px solid var(--border);flex-direction:column;display:flex}.room-list__item:first-child{padding-top:0}.room-list__row{align-items:center;gap:var(--space-2);grid-template-columns:minmax(0,1fr) auto auto;display:grid}.room-list__row .btn{padding:0 var(--space-3)}.room-list__add{gap:var(--space-2);padding-top:var(--space-4);flex-direction:column;display:flex}.room-list__add .room-list__row{grid-template-columns:minmax(0,1fr) auto}.room-list__label{font-size:var(--text-sm);font-weight:600}.modal:has(.sheet){width:min(760px,100%)}.schedule-actions{justify-content:space-between;align-items:center;gap:var(--space-3);margin-bottom:var(--space-4);display:flex}.schedule-actions__buttons{gap:var(--space-2);flex:none;display:flex}.schedule-actions__hint{color:var(--text-muted);font-size:var(--text-sm);text-wrap:pretty}.sheet{--sheet-ink:var(--text);--sheet-muted:var(--text-muted);--sheet-rule:var(--border);--sheet-paper:var(--surface);padding:var(--space-8) var(--space-8) var(--space-6);border:1px solid var(--sheet-rule);border-radius:var(--radius-md);background:var(--sheet-paper);color:var(--sheet-ink);box-shadow:var(--shadow-1)}.sheet__head{padding-bottom:var(--space-4);margin-bottom:var(--space-5);border-bottom:2px solid var(--sheet-ink)}.sheet__kicker{color:var(--sheet-muted);font-size:var(--text-xs);letter-spacing:.12em;text-transform:uppercase;font-weight:600}.sheet__title{font-size:clamp(var(--text-2xl), 5vw, var(--text-3xl));line-height:1.1}.sheet__week{margin-top:var(--space-1);font-family:var(--font-display);font-size:var(--text-lg);color:var(--sheet-muted)}.sheet__empty{padding:var(--space-6) 0;color:var(--sheet-muted);font-family:var(--font-display);font-size:var(--text-lg);text-align:center;font-style:italic}.sheet__day{margin-bottom:var(--space-5);break-inside:avoid;page-break-inside:avoid}.sheet__day-title{margin-bottom:var(--space-2);font-size:var(--text-lg)}.sheet__table{border-collapse:collapse;width:100%;font-size:var(--text-sm)}.sheet__thead th{padding:0 var(--space-2) var(--space-1) 0;border-bottom:1px solid var(--sheet-rule);color:var(--sheet-muted);font-size:var(--text-xs);letter-spacing:.06em;text-align:left;text-transform:uppercase;font-weight:600}.sheet__row td{padding:var(--space-2) var(--space-2) var(--space-2) 0;border-bottom:1px solid var(--sheet-rule);vertical-align:baseline}.sheet__row:last-child td{border-bottom:0}.sheet__time{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:600}.sheet__time-sep{color:var(--sheet-muted);padding:0 .25em}.sheet__event{width:45%;font-weight:600}.sheet__room{white-space:nowrap}.sheet__category{white-space:nowrap;color:var(--sheet-muted)}.sheet__mark{width:10px;height:10px;margin-right:var(--space-2);background:var(--mark);vertical-align:0;border-radius:2px;display:inline-block}.sheet__legend{gap:var(--space-2) var(--space-4);margin-top:var(--space-4);padding-top:var(--space-3);border-top:1px solid var(--sheet-rule);color:var(--sheet-muted);font-size:var(--text-xs);flex-wrap:wrap;display:flex}.sheet__cat--class{--mark:var(--category-class-text)}.sheet__cat--meeting{--mark:var(--category-meeting-text)}.sheet__cat--event{--mark:var(--category-event-text)}.sheet__cat--hire{--mark:var(--category-hire-text)}.toast:not(:empty){bottom:var(--space-6);align-items:center;gap:var(--space-2);max-width:calc(100vw - 2 * var(--space-4));padding:var(--space-3) var(--space-5);border:1px solid color-mix(in oklab, var(--text) 10%, var(--surface-raised));border-radius:var(--radius-full);background:var(--text);color:var(--surface);font-size:var(--text-sm);box-shadow:var(--shadow-2);z-index:50;animation:toast-in var(--duration-slow) var(--ease-spring);font-weight:600;display:flex;position:fixed;left:50%;transform:translate(-50%)}.toast:not(:empty):before{content:"";border-radius:var(--radius-full);background:var(--accent);width:8px;height:8px}.toast:empty{display:none}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,12px)}}@media (width<=640px){.app{padding:0 var(--space-3) var(--space-4)}.app-header{padding:var(--space-4) 0 var(--space-3)}.brand__mark{width:36px;height:36px}.brand__name{font-size:var(--text-lg)}.brand__tagline{display:none}.toolbar{align-items:center;gap:var(--space-2);padding:var(--space-3) 0 var(--space-2);grid-template-columns:auto minmax(0,1fr);display:grid}.toolbar__nav{display:contents}.toolbar__period{white-space:normal;font-size:var(--text-xl);grid-area:1/1/auto/-1;padding:0}.toolbar__nav>.btn-group{justify-self:end}.tabs{grid-column:1/-1;width:100%}.tab{flex:1;padding:0}.toolbar__actions{grid-column:1/-1;grid-template-columns:minmax(0,1fr) auto auto;width:100%;margin-left:0;display:grid}.toolbar__actions .btn{min-width:0;padding:0 var(--space-3)}.menu-anchor .btn{width:100%}.menu{min-width:220px}.filters{padding-bottom:var(--space-3)}.filters__chips{scrollbar-width:none;margin:calc(var(--space-1) * -1) calc(var(--space-3) * -1);padding:var(--space-1) var(--space-3);-webkit-mask-image:linear-gradient(to right, transparent, black var(--space-3), black calc(100% - var(--space-4)), transparent);mask-image:linear-gradient(to right, transparent, black var(--space-3), black calc(100% - var(--space-4)), transparent);-webkit-mask-image:linear-gradient(to right, transparent, black var(--space-3), black calc(100% - var(--space-4)), transparent);flex-wrap:nowrap;flex:100%;overflow-x:auto}.filters__chips::-webkit-scrollbar{display:none}.chip{flex:none}.filters__status{margin-left:0}.calendar{min-height:360px}.empty-state{margin:var(--space-3);padding:var(--space-8) var(--space-4)}.empty-state__title{font-size:var(--text-xl)}.month__time{display:none}.month__day{min-height:4.75rem;padding:2px 2px var(--space-1)}.month__number{min-width:24px;height:24px;font-size:var(--text-xs)}.month__chip{padding:1px var(--space-1) 1px 5px}.month .event-block__badge{display:none}.modal-backdrop{align-items:end;padding:0}.modal{width:100%;max-height:calc(100dvh - var(--space-8));border-radius:var(--radius-lg) var(--radius-lg) 0 0;animation:modal-slide var(--duration-slow) var(--ease-out);border-bottom:0}.modal__header{padding:var(--space-3) var(--space-3) var(--space-3) var(--space-5)}.modal__body{padding:var(--space-4) var(--space-5) calc(var(--space-6) + env(safe-area-inset-bottom))}.event-form__row,.event-form__row--three{grid-template-columns:minmax(0,1fr)}.event-form__row--three{grid-template-columns:repeat(2,minmax(0,1fr))}.event-form__row--three>:first-child{grid-column:1/-1}.room-list__row{grid-template-columns:repeat(2,minmax(0,1fr))}.room-list__row .field__control{grid-column:1/-1}.room-list__add .room-list__row{grid-template-columns:minmax(0,1fr)}.schedule-actions{flex-direction:column;align-items:stretch}.schedule-actions__buttons .btn{flex:1}.sheet{padding:var(--space-5) var(--space-4)}.sheet__thead{display:none}.sheet__row{gap:0 var(--space-3);padding:var(--space-2) 0;border-bottom:1px solid var(--sheet-rule);grid-template-columns:auto minmax(0,1fr);display:grid}.sheet__row:last-child{border-bottom:0}.sheet__row td{border:0;padding:0}.sheet__time{grid-row:1/span 3}.sheet__event{width:auto}.sheet__room,.sheet__category{white-space:normal;color:var(--sheet-muted)}.toast:not(:empty){bottom:calc(var(--space-4) + env(safe-area-inset-bottom))}}@keyframes modal-slide{0%{opacity:0;transform:translateY(24px)}}@media print{@page{margin:15mm}body{color:#000;background:#fff;min-height:0}body>:not(.modal-backdrop){display:none!important}.modal-backdrop{-webkit-backdrop-filter:none;background:0 0;padding:0;animation:none;display:block;position:static}.modal{width:auto;max-height:none;box-shadow:none;background:#fff;border:0;border-radius:0;animation:none;display:block}.modal__header,.schedule-actions{display:none!important}.modal__body{padding:0;overflow:visible}.sheet{--sheet-ink:#000;--sheet-muted:#333;--sheet-rule:#999;--sheet-paper:#fff;--category-class-text:#173b25;--category-meeting-text:#1f2f5c;--category-event-text:#5c3200;--category-hire-text:#4b1f4e;box-shadow:none;border:0;border-radius:0;padding:0;font-size:11pt}.sheet__title{font-size:28pt}.sheet__day{break-inside:avoid;page-break-inside:avoid}.sheet__day-title{break-after:avoid;page-break-after:avoid}.sheet__mark{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
