.publish-group+.publish-group{margin-top:14px}.publish-group-title{color:var(--ink);margin-bottom:8px;font-size:15px;font-weight:600}.publish-item{border:1px solid var(--border);border-radius:var(--r);background:var(--surface-elev);padding:8px 10px}.publish-item+.publish-item{margin-top:6px}.publish-item.skipped{opacity:.6}.publish-item-head{flex-wrap:wrap;align-items:center;gap:2px 8px;font-size:15px;display:flex}.publish-item-head>b{overflow-wrap:anywhere;min-width:0}.publish-item-when{color:var(--ink-mid);font-size:14px}.publish-item-head>button{margin-left:auto}.publish-why{color:var(--amber-text);margin-top:4px;font-size:14px}.publish-why.blocked{color:var(--coral-text)}.publish-diff{flex-direction:column;gap:4px;margin-top:6px;font-size:14px;display:flex}.publish-diff label{flex-wrap:wrap;align-items:baseline;gap:6px;display:flex}.publish-from{color:var(--ink-mid);text-decoration:line-through}.publish-kept{color:var(--ink-mid);font-style:italic}.publish-source{background:var(--slate-bg);color:var(--slate-text);border-radius:999px;padding:0 6px;font-size:13px}.publish-result{margin:0;padding-left:18px}.publish-headline{margin:0 0 10px;font-weight:500}.publish-result li+li{margin-top:2px}.offering-status{flex-direction:column;align-items:flex-start;gap:2px;display:flex}.status-pill{white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:13px;font-weight:500}.status-published{background:var(--green-bg);color:var(--green-text)}.status-changed{background:var(--blue-bg);color:var(--blue-text)}.status-ready{background:var(--teal-bg);color:var(--teal-text)}.status-warn{background:var(--amber-bg);color:var(--amber-text)}.status-blocked{background:var(--coral-bg);color:var(--coral-text)}.status-past{background:var(--slate-bg);color:var(--slate-text)}.status-why{color:var(--ink-mid);margin:2px 0 0;padding:0;font-size:14px;line-height:1.4;list-style:none}.schedule-note{color:var(--ink);background:var(--surface-2);border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:4px;margin:0 0 12px;padding:8px 14px;font-size:15px;display:flex}.schedule-note .linklike{font-weight:500}.add-offering-body{flex-direction:column;gap:10px;display:flex}.add-offering-body .panel-search{width:100%;min-width:0}.add-offering-list{max-height:50vh;margin:0;padding:0;list-style:none;overflow-y:auto}.add-offering-item{appearance:none;width:100%;min-height:40px;font:inherit;text-align:left;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:8px 10px;font-size:15px;display:block}.add-offering-item:hover,.add-offering-item:focus-visible{background:var(--surface-2)}@media (max-width:760px){.add-offering-item{min-height:var(--touch)}.publish-diff label{min-height:var(--touch);align-items:center}.publish-item{padding:10px 12px}}.publish-season{color:var(--ink-mid);align-items:center;gap:8px;margin-bottom:12px;font-size:14px;display:flex}.publish-season select{font:inherit;border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface-elev);color:var(--ink);padding:6px 10px;font-size:15px}.publish-note{color:var(--ink-mid);margin:14px 0 0;font-size:14px}.publish-result li{font-size:14px}
.seasons-tbl .season-row-now td{background:var(--green-bg)}.season-spill{color:var(--ink-mid)}.season-hidden-note,.season-hint,.season-footnote{color:var(--ink-mid);font-size:14px}.season-footnote{margin:6px 0 0}.season-status{background:var(--surface-2);color:var(--ink-mid);border-radius:10px;padding:2px 8px;font-size:13px;display:inline-block}.season-status-now{background:var(--green-bg);color:var(--green-text)}.season-adjust{background:var(--surface-2);border-radius:var(--r);padding:12px}.season-adjust-row{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:10px;display:flex}.season-months{grid-template-columns:repeat(auto-fill,minmax(min(200px,100%),1fr));gap:8px;display:grid}.season-month{border:1px solid var(--border);border-radius:var(--r);background:var(--surface-elev);width:100%;color:var(--ink);font:inherit;text-align:left;cursor:pointer;flex-direction:column;align-items:flex-start;gap:2px;padding:6px 10px;display:flex}.season-month small{color:var(--ink-mid);font-size:13px}.season-month.is-spill{border-style:dashed}.season-month.is-hidden{opacity:.6;background:0 0}.season-warn{color:var(--coral-text);margin-top:4px;font-size:14px}@media (max-width:760px){.seasons-tbl,.seasons-tbl tbody,.seasons-tbl td{display:block}.seasons-tbl thead{display:none}.seasons-tbl tr{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:4px 10px;padding:12px 14px;display:flex}.seasons-tbl .season-row-now{background:var(--green-bg)}.seasons-tbl td{border:0;padding:0;background:0 0!important}.seasons-tbl td.season-name{order:-3;font-size:17px}.seasons-tbl td.season-status-cell{flex:1;order:-2}.seasons-tbl td.tbl-actions{box-shadow:none;order:-1;position:static}.seasons-tbl td[data-label]{flex-basis:100%;font-size:15px}.seasons-tbl td[data-label]:before{content:attr(data-label) ": ";color:var(--ink-mid);font-weight:500}.seasons-tbl .season-adjust-tr td{flex-basis:100%}}
.modal-export{max-width:640px}.export-format-seg{background:var(--surface-3);border-radius:11px;grid-template-columns:1fr 1fr;gap:2px;padding:3px;display:grid}.export-format-opt{min-height:40px;color:var(--ink-mid);cursor:pointer;text-align:center;border-radius:9px;justify-content:center;align-items:center;padding:4px 8px;font-size:14px;display:flex;position:relative}.export-format-opt input{opacity:0;cursor:pointer;margin:0;position:absolute;inset:0}.export-format-opt:hover{color:var(--ink)}.export-format-opt input:focus-visible+span{outline:3px solid var(--focus);outline-offset:0}.export-format-opt:has(input:checked){background:var(--surface-elev);color:var(--ink);box-shadow:0 0 0 1px var(--border-strong), 0 1px 2px #00000024;font-weight:600}.export-type-rows{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-elev);flex-direction:column;display:flex;overflow:hidden}.export-type-row-group+.export-type-row-group{border-top:1px solid var(--border)}.export-type-row{cursor:pointer;align-items:center;gap:10px;padding:8px 10px;display:flex}.export-type-rows .export-type-row,.export-type-row-group .export-checkbox-row,.export-ics-options .export-checkbox-row{margin-bottom:0}.export-type-row input{flex:none}.export-type-row-checked{background:var(--surface-2)}.export-type-row-text{flex-direction:column;min-width:0;display:flex}.export-type-row-name{color:var(--ink);font-size:14px;font-weight:500}.export-type-row-desc{color:var(--ink-mid);font-size:12px;line-height:1.3}.export-inline-row{background:var(--surface-2);padding:6px 10px 10px 34px}.export-checkbox-row{cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.export-checkbox-row input{flex:none}.export-month-chips{flex-wrap:wrap;gap:6px;display:flex}.export-month-chip{appearance:none;font:inherit;border:1px solid var(--border-strong);background:var(--surface-elev);min-height:32px;color:var(--ink);cursor:pointer;border-radius:999px;padding:4px 12px;font-size:13px}.export-month-chip:hover{background:var(--surface-2)}.export-month-chip[aria-pressed=true]{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}.export-month-chip-all{font-weight:600}.export-ics-options{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-elev);flex-direction:column;gap:10px;padding:10px 12px;display:flex}@media (max-width:760px){.export-type-row{padding:10px}.export-type-row-name{font-size:15px}.export-month-chip{min-height:var(--touch);font-size:14px}.export-format-opt{min-height:var(--touch)}}
.ov-header{margin-bottom:20px}.ov-header .page-title{margin:0}.ov-subtitle{color:var(--ink-mid);margin:4px 0 0;font-size:16px}.ov-muted{color:var(--ink-mid)}.ov-flag{color:var(--coral-text);background:var(--coral-bg);border:1px solid var(--coral-border);border-radius:var(--r-sm);white-space:nowrap;align-self:flex-start;padding:1px 8px;font-size:13px;font-weight:600}.ov-link{color:var(--link);text-underline-offset:2px;white-space:nowrap;font-size:15px;text-decoration:underline}.ov-link:hover{text-decoration-thickness:2px}.ov-tiles{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;display:grid}.ov-tile{appearance:none;background:var(--surface-elev);border:2px solid var(--border);min-width:0;color:var(--ink);font:inherit;text-align:left;cursor:pointer;border-radius:14px;flex-direction:column;gap:4px;padding:16px 18px;display:flex}.ov-tile:hover{border-color:var(--ink-light)}.ov-tile[aria-pressed=true]{border-color:var(--ink);box-shadow:0 2px 0 var(--ink)}.ov-tile-count{align-items:baseline;gap:8px;display:flex}.ov-tile-num{font-family:var(--font-display);font-size:38px;line-height:1}.ov-tile-alert .ov-tile-num{color:var(--attention)}.ov-tile-clear .ov-tile-num{color:var(--success)}.ov-tile-unit{color:var(--ink-mid);font-size:14px}.ov-tile-label{font-size:16px;font-weight:600}.ov-tile-sub{color:var(--ink-mid);overflow-wrap:anywhere;font-size:14px}.ov-also{flex-wrap:wrap;gap:8px 20px;margin:12px 0 24px;padding:0;list-style:none;display:flex}.ov-also-link{min-height:32px;color:var(--ink-mid);text-underline-offset:2px;align-items:center;gap:8px;font-size:15px;text-decoration:underline;display:inline-flex}.ov-also-alert{color:var(--ink)}.ov-also-dot{background:var(--attention);border-radius:50%;width:8px;height:8px}.ov-layout{grid-template-columns:minmax(0,1fr) minmax(300px,400px);grid-template-areas:"focus recent""week week";align-items:start;gap:20px 24px;display:grid}.ov-focus{grid-area:focus}.ov-week{grid-area:week}.ov-changes{grid-area:recent}.ov-section{background:var(--surface-elev);border:1px solid var(--border);border-radius:14px;min-width:0;padding:18px 20px}.ov-section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px 12px;margin-bottom:12px;display:flex}.ov-section-title{color:var(--ink);margin:0;font-size:19px;font-weight:600}.ov-section-meta{color:var(--ink-mid);font-weight:400}.ov-empty{color:var(--ink-mid);margin:0;padding:8px 0;font-size:15px}.ov-swap-note{overflow-wrap:anywhere;font-style:italic}.ov-focus-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding-bottom:8px;font-size:15px;display:flex}.ov-list,.ov-agenda{margin:0;padding:0;list-style:none}.ov-fill-week+.ov-fill-week{margin-top:16px}.ov-fill-week-label{font-family:var(--font-dm-sans), sans-serif;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-mid);margin:8px 0 4px;font-size:12px;font-weight:500}.ov-row{border-top:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px 16px;padding:14px 0;font-size:15px;display:flex}.ov-fill-darkroom{box-shadow:inset 3px 0 0 var(--orange-border);padding-left:12px}.ov-fill-digital-lab{box-shadow:inset 3px 0 0 var(--teal-border);padding-left:12px}.ov-row-main{flex-direction:column;gap:3px;min-width:0;display:flex}.ov-row-title{color:var(--ink);font-size:16px;font-weight:600}.ov-row-meta{color:var(--ink-mid);font-size:15px}.ov-row-why{color:var(--ink);flex-wrap:wrap;align-items:center;gap:8px;margin-top:3px;font-size:15px;display:flex}.ov-suggest{font-family:var(--font-dm-sans), sans-serif;letter-spacing:.06em;text-transform:uppercase;color:var(--green-text);background:var(--green-bg);border-radius:4px;padding:2px 6px;font-size:12px}.ov-row-action{flex-shrink:0;text-decoration:none}.ov-row-button{appearance:none;width:100%;font:inherit;text-align:left;color:inherit;cursor:pointer;background:0 0;border:0;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 16px;padding:0;display:flex}.ov-row-button:hover .ov-row-title{text-decoration:underline}.ov-change{align-items:flex-start;padding:12px 0}.ov-change-when{color:var(--ink-mid);white-space:nowrap;flex-shrink:0;font-size:14px}.ov-change-summary{color:var(--ink);overflow-wrap:anywhere}.ov-week-nav{gap:6px;display:flex}.ov-week-nav .btn{min-width:40px}.ov-week .day-strip{margin-bottom:16px}.ov-more-link{margin-top:10px;display:inline-block}.ov-cols{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin:0;padding:0;list-style:none;display:grid}.ov-col{background:var(--surface);border:1px solid var(--border);border-radius:10px;flex-direction:column;gap:6px;min-width:0;padding:8px;display:flex}.ov-col.is-today{border:2px solid var(--ink);padding:7px}.ov-col.is-past{color:var(--ink-mid)}.ov-col-head{align-items:baseline;gap:6px;margin:0;font-size:14px;font-weight:500;display:flex}.ov-col-dow{color:var(--ink-mid)}.ov-col-num{font-size:18px;font-weight:600}.ov-col-attn{text-align:center;min-width:20px;color:var(--amber-text);background:var(--open-bg);border:1px dashed var(--attention);border-radius:10px;margin-left:auto;padding:0 6px;font-size:13px;font-weight:600}.ov-col-tech{color:var(--ink);background:var(--surface-2);border-radius:6px;flex-direction:column;gap:2px;padding:4px 6px;font-size:13px;text-decoration:none;display:flex}.ov-col-tech:hover{text-decoration:underline}.ov-col-techline.is-open{color:var(--amber-text);font-weight:600}.ov-col-items{flex-direction:column;gap:6px;margin:0;padding:0;list-style:none;display:flex}.ov-col-item{flex-direction:column;min-width:0;font-size:13px;line-height:1.3;display:flex}.ov-col-time{font-family:var(--font-dm-mono), monospace;color:var(--ink-mid);font-size:12px}.ov-col-name{overflow-wrap:anywhere;font-weight:600}.ov-col-meta{color:var(--ink-mid);overflow-wrap:anywhere}.ov-col-flag{color:var(--coral-text);background:var(--coral-bg);border-radius:6px;align-self:flex-start;margin-top:2px;padding:0 6px;font-size:12px;font-weight:600}.ov-col-notice{overflow-wrap:anywhere}.ov-col-item.is-closed .ov-col-notice{color:var(--conflict-text)}.ov-col-item.is-out .ov-col-notice{color:var(--out-text)}.ov-col-item.is-exhibition .ov-col-notice{color:var(--exhibition-text)}.ov-col-empty{color:var(--ink-mid);margin:0;font-size:13px}.ov-agenda-title{margin:0 0 4px;font-size:16px;font-weight:600}.ov-agenda-item{border-top:1px solid var(--border);gap:14px;padding:12px 0;display:flex}.ov-agenda-past .ov-agenda-item{color:var(--ink-mid)}.ov-agenda-time{font-family:var(--font-dm-mono), monospace;color:var(--ink-mid);flex:0 0 88px;padding-top:2px;font-size:13px}.ov-agenda-main{flex-direction:column;align-items:flex-start;gap:3px;min-width:0;display:flex}.ov-agenda-line{flex-wrap:wrap;align-items:center;gap:4px 8px;display:flex}.ov-agenda-name{color:var(--ink);overflow-wrap:anywhere;font-size:16px;font-weight:600}.ov-agenda-link{color:var(--ink);text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);text-underline-offset:3px}.ov-agenda-link:hover{text-decoration-color:currentColor}.ov-agenda-meta{color:var(--ink-mid);overflow-wrap:anywhere;font-size:14px}.ov-agenda-closed .ov-agenda-name{color:var(--conflict-text)}.ov-agenda-out .ov-agenda-name{color:var(--out-text);font-weight:500}.ov-agenda-exhibition .ov-agenda-name{color:var(--exhibition-text);font-weight:500}.ov-roomtag{background:var(--surface-2);color:var(--ink-mid);white-space:nowrap;border-radius:6px;padding:2px 8px;font-size:13px;font-weight:500}.ov-open-chip{color:var(--amber-text);background:var(--open-bg);border:1px dashed var(--attention);border-radius:10px;padding:1px 8px;font-size:13px;font-weight:600}@media (max-width:1100px){.ov-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}.ov-layout{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-template-areas:"focus""week""recent"}}@media (max-width:760px){.ov-tiles{gap:10px}.ov-tile{min-height:104px;padding:14px}.ov-tile-num{font-size:32px}.ov-tile-sub{display:none}.ov-also-link{min-height:var(--touch)}.ov-section{padding:16px}.ov-agenda-time{flex-basis:64px;font-size:12px}.ov-row{flex-wrap:wrap}.ov-row-action{justify-content:center;width:100%}}
.presence-chip{font-family:var(--font-dm-sans), sans-serif;color:var(--green-text);background:var(--green-bg);border:1px solid var(--green-border);border-radius:var(--r-sm);cursor:help;white-space:nowrap;align-items:center;gap:6px;padding:4px 8px;font-size:12px;display:inline-flex}.presence-dot{background:var(--presence-dot-ok);width:7px;height:7px;box-shadow:0 0 0 3px var(--presence-pulse-ok);border-radius:50%;animation:1.8s ease-in-out infinite presence-pulse}@keyframes presence-pulse{0%,to{box-shadow:0 0 0 3px var(--presence-pulse-ok)}50%{box-shadow:0 0 0 6px var(--presence-pulse-ok-fade)}}.presence-chip-editing{background:var(--amber-bg);border-color:var(--amber-border);color:var(--amber-text)}.presence-chip-editing .presence-dot{background:var(--presence-dot-edit);box-shadow:0 0 0 3px var(--presence-pulse-edit);animation-name:presence-pulse-edit}@keyframes presence-pulse-edit{0%,to{box-shadow:0 0 0 3px var(--presence-pulse-edit)}50%{box-shadow:0 0 0 6px var(--presence-pulse-edit-fade)}}.presence-editing-count{font-weight:500}@media (max-width:760px){.app-header .presence-chip{display:none}}
.app-header{flex-wrap:nowrap;align-items:center}.header-brand{min-width:0}.brand .brand-full{font-weight:400}.brand .brand-short{font-weight:600;display:none}.header-actions{justify-content:flex-end;align-items:center;gap:8px;min-width:0;display:flex;position:relative}.header-actions>*{flex-shrink:0}.header-actions>.season-control{flex-shrink:1}.header-export svg{flex-shrink:0;width:16px;height:16px}.season-control{align-items:center;gap:4px;min-width:0;display:flex}.season-pill{min-width:0;height:32px;font-family:var(--font-dm-sans), sans-serif;color:var(--ink);background:var(--surface-elev);border:1px solid var(--border-strong);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:0 12px;font-size:14px;font-weight:500;line-height:1;display:inline-flex;position:relative}.season-pill-picker{cursor:pointer}.season-pill-picker:hover{background:var(--surface-2)}.season-pill-picker:has(.season-pill-select:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.season-pill-name{text-overflow:ellipsis;min-width:0;overflow:hidden}.season-pill-marker{color:var(--ink-mid);font-size:13px;font-weight:400}.season-pill-dot{border:1.5px solid var(--ink-light);border-radius:50%;flex-shrink:0;width:7px;height:7px}.season-pill-dot[data-status=now]{background:var(--green-text);border-color:var(--green-text)}.season-pill-dot[data-status=upcoming]{border-color:var(--accent)}.season-pill-chevron{width:12px;height:12px;color:var(--ink-mid);flex-shrink:0}.season-pill-select{opacity:0;cursor:pointer;appearance:none;border:0;width:100%;height:100%;font-size:16px;position:absolute;inset:0}.season-browse-hint{color:var(--ink-mid);white-space:nowrap;font-size:13px}.account-btn{height:36px;font-family:var(--font-dm-sans), sans-serif;color:var(--ink);background:var(--surface-elev);border:1px solid var(--border-strong);cursor:pointer;white-space:nowrap;border-radius:999px;align-items:center;gap:8px;padding:0 12px 0 3px;font-size:14px;font-weight:500;display:inline-flex}.account-btn:hover{background:var(--surface-2)}.account-avatar{letter-spacing:.02em;width:28px;height:28px;color:var(--green-text);background:var(--green-bg);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:12px;font-weight:600;display:inline-flex}.account-name{text-overflow:ellipsis;max-width:180px;overflow:hidden}.row-menu.account-menu{min-width:200px}.account-menu a{color:var(--ink);border-radius:4px;padding:7px 10px;font-size:14px;text-decoration:none;display:block}.account-menu a:hover,.account-menu a:focus-visible{background:var(--surface-2)}.account-menu a:focus-visible{outline-offset:-2px}@media (max-width:760px){.app-header{gap:8px}.brand-full span{display:block}.header-actions{gap:6px}.season-pill{height:var(--touch);padding:0 12px;font-size:15px}.season-browse-hint,.season-back-label,.header-export-label,.account-name,.presence-text{display:none}.season-back{min-width:var(--touch);justify-content:center}.header-export{width:var(--touch);justify-content:center;padding:0}.header-export svg{width:20px;height:20px}.account-btn{width:var(--touch);height:var(--touch);justify-content:center;padding:0}.account-avatar{width:32px;height:32px;font-size:13px}.account-menu a,.account-menu button{min-height:var(--touch);align-items:center;display:flex}}@media (max-width:480px){.brand .brand-full{display:none}.brand .brand-short{display:inline}.app-header .save-dot{margin:-3px 0 0;position:absolute;top:50%;left:-6px}.header-actions{gap:4px}.season-back{display:none}.season-pill-marker{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}
.login-page{background:var(--surface);flex-direction:column;justify-content:center;align-items:center;min-height:100dvh;padding:96px 16px 48px;display:flex;position:relative}.login-brand{top:max(28px, env(safe-area-inset-top));left:max(32px, env(safe-area-inset-left));align-items:center;gap:12px;display:flex;position:absolute}.login-brand-mark{background:var(--ink);width:40px;height:40px;color:var(--ink-inverse);font-family:var(--font-display);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;font-size:19px;font-weight:600;display:inline-flex}.login-brand-text{flex-direction:column;display:flex}.login-brand-name{font-family:var(--font-display);font-size:19px;font-weight:600;line-height:1.15}.login-brand-org{color:var(--ink-mid);font-size:14px}.login-theme-corner{top:max(28px, env(safe-area-inset-top));right:max(24px, env(safe-area-inset-right));z-index:10;position:absolute}.login-card{background:var(--surface-elev);border:1px solid var(--border);border-radius:20px;width:100%;max-width:440px;padding:36px 36px 32px;box-shadow:0 16px 48px #1b1a1714}.login-heading{flex-direction:column;gap:6px;display:flex}.login-heading h1{font-family:var(--font-display);font-size:32px;font-weight:400;line-height:1.15}.login-heading p{color:var(--ink-mid);font-size:16px}.login-card>.login-heading{margin-bottom:20px}.login-form{flex-direction:column;gap:18px;display:flex}.login-form .login-heading{margin-bottom:4px}.login-field{flex-direction:column;gap:8px;display:flex}.login-field label{font-size:15px;font-weight:600}.login-field input,.login-password{height:48px;font-size:16px;font-family:var(--font-dm-sans), sans-serif;border:1px solid var(--border-strong);background:var(--surface-elev);color:var(--ink);border-radius:10px}.login-field>input{padding:0 14px}.login-field>input:focus{border-color:var(--focus)}.login-password{align-items:center;padding-left:14px;display:flex}.login-password:focus-within{border-color:var(--focus)}.login-password input{outline-offset:6px;background:0 0;border:0;flex:1;min-width:0;height:100%;padding:0}.login-reveal{appearance:none;min-width:64px;height:46px;color:var(--link);font:inherit;cursor:pointer;background:0 0;border:0;border-radius:9px;flex-shrink:0;font-size:15px;font-weight:500}.login-reveal:hover{background:var(--surface-2)}.login-field-hint{color:var(--ink-mid);margin-top:-10px;font-size:14px}.login-submit{border-radius:12px;justify-content:center;height:52px;font-size:17px;font-weight:600}.login-form a.login-submit{align-items:center;text-decoration:none;display:flex}.login-error{background:var(--coral-bg);color:var(--coral-text);border:1px solid var(--coral-border);border-radius:10px;padding:12px 14px;font-size:15px}.login-hint{color:var(--ink-mid);font-size:15px}.login-form>.login-hint:last-child{text-align:center;font-size:14px}.login-link{appearance:none;min-height:var(--touch);font:inherit;color:var(--link);cursor:pointer;background:0 0;border:0;align-self:center;padding:8px 4px;font-size:15px;text-decoration:underline}@media (max-width:560px){.login-page{justify-content:flex-start;padding:88px 16px 32px}.login-brand{left:16px;top:max(20px, env(safe-area-inset-top))}.login-theme-corner{right:16px;top:max(20px, env(safe-area-inset-top))}.login-card{border-radius:16px;padding:24px 20px}.login-heading h1{font-size:28px}}
.rte{border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--surface-elev);flex-direction:column;display:flex}.rte-toolbar{border-bottom:1px solid var(--border);background:var(--surface);border-radius:var(--r-sm) var(--r-sm) 0 0;gap:4px;padding:4px;display:flex}.rte-btn{min-width:28px;height:24px;font-size:14px;font-family:var(--font-dm-sans), sans-serif;color:var(--ink-mid);border-radius:var(--r-sm);cursor:pointer;background:0 0;border:1px solid #0000;justify-content:center;align-items:center;padding:0 6px;display:inline-flex}.rte-btn:hover{background:var(--surface-elev);border-color:var(--border)}.rte-btn.is-active{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}.rte-content{min-height:96px;max-height:320px;font-size:14px;font-family:var(--font-dm-sans), sans-serif;color:var(--ink);outline:none;padding:8px;line-height:1.5;overflow-y:auto}.rte-content:focus{outline:none}.rte:focus-within{border-color:var(--ink)}.rte:has(.rte-content:focus-visible){outline:2px solid var(--focus);outline-offset:2px}.rte-content p{margin:0 0 .5em}.rte-content p:last-child{margin-bottom:0}.rte-content ul,.rte-content ol{margin:0 0 .5em;padding-left:1.25em}.rte-content a{color:var(--blue-text,#2563eb);text-decoration:underline}.rte-content p.is-editor-empty:first-child:before{content:attr(data-placeholder);color:var(--ink-mid);float:left;pointer-events:none;height:0}.reminder-tpl{flex-direction:column;gap:6px;display:flex}.reminder-tpl-inserts{flex-wrap:wrap;align-items:center;gap:4px;display:flex}.reminder-tpl-inserts-label{color:var(--ink-mid);font-size:12px;font-family:var(--font-dm-sans), sans-serif;margin-right:2px}.reminder-tpl-chip{font-size:12px;font-family:var(--font-dm-sans), sans-serif;background:var(--surface);border:1px solid var(--border-strong);color:var(--ink-mid);cursor:pointer;border-radius:999px;padding:2px 8px}.reminder-tpl-chip:hover{background:var(--ink);color:var(--ink-inverse);border-color:var(--ink)}.reminder-tpl-preview{border:1px dashed var(--border-strong);border-radius:var(--r-sm);background:var(--surface)}.reminder-tpl-preview>summary{cursor:pointer;color:var(--ink-mid);font-size:14px;font-family:var(--font-dm-sans), sans-serif;-webkit-user-select:none;user-select:none;padding:6px 10px}.reminder-tpl-preview>summary::marker{color:var(--ink-mid)}.reminder-tpl-preview-body{color:var(--ink);padding:0 10px 10px;font-size:14px;line-height:1.5}.reminder-tpl-preview-body p{margin:0 0 .5em}.reminder-tpl-preview-body p:last-child{margin-bottom:0}.reminder-tpl-preview-body ul,.reminder-tpl-preview-body ol{margin:0 0 .5em;padding-left:1.25em}.reminder-tpl-preview-body a{color:var(--blue-text,#2563eb);text-decoration:underline}
.room-color-swatch-btn{cursor:pointer;border-radius:4px;width:24px;height:24px;padding:0;position:relative}.room-color-swatch-default-dot{pointer-events:none;justify-content:center;align-items:center;font-size:14px;display:flex;position:absolute;inset:0}.tech-copy-conflict-banner{background:var(--amber-bg);border:1px solid var(--border-strong);border-radius:var(--r-sm);flex-wrap:wrap;align-items:center;gap:10px;margin-top:10px;padding:10px 12px;font-size:14px;display:flex}.session-toggle-btn{cursor:pointer;font-size:13px;font-family:var(--font-dm-mono), monospace;border-radius:12px;padding:3px 9px}.download-preview-textarea{width:100%;height:300px;font-family:var(--font-dm-mono), monospace;border:1px solid var(--border-strong);border-radius:var(--r-sm);color:var(--ink);background:var(--surface);padding:8px;font-size:13px}.schedule-layout{grid-template-columns:minmax(0,1fr);align-items:start;gap:20px;display:grid}.schedule-layout-picking{grid-template-columns:minmax(0,1fr) 360px}.teacher-cell{flex-direction:column;align-items:flex-start;gap:4px;display:inline-flex}.teacher-cell-line{flex-wrap:wrap;align-items:center;gap:4px 6px;display:inline-flex}.teacher-cell-btn{padding:2px 8px}.assign-state{white-space:nowrap;border-radius:999px;padding:2px 9px;font-size:14px;font-weight:500;display:inline-block}.assign-state-open{background:var(--amber-bg);color:var(--amber-text)}.assign-state-out{background:var(--coral-bg);color:var(--coral-text)}@media (max-width:760px){.teacher-cell-btn{min-height:var(--touch);padding:8px 14px}}.audit-filters{flex-wrap:wrap;align-items:flex-end;gap:12px;margin-bottom:20px;display:flex}.audit-filter{color:var(--ink-mid);flex-direction:column;gap:4px;font-size:14px;font-weight:500;display:flex}.audit-filter input,.audit-filter select{min-height:40px;font:inherit;color:var(--ink);background:var(--surface-elev);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:6px 10px;font-size:15px;font-weight:400}.audit-search{flex:260px;max-width:380px}.audit-refresh{min-height:40px}.audit-error{border-radius:var(--r-sm);border:1px solid var(--coral-border);background:var(--coral-bg);color:var(--coral-text);margin-bottom:16px;padding:12px 14px}.audit-empty{text-align:center;color:var(--ink-mid);padding:32px 0}.audit-day+.audit-day{margin-top:24px}.audit-day-title{font-family:var(--font-dm-sans), sans-serif;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-mid);margin-bottom:8px;font-size:13px;font-weight:500}.audit-list{background:var(--surface-elev);border:1px solid var(--border);border-radius:var(--r);list-style:none;overflow:hidden}.audit-row{grid-template-columns:76px minmax(0,1fr);gap:12px;padding:12px 16px;display:grid}.audit-row+.audit-row{border-top:1px solid var(--border)}.audit-time{font-family:var(--font-dm-mono), monospace;color:var(--ink-mid);white-space:nowrap;padding-top:2px;font-size:13px}.audit-summary{overflow-wrap:anywhere;font-size:15px;line-height:1.45}.audit-tags{flex-wrap:wrap;gap:6px;margin-top:4px;display:flex}.audit-area,.audit-action{font-family:var(--font-dm-sans), sans-serif;border:1px solid var(--border-strong);color:var(--ink-mid);border-radius:999px;padding:1px 8px;font-size:12px}.audit-action-insert{color:var(--green-text);background:var(--green-bg);border-color:var(--green-border)}.audit-action-delete{color:var(--coral-text);background:var(--coral-bg);border-color:var(--coral-border)}@media (max-width:760px){.audit-filter{flex:140px}.audit-search{flex-basis:100%;max-width:none}.audit-filter input,.audit-filter select,.audit-refresh{min-height:var(--touch);font-size:16px}.audit-row{grid-template-columns:1fr;gap:2px;padding:12px 14px}}.comms-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:8px;display:flex}.comms-header .page-lede{margin-bottom:0}.comms-section{margin-top:24px}.comms-section-head{flex-wrap:wrap;align-items:baseline;gap:4px 12px;margin-bottom:8px;display:flex}.comms-section-head h2{font-family:var(--font-display);font-size:22px;font-weight:400;line-height:1.2}.comms-count{font-family:var(--font-dm-sans), sans-serif;color:var(--attention);font-size:13px}.comms-empty{color:var(--ink-mid);background:var(--surface-elev);border:1px solid var(--border);border-radius:var(--r);padding:20px 16px}.comms-list{background:var(--surface-elev);border:1px solid var(--border);border-radius:var(--r);list-style:none;overflow:hidden}.comms-row{grid-template-columns:76px minmax(0,1fr) auto;align-items:center;gap:14px;padding:12px 12px 12px 16px;display:grid}.comms-row+.comms-row{border-top:1px solid var(--border)}.comms-row-staff{grid-template-columns:minmax(140px,220px) minmax(0,1fr);padding-right:16px}.comms-date{flex-direction:column;line-height:1.2;display:flex}.comms-dow{font-family:var(--font-dm-sans), sans-serif;text-transform:uppercase;letter-spacing:.06em;color:var(--ink-mid);font-size:12px}.comms-day{font-size:15px;font-weight:600}.comms-body{flex-direction:column;gap:2px;min-width:0;display:flex}.comms-title{font-size:15px;font-weight:600}.comms-note{color:var(--ink-mid);font-size:15px}.comms-copy{min-width:64px;color:var(--link);justify-content:center}@media (max-width:760px){.comms-row{grid-template-columns:56px minmax(0,1fr) auto;align-items:start;gap:10px;padding:12px 6px 12px 14px}.comms-row-staff{grid-template-columns:1fr;gap:2px}}.settings-layout{grid-template-columns:200px minmax(0,1fr);align-items:start;gap:32px;display:grid}.settings-nav{flex-direction:column;gap:2px;display:flex;position:sticky;top:16px}.settings-nav a{border-radius:var(--r-sm);color:var(--ink);padding:8px 12px;font-size:15px;text-decoration:none;display:block}.settings-nav a:hover{background:var(--surface-2)}@media (min-width:901px){.settings-nav a.settings-nav-page{border-top:1px solid var(--border);border-radius:0 0 var(--r-sm) var(--r-sm);margin-top:8px;padding-top:12px}}.settings-sections{flex-direction:column;gap:36px;min-width:0;display:flex}.settings-section{scroll-margin-top:16px}.settings-head{max-width:75ch;margin-bottom:12px}.settings-head h2{font-family:var(--font-display);margin-bottom:4px;font-size:24px;font-weight:400;line-height:1.2}.settings-head p{color:var(--ink-mid);font-size:15px}.settings-card{padding:18px}.settings-rooms,.settings-table{overflow-x:auto}.settings-section .banner-warn{margin-bottom:10px}.settings-narrow-field{max-width:200px}.settings-test-row{flex-wrap:wrap;align-items:center;gap:10px;margin-top:4px;display:flex}.settings-test-status{margin:0}.settings-test-status.is-error{color:var(--coral-text)}.settings-room-name{flex-direction:column;gap:2px;display:flex}.settings-room-name span{font-weight:600}.settings-room-name code{font-family:var(--font-dm-mono), monospace;color:var(--ink-mid);font-size:13px}.settings-room-input,.settings-activenet-input{width:100%;min-height:38px;font:inherit;color:var(--ink);background:var(--surface-elev);border:1px solid var(--border-strong);border-radius:var(--r-sm);padding:6px 10px;font-size:15px}.settings-activenet-input{font-family:var(--font-dm-mono), monospace;font-size:14px}.room-color-picker{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.room-color-custom{font-family:var(--font-dm-sans), sans-serif;color:var(--ink-mid);font-size:13px}@media (max-width:900px){.settings-layout{grid-template-columns:1fr;gap:16px}.settings-nav{scrollbar-width:none;flex-direction:row;gap:6px;margin:0 -14px;padding:0 14px 4px;position:static;overflow-x:auto}.settings-nav a{min-height:var(--touch);border:1px solid var(--border-strong);background:var(--surface-elev);white-space:nowrap;border-radius:999px;flex-shrink:0;align-items:center;padding:0 14px;display:inline-flex}}@media (max-width:760px){.settings-card{padding:14px}.settings-narrow-field{max-width:none}.settings-rooms-tbl,.settings-rooms-tbl tbody,.settings-rooms-tbl tr,.settings-rooms-tbl td{display:block}.settings-rooms-tbl thead{display:none}.settings-rooms-tbl tr{border-bottom:1px solid var(--border);padding:14px;position:relative}.settings-rooms-tbl tr:last-child{border-bottom:0}.settings-rooms-tbl td{border:0;padding:0}.settings-rooms-tbl td+td{margin-top:10px}.settings-rooms-tbl td.settings-room-name{flex-direction:row;align-items:baseline;gap:8px;padding-right:80px;font-size:17px;display:flex}.settings-rooms-tbl td[data-label]:before{content:attr(data-label);color:var(--ink-mid);margin-bottom:4px;font-size:14px;font-weight:500;display:block}.settings-rooms-tbl td.tbl-actions{box-shadow:none;background:0 0;margin:0;position:absolute;top:8px;right:8px}.settings-room-input,.settings-activenet-input{min-height:var(--touch);font-size:16px}.room-color-swatch-btn{width:36px;height:36px}}
.undo-toast{z-index:400;background:var(--ink);color:var(--ink-inverse);border-radius:var(--r);align-items:center;gap:10px;max-width:calc(100vw - 32px);padding:10px 14px;font-size:15px;animation:.18s toast-in;display:flex;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 6px 24px #00000047}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(12px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.undo-toast-message{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;overflow:hidden}.undo-toast-btn{background:var(--ink-inverse);color:var(--ink);border-color:var(--ink-inverse);flex-shrink:0;font-weight:500}.undo-toast-btn:hover{opacity:.88;background:var(--ink-inverse)}.undo-toast-close{color:var(--ink-inverse);opacity:.65;background:0 0;border-color:#0000;flex-shrink:0}.undo-toast-close:hover{opacity:1;color:var(--ink-inverse);background:#ffffff1f}[data-theme=dark] .undo-toast{background:var(--surface-elev);color:var(--ink);box-shadow:0 6px 24px #000000b3}[data-theme=dark] .undo-toast-btn{background:var(--surface-3);color:var(--ink);border-color:var(--border-strong)}[data-theme=dark] .undo-toast-close{color:var(--ink-mid)}[data-theme=dark] .undo-toast-close:hover{background:var(--surface-2);color:var(--ink)}@media (max-width:760px){.undo-toast{bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 12px);max-width:none;left:16px;right:16px;transform:none}@keyframes toast-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}}
@keyframes skeleton-shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skeleton-block{background:linear-gradient(90deg, var(--surface-3) 25%, var(--surface-2) 50%, var(--surface-3) 75%);border-radius:var(--r-sm);background-size:800px 100%;animation:1.4s ease-in-out infinite skeleton-shimmer}.season-badge-skeleton{width:120px;height:32px;display:inline-block}.app-skeleton{flex-direction:column;gap:12px;padding:24px 0;display:flex}.app-skeleton-row{border-radius:var(--r);height:36px}.app-skeleton-row:first-child{width:60%}.app-skeleton-row:nth-child(2){width:85%}.app-skeleton-row:nth-child(3){width:72%}.app-skeleton-row:nth-child(4){width:50%}.app-skeleton-row:nth-child(5){width:78%}

