.app{max-width:1440px;margin:0 auto;padding:28px 28px 72px}.topbar{display:flex;justify-content:space-between;gap:24px;align-items:flex-end}.eyebrow{margin:0 0 4px;text-transform:uppercase;letter-spacing:.14em;font-size:11px;font-weight:600;color:var(--accent)}.topbar h1{margin:0;font-size:42px}.topbar-actions,.control-row,.building-row,.instructor-head,.section-meta{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.file-button,.ghost,.primary,.chip,.tiny{border:1px solid var(--rule);background:var(--paper-2);color:var(--ink);border-radius:999px;padding:8px 14px}.file-button{position:relative;overflow:hidden;font-weight:600}.file-button input{position:absolute;inset:0;opacity:0;cursor:pointer}.primary{background:var(--accent);border-color:var(--accent);color:#fff}.ghost:hover,.chip:hover,.file-button:hover{border-color:var(--accent)}.source-line{color:var(--ink-soft);margin:10px 0 24px}.layout{display:grid;grid-template-columns:280px minmax(0,1fr);gap:24px;align-items:start}.panel,.week-board,.section-card,.drawer{background:var(--paper-2);border:1px solid var(--rule);border-radius:18px;box-shadow:var(--shadow)}.panel{padding:18px;position:sticky;top:16px;max-height:calc(100vh - 32px);overflow:auto}.panel h2,.week-board h2,.section-list h2,.drawer h2,.modal h2{margin:0 0 12px;font-size:22px}.panel p,.hint{color:var(--ink-soft);font-size:13px}.control-group{margin-top:18px}.control-group label,.section-card label{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;color:var(--ink-soft)}select,.drawer input{width:100%;border:1px solid var(--rule);border-radius:10px;padding:8px 10px;background:#fff}.chip.active{background:var(--accent);color:#fff;border-color:var(--accent)}.chip:disabled{opacity:.45;cursor:not-allowed}.room-list{display:flex;flex-direction:column;gap:6px;max-height:220px;overflow:auto;margin-top:10px;padding-right:4px}.filter-list{max-height:168px}.room-list label{display:flex;gap:8px;align-items:center;text-transform:none;letter-spacing:0;font-size:14px;font-weight:500;color:var(--ink);margin:0}.building-heading{margin:12px 0 4px;font-size:11px;font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.12em}.main{display:flex;flex-direction:column;gap:24px;min-width:0}.week-stack{display:flex;flex-direction:column;gap:16px}.week-board{padding:16px;overflow:auto}.week-grid{display:grid;grid-template-columns:64px repeat(var(--day-count, 5),minmax(120px,1fr));min-width:720px}.day-head,.time-gutter{font-size:12px;font-weight:600;color:var(--ink-soft);padding:6px}.day-column{position:relative;border-left:1px solid var(--rule);background-image:repeating-linear-gradient(to bottom,transparent,transparent calc(var(--hour-height) - 1px),var(--rule) calc(var(--hour-height) - 1px),var(--rule) var(--hour-height))}.meeting-block{position:absolute;border:0;border-radius:10px;color:#fff;font:inherit;cursor:pointer;text-align:left;padding:6px 8px;overflow:hidden;box-shadow:inset 0 0 0 1px #ffffff2e}.meeting-block:hover,.meeting-block:focus-visible,.meeting-block.pinned{z-index:3;filter:brightness(1.08)}.meeting-block.pinned{box-shadow:inset 0 0 0 1px #ffffff2e,0 0 0 2px #fffaf2}.meeting-block.combined{box-shadow:inset 0 0 0 2px #f8e9ff,0 0 0 1px var(--combined)}.meeting-block.conflict{outline:2px dashed var(--conflict)}.meeting-block.ghost{z-index:1;border:2px dashed;box-shadow:none;background-clip:padding-box}.meeting-block.ghost.pinned{box-shadow:0 0 0 2px #fffaf2}.meeting-block.changed{z-index:2;box-shadow:inset 0 0 0 1px #ffffff59,0 0 0 2px #fffaf2}.meeting-block.changed.added{box-shadow:inset 0 0 0 1px #ffffff59,0 0 0 2px #c5eadc}.pill.ghost-pill{border-style:dashed;opacity:.78}.version-save{margin-top:8px}.version-list{display:flex;flex-direction:column;gap:6px;margin-top:10px}.version-row{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px}.week-grid.searching .meeting-block.search-dim{opacity:.22;filter:saturate(.45)}.week-grid.searching .meeting-block.search-dim:hover,.week-grid.searching .meeting-block.search-dim:focus-visible{opacity:.5;filter:saturate(.7) brightness(1.05)}.week-grid.searching .meeting-block.search-match{z-index:2;box-shadow:inset 0 0 0 1px #ffffff59,0 0 0 2px #fffaf2}.week-grid.searching .meeting-block.search-match.combined{box-shadow:inset 0 0 0 2px #f8e9ff,0 0 0 2px #fffaf2}.week-grid.searching .meeting-block.search-match:hover,.week-grid.searching .meeting-block.search-match:focus-visible,.week-grid.searching .meeting-block.search-match.pinned{z-index:4}.search-field{display:flex;gap:8px;align-items:center}.search-combobox{position:relative}.search-field input{flex:1;min-width:0;width:100%;border:1px solid var(--rule);border-radius:10px;padding:8px 10px;background:#fff}.search-results{display:flex;flex-direction:column;gap:4px;margin-top:8px;max-height:280px;overflow:auto;padding:6px;border:1px solid var(--rule);border-radius:12px;background:var(--paper-2)}.search-empty{margin:6px 8px}.search-result{display:grid;gap:2px;text-align:left;width:100%;border:1px solid transparent;background:#fff;color:var(--ink);border-radius:10px;padding:8px 10px}.search-result strong{font-size:13px}.search-result .search-result-kicker{display:block;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.search-result .search-result-detail{display:block;font-size:12px;color:var(--ink-soft);font-weight:400;text-transform:none;letter-spacing:0}.search-result.active,.search-result:hover{border-color:var(--accent);background:var(--paper)}.search-status{margin-top:8px}.meeting-block strong,.section-card h3{display:block;font-size:13px;font-weight:700}.meeting-block span,.muted{display:block;font-size:11px;opacity:.92}.legend{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 12px}.legend i{display:inline-block;width:10px;height:10px;border-radius:99px;margin-right:6px}.calendar-tooltip{position:fixed;z-index:50;transform:translate(-50%,-100%);background:#1d1914;color:#fffaf2;color-scheme:dark;border-radius:14px;padding:12px 14px;box-shadow:0 18px 40px #1d191447;pointer-events:none;font-size:13px;line-height:1.35}.calendar-tooltip.pinned{pointer-events:auto}.calendar-tooltip.below{transform:translate(-50%)}.calendar-tooltip-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.calendar-tooltip-kicker{margin:0 0 4px;text-transform:uppercase;letter-spacing:.1em;font-size:10px;font-weight:700;color:#e4d5b8}.tooltip-close{border:0;background:transparent;color:#e4d5b8;padding:0;font-size:12px;font-weight:600}.calendar-tooltip strong{display:block;font-size:16px;font-family:Fraunces,Georgia,serif;font-weight:550;margin-bottom:2px}.calendar-tooltip p{margin:0;color:#efe6d8}.tooltip-assign-list{margin-top:10px;padding-top:8px;border-top:1px solid rgba(255,250,242,.16)}.tooltip-assign{display:grid;gap:4px;margin-top:8px;font-size:12px}.tooltip-assign select,.tooltip-assign input[type=time]{width:100%;border:1px solid rgba(255,250,242,.2);background:#2a241e;color:#fffaf2;border-radius:8px;padding:6px 8px}.day-toggle-row,.time-edit-row{display:flex;gap:6px;margin-top:8px}.time-edit-row .tooltip-assign{flex:1;margin-top:0}.day-toggle{flex:1;border:1px solid rgba(255,250,242,.2);background:#2a241e;color:#efe6d8;border-radius:8px;padding:6px 0;font-size:11px;font-weight:700}.day-toggle.active{background:#fffaf2;color:#1d1914;border-color:#fffaf2}.tooltip-reset{margin-top:10px;width:100%;border:1px solid rgba(255,250,242,.2);background:transparent;color:#e4d5b8;border-radius:8px;padding:6px 8px;font-size:12px}.tooltip-empty{margin-top:8px;font-size:12px;color:#e4d5b8}.main-tabs{display:flex;gap:10px;flex-wrap:wrap}.tooltip-section-row{display:flex;flex-direction:column;gap:6px}.attach-selected{display:flex;gap:8px;align-items:center;justify-content:space-between}.attach-results{display:flex;flex-direction:column;gap:6px;max-height:180px;overflow:auto}.attach-result{text-align:left;border:1px solid var(--rule);background:#fff;color:var(--ink);border-radius:10px;padding:8px 10px;font-size:13px}.attach-result.active,.attach-result:hover{border-color:var(--accent)}.section-list h2{margin:0}.section-list-head{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.section-list-head .control-row{flex:1}.section-list-head .primary{margin-left:auto}.section-actions{display:flex;gap:10px;align-items:flex-end}.section-form{display:flex;flex-direction:column;gap:14px;margin-top:16px}.section-form label{display:grid;gap:6px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--ink-soft)}.section-form input,.section-form select{width:100%;border:1px solid var(--rule);border-radius:10px;padding:8px 10px;background:#fff;color:var(--ink);font:inherit;text-transform:none;letter-spacing:0;font-weight:500}.section-drawer{width:min(480px,100%)}.meeting-editor{margin:0;padding:12px;border:1px solid var(--rule);border-radius:14px}.meeting-editor legend{display:flex;gap:8px;align-items:center;padding:0 6px;font-size:12px;font-weight:700}.day-toggle-row.light .day-toggle{background:#fff;color:var(--ink);border-color:var(--rule)}.day-toggle-row.light .day-toggle.active{background:var(--accent);color:#fff;border-color:var(--accent)}.form-error{margin:0;color:var(--conflict);font-size:13px}.section-card{padding:14px 16px}.section-card header{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.badge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 8px;font-size:11px;font-weight:700;background:#efe6fb;color:var(--combined)}.meetings{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.pill{border:1px solid var(--rule);border-radius:12px;padding:6px 8px;font-size:12px;background:#f7f1e7}.pill.shared{border-color:var(--combined);background:#f4ecfb}.drawer-backdrop{position:fixed;inset:0;background:#1d191459;display:flex;justify-content:flex-end}.drawer{width:min(420px,100%);height:100%;border-radius:18px 0 0 18px;padding:24px;overflow:auto}.instructor-list{list-style:none;padding:0;margin:16px 0 0}.instructor-list li{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:10px 0;border-bottom:1px solid var(--rule)}.instructor-edit{flex:1;min-width:0}.instructor-edit input{width:100%}.modal-backdrop{justify-content:center;align-items:center;padding:24px}.modal{width:min(560px,100%);max-height:min(760px,100%);overflow:auto;border-radius:18px;padding:24px;background:var(--paper-2);border:1px solid var(--rule);box-shadow:var(--shadow)}.report-types{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}.report-type{display:flex;flex-direction:column;gap:6px;text-align:left;font:inherit;cursor:pointer;border:1px solid var(--rule);background:#fff;border-radius:14px;padding:12px;color:var(--ink)}.report-type strong{font-size:14px}.report-type span{font-size:12px;color:var(--ink-soft);line-height:1.35}.report-type.active{border-color:var(--accent);background:#f4ecfb}.report-compare-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.report-compare-row label,.modal .control-group label{display:block;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;margin-bottom:6px;color:var(--ink-soft)}.report-preview{margin-top:16px}.report-actions{margin-top:18px;justify-content:flex-end}.report-actions .primary:disabled{opacity:.45;cursor:not-allowed}@media(max-width:980px){.layout{grid-template-columns:1fr}.panel{position:static}}:root{color-scheme:light;--paper: #f4efe6;--paper-2: #fffaf2;--ink: #1d1914;--ink-soft: #5c5348;--rule: #d9d0c3;--accent: #0f5f56;--accent-2: #c45c26;--combined: #6b3fa0;--conflict: #9f1239;--shadow: 0 18px 40px rgba(29, 25, 20, .08);font-family:DM Sans,Segoe UI,sans-serif;line-height:1.4;font-weight:400;color:var(--ink);background:var(--paper)}*{box-sizing:border-box}html,body,#root{margin:0;min-height:100%}button,input,select{font:inherit}button{cursor:pointer}h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:550;letter-spacing:-.02em}
