:root{--navy:#1f3354;--ink:#13181e;--muted:#6f7783;--line:#e1e5eb;--surface:#fff;--background:#f5f6f8;--gold:#f1a035;--blue:#3743e7;--green:#00b063;--orange:#f55600;--shadow:0 12px 42px #1f33540c;font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);font-size:14px;font-synthesis:none;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:var(--background)}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #f1a035;outline-offset:3px}button{color:inherit}a{color:inherit}h1,h2,h3,p{margin-top:0}h1{font-size:30px;line-height:1.2;letter-spacing:-1px;font-weight:650;margin-bottom:9px}h2{font-size:21px;line-height:1.3;letter-spacing:-.5px;margin-bottom:0;font-weight:630}h3{font-size:18px}p{line-height:1.6}small,.small{font-size:12px}.muted{color:var(--muted)}.eyebrow{font:10px ui-monospace,SFMono-Regular,monospace;letter-spacing:1.6px;color:var(--muted);display:block;margin-bottom:10px}.icon{width:18px;height:18px;flex-shrink:0;vertical-align:middle}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;background:#fff;border:1px solid var(--line);border-radius:8px;min-height:40px;padding:10px 15px;line-height:1.25;font-weight:550;transition:background .15s,transform .15s}.btn:hover{background:#f0f3f7}.btn:active{transform:translateY(1px)}.btn.primary{background:var(--navy);border-color:var(--navy);color:#fff;box-shadow:0 3px 7px #1f335415}.btn.primary:hover{background:#29456e}.btn.subtle{background:transparent;border-color:transparent}.btn.subtle:hover{background:#e9edf3}.btn.icon-btn{width:38px;min-height:38px;padding:8px}.btn.text-btn{border:0;padding:0;min-height:30px;color:var(--navy);background:transparent;font-size:12px}.btn.full{width:100%}.btn.danger-text{color:#b84516;border-color:transparent}.btn.warning-btn{background:#b94312;border-color:#b94312;color:#fff}.demo-label{font:9px ui-monospace,monospace;letter-spacing:1.2px;border:1px solid #d8dee7;color:#64748b;border-radius:5px;padding:5px 7px;white-space:nowrap}.field{display:flex;flex-direction:column;gap:7px;margin-bottom:17px;min-width:0}.field>span{font-size:12px;font-weight:550;color:#455163}.field input,.field select,.field textarea{width:100%;background:white;border:1px solid #d9dfe7;border-radius:7px;padding:11px 12px;min-height:43px;color:var(--ink);transition:border .15s}.field input:hover,.field select:hover{border-color:#aebaca}.field textarea{resize:vertical}.field input::placeholder,.field textarea::placeholder{color:#a0a7b1}.field input[readonly]{background:#f3f5f8}.required{color:#b45524}.field-help{font-size:12px;color:var(--muted);margin:5px 0 19px}.form-grid{display:grid;grid-template-columns:1fr 1fr;column-gap:17px}.form-errors{padding:12px;border:1px solid #efc1b1;background:#fff3ed;border-radius:7px;margin:12px 0;color:#a13113;font-size:13px;line-height:1.5}.form-errors[hidden]{display:none}hr{border:0;border-top:1px solid var(--line);margin:21px 0}.form-actions{display:flex;flex-wrap:wrap;gap:9px;justify-content:flex-end;margin-top:25px}.stack-actions{display:flex;flex-direction:column;gap:10px;margin-top:24px}.nowrap{white-space:nowrap}.empty{padding:45px!important;color:var(--muted);text-align:center}.toast{position:fixed;bottom:25px;left:50%;transform:translateX(-50%);padding:14px 22px;max-width:calc(100% - 30px);width:max-content;background:var(--navy);color:white;border-radius:10px;box-shadow:0 12px 35px #0003;z-index:1000;font-size:13px}.toast[hidden]{display:none}
/* Login */
.login-layout{min-height:100dvh;display:grid;grid-template-columns:57% 43%;background:#fff}.login-photo{background-color:#1f3354;background-size:cover;background-position:center;position:relative;min-height:740px;display:flex;flex-direction:column;justify-content:space-between;padding:40px 50px;color:#fff}.login-photo:before{content:"";position:absolute;inset:0;background:linear-gradient(180deg,#0714273d 0%,#07142712 35%,#081a37b3 75%,#081a37e6 100%)}.photo-top,.photo-bottom{position:relative}.photo-top{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;letter-spacing:2px}.frame-mark{font:600 23px ui-monospace,monospace;letter-spacing:2px}.hero-rule{height:3px;width:44px;background:var(--gold);margin-bottom:30px}.photo-bottom h1{font-size:clamp(72px,8.4vw,145px);letter-spacing:-8px;line-height:.95;font-weight:750;margin:0 0 22px}.title-period{color:var(--gold)}.photo-bottom p{font-size:18px;font-weight:400;letter-spacing:.3px;color:#e5e9f0}.photo-foot{display:flex;justify-content:space-between;gap:10px;border-top:1px solid #ffffff40;padding-top:23px;margin-top:55px;font:9px ui-monospace,monospace;letter-spacing:1.8px;color:#cbd5e1}.login-side{padding:34px 10% 25px;display:flex;flex-direction:column;justify-content:space-between}.login-meta{display:flex;justify-content:space-between;align-items:center;gap:12px;font-size:10px;color:#88909b}.login-form-wrap{width:100%;max-width:365px;margin:65px auto 40px}.login-form-wrap h2{font-size:34px;line-height:1.18;letter-spacing:-1.3px;margin-bottom:16px}.login-form-wrap>.muted{font-size:14px;line-height:1.7;margin-bottom:30px}.login-links{text-align:right;margin-top:-8px;margin-bottom:17px}.login-form-wrap .primary{min-height:48px;justify-content:space-between;padding:12px 18px}.login-form-wrap .field{margin-bottom:20px}.demo-access{margin-top:30px}.divider-label{display:flex;align-items:center;gap:12px;margin:20px 0;color:#8a939f;font:9px ui-monospace,monospace;letter-spacing:1.4px}.divider-label:before,.divider-label:after{content:"";height:1px;background:var(--line);flex:1}.demo-roles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.demo-roles .btn{display:flex;flex-direction:column;font-size:11px;padding:12px 4px;gap:7px;font-weight:500}.demo-roles .icon{color:var(--navy)}.demo-access p{font-size:11px;color:#87909c;text-align:center;margin:13px 0 0;line-height:1.8}.login-creds{font-size:10px}.access-help{margin:25px 0 0;color:#828c99;font-size:11px;text-align:center}.login-disclaimer{font-size:10px;color:#8a929d;text-align:center;line-height:1.6;margin:0 auto;max-width:330px}
/* Application shell */
.app-header{min-height:78px;padding:0 4%;display:flex;align-items:center;gap:52px;border-bottom:1px solid var(--line);background:#fff}.brand{font-size:27px;font-weight:750;letter-spacing:-1.5px;text-decoration:none;display:flex;align-items:baseline;white-space:nowrap}.brand-dot{display:block;width:5px;height:5px;margin-left:3px;background:var(--gold)}.app-header nav{display:flex;align-self:stretch;gap:8px}.btn.nav{border:0;border-radius:0;background:transparent;color:var(--muted);font-size:13px;position:relative;padding:12px 16px}.btn.nav.active{color:var(--navy)}.btn.nav.active:after{content:"";height:3px;background:var(--navy);position:absolute;bottom:0;left:16px;right:16px;border-radius:3px 3px 0 0}.header-right{margin-left:auto;display:flex;align-items:center;gap:20px}.profile-button{border:0;background:transparent;padding:6px;gap:10px}.avatar{display:inline-flex;align-items:center;justify-content:center;width:35px;height:35px;border-radius:50%;background:#e8edf5;color:var(--navy);font-size:11px;font-weight:600}.avatar.large{width:54px;height:54px;font-size:17px}.user-copy{display:flex;flex-direction:column;gap:4px;text-align:left;font-size:12px}.user-copy small{font-size:10px;font-weight:400;color:var(--muted)}.demo-bar{padding:8px 4%;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:10px;background:#edf0f5;color:#6e7988;border-bottom:1px solid #e7eaf0}.demo-bar label{display:flex;align-items:center;gap:9px;white-space:nowrap}.demo-bar select{font-size:11px;padding:4px 24px 4px 8px;border:1px solid #d7dee8;background:white;border-radius:4px;color:var(--navy)}.main{max-width:1380px;margin:auto;padding:34px 4% 35px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:27px}.page-heading p{margin-bottom:0;font-size:13px}.page-heading h1{font-size:27px;letter-spacing:-.8px}.page-heading>.btn{flex-shrink:0}.site-footer{display:flex;justify-content:space-between;gap:15px;max-width:1380px;margin:auto;padding:4px 4% 25px;font-size:10px;color:#9097a2}.readonly-badge{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted)}.week-bar{display:flex;justify-content:space-between;align-items:center;gap:15px;flex-wrap:wrap;margin-bottom:18px}.week-nav{display:flex;align-items:center;gap:8px}.week-range{display:flex;align-items:center;gap:10px;font-weight:550;font-size:14px;min-width:225px;justify-content:center;font-variant-numeric:tabular-nums}.week-range .icon{color:#8a95a4}.week-nav .subtle{font-size:11px;margin-left:8px;min-height:32px}.panel{background:#fff;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden;margin-bottom:23px}.panel-heading{padding:23px 25px 16px;display:flex;align-items:center;justify-content:space-between;gap:16px}.panel-heading .eyebrow{margin-bottom:7px;font-size:9px}.panel-heading h2{font-size:19px}.map-controls{display:flex;align-items:center;gap:10px}.map-controls .field{margin:0;gap:4px}.map-controls .field span{font-size:10px;color:var(--muted)}.map-controls select{font-size:11px;padding:7px 8px;min-height:32px}.map-caption{padding:10px 25px;display:flex;justify-content:space-between;gap:10px;font-size:10px;color:#8a929f}.map-caption>span{display:flex;align-items:center;gap:6px}.map-caption .icon{width:13px;height:13px}.room-hint{display:flex;gap:14px;align-items:center;padding:12px 25px;border-top:1px solid #edf0f4;font-size:11px;background:#fafbfc;min-height:42px}.room-hint strong{white-space:nowrap;color:var(--navy);font-weight:600}.room-hint span{color:var(--muted)}.conflict-banner{width:100%;display:flex;align-items:center;text-align:left;gap:14px;border:1px solid #f4ccb4;border-left:4px solid #ee7c3b;border-radius:8px;background:#fff5ed;padding:13px 17px;margin-bottom:22px;color:#9b4a21}.conflict-banner>.icon{width:23px;height:23px;color:#c06128}.conflict-banner>span:nth-child(2){display:flex;flex-direction:column;gap:4px}.conflict-banner strong{font-size:13px;font-weight:600}.conflict-banner small{font-size:11px;color:#ab7554}.conflict-link{margin-left:auto;display:flex;align-items:center;gap:9px;font-size:11px;font-weight:550}.room-tabs{display:flex;gap:4px;background:#f1f3f7;padding:4px;border-radius:8px}.room-tabs .btn{border:0;background:transparent;min-height:32px;padding:6px 18px;font-size:12px;color:#778395}.room-tabs .selected{background:white;color:var(--navy);box-shadow:0 2px 5px #1f335411}.calendar-meta{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 25px 18px;color:var(--muted)}.calendar-meta small{font-size:10px}.calendar-legend{display:flex;gap:18px;flex-wrap:wrap;font-size:10px}.calendar-legend>span{display:flex;gap:6px;align-items:center}.swatch{display:inline-block;width:9px;height:9px;border-radius:2px}.class-swatch{background:#6e79dc}.booking-swatch{background:#5ca18e}.conflict-swatch{background:#ee8854}.calendar-scroll{overflow:auto;max-height:650px;border-top:1px solid var(--line);overscroll-behavior:contain}.calendar-grid{display:grid;grid-template-columns:62px repeat(6,minmax(115px,1fr));min-width:770px;position:relative}.time-heading,.day-heading{height:56px;background:#fafbfc;position:sticky;top:0;z-index:4;border-bottom:1px solid var(--line);border-right:1px solid #eef0f3;display:flex;align-items:center;justify-content:center}.time-heading{font-size:9px;color:#9aa4b2;letter-spacing:1px}.day-heading{gap:9px;color:#738090;font-size:11px}.day-heading strong{font-weight:550;font-size:17px;color:var(--navy)}.day-heading.is-today strong{background:var(--navy);color:white;width:31px;height:31px;border-radius:50%;display:flex;align-items:center;justify-content:center}.time-column{position:relative;background:#fcfcfd;border-right:1px solid var(--line)}.time-column>div{height:32px;text-align:center;padding-top:6px;font-size:10px;color:#8b95a2;font-variant-numeric:tabular-nums}.time-column>div:nth-child(even){color:#b1b8c1;font-size:9px}.last-time{position:absolute;bottom:0;background:white;font-size:9px;left:16px;color:#9ca3ad}.day-column{position:relative;border-right:1px solid #e8ecf1}.time-slot{height:32px;display:block;width:100%;padding:0;background:white;border:0;border-bottom:1px solid #e4e9ef}.time-slot.half{border-bottom-color:#edf0f4}.time-slot:hover{background:#f0f4fb}.time-slot.selecting{background:#dce7f7;box-shadow:inset 0 0 0 1px #a1b9d6}.schedule-event{position:absolute;display:flex;align-items:flex-start;flex-direction:column;gap:5px;text-align:left;padding:7px 8px;border:0;border-left:3px solid #7180ce;background:#eef0ff;color:#344176;border-radius:5px;overflow:hidden;z-index:2;transition:filter .15s;min-width:0}.schedule-event:hover{filter:brightness(.97);z-index:3}.schedule-event.booking{background:#e9f4ef;border-left-color:#5a9e83;color:#2c6550}.schedule-event.has-conflict{background:repeating-linear-gradient(135deg,#fff0e8,#fff0e8 8px,#fff5ee 8px,#fff5ee 16px);border-left-color:#e7814c;color:#9d4d26;box-shadow:inset 0 0 0 1px #e8b797}.schedule-event .event-time{font-size:9px;white-space:nowrap;opacity:.85;font-variant-numeric:tabular-nums}.schedule-event strong{font-size:11px;line-height:1.35;font-weight:600;overflow-wrap:anywhere}.schedule-event small{font-size:9px;line-height:1.3;opacity:.8}.event-conflict{font-size:9px;font-weight:650}.calendar-bottom{padding:13px 25px;color:#8a95a3;font-size:10px;display:flex;align-items:center;gap:7px}.calendar-bottom .icon{width:14px;height:14px}.calendar-bottom>span{margin-left:auto}
/* Lists and overlays */
.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left;min-width:650px}th{font-size:10px;text-transform:uppercase;letter-spacing:.6px;color:#8992a0;background:#fafbfc;padding:16px 22px;font-weight:550;border-bottom:1px solid var(--line)}td{padding:20px 22px;border-bottom:1px solid #eef0f4;font-size:12px;color:#4f5e71;vertical-align:middle}tr:last-child td{border-bottom:0}td strong{display:block;color:var(--navy);font-size:13px;font-weight:600}td small{display:block;margin-top:6px;color:#8b95a3;font-size:11px}.table-actions{display:flex;gap:5px}.table-actions .btn{font-size:11px}.room-badge{padding:6px 10px;background:#edf1f7;border-radius:5px;color:var(--navy);font-size:12px;white-space:nowrap}.status{display:inline-flex;align-items:center;gap:6px;font-size:10px;border-radius:5px;padding:5px 8px;color:#617086;background:#edf0f5}.status.active{background:#e8f5ed;color:#438365}.status.pending{background:#fff2dd;color:#ab7d39}.status.disabled{background:#f0f0f0;color:#8a8a8a}.status.class{background:#eef0ff;color:#5f6bb8}.status.conflict{background:#ffecdF;color:#a3572e}.status .icon{width:13px;height:13px}.page-note{margin-top:20px}dialog{border:1px solid #dbe1ea;border-radius:16px;padding:0;width:460px;max-width:calc(100vw - 28px);max-height:90dvh;background:#fff;color:var(--ink);box-shadow:0 25px 100px #0f1d3c40}dialog::backdrop{background:#0c1b3780;backdrop-filter:blur(3px)}dialog.drawer{margin:0 0 0 auto;border:0;border-radius:16px 0 0 16px;height:100dvh;max-height:100dvh;width:520px;max-width:100%;position:fixed;inset:0 0 0 auto}.dialog-head{display:flex;align-items:flex-start;justify-content:space-between;gap:15px;padding:27px 28px 21px;border-bottom:1px solid var(--line);background:white;position:sticky;top:0;z-index:3}.dialog-head .eyebrow{font-size:9px;margin-bottom:8px}.dialog-head h2{font-size:23px}.dialog-head>.icon-btn{flex-shrink:0;border-color:transparent}.dialog-body{padding:24px 28px 30px}.dialog-body p{font-size:13px}.dialog-body .muted{line-height:1.7}.dialog-body .field>span{font-size:12px}.detail-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.detail-date{text-transform:capitalize;color:#778294;margin-bottom:7px}.detail-time{font-size:28px;color:var(--navy);font-weight:500;letter-spacing:-.8px;margin-bottom:24px}.detail-grid{display:grid;grid-template-columns:95px 1fr;gap:17px 12px;font-size:12px;line-height:1.6;margin-top:25px}.detail-grid dt{color:#8490a0}.detail-grid dd{margin:0;color:#35465f;overflow-wrap:anywhere}.clear-state{color:#4d8c6e;font-size:12px!important;display:flex;align-items:center;gap:7px}.clear-state .icon{width:15px;height:15px}.inline-warning{background:#fff3e8;color:#ab592c;padding:14px;border-radius:7px;display:flex;gap:9px;font-size:12px}.inline-warning small{display:block;font-size:11px;margin-top:7px}.history{margin-top:25px;border-top:1px solid var(--line);padding-top:18px}.history summary{font-size:12px;color:#617087;cursor:pointer}.history>div{padding:15px 0;border-bottom:1px solid #eef1f5}.history strong{display:block;font-size:11px;font-weight:550;color:#59697f}.history small{display:block;font-size:10px;margin-top:5px;color:#98a1ae}.duration{padding:10px 12px;background:#eff3f9;color:var(--navy);border-radius:6px;font-size:12px}.conflict-modal{border-top:5px solid #ef8746;width:550px}.alert-symbol{display:block;color:#df7333;margin-bottom:12px}.alert-symbol .icon{width:30px;height:30px}.overlap-items{max-height:260px;overflow:auto}.overlap-items>div{display:flex;flex-direction:column;gap:5px;padding:14px;border:1px solid #f0d8c8;background:#fff9f4;border-radius:7px;margin-bottom:10px;font-size:11px;color:#9b6548}.overlap-items strong{color:#8c4a27;font-size:12px;margin-bottom:4px}.check-field{display:flex;align-items:flex-start;gap:10px;font-size:12px;line-height:1.5;color:#7b4b34;padding:13px 0}.check-field input{accent-color:#d16a30;margin-top:3px}.conflict-list{display:flex;flex-direction:column;gap:14px}.conflict-card{display:flex;align-items:flex-start;flex-direction:column;gap:10px;text-align:left;background:#fffaf6;border:1px solid #eed4c4;border-radius:8px;padding:17px;color:#8d5e44}.conflict-card strong{font-size:13px}.conflict-card>span:not(.status){font-size:12px}.conflict-card>small{font-size:10px;margin-top:5px}.series-slot{margin:13px 0 18px;border:1px solid var(--line);border-radius:8px;padding:15px}.series-slot legend{font-size:11px;color:#7a8799;padding:0 6px}.day-checks{display:flex;gap:7px;margin-bottom:16px}.day-checks label{flex:1;text-align:center;cursor:pointer}.day-checks input{position:absolute;width:1px;height:1px;opacity:0}.day-checks span{display:block;padding:8px 0;font-size:11px;color:#8090a3;background:#f2f4f8;border-radius:5px;border:1px solid transparent}.day-checks input:checked+span{background:var(--navy);color:#fff}.day-checks input:focus-visible+span{outline:3px solid var(--gold);outline-offset:2px}.slot-times{display:grid;grid-template-columns:1fr 1fr 35px;gap:10px;align-items:end}.slot-times .field{margin-bottom:0}.slot-times .btn{margin-bottom:3px;width:35px;padding:5px}.series-review{display:flex;flex-direction:column;gap:7px;background:#edf2fa;padding:15px;border-radius:8px;margin-top:20px;font-size:12px;color:var(--navy)}.series-review[hidden]{display:none}.success-symbol{width:44px;height:44px;border-radius:50%;background:#e7f4ed;color:#3f8e68;display:grid;place-items:center;margin-bottom:20px}.success-symbol .icon{width:24px;height:24px}.profile-summary{display:flex;align-items:center;gap:15px;padding:10px 0}.profile-summary>div{display:flex;flex-direction:column;gap:6px;overflow-wrap:anywhere}.profile-summary strong{font-size:16px;color:var(--navy)}.profile-summary span:not(.avatar){font-size:12px;color:#7d8999}.profile-summary small{font-size:11px;color:#96a0ae}
@media(min-width:1500px){.login-side{padding-left:14%;padding-right:14%}.login-form-wrap{max-width:400px}.login-photo{padding:50px 65px}.app-header,.demo-bar{padding-left:calc((100% - 1270px)/2);padding-right:calc((100% - 1270px)/2)}}
@media(max-width:1050px){.app-header{gap:20px}.header-right{gap:12px}.user-copy{display:none}.app-header .demo-label{display:none}.page-heading h1{font-size:25px}.map-controls{gap:7px}.main{padding-left:3%;padding-right:3%}.login-photo{padding:35px}.login-side{padding:30px 8%}.login-form-wrap h2{font-size:29px}.photo-bottom h1{letter-spacing:-6px}.calendar-meta small{display:none}}
@media(max-width:760px){.login-layout{grid-template-columns:1fr}.login-photo{min-height:330px;padding:22px 28px;background-position:center 48%}.photo-top{font-size:8px}.frame-mark{font-size:18px}.hero-rule{margin-bottom:19px;width:30px;height:2px}.photo-bottom h1{font-size:72px;letter-spacing:-5px;margin-bottom:12px}.photo-bottom p{font-size:13px;margin-bottom:0}.photo-foot{display:none}.login-side{padding:24px 26px}.login-meta{font-size:9px}.login-form-wrap{max-width:420px;margin:34px auto 28px}.login-form-wrap h2{font-size:28px}.login-form-wrap h2 br{display:none}.login-form-wrap>.muted{margin-bottom:25px}.login-disclaimer{padding-bottom:10px}.app-header{padding:12px 18px 0;min-height:100px;gap:0;flex-wrap:wrap}.brand{font-size:25px}.header-right{margin-left:auto}.app-header nav{order:3;flex-basis:100%;height:45px;margin-top:7px;gap:2px}.btn.nav{font-size:12px;padding:10px 14px}.btn.nav:first-child{padding-left:0}.btn.nav.active:after{left:10px;right:10px}.btn.nav:first-child.active:after{left:0}.demo-bar{padding:8px 18px;font-size:9px;gap:10px}.demo-bar>span{max-width:190px;line-height:1.5}.demo-bar select{font-size:10px;max-width:110px}.main{padding:26px 16px}.page-heading{align-items:flex-start;gap:12px;margin-bottom:23px}.page-heading h1{font-size:23px}.page-heading .eyebrow{font-size:9px;letter-spacing:1px}.page-heading>.btn{padding:9px 11px;font-size:11px;min-height:37px}.page-heading>.btn .icon{width:14px}.page-heading p{font-size:12px}.week-bar{gap:10px}.week-nav{gap:4px;flex-wrap:wrap;width:100%;justify-content:space-between}.week-range{font-size:12px;min-width:0;gap:6px}.week-range .icon{display:none}.week-nav .subtle{margin:0;font-size:10px;padding:7px}.week-nav .icon-btn{width:30px;min-height:32px;padding:5px}.week-bar>.small{font-size:10px}.panel-heading{padding:19px 17px 14px;flex-wrap:wrap}.panel-heading h2{font-size:18px}.map-controls{width:100%;display:grid;grid-template-columns:1.4fr 1fr 1fr}.map-controls select{font-size:12px;min-height:36px}.map-caption{padding:10px 17px;font-size:9px;line-height:1.4}.map-caption>span:last-child{display:none}.room-hint{padding:12px 17px;align-items:flex-start;flex-direction:column;gap:6px;line-height:1.5}.conflict-banner{padding:12px;gap:9px}.conflict-banner strong{font-size:12px}.conflict-banner small{font-size:10px}.conflict-banner>.icon{width:20px}.conflict-link{font-size:0;gap:0}.conflict-link .icon{width:18px}.calendar-panel .panel-heading{gap:13px}.room-tabs{gap:1px;padding:3px}.room-tabs .btn{padding:6px 12px;font-size:11px}.calendar-meta{padding:0 17px 16px}.calendar-legend{gap:12px;font-size:9px}.calendar-scroll{max-height:620px}.calendar-bottom{padding:12px 17px;flex-wrap:wrap;font-size:9px}.calendar-bottom>span{margin-left:0;flex-basis:100%;padding-left:20px}.site-footer{padding:0 18px 22px;display:block;font-size:9px;line-height:1.7}.site-footer span{display:block;margin-top:5px}.dialog-head{padding:22px 21px 18px}.dialog-body{padding:21px}.dialog-head h2{font-size:22px}.field input,.field select,.field textarea{font-size:16px}.slot-times .field select{font-size:14px}.form-grid{gap:0 12px}.form-grid .field>span{font-size:11px}dialog.drawer{width:100%;border-radius:0}.table-wrap table{min-width:600px}.readonly-badge{font-size:10px;white-space:nowrap}.readonly-badge .icon{width:14px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
/* Microinteracciones: entrada breve, respuesta al cursor y foco; sin movimiento continuo. */
@keyframes rise-in{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:translateY(0)}}
@keyframes drawer-in{from{opacity:.6;transform:translateX(24px)}to{opacity:1;transform:translateX(0)}}
@keyframes modal-in{from{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes toast-in{from{opacity:0;translate:0 8px}to{opacity:1;translate:0 0}}
@media(prefers-reduced-motion:no-preference){
 .photo-bottom .hero-rule{animation:rise-in .45s ease-out both}
 .photo-bottom h1{animation:rise-in .5s .06s ease-out both}
 .photo-bottom p{animation:rise-in .5s .13s ease-out both}
 .login-form-wrap{animation:rise-in .45s .08s ease-out both}
 .page-heading{animation:rise-in .25s ease-out both}
 .panel{animation:rise-in .3s ease-out both}
 .calendar-panel{animation-delay:.045s}
 dialog[open]{animation:modal-in .2s cubic-bezier(.2,.7,.3,1) both}
 dialog.drawer[open]{animation:drawer-in .24s cubic-bezier(.2,.7,.3,1) both}
 .toast:not([hidden]){animation:toast-in .2s ease-out both}
 .btn,.conflict-card,.schedule-event{transition:background .18s ease,border-color .18s ease,box-shadow .18s ease,transform .18s ease,filter .18s ease}
 .btn .icon{transition:transform .18s ease}
 .btn.primary:hover>.icon:last-child{transform:translateX(2px)}
 .demo-roles .btn:hover,.conflict-card:hover{transform:translateY(-2px);box-shadow:0 5px 14px #1f335412}
 .schedule-event:hover{transform:translateY(-1px);box-shadow:0 3px 9px #1f33541a}
 .btn:active,.conflict-card:active,.schedule-event:active{transform:translateY(1px)}
 .btn.nav:after{transition:background .18s ease}
}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
@media(max-width:760px){.map-panel .floorplan-caption{flex-wrap:wrap;gap:8px;padding:12px 17px}.map-panel .floorplan-keys{flex-wrap:wrap;gap:12px}}
