:root{color-scheme:light dark;--bg:#f4f5f7;--surface:#fff;--surface-2:#eef0f3;--text:#1b1f24;--text-2:#3d434b;--muted:#59606a;--border:#d8dce2;--border-strong:#b3bac4;--accent:#1f5fd6;--accent-strong:#174bb0;--accent-soft:#e7eefc;--on-accent:#fff;--danger:#b42323;--danger-soft:#fcebeb;--on-danger:#fff;--success:#1c7337;--success-soft:#e6f4ea;--grid-line:#e4e7eb;--now:#d12b2b;--free-a:#2e8a3e33;--free-b:#2e8a3e12;--shadow:0 1px 2px #1018280d, 0 1px 3px #10182814;--shadow-lg:0 12px 32px #10182833;--focus-ring:0 0 0 3px #1f5fd666;--radius:12px;--radius-sm:8px;--font:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--mono:ui-monospace, "SF Mono", Menlo, Consolas, monospace;--page:44rem}@media (prefers-color-scheme:dark){:root{--bg:#0e1116;--surface:#161a20;--surface-2:#1f242c;--text:#e7eaee;--text-2:#c9ced6;--muted:#a0a8b3;--border:#2b323b;--border-strong:#46505c;--accent:#7eaaff;--accent-strong:#a8c4ff;--accent-soft:#1a2944;--on-accent:#0a1730;--danger:#ff8b8b;--danger-soft:#3a1818;--on-danger:#2a0707;--success:#6fd08b;--success-soft:#11291a;--grid-line:#262c34;--now:#ff6b6b;--free-a:#6fd08b1c;--free-b:#6fd08b08;--shadow:0 1px 2px #00000080;--shadow-lg:0 12px 32px #0009;--focus-ring:0 0 0 3px #7eaaff80}}.person-0{--fill:#dbe7ff;--edge:#2f6fd6}.person-1{--fill:#ffe0cc;--edge:#c8561b}.person-2{--fill:#d8f0d4;--edge:#2e8a3e}.person-3{--fill:#ebdeff;--edge:#7a45c9}.person-4{--fill:#fff0bd;--edge:#a88400}.person-5{--fill:#ffd8e2;--edge:#c43b63}.person-6{--fill:#cff0ee;--edge:#1f8a85}.person-7{--fill:#e9e4da;--edge:#7a6a4f}.person-none{--fill:var(--surface-2);--edge:var(--border-strong)}@media (prefers-color-scheme:dark){.person-0{--fill:#1b2d4d;--edge:#7eaaff}.person-1{--fill:#3d2616;--edge:#f0a070}.person-2{--fill:#173621;--edge:#6fd08b}.person-3{--fill:#2e2146;--edge:#b999f5}.person-4{--fill:#3a3113;--edge:#e0c25a}.person-5{--fill:#40202b;--edge:#f08aa8}.person-6{--fill:#123634;--edge:#5fd3cc}.person-7{--fill:#2f2b24;--edge:#c9b999}}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;scroll-padding-top:5rem}body{font-family:var(--font);color:var(--text);background:var(--bg);margin:0;font-size:1rem;line-height:1.55}body.wide{--page:72rem}h1{letter-spacing:-.015em;margin:0 0 .5rem;font-size:clamp(1.6rem,1.25rem + 1.4vw,2.1rem);line-height:1.2}h2{margin:0 0 .75rem;font-size:1.15rem;line-height:1.3}h3{margin:1.25rem 0 .5rem;font-size:1rem}p{margin:0 0 .75rem}a{color:var(--accent);text-underline-offset:.15em}a:hover{color:var(--accent-strong)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}code{font-family:var(--mono);font-size:.9em}img{max-width:100%;height:auto}[hidden]{display:none!important}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.muted{color:var(--muted)}.fine{color:var(--muted);font-size:.875rem}.skip{z-index:100;border-radius:var(--radius-sm);background:var(--accent);color:var(--on-accent);padding:.5rem .9rem;font-weight:600;position:absolute;top:-4rem;left:.75rem}.skip:focus{top:.75rem}.site{z-index:10;background:var(--surface);border-bottom:1px solid var(--border);view-transition-name:site-header;position:sticky;top:0}.site-inner{max-width:var(--page);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem 1.5rem;margin:0 auto;padding:.6rem 1.25rem;display:flex}.brand{color:var(--text);align-items:center;gap:.55rem;font-weight:700;text-decoration:none;display:inline-flex}.brand:hover{color:var(--text)}.brand svg{width:1.6rem;height:1.6rem}.site nav{flex-wrap:wrap;gap:.25rem;display:flex}.site nav a{color:var(--text-2);border-radius:999px;padding:.4rem .75rem;font-weight:550;text-decoration:none}.site nav a:hover{background:var(--surface-2);color:var(--text)}.site nav a[aria-current=page]{background:var(--accent-soft);color:var(--accent-strong)}main{max-width:var(--page);margin:0 auto;padding:1.75rem 1.25rem 4rem}main:focus{outline:none}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);margin-block:1rem;padding:1.25rem}.card>:last-child{margin-bottom:0}.card-head{flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:.25rem 1rem;margin-bottom:.75rem;display:flex}.card-head h2{margin:0}.card.start{border:2px solid var(--accent)}.card.danger-zone{border-color:var(--danger);box-shadow:none;margin-top:2.5rem}.columns{grid-template-columns:repeat(auto-fit,minmax(min(20rem,100%),1fr));gap:1rem;margin-block:1rem;display:grid}.columns>.card{margin-block:0}button,.button{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);min-height:2.5rem;color:var(--text);font:inherit;cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:.5rem 1rem;font-weight:550;line-height:1.2;text-decoration:none;display:inline-flex}button:hover,.button:hover{background:var(--surface-2);color:var(--text)}button:focus-visible,.button:focus-visible{box-shadow:var(--focus-ring);outline:none}.primary,.primary:hover{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.primary:hover{border-color:var(--accent-strong);background:var(--accent-strong)}.danger-button,.danger-button:hover{border-color:var(--danger);background:var(--danger);color:var(--on-danger)}.quiet{color:var(--accent);background:0 0;border-color:#0000}.quiet:hover{background:var(--accent-soft);color:var(--accent-strong)}.small{min-height:2rem;padding:.3rem .75rem;font-size:.875rem}.actions{flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:.75rem;display:flex}form{margin:0}label{font-weight:550}.field{gap:.35rem;margin:0 0 1rem;display:grid}.spaced-label{margin:1.25rem 0 .35rem;font-weight:550}.link-text{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font:.9rem/1.4 var(--mono);overflow-wrap:anywhere;margin:0;padding:.5rem .75rem}.hint{color:var(--muted);font-size:.875rem;font-weight:400}input:not([type]),input[type=text],input[type=url],input[type=file],textarea{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);width:100%;min-height:2.5rem;color:var(--text);font:inherit;padding:.5rem .75rem}input:focus-visible,textarea:focus-visible{border-color:var(--accent);box-shadow:var(--focus-ring);outline:none}input[type=file]{padding:.35rem}input[type=file]::file-selector-button{border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);font:inherit;cursor:pointer;border-radius:6px;margin-right:.75rem;padding:.35rem .8rem;font-weight:550}textarea{font:.85rem/1.4 var(--mono)}input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--accent);margin:0}.inline-field{flex-wrap:wrap;gap:.5rem;display:flex}.inline-field>input{flex:12rem;width:auto}.confirm{align-items:center;gap:.6rem;margin-bottom:.75rem;font-weight:500;display:flex}.notice{border:1px solid var(--accent);border-radius:var(--radius-sm);background:var(--accent-soft);border-left-width:4px;margin-block:0 1rem;padding:.75rem 1rem}.notice.success{border-color:var(--success);background:var(--success-soft)}.notice.error{border-color:var(--danger);background:var(--danger-soft)}.notice>:last-child{margin-bottom:0}.notice .actions{margin-top:.5rem}.rows{margin:0;padding:0;list-style:none}.rows>li{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:.25rem .75rem;padding:.6rem 0;display:flex}.rows>li:first-child{border-top:0}.rows .grow{flex:1;min-width:0}.avatar{border:2px solid var(--edge);background:var(--fill);width:2.1rem;height:2.1rem;color:var(--text);border-radius:50%;flex:none;place-items:center;font-size:.85rem;font-weight:700;display:inline-grid}.empty{border:1px dashed var(--border-strong);border-radius:var(--radius-sm);color:var(--muted);text-align:center;padding:1rem}.empty>:last-child{margin-bottom:0}.code{font:650 1.7rem/1.2 var(--mono);letter-spacing:.18em}.copy-field{flex-wrap:wrap;gap:.5rem;display:flex}.copy-field>input{width:auto;font-family:var(--mono);flex:14rem;font-size:.9rem}.qr{border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:.6rem;line-height:0;display:inline-block}.qr svg{width:11rem;height:11rem}.qr-figure{text-align:center;margin:0}.qr-figure figcaption{max-width:12.5rem;margin-inline:auto}.share-grid{grid-template-columns:1fr auto;align-items:start;gap:1rem 1.5rem;display:grid}@media (width<=34rem){.share-grid{grid-template-columns:1fr}}details>summary{color:var(--accent);cursor:pointer;font-weight:550}details[open]>summary{margin-bottom:.75rem}.pill{background:var(--accent-soft);color:var(--accent-strong);letter-spacing:0;vertical-align:middle;border-radius:999px;padding:.15rem .6rem;font-size:.8rem;font-weight:650;display:inline-block}.status{background:var(--surface-2);color:var(--text-2);white-space:nowrap;border-radius:999px;padding:.1rem .55rem;font-size:.78rem;font-weight:650;display:inline-block}.status.in-class{background:var(--danger-soft);color:var(--danger)}.status.free{background:var(--success-soft);color:var(--success)}.checklist{gap:.6rem;margin:.75rem 0 0;padding:0;list-style:none;display:grid}.checklist li{align-items:flex-start;gap:.6rem;display:flex}.check{border:2px solid var(--border-strong);border-radius:50%;flex:none;place-items:center;width:1.4rem;height:1.4rem;margin-top:.05rem;font-size:.8rem;font-weight:800;display:inline-grid}.checklist li.done .check{border-color:var(--success);background:var(--success);color:var(--surface)}.checklist li.done .step{color:var(--muted);text-decoration:line-through}.progress{background:var(--surface-2);border-radius:999px;height:.4rem;overflow:hidden}.progress>span{background:var(--success);height:100%;display:block}.hero{padding-block:1rem .5rem}.lead{max-width:38rem;color:var(--text-2);font-size:1.15rem}.steps{counter-reset:step;grid-template-columns:repeat(auto-fit,minmax(min(15rem,100%),1fr));gap:1rem;margin:1rem 0;padding:0;list-style:none;display:grid}.steps li{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);counter-increment:step;padding:1rem 1rem 1rem 3.4rem;position:relative}.steps li:before{content:counter(step);background:var(--accent);width:1.7rem;height:1.7rem;color:var(--on-accent);border-radius:50%;place-items:center;font-size:.9rem;font-weight:700;display:grid;position:absolute;top:1rem;left:1rem}figure{margin:1.5rem 0 0}figure img{border:1px solid var(--border);border-radius:var(--radius);width:100%}figcaption{color:var(--muted);margin-top:.4rem;font-size:.875rem}.prose img{border:1px solid var(--border);border-radius:var(--radius)}.days{grid-template-columns:3rem 1fr;gap:.25rem 1rem;margin:0;display:grid}.days dt{color:var(--muted);padding-top:.55rem;font-weight:650}.days dd{margin:0}.days .rows>li{flex-wrap:wrap;align-items:baseline;gap:.15rem .75rem}.when{font-variant-numeric:tabular-nums;flex:none;min-width:7.2rem}.when.dated{min-width:12.75rem}.room{color:var(--muted)}.page-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;margin-bottom:1rem;display:flex}.page-head h1{margin:0}.segmented{border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:var(--surface);display:inline-flex;overflow:hidden}.segmented a{border-left:1px solid var(--border);color:var(--text-2);padding:.45rem .85rem;font-weight:550;text-decoration:none}.segmented a:first-child{border-left:0}.segmented a:hover{background:var(--surface-2);color:var(--text)}.people{flex-wrap:wrap;align-items:center;gap:.5rem .75rem;display:flex}.people fieldset{border:0;flex-wrap:wrap;align-items:center;gap:.5rem;margin:0;padding:0;display:flex}.people legend{float:left;color:var(--muted);margin-right:.25rem;font-size:.875rem;font-weight:650}.chip{border:1.5px solid var(--border-strong);background:var(--surface);color:var(--muted);cursor:pointer;user-select:none;border-radius:999px;align-items:center;gap:.45rem;padding:.3rem .8rem .3rem .5rem;font-weight:550;display:inline-flex;position:relative}.chip input{opacity:0;cursor:pointer;width:100%;height:100%;position:absolute;inset:0}.chip .dot{border:2px solid var(--edge);border-radius:50%;width:.9rem;height:.9rem}.chip-name{text-overflow:ellipsis;white-space:nowrap;max-width:11rem;overflow:hidden}.chip:has(input:checked){border-color:var(--edge);background:var(--fill);color:var(--text)}.chip:has(input:checked) .dot{background:var(--edge)}.chip:has(input:focus-visible){box-shadow:var(--focus-ring)}.legend{color:var(--muted);flex-wrap:wrap;gap:.35rem 1.25rem;margin:.75rem 0 0;padding:0;font-size:.85rem;list-style:none;display:flex}.legend li{align-items:center;gap:.4rem;display:inline-flex}.swatch{border-radius:3px;width:1.4rem;height:.9rem;display:inline-block}.swatch.shared{background:var(--surface-2);outline:2px dashed var(--border-strong);outline-offset:-2px}.swatch.free-mark{border:1px solid var(--grid-line);background:repeating-linear-gradient(135deg, var(--free-a) 0 4px, var(--free-b) 4px 8px)}.swatch.now-mark{background:var(--now);border-radius:0;height:2px}.now-list>li{align-items:flex-start}.now-list .detail{color:var(--text-2);display:block}.now-quiet{color:var(--text-2);margin:.6rem 0 0}.now-list+.now-quiet{border-top:1px solid var(--border);padding-top:.6rem}.week-card{padding:1rem 1rem .5rem}.week-scroll{position:relative;overflow-x:auto}.week{--hour:3.2rem;grid-template-columns:3.2rem repeat(5,minmax(7rem,1fr));min-width:40rem;padding-bottom:.75rem;display:grid}.hours{height:calc(var(--hours) * var(--hour));color:var(--muted);margin-top:2.2rem;font-size:.75rem;position:relative}.hours span{position:absolute;transform:translateY(-50%)}.day h3{text-align:center;height:2.2rem;margin:0;font-size:.95rem;line-height:2.2rem}.day h3 .date{color:var(--muted);font-weight:400}.day.today h3{color:var(--accent)}.day-body{height:calc(var(--hours) * var(--hour));border-left:1px solid var(--grid-line);background:repeating-linear-gradient(to bottom, var(--grid-line) 0, var(--grid-line) 1px, transparent 1px, transparent var(--hour));position:relative}.day.today .day-body{background-color:color-mix(in srgb, var(--accent-soft) 45%, transparent)}.blocks{margin:0;padding:0;list-style:none;position:absolute;inset:0}.free-band{background:repeating-linear-gradient(135deg, var(--free-a) 0 6px, var(--free-b) 6px 12px);position:absolute;left:0;right:0}.now{z-index:2;border-top:2px solid var(--now);position:absolute;left:-4px;right:0}.now:before{content:"";background:var(--now);border-radius:50%;width:8px;height:8px;position:absolute;top:-5px;left:0}.block{border-left:3px solid var(--edge);background:var(--fill);box-shadow:inset 0 0 0 1px var(--surface);border-radius:4px;padding:0;font-size:.72rem;line-height:1.25;position:absolute;overflow:hidden;container-type:inline-size}.block.shared{outline:2px dashed var(--edge);outline-offset:-2px}.block-button{width:100%;height:100%;min-height:0;color:var(--text);font:inherit;text-align:left;background:0 0;border:0;border-radius:0;padding:.15rem .25rem;display:block}.block-button:hover{background:color-mix(in srgb, var(--edge) 12%, transparent);color:var(--text)}.block-button:focus-visible{outline:3px solid var(--text);outline-offset:-3px;box-shadow:none}.block strong,.block .kind,.block .who{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.block .who{color:var(--text-2)}.who-short{display:none}@container (width<=5.5rem){.block .prefix{display:none}}@container (width<=3.5rem){.block .kind,.block .who-full{display:none}.block .who-short{display:inline}.block-button{padding-inline:.15rem}}.slot-details{border:1px solid var(--border);border-top:5px solid var(--edge);border-radius:var(--radius-sm);background:var(--surface);max-width:min(22rem,100vw - 2rem);box-shadow:var(--shadow-lg);color:var(--text);padding:.9rem 1rem;font-size:.95rem;line-height:1.4}.slot-details p{margin:0 0 .35rem}.slot-details .slot-who{font-weight:650}.slot-details::backdrop{background:#0003}@media (width>=40rem){@supports (position-area:bottom){.slot-details{position-area:bottom span-right;position-try-fallbacks:flip-block, flip-inline, flip-block flip-inline;margin:.35rem 0;inset:auto}.slot-details::backdrop{background:0 0}}}.free-list,.shared-list{margin:0;padding:0;list-style:none}.free-list li,.shared-list li{border-top:1px solid var(--border);padding:.45rem 0}.free-list li:first-child,.shared-list li:first-child{border-top:0}.free-list .day-name{min-width:2.6rem;display:inline-block}.time{background:var(--success-soft);color:var(--success);font-variant-numeric:tabular-nums;border-radius:999px;margin:.1rem .15rem .1rem 0;padding:.05rem .5rem;font-size:.875rem;font-weight:600;display:inline-block}.day-tabs{display:none}@media (width<=40rem){html{scroll-padding-top:1rem}.site{position:static}.site-inner{padding:.6rem 1rem}main{padding:1.25rem 1rem 3rem}.card{padding:1rem}.week-card{padding:.75rem .5rem .25rem}.people fieldset{min-inline-size:0;overscroll-behavior-x:contain;scrollbar-width:thin;flex-wrap:nowrap;max-width:100%;padding-bottom:.35rem;overflow-x:auto}.people legend{float:none;flex:none}.chip{flex:none}.day-tabs{justify-content:space-between;margin-block:0 .5rem;display:flex}.day-tabs a{color:var(--text-2);border-radius:999px;padding:.3rem .65rem;font-weight:550;text-decoration:none}.day-tabs a[aria-current]{background:var(--accent-soft);color:var(--accent-strong)}.week-scroll{scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scroll-padding-left:2.6rem}.week{grid-template-columns:2.6rem repeat(5,calc(100% - 2.6rem));min-width:0}.day{scroll-snap-align:start}.hours{z-index:3;background:var(--surface);position:sticky;left:0}}@view-transition{navigation:auto}@media (prefers-reduced-motion:reduce){@view-transition{navigation:none}}
