:root{--blue: #4392f1;--blue-dark: #2b74d4;--blue-deep: #1a5abf;--blue-light: #e3ebff;--alice: #e7f0ff;--lavender: #ece8ef;--cinnabar: #dc493a;--cinnabar-dark: #b83629;--ink: #0f1f38;--ink-soft: #2d3f5a;--muted: #6a7a96;--white: #ffffff;--border: rgba(15, 31, 56, .1)}.landing-body{background:var(--white);color:var(--ink);overflow-x:hidden}.landing-body .page{min-height:100vh;background:var(--white)}.topbar{display:flex;align-items:center;justify-content:space-between;padding:18px 6vw;position:sticky;top:0;z-index:100;backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);background:#ffffffe6;border-bottom:1px solid var(--border);transition:box-shadow .3s ease}.topbar:hover{box-shadow:0 4px 24px #4392f114}.brand{display:flex;align-items:center;gap:12px}.brand-logo{width:42px;height:42px;object-fit:contain;background:var(--alice);padding:2px;flex-shrink:0}.brand-text strong{display:block;font-size:1rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}.brand-text span{font-size:.72rem;color:var(--blue);text-transform:uppercase;letter-spacing:.22em;font-weight:600}.nav-links{display:flex;gap:32px;align-items:center}.nav-links a{color:var(--ink-soft);text-decoration:none;font-weight:500;font-size:.95rem;position:relative;padding-bottom:2px;transition:color .2s}.nav-links a:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:2px;background:var(--blue);transition:width .25s ease}.nav-links a:hover{color:var(--blue)}.nav-links a:hover:after{width:100%}.top-actions{display:flex;gap:10px;align-items:center}.primary-btn{background:var(--cinnabar);color:#fff;border:none;padding:11px 24px;font-weight:700;font-size:.95rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .2s,box-shadow .2s;letter-spacing:.01em}.primary-btn:hover{background:var(--cinnabar-dark);box-shadow:0 8px 24px #dc493a4d}.secondary-btn{background:transparent;color:var(--blue);border:1.5px solid var(--blue);padding:10px 24px;font-weight:600;font-size:.95rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px;transition:background .2s}.secondary-btn:hover{background:var(--alice)}.ghost-btn{background:transparent;color:var(--ink-soft);border:1.5px solid rgba(15,31,56,.18);padding:10px 22px;font-weight:600;font-size:.92rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;transition:background .2s,border-color .2s,color .2s}.ghost-btn:hover{background:var(--alice);border-color:var(--blue);color:var(--blue)}.hero{position:relative;min-height:calc(100vh - 78px);display:flex;align-items:center;background:#1b1b1b;overflow:hidden;isolation:isolate}.hero-photo{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-2;background-size:cover;background-position:center}.hero:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:linear-gradient(180deg,#0006,#00000042 42%,#0000007a)}.hero-overlay{display:none}.hero-inner{position:relative;width:100%;max-width:1240px;margin:0 auto;padding:72px 6vw 132px}.hero-content{position:relative}.hero-content--center{display:flex;flex-direction:column;align-items:center;text-align:center;gap:20px;max-width:820px;margin:0 auto;min-height:0}.hero-content--center>*{opacity:0;animation:hero-rise .9s cubic-bezier(.34,1.56,.64,1) forwards}.hero-content--center>*:nth-child(1){animation-delay:.1s}.hero-content--center>*:nth-child(2){animation-delay:.24s}.hero-content--center>*:nth-child(3){animation-delay:.38s}.hero-content--center>*:nth-child(4){animation-delay:.5s}.hero-content--center>*:nth-child(5){animation-delay:.64s}@keyframes hero-rise{0%{opacity:0;transform:translateY(36px);filter:blur(8px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}.hero-content--center h1{text-align:center}.hero-rule{display:block;width:min(560px,72%);height:1px;margin:2px 0 0;background:linear-gradient(90deg,#fff0,#ffffff8c 22%,#ffffffbf,#ffffff8c 78%,#fff0)}.hero-sub{font-size:clamp(.95rem,1.5vw,1.24rem);line-height:1.5;color:#fffffff0;letter-spacing:.15em;text-transform:uppercase;font-weight:500;max-width:34ch;margin:0 auto;text-shadow:0 1px 10px rgba(0,0,0,.6),0 1px 2px rgba(0,0,0,.45)}.hero-feature-bar{position:relative;z-index:5;width:min(1180px,92%);margin:-88px auto 0;background:#fff;border-radius:18px;box-shadow:0 30px 70px #0f1f382e;display:grid;grid-template-columns:repeat(3,1fr);overflow:hidden}.hfb-item{display:flex;gap:16px;padding:30px;border-right:1px solid rgba(15,31,56,.08);transition:background .2s}.hfb-item:last-child{border-right:none}.hfb-item:hover{background:#4392f108}.hfb-icon{flex-shrink:0;width:48px;height:48px;display:grid;place-items:center;border-radius:12px;background:var(--blue-light);color:var(--blue)}.hfb-icon svg{width:24px;height:24px}.hfb-text h3{margin:2px 0 6px;font-size:1.04rem;font-weight:700;color:var(--ink)}.hfb-text p{margin:0 0 12px;font-size:.84rem;color:var(--muted);line-height:1.55}.hfb-link{font-size:.8rem;font-weight:700;color:var(--blue);text-decoration:none;letter-spacing:.02em;text-transform:uppercase}.hfb-link span{display:inline-block;transition:transform .2s}.hfb-link:hover{color:var(--blue-dark)}.hfb-link:hover span{transform:translate(4px)}.hfb-stage{margin:0 0 5px;font-size:.66rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--blue)}@media (max-width: 860px){.hero-feature-bar{grid-template-columns:1fr;margin-top:-56px}.hfb-item{border-right:none;border-bottom:1px solid rgba(15,31,56,.08)}.hfb-item:last-child{border-bottom:none}.hero-inner{padding:56px 6vw 96px}}.hero-eyebrow{color:#8fc0ff;text-transform:uppercase;letter-spacing:.18em;font-size:.78rem;font-weight:700;margin:0;display:inline-flex;align-items:center;gap:10px;padding:7px 14px 7px 12px;background:#4392f129;border:1px solid rgba(143,192,255,.32);border-radius:999px;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);width:fit-content}.hero-eyebrow:before{content:"";display:block;width:6px;height:6px;border-radius:50%;background:#8fc0ff;box-shadow:0 0 0 4px #8fc0ff40;flex-shrink:0}.hero-headline-group h1{font-size:clamp(3rem,5vw,4.4rem);margin:0;line-height:1.06;color:#fff;letter-spacing:-.03em;font-weight:800;text-shadow:0 4px 32px rgba(15,31,56,.5)}.hero-stats{display:flex;align-items:center;gap:0}.hero-stat{display:flex;flex-direction:column;gap:3px;padding:0 24px 0 0}.hero-stat:first-child{padding-left:0}.hero-stat strong{font-size:1.6rem;font-weight:800;color:#fff;letter-spacing:-.02em;line-height:1}.hero-stat span{font-size:.76rem;color:#ffffffb3;font-weight:500;white-space:nowrap}.hero-stat-divider{width:1px;height:36px;background:#fff3;flex-shrink:0;margin-right:24px}.hero-ctas{display:flex;align-items:center;justify-content:center;gap:16px;flex-wrap:wrap}.hero-explore-btn{font-size:.88rem;font-weight:700;color:#ffffffd9;text-decoration:none;letter-spacing:-.01em;transition:color .18s}.hero-explore-btn:hover{color:#fff}.hero-right{display:flex;justify-content:flex-end;overflow:visible;position:relative}.today-card{width:100%;background:#fff;border:1px solid rgba(15,31,56,.1);box-shadow:0 8px 40px #0f1f3814,0 2px 8px #0f1f380a;overflow:hidden}.today-card-header{display:flex;align-items:center;justify-content:space-between;padding:16px 18px;border-bottom:1px solid rgba(15,31,56,.07)}.today-card-title{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}.today-live-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px #22c55e33;animation:tt-pulse 2s ease-in-out infinite;flex-shrink:0}.today-date{font-size:.74rem;color:var(--muted);font-weight:500}.today-sessions{display:flex;flex-direction:column}.today-session{display:flex;align-items:center;gap:14px;padding:13px 18px;border-bottom:1px solid rgba(15,31,56,.05);transition:background .15s}.today-session:last-child{border-bottom:none}.today-session:hover{background:#fafbfc}.today-time{font-size:.74rem;font-weight:700;color:var(--muted);font-family:var(--font-mono, monospace);width:38px;flex-shrink:0}.today-session-info{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.today-session-info strong{font-size:.82rem;font-weight:700;color:var(--ink);letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.today-session-info span{font-size:.72rem;color:var(--muted);font-family:var(--font-mono, monospace)}.today-chip{font-size:.68rem;font-weight:700;padding:3px 9px;border-radius:20px;background:#0f1f380f;color:var(--muted);white-space:nowrap;flex-shrink:0;letter-spacing:.02em;text-transform:uppercase}.today-chip-blue{background:#4392f11f;color:var(--blue)}.today-card-footer{display:block;padding:13px 18px;font-size:.8rem;font-weight:700;color:var(--cinnabar);text-decoration:none;border-top:1px solid rgba(15,31,56,.07);transition:background .15s,color .15s;background:#fafbfc}.today-card-footer:hover{background:#dc493a0a;color:var(--cinnabar-dark)}@media (max-width: 900px){.hero-content{grid-template-columns:1fr}.hero-right{justify-content:flex-start}.today-card{max-width:420px}}@keyframes fadeUp{0%{opacity:0;transform:translateY(28px)}to{opacity:1;transform:translateY(0)}}@keyframes cardFloatIn{0%{opacity:0;transform:translateY(40px) rotate(var(--rot, 0deg)) scale(.92)}to{opacity:1;transform:translateY(0) rotate(var(--rot, 0deg)) scale(1)}}@keyframes slideInLeft{0%{opacity:0;transform:translate(-20px)}to{opacity:1;transform:translate(0)}}@keyframes popIn{0%{opacity:0;transform:scale(.88)}70%{transform:scale(1.04)}to{opacity:1;transform:scale(1)}}.reveal{opacity:0;transform:translateY(52px) scale(.93);filter:blur(9px);transition:opacity .7s cubic-bezier(.22,1,.36,1),transform .85s cubic-bezier(.34,1.56,.64,1),filter .6s ease;will-change:opacity,transform,filter}.reveal.revealed{opacity:1;transform:translateY(0) scale(1);filter:blur(0)}.reveal-left{transform:translate(-72px) scale(.95)}.reveal-right{transform:translate(72px) scale(.95)}.reveal-zoom{transform:scale(.78);filter:blur(12px)}.reveal-tilt{transform:translateY(46px) rotate(-5deg) scale(.92);transform-origin:bottom left}.reveal-left.revealed,.reveal-right.revealed,.reveal-zoom.revealed,.reveal-tilt.revealed{transform:none;filter:blur(0)}.reveal-hero{transition-duration:.7s}.reveal-d1{transition-delay:.12s}.reveal-d2{transition-delay:.24s}.reveal-d3{transition-delay:.36s}.reveal-d4{transition-delay:.48s}.reveal-frame{opacity:0;transform:scale(.82) translateY(36px);filter:blur(12px);transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .9s cubic-bezier(.34,1.56,.64,1),filter .7s ease;transition-delay:.12s;will-change:opacity,transform,filter}.reveal-frame.revealed{opacity:1;transform:scale(1) translateY(0);filter:blur(0)}.sc-green{--rot: -8deg;animation:cardFloatIn .7s cubic-bezier(.22,1,.36,1) .55s both}.sc-amber{--rot: -12deg;animation:cardFloatIn .7s cubic-bezier(.22,1,.36,1) .35s both}.sc-indigo{--rot: -10deg;animation:cardFloatIn .7s cubic-bezier(.22,1,.36,1) .2s both}.sc-peach{--rot: 8deg;animation:cardFloatIn .7s cubic-bezier(.22,1,.36,1) .1s both}.sc-blue{--rot: -4deg;animation:cardFloatIn .7s cubic-bezier(.22,1,.36,1) .4s both}.sc-white{--rot: 3deg;animation:cardFloatIn .8s cubic-bezier(.22,1,.36,1) .65s both,float-card 6s ease-in-out 1.45s infinite}.tt-preview-grid tbody tr{opacity:0}.reveal-frame.revealed .tt-preview-grid tbody tr{animation:fadeUp .45s ease forwards}.reveal-frame.revealed .tt-preview-grid tbody tr:nth-child(1){animation-delay:.05s}.reveal-frame.revealed .tt-preview-grid tbody tr:nth-child(2){animation-delay:.15s}.reveal-frame.revealed .tt-preview-grid tbody tr:nth-child(3){animation-delay:.25s}.reveal-frame.revealed .tt-preview-grid tbody tr:nth-child(4){animation-delay:.35s}.reveal-frame.revealed .tt-preview-grid tbody tr:nth-child(5){animation-delay:.45s}.reveal-frame.revealed .tt-preview-grid tbody tr:nth-child(6){animation-delay:.55s}.hero-content h1{font-size:min(3rem,5vw);white-space:nowrap;margin:0;line-height:1.12;color:#fff;letter-spacing:.01em;text-transform:uppercase;font-weight:800;text-shadow:0 2px 16px rgba(0,0,0,.6),0 1px 3px rgba(0,0,0,.45)}.hero-badge{display:inline-flex;align-items:center;gap:8px;background:#4392f11a;border:1px solid rgba(67,146,241,.25);border-left:3px solid var(--blue);color:var(--blue-dark);padding:6px 14px;font-size:.74rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;margin-bottom:22px}.hero-badge-dot{width:6px;height:6px;background:var(--blue);animation:pulse-dot 2s ease-in-out infinite}@keyframes pulse-dot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.4;transform:scale(.7)}}.hero-text h1{font-size:clamp(2.6rem,4.5vw,4rem);margin:0 0 20px;line-height:1.08;color:var(--ink);letter-spacing:-.02em}.hero-text h1 .accent-word{color:var(--blue);border-bottom:3px solid var(--blue);padding-bottom:2px}.lead{font-size:1.1rem;color:var(--ink-soft);line-height:1.7;max-width:520px}.hero-actions{display:flex;gap:14px;margin:32px 0 0;flex-wrap:wrap}.hero-metrics{display:flex;gap:32px;padding-top:32px;border-top:1px solid rgba(67,146,241,.15)}.hero-metric-item{display:flex;flex-direction:column;gap:4px}.hero-metrics strong{font-size:1.6rem;font-weight:800;color:var(--blue);line-height:1}.hero-metrics span{color:var(--muted);font-size:.82rem;font-weight:500}.hero-card-stack{position:relative;height:440px;width:440px;margin-left:auto}.sc-card{position:absolute;width:220px;padding:18px 20px;display:flex;flex-direction:column;gap:6px;background:#fff;border:1px solid rgba(15,31,56,.06);border-left:4px solid var(--blue);border-radius:14px;box-shadow:0 18px 44px #0f1f3847;transition:transform .3s ease,box-shadow .3s ease}.sc-card:hover{transform:translateY(-4px) rotate(0)!important;box-shadow:0 26px 56px #0f1f3857;z-index:6}.sc-green{border-left-color:#22c55e;display:none}.sc-amber{border-left-color:#f59e0b;top:232px;left:0;transform:rotate(-3deg);z-index:1}.sc-indigo{border-left-color:#6366f1;top:16px;left:24px;transform:rotate(-2deg);z-index:1}.sc-peach{border-left-color:var(--cinnabar);top:0;right:0;transform:rotate(2deg);z-index:2}.sc-blue{border-left-color:var(--blue);top:270px;right:14px;transform:rotate(2.5deg);z-index:3}.sc-white{border-left:4px solid var(--blue);border-top:1px solid rgba(15,31,56,.06);top:132px;right:36px;transform:rotate(-1.5deg);z-index:5;width:238px;box-shadow:0 24px 60px #0f1f3857}@keyframes float-card{0%,to{transform:rotate(3deg) translateY(0)}50%{transform:rotate(3deg) translateY(-6px)}}.sc-label{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);margin:0}.sc-course{font-size:.95rem;font-weight:700;color:var(--ink);line-height:1.3}.sc-course-lg{font-size:1.08rem}.sc-meta{font-size:.74rem;color:var(--muted)}.sc-chip{display:inline-block;align-self:flex-start;padding:3px 10px;background:#0f1f380f;color:var(--ink-soft);font-size:.7rem;font-weight:700;margin-top:4px;letter-spacing:.04em}.sc-chip-blue{background:var(--blue);color:#fff}.sc-live-row{display:flex;align-items:center;gap:6px;margin-bottom:2px}.sc-live-dot{width:6px;height:6px;background:#22c55e;flex-shrink:0;animation:pulse-dot 2s ease-in-out infinite}.sc-live-label{font-size:.68rem;font-weight:700;color:#16a34a;text-transform:uppercase;letter-spacing:.08em}.sc-footer-line{margin-top:10px;padding-top:10px;border-top:1px solid var(--border);font-size:.7rem;color:var(--muted)}.features{padding:104px 6vw;background:linear-gradient(180deg,#f6f9ff,#eaf1ff)}.how{padding:96px 6vw;background:var(--alice)}.feat-shell{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:.82fr 1.18fr;gap:60px;align-items:start}.feat-intro{position:relative}.feat-eyebrow{color:var(--blue);text-transform:uppercase;letter-spacing:.16em;font-weight:700;font-size:.78rem;margin:0 0 14px}.feat-intro h2{font-size:clamp(1.9rem,2.8vw,2.6rem);color:var(--ink);line-height:1.14;letter-spacing:-.025em;font-weight:800;margin:0 0 18px}.feat-lead{color:var(--ink-soft);line-height:1.72;font-size:1rem;margin:0 0 26px;max-width:42ch}.feat-cta{display:inline-flex;align-items:center;gap:9px;background:var(--blue);color:#fff;padding:13px 26px;border-radius:10px;font-weight:700;font-size:.94rem;text-decoration:none;transition:background .2s,box-shadow .2s,transform .2s}.feat-cta:hover{background:var(--blue-dark);box-shadow:0 14px 32px #4392f152;transform:translateY(-2px)}.feat-cta span{transition:transform .2s}.feat-cta:hover span{transform:translate(4px)}.feat-intro-photo{margin-top:30px;border-radius:18px;overflow:hidden;height:220px;box-shadow:0 24px 50px #0f1f3829}.feat-intro-photo img{width:100%;height:100%;object-fit:cover;display:block}.feat-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.feat-card{background:#fff;border:1px solid var(--border);border-radius:16px;padding:26px 24px;transition:transform .25s cubic-bezier(.22,1,.36,1),box-shadow .25s,border-color .25s}.feat-card:hover{transform:translateY(-5px);box-shadow:0 22px 44px #0f1f381f;border-color:#4392f166}.feat-card-icon{display:grid;place-items:center;width:46px;height:46px;border-radius:12px;background:var(--blue-light);color:var(--blue);margin-bottom:16px;transition:background .25s,color .25s}.feat-card:hover .feat-card-icon{background:var(--blue);color:#fff}.feat-card-icon svg{width:23px;height:23px}.feat-card h3{margin:0 0 8px;font-size:1.04rem;font-weight:700;color:var(--ink);letter-spacing:-.01em}.feat-card p{margin:0;font-size:.88rem;line-height:1.6;color:var(--muted)}@media (max-width: 920px){.feat-shell{grid-template-columns:1fr;gap:44px}.feat-intro-photo{height:200px}}@media (max-width: 560px){.feat-cards{grid-template-columns:1fr}}.section-title{max-width:640px;margin-bottom:52px}.section-title p{color:var(--blue);text-transform:uppercase;letter-spacing:.18em;font-size:.74rem;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:10px}.section-title p:before{content:"";display:block;width:24px;height:2px;background:var(--blue)}.section-title h2{font-size:clamp(2rem,3vw,2.8rem);color:var(--ink);line-height:1.15;letter-spacing:-.02em}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:24px;max-width:1200px}.feature-card{position:relative;background:var(--white);border:1px solid var(--border);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;transition:transform .28s cubic-bezier(.22,1,.36,1),box-shadow .28s;box-shadow:0 1px 2px #0f1f380a}.feature-card:hover{transform:translateY(-6px);box-shadow:0 22px 44px #0f1f3829}.feature-media{position:relative;height:168px;overflow:hidden}.feature-media img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .5s cubic-bezier(.22,1,.36,1)}.feature-card:hover .feature-media img{transform:scale(1.07)}.feature-media:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(180deg,#0f1f3800 45%,#0f1f3873)}.feature-body{padding:32px 26px 28px}.feature-card h3{margin:0 0 10px;font-size:1.08rem;font-weight:700;color:var(--ink)}.feature-card p{color:var(--muted);line-height:1.65;font-size:.9rem;margin:0}.icon-shell{position:absolute;left:20px;bottom:-22px;z-index:1;width:48px;height:48px;display:grid;place-items:center;background:var(--blue);color:#fff;border-radius:12px;box-shadow:0 8px 20px #1a5abf66}.icon-shell svg{width:22px;height:22px}.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1px;background:#4392f11f;border:1px solid rgba(67,146,241,.12);max-width:1200px}.step{background:var(--alice);padding:32px 28px;border-top:4px solid transparent;transition:border-color .25s,background .25s}.step:hover{border-top-color:var(--blue);background:var(--white)}.step-number{width:44px;height:44px;background:var(--blue);color:#fff;display:grid;place-items:center;font-size:.95rem;font-weight:800;margin-bottom:20px}.step h3{margin:0 0 10px;font-size:1.02rem;font-weight:700;color:var(--ink)}.step p{color:var(--muted);line-height:1.65;font-size:.9rem}.cta-banner{--cta-photo: none;padding:104px 6vw;background:#1a5abf;text-align:center;position:relative;overflow:hidden;isolation:isolate}.cta-banner:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-2;background-image:var(--cta-photo);background-size:cover;background-position:center;transform:scale(1.04)}.cta-banner:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:linear-gradient(135deg,#4392f1a3,#1a5abfbd),linear-gradient(0deg,#0f1f3873,#0f1f3800 60%)}.cta-banner h2{font-size:clamp(1.8rem,3vw,2.8rem);color:#fff;margin-bottom:14px;position:relative;text-shadow:0 2px 20px rgba(15,31,56,.4)}.cta-banner p{color:#ffffffd9;font-size:1.05rem;margin-bottom:36px;position:relative;text-shadow:0 1px 12px rgba(15,31,56,.4)}.cta-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;position:relative}.cta-primary{background:var(--cinnabar);color:var(--white);border:none;padding:13px 32px;font-weight:700;font-size:1rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px;transition:box-shadow .2s;box-shadow:0 8px 24px #0000002e}.cta-primary:hover{background:var(--cinnabar-dark);box-shadow:0 14px 36px #dc493a59}.cta-ghost{background:#ffffff1f;color:#fff;border:1.5px solid rgba(255,255,255,.4);padding:12px 28px;font-weight:600;font-size:1rem;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;gap:8px;transition:background .2s}.cta-ghost:hover{background:#ffffff38}.footer{background:#0f1f38;padding:0 6vw;position:relative;overflow:hidden;isolation:isolate}.footer-slides{position:absolute;top:0;right:0;bottom:0;left:0;z-index:-2}.footer-slide{position:absolute;top:0;right:0;bottom:0;left:0;background-size:cover;background-position:center;opacity:0;transition:opacity 1.3s ease}.footer-slide.is-active{opacity:1}.footer-slide--team{background-size:cover;background-position:center 45%;filter:brightness(1.3) contrast(1.08)}@media (max-width: 720px){.footer-slide--team{background-size:110% auto;background-position:center top;background-repeat:no-repeat;-webkit-mask-image:linear-gradient(to bottom,#000 calc(110vw / 1.9 * .55),transparent calc(110vw / 1.9));mask-image:linear-gradient(to bottom,#000 calc(110vw / 1.9 * .55),transparent calc(110vw / 1.9))}}.footer:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:linear-gradient(180deg,#0f1f3899,#0f1f38bd)}.footer-topbar,.footer-body,.footer-bottom{text-shadow:0 1px 8px rgba(15,31,56,.55)}.footer-topbar{display:flex;align-items:center;justify-content:space-between;padding:32px 0 24px;position:relative;z-index:1}.footer-brand{display:flex;align-items:center;gap:12px}.footer-logo{width:36px;height:36px;object-fit:contain;flex-shrink:0}.footer-brand-text{display:flex;flex-direction:column;gap:1px;line-height:1.2}.footer-brand-text strong{font-size:.88rem;font-weight:800;color:var(--ink);letter-spacing:-.01em}.footer-brand-text span{font-size:.74rem;color:var(--muted);font-weight:500}.footer-socials{display:flex;align-items:center;gap:8px}.footer-social-btn{width:34px;height:34px;border:1px solid rgba(15,31,56,.12);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--muted);text-decoration:none;transition:border-color .18s,color .18s,background .18s}.footer-social-btn:hover{border-color:var(--blue);color:var(--blue);background:#4392f10f}.footer-divider{height:1px;background:#0f1f3814;position:relative;z-index:1}.footer-body{display:flex;gap:48px;padding:40px 0;position:relative;z-index:1}.footer-contact{flex:0 0 260px}.footer-col-label{font-size:.7rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 16px}.footer-contact-card{display:flex;align-items:center;gap:14px;border:1px solid rgba(15,31,56,.1);padding:14px 16px;text-decoration:none;transition:border-color .18s,box-shadow .18s;background:#fafbfc}.footer-contact-card:hover{border-color:#4392f159;box-shadow:0 4px 16px #4392f114}.footer-contact-icon{width:36px;height:36px;background:#4392f114;border:1px solid rgba(67,146,241,.15);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--blue);flex-shrink:0}.footer-contact-card strong{display:block;font-size:.86rem;font-weight:700;color:var(--ink);line-height:1.2}.footer-contact-card span{display:block;font-size:.78rem;color:var(--muted);margin-top:2px}.footer-nav-cols{display:flex;gap:56px;flex:1;justify-content:flex-end}.footer-col{display:flex;flex-direction:column;gap:11px}.footer-col a{font-size:.85rem;color:var(--ink-soft);text-decoration:none;transition:color .18s;font-weight:400}.footer-col a:hover{color:var(--blue)}.footer-watermark{position:absolute;bottom:40px;left:50%;transform:translate(-50%);font-size:clamp(8rem,18vw,16rem);font-weight:900;color:#0f1f380a;letter-spacing:-.05em;white-space:nowrap;pointer-events:none;-webkit-user-select:none;user-select:none;line-height:1}.footer-bottom{display:flex;align-items:center;justify-content:space-between;padding:20px 0 28px;position:relative;z-index:1}.footer-bottom span{font-size:.78rem;color:var(--muted)}.footer-bottom-links{display:flex;gap:20px}.footer-bottom-links a{font-size:.78rem;color:var(--muted);text-decoration:none;transition:color .18s}.footer-bottom-links a:hover{color:var(--blue)}.footer-logo{background:#ffffffeb;border-radius:8px;padding:3px}.footer-brand-text strong{color:#fff}.footer-brand-text span{color:#ffffff9e}.footer-social-btn{border-color:#ffffff38;color:#ffffffbf}.footer-social-btn:hover{border-color:#8fc0ff;color:#fff;background:#ffffff1a}.footer-divider{background:#ffffff1f}.footer-col-label{color:#ffffff80}.footer-contact-card{border-color:#ffffff24;background:#ffffff0d;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px)}.footer-contact-card:hover{border-color:#8fc0ff8c;box-shadow:0 6px 20px #00000040}.footer-contact-icon{background:#4392f12e;border-color:#8fc0ff59;color:#8fc0ff}.footer-contact-card strong{color:#fff}.footer-contact-card span{color:#ffffff9e}.footer-credit{margin-top:22px}.footer-credit span{display:block;margin-bottom:3px;font-size:.72rem;color:#ffffff80}.footer-credit strong{display:block;font-size:.82rem;font-weight:600;line-height:1.35;color:#ffffffd1}.footer-col a{color:#ffffffb8}.footer-col a:hover{color:#8fc0ff}.footer-watermark{color:#ffffff0d}.footer-bottom span,.footer-bottom-links a{color:#ffffff80}.footer-bottom-links a:hover{color:#8fc0ff}.tt-preview-section{padding:104px 6vw 96px;margin-top:0;position:relative;z-index:2;background:#fff}.ttp-grid{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:1.05fr .95fr;gap:72px;align-items:center}.ttp-visual{position:relative;padding:30px 24px}.ttp-ring{position:absolute;border-radius:50%;pointer-events:none;z-index:0}.ttp-ring--blue{width:300px;height:300px;border:2px solid rgba(67,146,241,.28);top:-34px;left:-46px}.ttp-ring--coral{width:200px;height:200px;border:2px solid rgba(220,73,58,.3);bottom:-30px;right:6px}.ttp-visual .tt-preview-frame{position:relative;z-index:1;margin:0}.ttp-badge{position:absolute;top:8px;right:0;z-index:2;display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid rgba(67,146,241,.25);color:var(--blue-dark);font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:7px 14px;border-radius:999px;box-shadow:0 10px 24px #0f1f381f}.ttp-photo{position:absolute;bottom:-26px;left:-18px;z-index:2;width:168px;height:116px;object-fit:cover;border-radius:12px;border:4px solid #fff;box-shadow:0 18px 40px #0f1f3838}.ttp-eyebrow{color:var(--blue);text-transform:uppercase;letter-spacing:.16em;font-weight:700;font-size:.78rem;margin:0 0 14px}.ttp-copy h2{font-size:clamp(1.9rem,3vw,2.7rem);color:var(--ink);letter-spacing:-.025em;line-height:1.12;margin:0 0 18px;font-weight:800}.ttp-lead{color:var(--ink-soft);line-height:1.72;font-size:1rem;max-width:46ch;margin:0 0 26px}.ttp-checks{list-style:none;padding:0;margin:0 0 32px;display:flex;flex-direction:column;gap:14px}.ttp-checks li{display:flex;align-items:center;gap:12px;font-weight:600;color:var(--ink);font-size:.96rem}.ttp-checks svg{flex-shrink:0;width:16px;height:16px;color:#16a34a;background:#22c55e1f;border-radius:50%;padding:5px;box-sizing:content-box}.ttp-btn{display:inline-flex;align-items:center;gap:9px;background:var(--blue);color:#fff;padding:13px 28px;border-radius:10px;font-weight:700;font-size:.95rem;text-decoration:none;transition:background .2s,box-shadow .2s,transform .2s}.ttp-btn:hover{background:var(--blue-dark);box-shadow:0 14px 32px #4392f157;transform:translateY(-2px)}.ttp-btn span{transition:transform .2s}.ttp-btn:hover span{transform:translate(4px)}.ttp-visual{min-height:480px;display:flex;align-items:center;justify-content:center}.ttp-visual .hero-card-stack{position:relative;z-index:2;margin:0}.ttp-pic{position:absolute;z-index:1;object-fit:cover;border:5px solid #fff;box-shadow:0 16px 40px #0f1f3833}.ttp-pic--1{width:172px;height:132px;top:2px;left:-14px;border-radius:14px}.ttp-pic--2{width:150px;height:150px;bottom:6px;right:-10px;border-radius:50%}.stats-band{padding:0 6vw 96px;background:#fff;position:relative;z-index:2}.stats-band-inner{max-width:1180px;margin:0 auto;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border:1px solid var(--border);border-radius:16px;overflow:hidden}.sb-item{display:flex;align-items:center;gap:16px;padding:30px 28px;background:#fbfcfe}.sb-icon{flex-shrink:0;width:46px;height:46px;display:grid;place-items:center;border-radius:12px;background:var(--blue-light);color:var(--blue)}.sb-icon svg{width:22px;height:22px}.sb-text strong{display:block;font-size:1.7rem;font-weight:800;color:var(--ink);letter-spacing:-.02em;line-height:1}.sb-text span{font-size:.8rem;color:var(--muted);font-weight:500}@media (max-width: 960px){.ttp-grid{grid-template-columns:1fr;gap:72px}.ttp-visual{order:2}.stats-band-inner{grid-template-columns:repeat(2,1fr)}}@media (max-width: 560px){.stats-band-inner{grid-template-columns:1fr}}.tt-preview-badge-center{text-align:center;margin:0 0 20px}.tt-preview-meta-row{display:flex;align-items:center;justify-content:flex-start;gap:24px;flex-wrap:wrap}.tt-preview-stats{display:flex;align-items:center;gap:0;flex-wrap:wrap}.tt-stat{display:flex;flex-direction:column;gap:2px;padding:0 20px}.tt-stat strong{font-size:1.25rem;font-weight:800;color:var(--ink);letter-spacing:-.02em;line-height:1}.tt-stat span{font-size:.74rem;color:var(--muted);font-weight:500;white-space:nowrap}.tt-stat-divider{width:1px;height:32px;background:#0f1f381a;flex-shrink:0}.tt-preview-badge{display:inline-flex;align-items:center;gap:7px;background:var(--alice);border:1px solid rgba(67,146,241,.25);color:var(--blue-dark);font-size:.74rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;padding:5px 14px;margin-bottom:20px}.tt-preview-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 3px #22c55e33;animation:tt-pulse 2s ease-in-out infinite;flex-shrink:0}@keyframes tt-pulse{0%,to{box-shadow:0 0 0 3px #22c55e33}50%{box-shadow:0 0 0 6px #22c55e0f}}.tt-preview-title{font-size:clamp(1.6rem,2.5vw,2.2rem);font-weight:800;color:var(--ink);letter-spacing:-.025em;line-height:1.18;margin:0 0 14px}.tt-preview-sub{font-size:.97rem;color:var(--muted);line-height:1.6;margin:0}.tt-preview-view-link{pointer-events:auto;color:var(--cinnabar);font-size:.92rem;font-weight:700;text-decoration:none;letter-spacing:-.01em;animation:tt-link-float 3s ease-in-out infinite;transition:color .18s;position:relative;z-index:2}.tt-preview-view-link:after{content:"";display:block;height:1.5px;background:var(--cinnabar);transform:scaleX(0);transform-origin:left;transition:transform .22s ease;margin-top:2px}.tt-preview-view-link:hover{color:var(--cinnabar-dark);text-decoration:none;animation-play-state:paused}.tt-preview-view-link:hover:after{transform:scaleX(1)}@keyframes tt-link-float{0%,to{transform:translateY(0)}50%{transform:translateY(-5px)}}.tt-preview-frame{margin:0;border:1px solid var(--border);box-shadow:0 24px 80px #0f1f381a,0 2px 8px #0f1f380d;overflow:hidden}.tt-preview-chrome{display:flex;align-items:center;gap:7px;padding:11px 16px;background:#f0f2f5;border-bottom:1px solid var(--border)}.tt-chrome-dot{width:11px;height:11px;border-radius:50%;flex-shrink:0}.tt-chrome-url{margin-left:10px;font-size:.74rem;color:var(--muted);font-family:var(--font-mono, monospace);background:#fff;border:1px solid var(--border);padding:3px 12px;flex:1;max-width:380px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tt-preview-grid-wrap{position:relative;overflow-x:auto;background:#fff;max-height:480px;overflow-y:hidden}.tt-preview-fade{position:absolute;bottom:0;left:0;right:0;height:160px;background:linear-gradient(to bottom,transparent 0%,rgba(255,255,255,.85) 45%,rgba(255,255,255,.98) 100%);pointer-events:none;display:flex;align-items:flex-end;justify-content:center;padding-bottom:28px}.tt-preview-grid{width:100%;border-collapse:collapse;min-width:700px}.tt-pg-day-head{padding:12px 10px;font-size:.78rem;font-weight:700;color:var(--ink-soft);text-align:center;border-bottom:2px solid var(--border);border-right:1px solid var(--border);background:#fafbfc;letter-spacing:.01em;white-space:nowrap;width:18%}.tt-pg-time-head{width:72px;border-bottom:2px solid var(--border);background:#fafbfc}.tt-pg-time{padding:14px 12px 14px 16px;font-size:.76rem;font-weight:700;color:var(--muted);font-family:var(--font-mono, monospace);border-right:1px solid var(--border);border-bottom:1px solid var(--border);vertical-align:top;white-space:nowrap;background:#fafbfc}.tt-preview-grid tbody tr td{border-bottom:1px solid var(--border);border-right:1px solid var(--border);padding:8px;vertical-align:top;min-width:140px}.tt-preview-grid tbody tr:last-child td{border-bottom:none}.tt-pg-cell{padding:10px 12px;height:100%;display:flex;flex-direction:column;gap:4px;border-left:3px solid transparent}.tt-pg-cell strong{font-size:.78rem;font-weight:700;line-height:1.2;display:block}.tt-pg-cell span{font-size:.7rem;font-weight:400;opacity:.75;display:block;font-family:var(--font-mono, monospace)}.tt-pg-blue{background:#4392f11a;border-left-color:#4392f1;color:#1a5abf}.tt-pg-green{background:#22c55e1a;border-left-color:#16a34a;color:#14532d}.tt-pg-amber{background:#f59e0b1a;border-left-color:#d97706;color:#92400e}.tt-pg-purple{background:#8b5cf61a;border-left-color:#7c3aed;color:#4c1d95}.tt-pg-red{background:#dc493a1a;border-left-color:#dc493a;color:#7f1d1d}@media (max-width: 1024px){.hero-content{grid-template-columns:1fr;max-width:600px;margin:0 auto;text-align:center}.hero-actions,.hero-metrics,.hero-badge{justify-content:center}.lead{margin:0 auto}.hero-card-stack{max-width:440px;margin:0 auto;height:380px}.nav-links{display:none}}@media (max-width: 720px){.topbar{flex-wrap:wrap;padding:14px 4vw;gap:10px}.hero,.features,.how,.cta-banner{padding:64px 4vw}.tt-preview-section{padding:72px 4vw 64px}.stats-band{padding:0 4vw 72px}.hero-actions{flex-direction:column;align-items:center}.hero-actions .primary-btn,.hero-actions .secondary-btn{width:100%;max-width:320px}.footer{padding:0 4vw}.footer-body{flex-direction:column;gap:32px}.footer-contact{flex:none}.footer-nav-cols{justify-content:flex-start;gap:32px;flex-wrap:wrap}.footer-bottom{flex-direction:column;align-items:flex-start;gap:12px}.footer-watermark{font-size:clamp(5rem,22vw,8rem)}}@keyframes lp-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@keyframes lp-shine{0%{left:-150%}60%,to{left:150%}}@keyframes lp-pop{0%{transform:scale(.7);opacity:0}60%{transform:scale(1.12);opacity:1}to{transform:scale(1)}}@keyframes lp-grid-drift{0%{background-position:0 0}to{background-position:52px 52px}}@keyframes lp-glow-pulse{0%,to{opacity:.35;transform:translate(-50%,-50%) scale(1)}50%{opacity:.6;transform:translate(-50%,-50%) scale(1.18)}}@keyframes lp-slide-down{0%{opacity:0;transform:translateY(-100%)}to{opacity:1;transform:translateY(0)}}@keyframes lp-bob{0%,to{transform:translateY(0)}50%{transform:translateY(-4px)}}.topbar{animation:lp-slide-down .65s cubic-bezier(.22,1,.36,1) both}.hero-stat{transition:transform .3s cubic-bezier(.22,1,.36,1)}.hero-stat:hover{transform:translateY(-4px)}.hero-stat strong{transition:color .3s ease}.hero-stat:hover strong{color:var(--blue)}.primary-btn,.cta-primary,.hero-explore-btn{position:relative;overflow:hidden}.primary-btn:after,.cta-primary:after,.hero-explore-btn:after{content:"";position:absolute;top:0;left:-150%;width:55%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.45),transparent);transform:skew(-20deg);pointer-events:none}.primary-btn:hover:after,.cta-primary:hover:after,.hero-explore-btn:hover:after{animation:lp-shine .9s ease}.primary-btn:active,.cta-primary:active,.cta-ghost:active{transform:translateY(1px)}.section-title p:before{width:0;transition:width .6s ease .2s}.section-title.revealed p:before{width:24px}.feature-card{position:relative;overflow:hidden;z-index:0;transition:border-color .25s,background .25s,transform .4s cubic-bezier(.22,1,.36,1),box-shadow .4s ease}.feature-card:before{content:"";position:absolute;top:0;left:-150%;width:55%;height:100%;background:linear-gradient(100deg,transparent,rgba(67,146,241,.1),transparent);transform:skew(-20deg);pointer-events:none;z-index:1}.feature-card:hover{transform:translateY(-8px);z-index:2;box-shadow:0 22px 48px #0f1f381f}.feature-card:hover:before{animation:lp-shine .85s ease}.icon-shell{transition:transform .4s cubic-bezier(.34,1.56,.64,1),box-shadow .3s ease,background .25s}.feature-card:hover .icon-shell{transform:translateY(-3px) scale(1.1) rotate(-5deg);box-shadow:0 12px 24px #4392f14d}.feature-card:hover .icon-shell svg{animation:lp-pop .5s ease}.cta-banner:before{animation:lp-grid-drift 7s linear infinite}.cta-banner:after{content:"";position:absolute;top:50%;left:50%;width:60%;height:160%;background:radial-gradient(circle,rgba(255,255,255,.18) 0%,transparent 65%);transform:translate(-50%,-50%);pointer-events:none;animation:lp-glow-pulse 6s ease-in-out infinite}.cta-banner>*{position:relative;z-index:1}.hero-card-stack:hover .sc-card{transition:transform .4s cubic-bezier(.22,1,.36,1)}.hero-card-stack:hover .sc-white{transform:translateY(-6px) rotate(var(--rot, 0deg)) scale(1.03)}.sc-live-dot{animation:pulse-dot 1.6s ease-in-out infinite}@media (prefers-reduced-motion: reduce){.topbar,.cta-banner:before,.cta-banner:after,.sc-live-dot,.feature-card:hover:before,.primary-btn:hover:after,.cta-primary:hover:after,.hero-explore-btn:hover:after{animation:none!important}.feature-card:hover{transform:none}}@keyframes lp-cell-pop{0%{opacity:0;transform:translateY(12px) scale(.85)}60%{opacity:1;transform:translateY(0) scale(1.05)}to{opacity:1;transform:scale(1)}}@keyframes lp-scan{0%{transform:translateY(-100px);opacity:0}6%{opacity:.85}30%{transform:translateY(520px);opacity:0}to{transform:translateY(520px);opacity:0}}.tt-preview-grid tbody tr:nth-child(1){--row: 0}.tt-preview-grid tbody tr:nth-child(2){--row: 1}.tt-preview-grid tbody tr:nth-child(3){--row: 2}.tt-preview-grid tbody tr:nth-child(4){--row: 3}.tt-preview-grid tbody tr:nth-child(5){--row: 4}.tt-preview-grid tbody tr:nth-child(6){--row: 5}.tt-preview-grid tbody tr:nth-child(7){--row: 6}.tt-preview-grid tbody tr:nth-child(8){--row: 7}.tt-preview-grid td:nth-child(2){--col: 0}.tt-preview-grid td:nth-child(3){--col: 1}.tt-preview-grid td:nth-child(4){--col: 2}.tt-preview-grid td:nth-child(5){--col: 3}.tt-preview-grid td:nth-child(6){--col: 4}.tt-preview-grid tbody tr{opacity:1}.reveal-frame.revealed .tt-preview-grid tbody tr{animation:none}.tt-pg-cell{transition:transform .2s ease,box-shadow .2s ease,border-left-width .15s ease}.reveal-frame:not(.revealed) .tt-pg-cell{opacity:0}.reveal-frame.revealed .tt-pg-cell{animation:lp-cell-pop .5s cubic-bezier(.22,1,.36,1) backwards;animation-delay:calc((var(--row, 0) + var(--col, 0)) * .06s)}.tt-pg-cell:hover{transform:translateY(-3px) scale(1.03);box-shadow:0 10px 22px #0f1f3824;border-left-width:5px;position:relative;z-index:2}.tt-pg-day-head{transition:opacity .5s ease,transform .5s ease}.reveal-frame:not(.revealed) .tt-pg-day-head{opacity:0;transform:translateY(-7px)}.tt-pg-day-head:nth-child(2){transition-delay:.05s}.tt-pg-day-head:nth-child(3){transition-delay:.1s}.tt-pg-day-head:nth-child(4){transition-delay:.15s}.tt-pg-day-head:nth-child(5){transition-delay:.2s}.tt-pg-day-head:nth-child(6){transition-delay:.25s}.reveal-frame.revealed .tt-chrome-dot{animation:lp-pop .4s ease backwards}.reveal-frame.revealed .tt-chrome-dot:nth-child(1){animation-delay:.1s}.reveal-frame.revealed .tt-chrome-dot:nth-child(2){animation-delay:.18s}.reveal-frame.revealed .tt-chrome-dot:nth-child(3){animation-delay:.26s}.tt-preview-grid-wrap{position:relative}.reveal-frame.revealed .tt-preview-grid-wrap:after{content:"";position:absolute;left:0;right:0;top:0;height:90px;background:linear-gradient(to bottom,transparent,rgba(67,146,241,.12),transparent);pointer-events:none;z-index:3;animation:lp-scan 6s ease-in-out 1.4s infinite}.tt-preview-frame{transition:box-shadow .4s ease}.tt-preview-frame:hover{box-shadow:0 32px 90px #0f1f3829,0 0 0 1px #4392f140}@media (prefers-reduced-motion: reduce){.reveal-frame.revealed .tt-pg-cell,.reveal-frame.revealed .tt-chrome-dot,.reveal-frame.revealed .tt-preview-grid-wrap:after{animation:none!important}.reveal-frame:not(.revealed) .tt-pg-cell{opacity:1}.reveal-frame:not(.revealed) .tt-pg-day-head{opacity:1;transform:none}.tt-pg-cell:hover{transform:none}}@keyframes lp-icon-pop{0%{transform:scale(1) rotate(0)}45%{transform:scale(1.25) rotate(-12deg)}to{transform:scale(1.12) rotate(-6deg)}}@keyframes lp-float-soft{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.hfb-item{transition:transform .32s cubic-bezier(.22,1,.36,1),background .3s}.hfb-item:hover{transform:translateY(-6px);background:#4392f10f}.hfb-icon{transition:transform .4s cubic-bezier(.34,1.56,.64,1),background .3s,color .3s,box-shadow .3s}.hfb-item:hover .hfb-icon{background:var(--blue);color:#fff;transform:rotate(-8deg) scale(1.14);box-shadow:0 12px 26px #4392f173}.hfb-item:hover .hfb-stage{color:var(--blue-dark)}.feat-card{transition:transform .34s cubic-bezier(.34,1.56,.64,1),box-shadow .34s ease,border-color .34s ease}.feat-card:hover{transform:translateY(-10px) scale(1.025);box-shadow:0 30px 60px #1a5abf38;border-color:#4392f18c}.feat-card:hover .feat-card-icon{animation:lp-icon-pop .5s cubic-bezier(.34,1.56,.64,1) forwards;box-shadow:0 12px 26px #4392f180}.sb-item{transition:transform .3s cubic-bezier(.22,1,.36,1),background .3s}.sb-item:hover{transform:translateY(-6px);background:#fff}.sb-icon{transition:transform .45s cubic-bezier(.34,1.56,.64,1),background .3s,color .3s}.sb-item:hover .sb-icon{background:var(--blue);color:#fff;transform:rotate(360deg) scale(1.1)}.sb-text strong{transition:color .3s,transform .3s;display:inline-block}.sb-item:hover .sb-text strong{color:var(--blue);transform:scale(1.08)}.ttp-visual .sc-card{transition:transform .35s cubic-bezier(.34,1.56,.64,1),box-shadow .35s}.ttp-visual .hero-card-stack:hover .sc-card{filter:saturate(.85);opacity:.92}.ttp-visual .hero-card-stack .sc-card:hover{transform:translateY(-12px) rotate(0) scale(1.1)!important;box-shadow:0 34px 70px #0f1f3866;filter:none!important;opacity:1!important;z-index:9}.ttp-btn,.feat-cta{position:relative;overflow:hidden}.ttp-btn:after,.feat-cta:after{content:"";position:absolute;top:0;left:-150%;width:55%;height:100%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.4),transparent);transform:skew(-18deg);pointer-events:none}.ttp-btn:hover:after,.feat-cta:hover:after{animation:lp-shine .9s ease}.ttp-btn:hover,.feat-cta:hover,.primary-btn:hover,.cta-primary:hover,.cta-ghost:hover{transform:translateY(-3px) scale(1.03)}.primary-btn,.cta-primary,.cta-ghost{transition:transform .25s cubic-bezier(.34,1.56,.64,1),background .2s,box-shadow .2s}.footer-social-btn{transition:border-color .18s,color .18s,background .18s,transform .35s cubic-bezier(.34,1.56,.64,1)}.footer-social-btn:hover{transform:translateY(-4px) rotate(-8deg) scale(1.12)}.footer-col a{transition:color .18s,transform .2s,padding-left .2s;display:inline-block}.footer-col a:hover{transform:translate(4px);padding-left:2px}.brand-logo{transition:transform .5s cubic-bezier(.34,1.56,.64,1)}.brand:hover .brand-logo{transform:rotate(-10deg) scale(1.08)}.feat-intro h2,.ttp-copy h2{transition:transform .4s ease}@media (prefers-reduced-motion: reduce){.reveal,.reveal-frame{transition-duration:1ms!important;filter:none!important;transform:none!important}.feat-card:hover,.sb-item:hover,.hfb-item:hover,.ttp-visual .hero-card-stack .sc-card:hover,.primary-btn:hover,.cta-primary:hover,.cta-ghost:hover,.ttp-btn:hover,.feat-cta:hover,.footer-social-btn:hover,.brand:hover .brand-logo{transform:none!important;animation:none!important}.feat-card:hover .feat-card-icon,.sb-item:hover .sb-icon{animation:none!important;transform:none!important}}.hero-inner{z-index:2}.hero-scroll{position:absolute;z-index:3;bottom:124px;left:50%;display:flex;flex-direction:column;align-items:center;gap:9px;color:#ffffffd9;text-decoration:none;font-size:.66rem;text-transform:uppercase;letter-spacing:.24em;font-weight:700;animation:hero-bob 2.2s ease-in-out infinite}.hero-scroll-mouse{width:25px;height:40px;border:2px solid rgba(255,255,255,.65);border-radius:13px;display:flex;justify-content:center;padding-top:6px}.hero-scroll-wheel{width:4px;height:8px;background:#fff;border-radius:2px;animation:hero-wheel 1.6s ease-in-out infinite}@keyframes hero-wheel{0%{opacity:0;transform:translateY(-3px)}35%{opacity:1}75%,to{opacity:0;transform:translateY(9px)}}@keyframes hero-bob{0%,to{transform:translate(-50%) translateY(0)}50%{transform:translate(-50%) translateY(7px)}}@media (max-width: 1040px){.hero-scroll{display:none}}@media (prefers-reduced-motion: reduce){.hero-scroll,.hero-scroll-wheel{animation:none!important}.hero-content--center>*{animation-duration:1ms!important}}.sb-text{display:grid;justify-items:start;gap:6px}@media (max-width: 960px){html body.landing-body .ttp-grid{grid-template-columns:minmax(0,1fr)}html body.landing-body .ttp-grid>*{min-width:0}}@media (max-width: 720px){html body.landing-body .hero-content h1{white-space:normal;font-size:clamp(1.75rem,8.6vw,2.5rem);text-wrap:balance}html body.landing-body .tt-preview-section{overflow-x:clip}html body.landing-body .ttp-grid{gap:40px}}@media (max-width: 560px){html body.landing-body .ttp-visual{min-height:380px;padding:18px 0}html body.landing-body .ttp-visual .hero-card-stack{transform:scale(.86);transform-origin:center top}html body.landing-body .ttp-pic--1{width:128px;height:98px;left:0}html body.landing-body .ttp-pic--2{width:112px;height:112px;right:0}html body.landing-body .sb-item{padding:22px 20px}}.tb-short{display:none}@media (max-width: 600px){html body.landing-body .topbar{flex-wrap:nowrap;padding:10px 16px;gap:10px}html body.landing-body .brand{gap:10px;min-width:0}html body.landing-body .brand-logo{width:36px;height:36px}html body.landing-body .brand-text{min-width:0}html body.landing-body .brand-text strong{max-width:none;overflow:visible;text-overflow:clip;font-size:.86rem;line-height:1.2;white-space:nowrap}html body.landing-body .brand-text span{font-size:.6rem;letter-spacing:.16em}html body.landing-body .top-actions .ghost-btn{display:none}html body.landing-body .top-actions .primary-btn{padding:9px 16px;font-size:.85rem;flex-shrink:0}.tb-long{display:none}.tb-short{display:inline}html body.landing-body .hero{min-height:66svh;padding:0}html body.landing-body .hero-inner{padding:40px 20px 104px}html body.landing-body .hero-content h1{font-size:clamp(1.9rem,9vw,2.4rem)}html body.landing-body .hero-ctas{flex-direction:column;gap:10px;width:100%;max-width:320px;margin:0 auto}html body.landing-body .hero-ctas>*{width:100%;justify-content:center;text-align:center}html body.landing-body .hero-feature-bar{width:calc(100% - 32px);margin-top:-72px;border-radius:16px!important}html body.landing-body .hfb-item{padding:16px 18px;gap:14px;border-right:none;border-bottom:1px solid rgba(15,31,56,.08)}html body.landing-body .hfb-item:last-child{border-bottom:none}html body.landing-body .hfb-icon{width:40px;height:40px;border-radius:10px!important}html body.landing-body .hfb-icon svg{width:20px;height:20px}html body.landing-body .hfb-text h3{font-size:.98rem;margin-bottom:4px}html body.landing-body .hfb-text p{font-size:.84rem;line-height:1.5;margin-bottom:8px}html body.landing-body .tt-preview-section{padding:48px 20px 40px}html body.landing-body .ttp-grid{gap:28px}html body.landing-body .features,.how{padding:48px 16px}html body.landing-body .cta-banner{padding:48px 20px}html body.landing-body .stats-band{padding:0 16px 48px}html body.landing-body .feat-shell{gap:28px}html body.landing-body .feat-intro-photo{height:180px}html body.landing-body .stats-band-inner{grid-template-columns:1fr 1fr;border-radius:16px!important}html body.landing-body .sb-item{flex-direction:column;align-items:flex-start;gap:10px;padding:16px}html body.landing-body .sb-icon{width:36px;height:36px;border-radius:10px!important}html body.landing-body .sb-icon svg{width:18px;height:18px}html body.landing-body .sb-text strong{font-size:1.35rem}html body.landing-body .sb-text span{font-size:.76rem}html body.landing-body .feat-cards{grid-template-columns:1fr;gap:10px}html body.landing-body .feat-card{display:grid;grid-template-columns:40px minmax(0,1fr);column-gap:14px;align-items:start;padding:16px;border-radius:14px!important}html body.landing-body .feat-card-icon{grid-row:span 2;width:40px;height:40px;margin:0;border-radius:10px!important}html body.landing-body .feat-card-icon svg{width:20px;height:20px}html body.landing-body .feat-card h3{margin:0 0 4px;font-size:.98rem}html body.landing-body .feat-card p{margin:0;font-size:.84rem;line-height:1.5}html body.landing-body .cta-banner h2{font-size:1.6rem}html body.landing-body .cta-actions{flex-direction:column;align-items:stretch;gap:10px}html body.landing-body .cta-actions>*{justify-content:center;text-align:center}}@media (hover: none){html body.landing-body .hfb-item:hover,.feat-card:hover,.sb-item:hover,html body.landing-body .hfb-item:hover .hfb-icon{transform:none;box-shadow:none}html body.landing-body .feat-card:hover .feat-card-icon{animation:none}}.hero-install-btn{display:inline-flex;align-items:center;gap:8px;margin:18px auto 0;padding:8px 16px;border:1px solid rgba(255,255,255,.35);border-radius:999px!important;background:#0f1f3859;color:#fff;font:inherit;font-size:.84rem;font-weight:600;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.hero-install-btn:hover{background:#0f1f388c}.login-body{margin:0;padding:0;height:100vh;overflow:hidden;background:#1a5abf}.auth-shell{display:grid;grid-template-columns:1.5fr .85fr;height:100vh;overflow:hidden}.auth-panel{--auth-photo: none;background:#0f1f38;color:#fff;display:flex;flex-direction:column;padding:48px 52px;position:relative;overflow:hidden;border-right:none}@keyframes auth-pan{0%{transform:scale(1.08) translateZ(0)}to{transform:scale(1.15) translate3d(-1.5%,-1.5%,0)}}.auth-panel:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background-image:var(--auth-photo);background-size:cover;background-position:center;animation:auth-pan 28s ease-in-out infinite alternate;pointer-events:none;z-index:0}.auth-panel:before{content:none}.auth-panel-brand{display:flex;align-items:center;gap:12px;position:relative;z-index:2}.auth-panel-logo{width:44px;height:44px;object-fit:contain;background:#ffffff24;border:1px solid rgba(255,255,255,.28);border-radius:12px;padding:5px;flex-shrink:0;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.auth-panel-name{font-size:.88rem;font-weight:700;color:#fff;line-height:1.2;letter-spacing:-.01em;text-shadow:0 1px 6px rgba(15,31,56,.65)}.auth-panel-body{flex:1;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2}.auth-panel-headline{font-size:2.4rem;font-weight:800;line-height:1.12;letter-spacing:-.03em;color:#fff;margin:0 0 18px;text-shadow:0 2px 14px rgba(15,31,56,.75),0 1px 3px rgba(15,31,56,.6)}.auth-panel-sub{font-size:.95rem;color:#ffffffd1;line-height:1.7;margin:0 0 32px;font-weight:400;max-width:42ch;text-shadow:0 1px 10px rgba(15,31,56,.7),0 1px 2px rgba(15,31,56,.55)}.auth-panel-copy{font-size:.74rem;color:#ffffffc7;position:relative;z-index:2;margin:0;text-shadow:0 1px 5px rgba(15,31,56,.6)}.auth-form-area{background:#f2f4f8;display:flex;align-items:center;justify-content:center;overflow-y:auto;padding:40px 24px}.auth-form-box{width:min(400px,100%);display:flex;flex-direction:column;gap:0}.auth-form-head{margin-bottom:28px}.auth-form-title{font-size:1.65rem;font-weight:800;color:#0f1f38;letter-spacing:-.025em;margin:0 0 6px;line-height:1.15}.auth-form-sub{font-size:.88rem;color:#6a7a96;margin:0;line-height:1.5}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-field{display:flex;flex-direction:column;gap:7px;font-size:.84rem;font-weight:600;color:#2d3f5a}.auth-field input{border:1.5px solid rgba(15,31,56,.14)!important;padding:12px 14px!important;font-size:.94rem!important;background:#fff!important;color:#0f1f38!important;font-family:inherit!important;width:100%!important;box-shadow:none!important;outline:none!important;transition:border-color .18s,box-shadow .18s!important}.auth-field input::placeholder{color:#b0bac8!important;font-weight:400!important}.auth-field input:focus{border-color:#4392f1!important;box-shadow:0 0 0 3px #4392f121!important;background:#fff!important;outline:none!important}.auth-pw-wrap{position:relative;display:flex;align-items:center}.auth-pw-wrap input{padding-right:46px!important}.auth-pw-toggle{position:absolute!important;right:13px!important;background:none!important;border:none!important;cursor:pointer!important;color:#9aabb8!important;width:20px!important;height:20px!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;box-shadow:none!important;transition:color .18s!important}.auth-pw-toggle:hover{color:#4392f1!important;background:none!important}.auth-pw-toggle svg{width:18px;height:18px}.auth-error{background:#dc493a12!important;border:1px solid rgba(220,73,58,.22)!important;color:#b83629!important;padding:11px 14px!important;font-size:.85rem!important;margin:0!important}.auth-submit{display:flex!important;align-items:center!important;justify-content:center!important;gap:8px!important;width:100%!important;border:none!important;padding:13px 20px!important;background:linear-gradient(135deg,#4392f1,#2b74d4)!important;font-weight:700!important;font-size:.95rem!important;color:#fff!important;cursor:pointer!important;margin-top:4px!important;transition:all .22s!important;font-family:inherit!important;letter-spacing:.01em!important;box-shadow:0 8px 24px #4392f152!important}.auth-submit:hover:not(:disabled){background:linear-gradient(135deg,#2b74d4,#1a5abf)!important;box-shadow:0 12px 32px #4392f16b!important;transform:translateY(-1px)!important}.auth-submit:disabled{opacity:.6!important;cursor:not-allowed!important}.auth-form-footer{display:flex;align-items:center;justify-content:space-between;margin-top:20px}.auth-back-link{background:none!important;border:none!important;padding:0!important;cursor:pointer!important;font-size:.82rem!important;color:#6a7a96!important;font-family:inherit!important;box-shadow:none!important;transition:color .18s!important}.auth-back-link:hover{color:#4392f1!important;background:none!important}.auth-live-badge{display:flex;align-items:center;gap:5px;font-size:.78rem;color:#6a7a96;font-family:var(--font-mono, monospace)}.auth-live-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 2px #22c55e33;animation:auth-pulse 2s ease-in-out infinite}@keyframes auth-pulse{0%,to{box-shadow:0 0 0 2px #22c55e33}50%{box-shadow:0 0 0 5px #22c55e14}}.auth-form-box--wide{width:min(720px,100%)}.auth-form-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.auth-field-error{font-size:.78rem;color:#b83629;font-weight:500;margin-top:2px}.auth-field-opt{font-weight:400;color:#6a7a96;font-size:.8rem}.auth-prog-wrap{position:relative}.auth-prog-dropdown{position:absolute;top:calc(100% + 4px);left:0;right:0;background:#fff;border:1.5px solid rgba(67,146,241,.3);box-shadow:0 8px 24px #0f1f381f;z-index:200;max-height:220px;overflow-y:auto}.auth-prog-option{padding:10px 14px;cursor:pointer;border-bottom:1px solid rgba(15,31,56,.06);transition:background .14s}.auth-prog-option:last-child{border-bottom:none}.auth-prog-option:hover{background:#f0f5ff}.auth-prog-option--empty{color:#6a7a96;cursor:default;font-size:.85rem}.auth-prog-name{display:block;font-size:.86rem;font-weight:600;color:#0f1f38}.auth-prog-meta{display:block;font-size:.75rem;color:#6a7a96;margin-top:2px;font-family:var(--font-mono, monospace)}.auth-prog-selected{font-size:.8rem;color:#2b74d4;font-weight:600;margin-top:4px;display:block}.auth-panel-role-switch{margin-top:32px;padding-top:20px;border-top:1px solid rgba(255,255,255,.08);display:flex;flex-direction:column;gap:6px}.auth-panel-role-switch span{font-size:.78rem;color:#fff6}.auth-role-link{font-size:.82rem;color:#4392f1;text-decoration:none;font-weight:600;transition:color .18s}.auth-role-link:hover{color:#7bb6f7}@media (max-width: 820px){.auth-form-row{grid-template-columns:1fr}.auth-form-box--wide{width:min(460px,100%)}}.auth-signup-row{margin-top:22px;padding-top:18px;border-top:1px solid rgba(15,31,56,.08);font-size:.85rem;color:#6a7a96;text-align:center;display:flex;flex-direction:column;gap:6px}.auth-signup-row a{color:#4392f1;text-decoration:none;font-weight:700;margin-left:5px}.auth-signup-row a:hover{color:#2b74d4}@media (max-width: 820px){.auth-shell{grid-template-columns:1fr;grid-template-rows:auto 1fr;height:auto;min-height:100vh;overflow:auto}.login-body{height:auto;overflow:auto}.auth-panel{padding:28px 28px 32px;min-height:320px}.auth-panel-body{flex:unset;margin-top:28px}.auth-panel-headline{font-size:1.7rem}.auth-form-area{padding:40px 24px 48px;min-height:unset;align-items:flex-start}}@media (max-width: 480px){.auth-panel{padding:24px 20px 28px}.auth-form-area{padding:32px 20px 40px}}.auth-form-area{overflow-x:hidden}.auth-wiz-rail{display:flex;align-items:center;gap:0;list-style:none;margin:0 0 24px;padding:0}.auth-wiz-node{display:flex;align-items:center;flex:1}.auth-wiz-node+.auth-wiz-node:before{content:"";height:2px;flex:1;background:#0f1f381f;transition:background .35s ease}.auth-wiz-node.is-done:before,.auth-wiz-node.is-current:before{background:var(--blue-dark, #2b74d4)}.auth-wiz-node-btn{display:flex;align-items:center;gap:8px;background:none;border:none;padding:0 10px 0 0;font-family:inherit;font-size:.78rem;font-weight:700;color:#8493ab;cursor:default;transition:color .25s ease}.auth-wiz-node:first-child .auth-wiz-node-btn{padding-left:0}.auth-wiz-node+.auth-wiz-node .auth-wiz-node-btn{padding-left:10px}.auth-wiz-node.is-done .auth-wiz-node-btn{cursor:pointer;color:#2d3f5a}.auth-wiz-node.is-done .auth-wiz-node-btn:hover{color:var(--blue-dark, #2b74d4)}.auth-wiz-node.is-current .auth-wiz-node-btn{color:#0f1f38}.auth-wiz-marker{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;flex-shrink:0;font-size:.76rem;font-weight:800;border:2px solid rgba(15,31,56,.14);background:#fff;color:#8493ab;transition:background .3s ease,border-color .3s ease,color .3s ease,transform .3s cubic-bezier(.34,1.56,.64,1)}.auth-wiz-node.is-current .auth-wiz-marker{border-color:var(--blue-dark, #2b74d4);background:var(--blue-dark, #2b74d4);color:#fff;transform:scale(1.1)}.auth-wiz-node.is-done .auth-wiz-marker{border-color:var(--blue-dark, #2b74d4);background:var(--blue-dark, #2b74d4);color:#fff}.auth-wiz-node-label{white-space:nowrap}.auth-wiz-view{display:flex;flex-direction:column;min-height:152px}.auth-wiz-panel{display:flex;flex-direction:column;gap:16px;animation:auth-wiz-enter-fwd .34s cubic-bezier(.22,.61,.36,1) both}.auth-wiz-panel[data-dir=back]{animation-name:auth-wiz-enter-back}@keyframes auth-wiz-enter-fwd{0%{opacity:0;transform:translate(26px)}to{opacity:1;transform:translate(0)}}@keyframes auth-wiz-enter-back{0%{opacity:0;transform:translate(-26px)}to{opacity:1;transform:translate(0)}}.auth-field-hint{font-size:.76rem;font-weight:500;color:#8493ab;margin-top:2px}.auth-notice{display:flex;flex-direction:column;gap:3px;margin-bottom:18px;padding:12px 14px;border:1px solid rgba(196,136,31,.35);border-left:3px solid #c4881f;background:#fdf8ee;font-size:.8rem;line-height:1.5;color:#6b5a34}.auth-notice strong{color:#8a5f14}.auth-inline-link{margin-left:5px;padding:0;border:none;background:none;font:inherit;font-weight:700;color:#4392f1;cursor:pointer}.auth-inline-link:hover{text-decoration:underline}.auth-wiz-recap{position:relative;border:1px solid rgba(15,31,56,.1);background:#f7f9fc;padding:12px 14px}.auth-wiz-recap-title{display:block;font-size:.7rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#8493ab;margin-bottom:8px}.auth-wiz-recap-list{display:flex;flex-wrap:wrap;gap:6px 26px;margin:0}.auth-wiz-recap-list>div{display:flex;gap:7px;align-items:baseline;min-width:0}.auth-wiz-recap-list dt{font-size:.74rem;font-weight:600;color:#8493ab;flex-shrink:0}.auth-wiz-recap-list dd{margin:0;font-size:.8rem;font-weight:600;color:#2d3f5a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.auth-wiz-recap-edit{position:absolute;top:10px;right:12px;background:none;border:none;font-family:inherit;font-size:.74rem;font-weight:700;color:var(--blue-dark, #2b74d4);cursor:pointer;padding:2px 4px}.auth-wiz-recap-edit:hover{text-decoration:underline}.auth-wiz-actions{display:flex;align-items:stretch;gap:10px;margin-top:4px}.auth-wiz-actions .auth-submit{margin-top:0!important}.auth-wiz-back{display:flex;align-items:center;justify-content:center;gap:6px;flex-shrink:0;padding:13px 18px;background:#fff;border:1.5px solid rgba(15,31,56,.14);font-family:inherit;font-size:.9rem;font-weight:700;color:#2d3f5a;cursor:pointer;transition:border-color .2s,color .2s,background .2s}.auth-wiz-back:hover:not(:disabled){border-color:var(--blue-dark, #2b74d4);color:var(--blue-dark, #2b74d4);background:#f4f8ff}.auth-wiz-back:disabled{opacity:.55;cursor:not-allowed}@media (max-width: 560px){.auth-wiz-node-label{display:none}.auth-wiz-view{min-height:250px}}@media (prefers-reduced-motion: reduce){.auth-wiz-panel{animation:none!important}.auth-wiz-marker{transition:none!important}}.auth-google{margin-bottom:18px}.auth-divider{display:flex;align-items:center;gap:12px;margin:16px 0 0;font-size:.78rem;color:#6a7a96;text-transform:lowercase}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:#0f1f381f}.auth-google-holder{display:flex;justify-content:center;transition:opacity .18s}.auth-google-holder[data-busy="1"]{opacity:.55;pointer-events:none}.auth-google-target{display:flex;justify-content:center;width:100%;min-height:44px}.auth-student-note{margin:0 0 12px;font-size:.82rem;color:var(--muted, #64748b)}.auth-student-note b{color:var(--ink, #1e293b);font-weight:600}.auth-signin-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:grid;place-items:center;padding:max(20px,env(safe-area-inset-top,0px)) max(20px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(20px,env(safe-area-inset-left,0px));background:#0f1f386b;backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}.auth-signin-progress{display:flex;flex-direction:column;justify-content:center;align-items:center;gap:18px;width:min(100%,280px);color:#fff;text-align:center}.auth-signin-mark{position:relative;display:grid;place-items:center;width:112px;height:112px;flex:0 0 auto}.auth-signin-mark img{width:62px;height:62px;object-fit:contain}.auth-signin-progress strong{display:inline-flex;align-items:baseline;font-size:1.12rem;font-weight:700;line-height:1.35}.auth-signin-spinner{position:absolute;top:0;right:0;bottom:0;left:0}.auth-signin-spinner:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:3px solid rgba(255,255,255,.25);border-top-color:#fff;border-radius:50%!important;animation:auth-signin-spin .9s linear infinite}.auth-signin-dots{display:inline-flex;width:1.25em;overflow:hidden;text-align:left}.auth-signin-dots span{opacity:.2;animation:auth-signin-dot 1.2s steps(1,end) infinite}.auth-signin-dots span:nth-child(2){animation-delay:.2s}.auth-signin-dots span:nth-child(3){animation-delay:.4s}@keyframes auth-signin-dot{0%,to{opacity:.2}50%{opacity:1}}.auth-link-success{margin:0;padding:10px 12px;border:1px solid #bbf7d0;border-radius:8px!important;background:#f0fdf4;color:#166534;font-size:.8rem;line-height:1.5}@keyframes auth-signin-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.auth-signin-spinner:before,.auth-signin-dots span{animation-duration:2.4s}}@media (max-width: 480px){.auth-signin-overlay{padding:16px}.auth-signin-progress{gap:14px}.auth-signin-mark{width:92px;height:92px}.auth-signin-mark img{width:52px;height:52px}.auth-signin-progress strong{font-size:1.02rem}}.app-body{color-scheme:light;background:var(--surface-app, #f2f4f8);color:var(--ink);min-height:100vh;height:100vh;overflow:hidden}.app-shell{display:grid;grid-template-columns:240px 1fr;height:100vh;overflow:hidden;transition:grid-template-columns .22s ease}.app-shell--collapsed{grid-template-columns:56px 1fr}.app-shell--fullscreen{grid-template-columns:1fr}.app-shell--fullscreen .sidebar{display:none}.sidebar{position:sticky;top:0;height:100vh;width:240px;background:var(--blue-dark, #2b74d4);border-right:1px solid rgba(255,255,255,.14);box-shadow:2px 0 16px #0f1f381f;display:flex;flex-direction:column;overflow:hidden;z-index:30;flex-shrink:0;transition:width .22s ease}.sidebar.collapsed{width:56px}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:18px 16px 16px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));flex-shrink:0}.sidebar.collapsed .sidebar-brand{padding:12px 0;justify-content:center;flex-wrap:nowrap;gap:0;flex-direction:column;align-items:center}.sidebar-collapse-btn{margin-left:auto;width:22px;height:22px;border-radius:6px;border:1px solid var(--border, rgba(15, 31, 56, .09));background:transparent;color:var(--muted, #6a7a96);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .15s,color .15s}.sidebar-collapse-btn:hover{background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);border-color:#4392f14d}.sidebar.collapsed .sidebar-collapse-btn{margin-left:0;margin-top:8px}.sidebar-logo{width:34px;height:34px;border-radius:9px;object-fit:contain;background:var(--blue, #4392f1);padding:4px;flex-shrink:0}.sidebar-brand-text{display:flex;flex-direction:column;min-width:0}.sidebar-brand-text strong{font-size:.82rem;font-weight:700;color:var(--ink, #0f1f38);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-brand-text span{font-size:.63rem;color:var(--muted, #6a7a96);letter-spacing:.08em;text-transform:uppercase;line-height:1.5}.sidebar-section{font-size:.62rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--muted, #6a7a96);padding:14px 14px 5px;flex-shrink:0}.sidebar-nav{flex:1;overflow-y:auto;overflow-x:hidden;padding:8px 10px 10px;display:flex;flex-direction:column;gap:1px}.sidebar.collapsed .sidebar-nav{padding:8px 4px 10px;align-items:stretch}.sidebar-nav::-webkit-scrollbar{width:3px}.sidebar-nav::-webkit-scrollbar-thumb{background:var(--border, rgba(15, 31, 56, .09));border-radius:99px}.sidebar-link{display:flex;align-items:center;gap:9px;padding:7px 11px;border-radius:9px;color:var(--ink-soft, #2d3f5a);font-size:.845rem;font-weight:500;text-decoration:none;transition:background var(--ease),color var(--ease);white-space:nowrap;overflow:hidden}.sidebar.collapsed .sidebar-link{justify-content:center;padding:7px 0;gap:0}.sidebar-link-icon{width:28px;height:28px;display:flex;align-items:center;justify-content:center;flex-shrink:0;border-radius:7px;background:transparent;color:var(--muted, #6a7a96);transition:background var(--ease),color var(--ease)}.sidebar-link:hover{background:var(--alice, #e7f0ff);color:var(--blue, #4392f1)}.sidebar-link:hover .sidebar-link-icon{background:#4392f11f;color:var(--blue, #4392f1)}.sidebar-link.active{background:var(--blue, #4392f1);color:#fff;font-weight:600;box-shadow:0 4px 14px #4392f147}.sidebar-link.active .sidebar-link-icon{background:#ffffff2e;color:#fff}.sidebar-divider{border:none;border-top:1px solid var(--border, rgba(15, 31, 56, .09));margin:6px 0}.sidebar-footer{flex-shrink:0;padding:10px 12px 14px;border-top:1px solid var(--border, rgba(15, 31, 56, .09))}.sidebar.collapsed .sidebar-footer{padding:10px 4px 14px}.sidebar-user-card{display:flex;align-items:center;gap:9px;padding:8px 10px;border-radius:10px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09))}.sidebar.collapsed .sidebar-user-card{justify-content:center;padding:8px 0;background:transparent;border-color:transparent;gap:0}.sidebar-user-main{display:flex;align-items:center;gap:9px;flex:1;min-width:0;border:none;background:none;padding:0;margin:0;cursor:pointer;font-family:inherit;text-align:left;border-radius:8px;transition:opacity .15s}.sidebar-user-main:hover{opacity:.78}.sidebar.collapsed .sidebar-user-main{flex:0;justify-content:center}.sidebar-avatar{width:30px;height:30px;border-radius:50%;background:var(--blue, #4392f1);color:#fff;font-size:.76rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar-user-info{display:flex;flex-direction:column;min-width:0;flex:1}.sidebar-user-name{font-size:.78rem;font-weight:600;color:var(--ink, #0f1f38);line-height:1.2}.sidebar-user-label{font-size:.65rem;color:var(--muted, #6a7a96);line-height:1.4}.sidebar-signout-icon{width:26px;height:26px;border-radius:6px;background:transparent;border:1px solid var(--border, rgba(15, 31, 56, .09));color:var(--muted, #6a7a96);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background var(--ease),color var(--ease),border-color var(--ease)}.sidebar-signout-icon:hover{background:#dc493a14;border-color:#dc493a40;color:var(--cinnabar, #dc493a)}.sidebar-role-switch{display:flex;align-items:center;gap:7px;margin-top:8px;padding:7px 10px;width:100%;border-radius:var(--r-md, 8px);background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.22);color:var(--blue, #4392f1);font-size:.74rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s}.sidebar-role-switch:hover{background:#4392f12e;border-color:#4392f166}.sidebar.collapsed .sidebar-role-switch{justify-content:center;padding:7px 0}.app-main{display:flex;flex-direction:column;height:100vh;min-height:0;overflow:hidden;background:var(--surface-app, #f2f4f8)}.sidebar-brand,.sidebar-nav,.sidebar-footer{position:relative;z-index:1}.sidebar-logo{background:#ffffffeb;border-radius:8px;padding:3px}.sidebar-brand{border-bottom-color:#ffffff24}.sidebar-brand-text strong{color:#fff}.sidebar-brand-text span{color:#ffffff9e}.sidebar-collapse-btn{border-color:#ffffff38;color:#fffc}.sidebar-collapse-btn:hover{background:#ffffff1f;color:#fff}.sidebar-section{color:#ffffff80}.sidebar-divider{background:#ffffff24}.sidebar-link{color:#ffffffd1}.sidebar-link-icon{color:#ffffffb3}.sidebar-link:hover{background:#ffffff1f;color:#fff}.sidebar-link:hover .sidebar-link-icon{background:#ffffff29;color:#fff}.sidebar-link.active{background:#fff;color:var(--blue-deep, #1a5abf);box-shadow:0 4px 14px #0f1f382e}.sidebar-link.active .sidebar-link-icon{background:#4392f129;color:var(--blue, #4392f1)}.sidebar-footer{border-top-color:#ffffff24}.sidebar-user-card{background:#ffffff1a;border-color:#ffffff29}.sidebar-avatar{background:#ffffffeb;color:var(--blue-deep, #1a5abf)}.sidebar-user-name{color:#fff}.sidebar-user-label{color:#fff9}.sidebar-signout-icon{color:#ffffffb3}.sidebar-signout-icon:hover{background:#ffffff1f;color:#fff}.app-topbar{height:62px;flex-shrink:0;background:#fff;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));display:flex;align-items:center;justify-content:space-between;padding:0 22px;gap:16px;z-index:20;box-shadow:0 1px 0 var(--border),0 2px 8px #0f1f380a}.topbar-left{display:flex;align-items:center;gap:12px;min-width:0;flex-shrink:0}.topbar-page{min-width:0}.topbar-page h1{font-size:.9rem;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1}.topbar-page p{font-size:.68rem;color:var(--muted);margin-top:2px;line-height:1}.topbar-center{flex:1;display:flex;align-items:center;justify-content:center;max-width:380px;margin:0 auto}.topbar-search{display:flex;align-items:center;gap:8px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:10px;padding:0 13px;width:100%;height:38px;color:var(--muted);transition:border-color var(--ease),background var(--ease),box-shadow var(--ease)}.topbar-search:focus-within{background:#fff;border-color:var(--blue);box-shadow:0 0 0 3px #4392f11a;color:var(--ink)}.topbar-search input{background:transparent;border:none;outline:none;font-size:.84rem;color:var(--ink);width:100%;font-family:var(--font-sans)}.topbar-search input::placeholder{color:var(--muted)}.topbar-sem-chip{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 16px;background:#4392f112;border:1px solid rgba(67,146,241,.18);border-radius:10px;white-space:nowrap;max-width:100%;overflow:hidden}.topbar-sem-dot{width:7px;height:7px;border-radius:50%;background:#22c55e;flex-shrink:0;box-shadow:0 0 0 2px #22c55e38}.topbar-sem-name{font-size:.84rem;font-weight:700;color:var(--ink, #0f1f38);overflow:hidden;text-overflow:ellipsis}.topbar-sem-sep{font-size:.84rem;color:var(--muted, #6a7a96);font-weight:400;flex-shrink:0}.topbar-sem-year{font-size:.78rem;color:var(--muted, #6a7a96);font-family:var(--font-mono);flex-shrink:0}.topbar-sem-select{padding-right:8px;cursor:pointer}.topbar-sem-select select{border:none;background:transparent;font-size:.84rem;font-weight:700;color:var(--ink, #0f1f38);font-family:var(--font-sans);cursor:pointer;outline:none;max-width:230px}.topbar-sem-select.is-busy{opacity:.6}.topbar-right{display:flex;align-items:center;gap:8px;justify-content:flex-end;flex-shrink:0}.topbar-icon-btn{width:36px;height:36px;border-radius:9px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border);color:var(--muted);display:flex;align-items:center;justify-content:center;cursor:pointer;position:relative;transition:background var(--ease),color var(--ease),border-color var(--ease)}.topbar-icon-btn:hover{background:var(--alice);border-color:#4392f14d;color:var(--blue)}.topbar-user{display:flex;align-items:center;gap:8px;padding:5px 11px 5px 6px;border-radius:10px;border:1px solid var(--border);background:var(--surface-app, #f2f4f8);cursor:pointer;transition:background var(--ease),border-color var(--ease);position:relative;-webkit-user-select:none;user-select:none}.topbar-user:hover,.topbar-user.active{background:var(--alice);border-color:#4392f14d}.topbar-chevron{display:flex;align-items:center;transition:transform .18s ease;color:var(--muted)}.topbar-chevron.open{transform:rotate(90deg)}.topbar-dropdown{position:absolute;top:calc(100% + 8px);right:0;min-width:210px;background:#fff;border:1px solid var(--border);box-shadow:var(--shadow-md);z-index:50;overflow:hidden}.topbar-dropdown-header{padding:13px 15px 11px;display:flex;flex-direction:column;gap:2px}.topbar-dropdown-role{font-size:.82rem;font-weight:700;color:var(--ink);line-height:1.2}.topbar-dropdown-sub{font-size:.7rem;color:var(--muted)}.topbar-dropdown-divider{height:1px;background:var(--border)}.topbar-dropdown-item{display:flex;align-items:center;gap:9px;width:100%;padding:10px 15px;background:transparent;border:none;font-size:.84rem;font-family:var(--font-sans);color:var(--ink-soft);cursor:pointer;text-align:left;transition:background var(--ease),color var(--ease)}.topbar-dropdown-item:hover{background:var(--alice);color:var(--ink)}.topbar-dropdown-item.danger{color:var(--cinnabar, #dc493a)}.topbar-dropdown-item.danger:hover{background:#dc493a0f}.topbar-avatar{width:28px;height:28px;border-radius:50%;background:var(--blue);color:#fff;font-size:.74rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.topbar-user-meta{display:flex;flex-direction:column;gap:1px}.topbar-role{font-size:.78rem;font-weight:700;color:var(--ink);line-height:1}.topbar-role-sub{font-size:.64rem;color:var(--muted);line-height:1}.topbar-user>svg{color:var(--muted)}.menu-btn{display:none;width:34px;height:34px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border);border-radius:8px;align-items:center;justify-content:center;cursor:pointer;color:var(--ink-soft);flex-shrink:0}.page-content{flex:1;min-height:0;overflow-x:hidden;overflow-y:auto;padding:20px 24px 24px;display:flex;flex-direction:column;gap:16px}.page-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(0,1fr);gap:16px}.section-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.9fr);gap:16px;align-items:start}.panel-split{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:16px}.panel-stack{display:grid;gap:16px}.panel-stack.compact{gap:10px}.content-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px}.timetable-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1.35fr);gap:12px;align-items:start}.timetable-panel{grid-column:1}.timetable-right{grid-column:2;display:grid;gap:12px;align-content:start}.panel{background:var(--surface-card, #fff);border-radius:var(--r-lg, 12px);border:1px solid var(--border, rgba(15, 31, 56, .09));padding:18px 20px;display:grid;gap:14px;box-shadow:var(--shadow-xs)}.panel h2{font-size:.95rem;font-weight:700;color:var(--ink);margin:0}.panel h3{font-size:.85rem;font-weight:600;color:var(--ink-soft);margin:0}.app-card{position:relative;background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:var(--r-lg, 12px);padding:18px 20px;box-shadow:0 1px 4px #0f1f380d;overflow:hidden}.app-card--blue:before,.app-card--green:before,.app-card--amber:before,.app-card--red:before,.app-card--purple:before,.app-card--teal:before,.app-card--indigo:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--r-lg, 12px) 0 0 var(--r-lg, 12px)}.app-card--slate:before,.app-card--blue:before,.app-card--green:before,.app-card--amber:before,.app-card--red:before,.app-card--purple:before,.app-card--teal:before,.app-card--indigo:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:var(--r-lg, 12px) 0 0 var(--r-lg, 12px)}.app-card--blue:before{background:var(--blue, #4392f1)}.app-card--green:before{background:#22c55e}.app-card--amber:before{background:#f59e0b}.app-card--red:before{background:#ef4444}.app-card--purple:before{background:#7c3aed}.app-card--teal:before{background:#0d9488}.app-card--indigo:before{background:#4f46e5}.app-card--slate:before{background:#64748b}.app-card--no-pad{padding:0;overflow:hidden}.app-card--clickable{cursor:pointer;transition:box-shadow .15s,transform .15s}.app-card--clickable:hover{box-shadow:0 6px 20px #0f1f3817;transform:translateY(-1px)}.app-card--stat{display:flex;flex-direction:column;gap:10px}.app-card-icon{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:8px;flex-shrink:0}.app-card-icon--blue{background:#4392f11f;color:var(--blue, #4392f1)}.app-card-icon--green{background:#22c55e1f;color:#16a34a}.app-card-icon--amber{background:#f59e0b1f;color:#b45309}.app-card-icon--red{background:#ef44441f;color:#dc2626}.app-card-icon--purple{background:#7c3aed1f;color:#7c3aed}.app-card-icon--teal{background:#0d94881f;color:#0d9488}.app-card-icon--indigo{background:#4f46e51f;color:#4f46e5}.app-card-icon--slate{background:#64748b24;color:#64748b}.app-card-body{display:flex;flex-direction:column;gap:2px}.app-card-label{margin:0;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96)}.app-card-value{font-size:1.75rem;font-weight:800;color:var(--ink, #0f1f38);line-height:1.1}.app-card-sub{margin:0;font-size:.75rem;color:var(--muted, #6a7a96)}.panel-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-header h2,.panel-header h3{margin:0}.panel-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.panel.is-loading{position:relative;pointer-events:none;opacity:.8}.panel.is-loading:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:#f2f4f899;border-radius:inherit;z-index:1}.panel.is-loading:after{content:"Processing...";position:absolute;right:14px;top:14px;background:#fff;border:1px solid var(--border);padding:4px 10px;border-radius:99px;font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);z-index:2}.summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.summary-card{background:var(--surface-card);border-radius:var(--r-lg);padding:14px 16px;border:1px solid var(--border);box-shadow:var(--shadow-xs)}.summary-card strong{font-size:1.6rem;font-weight:700;display:block;margin:6px 0 2px;font-family:var(--font-mono);color:var(--blue)}.summary-card span{font-size:.78rem;color:var(--muted)}.summary-card.accent{background:var(--alice);border-color:#4392f138}.table-shell{width:100%;border-radius:var(--r-lg);border:1px solid var(--border);overflow:hidden}.table-scroll{max-height:58vh;overflow:auto}.data-row{display:grid;grid-template-columns:repeat(var(--cols, 3),minmax(140px,1fr));gap:8px;text-align:left;background:#fff;border-bottom:1px solid var(--border);padding:10px 14px;color:inherit;align-items:center;min-height:44px;width:100%;transition:background var(--ease)}.data-row:last-child{border-bottom:none}.data-row.header{position:sticky;top:0;z-index:2;background:var(--alice);font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--blue-dark);border-bottom:1px solid rgba(67,146,241,.2)}.data-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.875rem}.data-row.clickable{cursor:pointer}.data-row.clickable:hover{background:var(--alice)}.table-header{display:flex;gap:10px;margin-bottom:12px;align-items:center}.search-box{flex:1}.search-input{width:100%;padding:8px 12px;background:#fff;border:1px solid var(--border);border-radius:var(--r-md);color:var(--ink);font-size:.85rem;transition:border-color var(--ease),box-shadow var(--ease)}.search-input::placeholder{color:#0f1f3866}.search-input:focus{outline:none;border-color:#4392f180;box-shadow:0 0 0 2px #4392f11a}.header-cell{display:flex;align-items:center;gap:6px;justify-content:space-between}.sort-btn{background:none;border:none;color:var(--muted);cursor:pointer;padding:2px 4px;font-size:.72rem;transition:color var(--ease)}.sort-btn:hover{color:var(--blue)}.column-search{width:100%;padding:5px 7px;font-size:.78rem;background:#fff;border:1px solid var(--border);border-radius:5px;color:var(--ink)}.column-search::placeholder{color:#0f1f3859}.table-filters{display:flex;gap:10px;margin-bottom:12px;align-items:center}.filter-select{padding:7px 11px;background:#fff;border:1px solid var(--border);border-radius:var(--r-md);color:var(--ink);font-size:.85rem;cursor:pointer;transition:border-color var(--ease);min-width:200px;font-family:var(--font-sans);-webkit-appearance:none;-moz-appearance:none;appearance:none}.filter-select:hover{border-color:var(--border-strong)}.filter-select:focus{outline:none;border-color:#4392f180;box-shadow:0 0 0 2px #4392f11a}.filter-select option{background:#fff;color:var(--ink)}.item-list{list-style:none;display:grid;gap:8px}.item-list.compact{gap:6px}.item{background:var(--alice);border:1px solid var(--border);padding:10px 13px;border-radius:var(--r-md)}.item.compact{padding:7px 10px}.item.compact strong{font-size:.85rem}.item.compact span{font-size:.72rem}.item span{color:var(--muted);font-size:.8rem;display:block}.item-card{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;padding:12px 14px;border-radius:var(--r-md);border:1px solid var(--border);transition:background var(--ease),border-color var(--ease)}.item-card>div:first-child{flex:1;display:flex;flex-direction:column;gap:4px}.item-card:hover{background:var(--alice);border-color:#4392f140}.item-header{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.item-actions{display:flex;gap:6px;align-items:center;flex-shrink:0}.panel-list{display:grid;gap:10px}.panel-list h3{font-size:.72rem;color:var(--muted);text-transform:uppercase;letter-spacing:.18em}.app-body .primary-btn{display:inline-flex;align-items:center;gap:6px;border:none;border-radius:var(--r-md);padding:8px 16px;background:var(--cinnabar);font-weight:600;font-size:.85rem;cursor:pointer;color:#fff;transition:background var(--ease),box-shadow var(--ease),transform var(--ease);font-family:var(--font-sans);white-space:nowrap}.app-body .primary-btn:hover{background:var(--cinnabar-dark);box-shadow:0 4px 14px #dc493a47}.app-body .primary-btn.blue{background:var(--blue)}.app-body .primary-btn.blue:hover{background:var(--blue-dark);box-shadow:0 4px 14px #4392f147}.app-body .primary-btn.danger{background:#e74c3c}.app-body .ghost-btn{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-strong);background:#fff;color:var(--ink-soft);border-radius:var(--r-md);padding:8px 14px;font-size:.85rem;font-weight:500;cursor:pointer;transition:background var(--ease),border-color var(--ease);font-family:var(--font-sans);white-space:nowrap}.app-body .ghost-btn:hover{background:var(--alice);border-color:#4392f14d;color:var(--blue-dark)}.app-body .ghost-btn.danger{border-color:#dc493a66;color:var(--cinnabar)}.app-body .ghost-btn.danger:hover{background:#dc493a0f}.icon-btn{width:30px;height:30px;border-radius:var(--r-md);border:1px solid var(--border);background:#fff;color:var(--ink-soft);display:inline-flex;align-items:center;justify-content:center;font-size:1rem;line-height:1;padding:0;cursor:pointer;transition:background var(--ease),border-color var(--ease)}.icon-btn svg{display:block;width:15px;height:15px}.icon-btn:hover{background:var(--alice);border-color:#4392f14d}.icon-btn.danger{border-color:#dc493a66;color:var(--cinnabar)}.icon-btn.danger:hover{background:#dc493a0f}.section-header-actions{display:inline-flex;align-items:center;gap:6px}.app-body .primary-btn:disabled,.app-body .ghost-btn:disabled,.app-body .icon-btn:disabled{opacity:.5;cursor:not-allowed}.form-grid{display:grid;gap:12px;margin-top:4px}.form-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.field{display:grid;gap:6px;font-size:.8rem;font-weight:600;color:var(--ink-soft)}.field input,.field select,.field textarea{background:#fff;border:1px solid var(--border);border-radius:var(--r-md);padding:9px 12px;color:var(--ink);font-size:.875rem;transition:border-color var(--ease),box-shadow var(--ease);font-family:var(--font-sans)}.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:#4392f180;box-shadow:0 0 0 2px #4392f11a}.field select{-webkit-appearance:none;-moz-appearance:none;appearance:none}.form-control{width:100%;background:#fff;border:1px solid var(--border);border-radius:var(--r-md);padding:9px 12px;color:var(--ink);font-size:.875rem;font-family:var(--font-sans);transition:border-color var(--ease),box-shadow var(--ease)}.form-control:focus{outline:none;border-color:#4392f180;box-shadow:0 0 0 2px #4392f11a}select.form-control{-webkit-appearance:none;-moz-appearance:none;appearance:none}.um-combo{position:relative}.um-combo-menu{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;background:#fff;border:1px solid var(--border);border-radius:var(--r-md);box-shadow:0 12px 30px #0f1f3824;max-height:220px;overflow-y:auto;padding:4px}.um-combo-option{display:flex;flex-direction:column;gap:2px;width:100%;text-align:left;padding:8px 10px;border:none;background:none;border-radius:6px;font-size:.85rem;color:var(--ink);cursor:pointer;font-family:inherit}.um-combo-option small{color:var(--muted);font-size:.7rem}.um-combo-option:hover{background:var(--surface-app, #f2f4f8)}.checkbox-field{display:flex;align-items:center;gap:10px;padding:10px 13px;background:var(--alice);border:1px solid var(--border);border-radius:var(--r-md);cursor:pointer;transition:background var(--ease),border-color var(--ease);font-weight:500;font-size:.875rem;color:var(--ink);-webkit-user-select:none;user-select:none}.checkbox-field:hover{background:var(--blue-light);border-color:#4392f140}.checkbox-field input[type=checkbox]{width:16px;height:16px;cursor:pointer;accent-color:var(--blue)}.checkbox-group{gap:10px!important}.checkbox-label{font-weight:600;font-size:.875rem}.form-actions{display:flex;gap:10px;flex-wrap:wrap}.helper-text{color:var(--muted);font-size:.8rem}.form-error{background:#dc493a14;border:1px solid rgba(220,73,58,.22);color:#9b1c1c;padding:9px 12px;border-radius:var(--r-md);font-size:.85rem}.tag{display:inline-flex;align-items:center;padding:3px 8px;border-radius:4px;background:var(--blue-light);color:var(--blue-dark);font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;font-family:var(--font-mono)}.status-pill{display:inline-flex;padding:3px 8px;border-radius:99px;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.status-pill.approved{background:#22c55e1f;color:#15803d}.status-pill.pending{background:#eab30824;color:#854d0e}.divider{height:1px;background:var(--border);margin:16px 0}.empty{color:var(--muted);font-size:.875rem}.scroll-area{max-height:300px;overflow-y:auto;overflow-x:hidden;padding-right:4px;scrollbar-gutter:stable}.detail-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}.detail-grid span{display:block;font-size:.75rem;color:var(--muted);margin-bottom:3px}.share-link{display:flex;gap:10px;align-items:center}.share-link input{flex:1;background:#fff;border:1px solid var(--border);border-radius:var(--r-md);padding:9px 12px;color:var(--ink);font-size:.875rem}.timetable-toggle{display:flex;justify-content:flex-end;margin:8px 0 4px}.tv-student-banner{display:flex;align-items:center;gap:10px;padding:10px 16px;background:#4392f112;border:1px solid rgba(67,146,241,.2);border-radius:var(--r-md, 8px)}.tv-student-banner-label{font-size:.78rem;color:var(--muted);font-weight:500}.tv-student-banner-code{font-size:.82rem;font-weight:700;color:var(--blue, #4392f1);font-family:var(--font-mono);background:#4392f11f;padding:2px 9px;border-radius:99px}.timetable-actions{justify-content:flex-end}.timetable-saved{padding-top:10px}.tv-personal-schedule{flex:1;min-height:0;display:flex;flex-direction:column}.tv-personal-schedule .sheet-table-wrapper{flex:1;overflow:auto;max-height:none}.tv-personal-hint{margin:0 0 8px;font-size:.78rem;color:var(--muted)}.tv-ps-day-cell{white-space:nowrap;min-width:80px}.tv-ps-empty{padding:48px 0;text-align:center}.tv-ps-empty p{font-size:.9rem;color:var(--muted, #9ca3af);margin:0}.tv-drag-source{opacity:.35!important;pointer-events:none}.schedule-empty-cell.tv-drop-valid{background:#22c55e26!important;outline:2px dashed #22c55e;outline-offset:-2px}.schedule-empty-cell.tv-drop-invalid{background:#dc262614!important;outline:2px dashed #dc2626;outline-offset:-2px}.schedule-session-cell.tv-drop-invalid{outline:2px dashed #dc2626;outline-offset:-2px}.tv-row-own td{opacity:1}.tv-row-venue td.schedule-empty-cell,.tv-row-venue td.schedule-session-cell{background-color:#3b82f60f!important}.tv-row-venue td.schedule-cohort-cell{box-shadow:inset 3px 0 #3b82f6}.tv-row-blocked td{pointer-events:none}.tv-row-blocked td.schedule-empty-cell,.tv-row-blocked td.schedule-session-cell{opacity:.5}.tv-row-blocked td.schedule-cohort-cell{opacity:.85}.schedule-empty-cell.tv-drop-venue-share{background:#3b82f626!important;outline:2px dashed #3b82f6;outline-offset:-2px}.schedule-session-cell.tv-drop-venue-share{outline:2px dashed #3b82f6;outline-offset:-2px}.schedule-session-cell.tv-drop-swap{outline:2px dashed #f59e0b;outline-offset:-2px;background:#f59e0b14!important}.schedule-empty-cell.tv-target-free,.schedule-session-cell.tv-target-free{background:#22c55e38!important;box-shadow:inset 0 0 0 2px #22c55e8c}.schedule-empty-cell.tv-target-swap,.schedule-session-cell.tv-target-swap{background:#3b82f633!important;box-shadow:inset 0 0 0 2px #3b82f68c}.tv-swap-modal{max-width:520px;width:100%}.tv-swap-body{padding:0 24px 20px;display:flex;flex-direction:column;gap:14px}.tv-swap-note{font-size:.82rem;color:var(--muted, #6a7a96);background:#3b82f612;border-radius:8px;padding:8px 12px;margin:0}.tv-swap-note strong{color:var(--ink, #0f1f38)}.tv-swap-cards{display:flex;align-items:center;gap:12px}.tv-swap-card{flex:1;display:flex;flex-direction:column;gap:3px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15,31,56,.09));border-radius:10px;padding:12px 14px}.tv-swap-arrow{font-size:1.4rem;color:var(--muted, #6a7a96);flex-shrink:0;-webkit-user-select:none;user-select:none}.tv-swap-tag{font-size:.65rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;padding:2px 7px;border-radius:10px;align-self:flex-start;margin-bottom:2px}.tv-swap-tag--move{background:#dbeafe;color:#1d4ed8}.tv-swap-tag--displaced{background:#fef3c7;color:#92400e}.tv-swap-course{font-size:.85rem;font-weight:700;color:var(--ink, #0f1f38)}.tv-swap-meta{font-size:.74rem;color:var(--muted, #6a7a96)}.tv-swap-time{font-size:.78rem;font-weight:600;color:var(--ink, #0f1f38)}.tv-swap-room{font-size:.72rem;color:var(--muted, #6a7a96)}.tv-drag-ghost{position:fixed;pointer-events:none;z-index:9999;border-radius:6px;padding:6px 9px;display:flex;flex-direction:column;gap:2px;min-width:90px;max-width:160px;font-size:.75rem;font-weight:600;opacity:.92;box-shadow:0 8px 28px #0f1f3847,0 2px 8px #0f1f3824;transform:rotate(1.5deg) scale(1.05);transition:transform .05s}body.tv-dragging,body.tv-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}.lecturer-highlight{box-shadow:inset 0 0 0 2px #eab308bf;position:relative}.sheet-tabs{display:flex;flex-wrap:wrap;gap:4px;margin:0 0 12px}.sheet-tab{border:1px solid var(--border);background:var(--surface-app);color:var(--ink-soft);padding:5px 14px;cursor:pointer;font-size:.8rem;font-weight:600;font-family:var(--font-sans);transition:background .15s,border-color .15s,color .15s,box-shadow .15s;letter-spacing:.02em}.sheet-tab:hover:not(.active){background:var(--alice);border-color:#4392f159;color:var(--blue-dark)}.sheet-tab.active{background:var(--blue);border-color:var(--blue);color:#fff;box-shadow:0 3px 10px #4392f14d}.sheet-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:6px 0}.sheet-actions button{flex-shrink:0}.sheet-panel{display:grid;gap:10px}.sheet-panel-header{font-size:.72rem;color:var(--muted);font-family:var(--font-mono);letter-spacing:.04em;padding:2px 0}.sheet-table-wrapper{border:1px solid var(--border);background:var(--surface-app);overflow:auto;max-height:80vh;box-shadow:0 2px 8px #0f1f380f,0 1px 2px #0f1f380a}.sheet-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:.79rem;font-family:var(--font-mono)}.sheet-table td{border-right:1px solid var(--border);border-bottom:1px solid var(--border);padding:6px 10px;text-align:left;vertical-align:top;background:#fff;min-width:90px;line-height:1.45;transition:box-shadow .12s}.sheet-table th{border-right:1px solid rgba(255,255,255,.12);border-bottom:2px solid rgba(67,146,241,.25);padding:7px 10px;text-align:left;vertical-align:middle;white-space:nowrap}.sheet-table th{position:sticky;top:0;z-index:2;background:var(--ink);color:#ffffff8c;font-family:var(--font-mono);font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;-webkit-user-select:none;user-select:none}.sheet-table .row-label{position:sticky;left:0;z-index:1;background:var(--blue-light);color:var(--blue-dark);font-weight:700;font-family:var(--font-mono);font-size:.72rem;text-align:right;padding:6px 8px;min-width:36px;white-space:nowrap;border-right:2px solid rgba(67,146,241,.2);border-bottom:1px solid rgba(67,146,241,.15);-webkit-user-select:none;user-select:none}.sheet-table thead th:first-child{z-index:3;border-right:2px solid rgba(255,255,255,.1)}.sheet-table td[draggable=true]{cursor:grab}.sheet-table td[draggable=true]:active{cursor:grabbing}.sheet-table td.drag-source{opacity:.55;box-shadow:inset 0 0 0 2px var(--blue)}.sheet-table td.drag-target{box-shadow:inset 0 0 0 2px #22c55e,0 0 12px #22c55e40;background:#22c55e0f!important}.sheet-table td.drag-blocked{box-shadow:inset 0 0 0 2px #ef4444,0 0 12px #ef444433;background:#ef44440d!important}.sheet-table .venue-header{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:700;cursor:pointer}.sheet-table .venue-header:hover .venue-header-hint{color:var(--blue)}.sheet-table .venue-header-hint{font-size:.58rem;text-transform:uppercase;letter-spacing:.1em;color:transparent;transition:color .15s}.sheet-table:hover .venue-header-hint{color:var(--muted)}.sheet-table .venue-editor{width:100%;border:1px solid var(--blue);background:#fff;color:var(--ink);padding:3px 6px;font-size:.75rem;font-family:var(--font-mono);box-shadow:0 0 0 3px #4392f11f}.schedule-grid-table{border-collapse:separate;border-spacing:0;width:max-content;min-width:100%;font-size:.86rem;font-family:var(--font-sans)}.schedule-grid-table thead th{position:sticky;top:0;z-index:3;background:var(--ink, #0f1f38);color:#ffffffbf;font-size:.78rem;font-weight:700;font-family:var(--font-mono);letter-spacing:.07em;padding:8px 12px;white-space:nowrap;border-right:2px solid rgba(255,255,255,.18);border-bottom:3px solid rgba(67,146,241,.45);text-align:center}.schedule-cohort-col{min-width:160px;text-align:left!important;position:sticky;left:0;z-index:4!important;background:var(--ink, #0f1f38)!important}.schedule-slot-col{min-width:160px}.schedule-dept-header>span{position:sticky;left:14px;display:inline-block}.schedule-dept-header{background:#0f2d54;color:#ffffffe6;font-size:.76rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;padding:6px 14px;border-bottom:1px solid rgba(255,255,255,.08)}.schedule-cohort-cell{position:sticky;left:0;z-index:2;font-size:.8rem;font-weight:700;font-family:var(--font-mono);padding:8px 12px;white-space:nowrap;min-width:160px;border-right:3px solid rgba(255,255,255,.22);border-bottom:2px solid rgba(255,255,255,.14)}.schedule-empty-cell{background:var(--surface-app, #f2f4f8);border-right:2px solid var(--border);border-bottom:2px solid var(--border);min-width:160px;min-height:60px}.schedule-session-cell{background:#fff;border-right:2px solid var(--border);border-bottom:2px solid var(--border);vertical-align:top;padding:0;min-width:160px}.schedule-session-block{display:flex;flex-direction:column;gap:3px;padding:8px 10px;border-radius:2px;transition:outline-color .15s;outline:2px solid transparent;outline-offset:-2px}.schedule-session-block:hover{outline-color:#ffffffa6}.sc-course{font-weight:700;font-size:.86rem;font-family:var(--font-mono)}.sc-title{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:.76rem;font-weight:600;line-height:1.3;opacity:.9;word-break:break-word}.sc-room{font-size:.78rem;font-family:var(--font-mono);opacity:.75}.sc-time{display:block;width:fit-content;max-width:100%;padding:1px 4px;border-radius:3px;color:#17324d;background:#ffffffc7;font-size:.7rem;font-family:var(--font-mono);font-weight:700;line-height:1.35;white-space:nowrap}.sc-lecturer{font-size:.7rem;opacity:.65}.sc-cohorts{font-size:.7rem;opacity:.65;line-height:1.45;word-break:break-word}.schedule-session-cell .schedule-session-block+.schedule-session-block{margin-top:3px;padding-top:7px;border-top:1px solid rgba(255,255,255,.4)}.action-choice-btn{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:14px 16px;background:#f8fafc;border:1.5px solid #e2e8f0;border-radius:10px;cursor:pointer;text-align:left;transition:border-color .13s,background .13s}.action-choice-btn:hover{border-color:#3b82f6;background:#eff6ff}.action-choice-btn:disabled{cursor:not-allowed;opacity:.55}.action-choice-btn:disabled:hover{border-color:#e2e8f0;background:#f8fafc}.request-window-note{margin:-8px 0 14px;padding:10px 12px;border-radius:8px;background:#fef3c7;color:#92400e;font-size:.8rem;line-height:1.4}.request-allowance{margin-top:6px;font-size:.74rem;font-weight:600;color:#1d4ed8}.request-allowance.is-spent{color:#b45309}.request-allowance-line{margin:0 0 -12px;font-size:.82rem;font-weight:600;color:#1d4ed8}.request-allowance-line.is-spent{color:#b45309}.session-swap-btn{display:inline-flex;align-items:center;gap:3px;margin-top:4px;padding:2px 7px;font-size:.62rem;font-weight:600;color:#1d4ed8;background:#3b82f61f;border:1px solid rgba(59,130,246,.35);border-radius:6px;cursor:pointer;line-height:1.5;transition:background .13s,border-color .13s;align-self:flex-start}.session-swap-btn:hover{background:#3b82f638;border-color:#3b82f699}.modal-backdrop{background:#0f1f3866;z-index:2000;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.modal-card{background:#fff;border:1px solid var(--border);padding:20px;gap:14px;box-shadow:var(--shadow-lg)}.modal-card .form-grid{width:100%}.modal-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap}.page-loader{display:grid;place-items:center;gap:16px;min-height:50vh;padding:32px}.loader-spinner-wrap{position:relative;width:100px;height:100px}.loader-orbit{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2.5px solid rgba(148,163,184,.25);border-top-color:#4392f1e6;animation:loader-spin .9s linear infinite}.loader-logo-wrap{position:absolute;top:10px;right:10px;bottom:10px;left:10px;border-radius:50%;display:grid;place-items:center;background:#fff;box-shadow:0 8px 24px #4392f124;border:1px solid rgba(67,146,241,.18)}.loader-logo{width:48px;height:48px;animation:logo-pop 1.2s ease-in-out infinite}.loader-label{font-size:.85rem;color:var(--muted)}.app-loader-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:grid;place-items:center;background:#0a14288c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.app-loader-overlay .page-loader{min-height:auto;padding:28px}.app-loader-overlay .loader-spinner-wrap{width:74px;height:74px}.app-loader-overlay .loader-logo-wrap{border-radius:50%;border-color:#d8e3ef;box-shadow:0 7px 18px #315fbe1f}.app-loader-overlay .loader-orbit{border-radius:50%;border-top-color:#315fbe}.app-loader-overlay .loader-logo{width:34px;height:34px}.app-loader-overlay .loader-label{color:#fff}.app-loader-stack{display:grid;justify-items:center}.app-loader-hint{max-width:420px;margin:-14px 0 0;padding:0 20px;color:#ffffffd1;font-size:.86rem;line-height:1.45;text-align:center}.page-error{min-height:50vh;display:grid;place-items:center;padding:32px}.page-error-card{background:#fff;border:1px solid var(--border);border-radius:var(--r-xl);padding:20px;max-width:380px;text-align:center;display:grid;gap:10px;box-shadow:var(--shadow-md)}.page-error-card h3{margin:0;font-size:.95rem}.page-fade{animation:page-fade-in .28s ease}.toast-stack{position:fixed;top:20px;right:20px;display:grid;gap:10px;z-index:80;width:min(380px,92vw)}.toast{position:relative;background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;box-shadow:var(--shadow-md);animation:toast-in .2s ease-out}.toast:before{content:"";position:absolute;left:0;top:0;bottom:0;width:3px;border-radius:var(--r-lg) 0 0 var(--r-lg);background:var(--border)}.toast.success{border-color:#22c55e4d}.toast.success:before{background:#22c55eb3}.toast.error{border-color:#dc493a4d}.toast.error:before{background:#dc493ab3}.toast.info{border-color:#4392f14d}.toast.info:before{background:#4392f1b3}.toast.warning{border-color:#f59e0b4d}.toast.warning:before{background:#f59e0bd9}.cr-review-modal{max-width:540px}.cr-slot-card{display:flex;flex-direction:column;gap:4px;padding:14px 16px;border-radius:var(--r-md, 8px);border:1px solid var(--border, #e5e7eb)}.cr-slot-card strong{font-size:.875rem;font-weight:700}.cr-slot-card span{font-size:.78rem;color:var(--muted, #6a7a96)}.cr-slot-label{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.cr-slot-current{background:#f8fafc}.cr-slot-current .cr-slot-label{color:var(--muted)}.cr-slot-proposed{background:#fff7ed;border-color:#f59e0b59}.cr-slot-proposed .cr-slot-label,.cr-slot-proposed strong{color:#92400e}.cr-slot-proposed span{color:#b45309}@keyframes cr-session-placed{0%,to{outline-color:#22c55ee6}50%{outline-color:#22c55e26}}.deo-suggest-banner{position:fixed;top:16px;left:50%;transform:translate(-50%);z-index:1500;display:flex;align-items:center;gap:10px;padding:8px 16px;background:#fff;border:1px solid rgba(99,102,241,.4);border-radius:99px;box-shadow:0 4px 16px #0000001a;font-size:.82rem;font-weight:500;color:var(--ink);animation:toast-in .2s ease-out;white-space:nowrap}.deo-suggest-popup{position:fixed;top:24px;right:24px;z-index:2000;width:min(95vw,308px);background:#fff;border:1px solid var(--border, #e5e7eb);border-radius:12px;box-shadow:0 8px 32px #00000024;overflow:hidden;animation:toast-in .22s ease-out}.deo-suggest-popup-header{display:flex;align-items:center;justify-content:space-between;padding:10px 12px 8px;border-bottom:1px solid var(--border)}.deo-suggest-popup-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.deo-suggest-popup-body{padding:12px;display:flex;flex-direction:column;gap:8px}.deo-suggest-popup-actions{display:flex;gap:8px;padding:9px 12px;border-top:1px solid var(--border);background:#f9fafb}.deo-suggest-bar{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:1500;display:flex;align-items:center;gap:14px;padding:10px 16px;background:#fff;border:1px solid rgba(245,158,11,.4);border-radius:12px;box-shadow:0 4px 20px #0000001f;max-width:min(95vw,680px);animation:toast-in .22s ease-out}.deo-suggest-bar-info{display:flex;align-items:center;gap:8px;font-size:.82rem;min-width:0;flex:1;overflow:hidden}.deo-suggest-bar-queue{display:flex;gap:5px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none}.deo-suggest-bar-queue::-webkit-scrollbar{display:none}.deo-suggest-bar-chip{display:inline-flex;align-items:center;padding:2px 8px;border-radius:99px;background:#fef3c7;border:1px solid rgba(245,158,11,.35);font-size:.72rem;font-weight:600;color:#92400e;white-space:nowrap;flex-shrink:0}.session-warn-card{position:fixed;top:20px;right:20px;z-index:9999;width:min(95vw,320px);background:#fff;border:1px solid rgba(220,38,38,.2);border-left:4px solid #dc2626;border-radius:var(--r-lg, 10px);padding:16px 18px 14px;box-shadow:0 8px 24px #0000001a;animation:toast-in .2s ease-out;display:flex;flex-direction:column;gap:6px}.session-warn-title{font-size:.9rem;font-weight:700;color:#dc2626}.session-warn-msg{margin:0;font-size:.82rem;color:var(--muted, #6a7a96);line-height:1.5}.session-warn-dismiss{margin-top:4px;background:none;border:none;padding:0;font-size:.8rem;color:#dc2626;cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-align:left;width:fit-content}.toast-title{display:block;font-size:.875rem;font-weight:600;margin-bottom:3px}.toast-message{color:var(--muted);font-size:.84rem;line-height:1.4}.toast-close{border:1px solid var(--border);background:var(--surface-app);color:var(--ink-soft);border-radius:6px;width:26px;height:26px;display:grid;place-items:center;cursor:pointer;transition:background var(--ease);flex-shrink:0}.toast-close svg{width:13px;height:13px}.toast-close:hover{background:var(--blue-light);border-color:#4392f14d}.app-body.app-schedule .page-content{overflow:hidden;min-height:0;padding-bottom:16px}.app-body.app-schedule .page-fade{flex:1;min-height:0;display:flex;flex-direction:column}.ss-layout{display:grid;grid-template-columns:270px 1fr;gap:0;flex:1;min-height:0;overflow:hidden;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--surface-card, #fff);box-shadow:var(--shadow-xs)}.ss-sidebar{border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;background:var(--surface-app, #f2f4f8)}.ss-prog-card{display:flex;align-items:center;gap:10px;padding:16px 14px 14px;border-bottom:1px solid var(--border);flex-shrink:0}.ss-prog-icon{width:34px;height:34px;border-radius:9px;background:#4392f11f;color:var(--blue, #4392f1);display:flex;align-items:center;justify-content:center;flex-shrink:0}.ss-prog-info{display:flex;flex-direction:column;gap:2px;min-width:0}.ss-prog-name{font-size:.825rem;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss-prog-code{font-size:.7rem;color:var(--blue, #4392f1);font-family:var(--font-mono);background:#4392f11a;padding:1px 6px;border-radius:99px;width:fit-content}.ss-courses-header{display:flex;align-items:center;justify-content:space-between;padding:12px 14px 6px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted);flex-shrink:0}.ss-courses-count{background:var(--border);color:var(--muted);font-size:.68rem;padding:1px 6px;border-radius:99px;font-weight:600}.ss-search-wrap{position:relative;padding:0 10px 8px;flex-shrink:0}.ss-search-icon{position:absolute;left:18px;top:50%;transform:translateY(-60%);color:var(--muted);pointer-events:none}.ss-search{width:100%;padding:6px 10px 6px 30px;border:1px solid var(--border);border-radius:7px;background:#fff;font-size:.8rem;color:var(--ink);font-family:var(--font-sans);outline:none;box-sizing:border-box}.ss-search:focus{border-color:var(--blue);box-shadow:0 0 0 3px #4392f11f}.ss-courses-list{flex:1;overflow-y:auto;padding:0 10px 12px}.ss-courses-list::-webkit-scrollbar{width:3px}.ss-courses-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.ss-courses-empty{padding:16px 4px;font-size:.8rem;color:var(--muted)}.ss-course-row{display:flex;align-items:flex-start;gap:8px;padding:8px;border-radius:8px;transition:background var(--ease)}.ss-course-row:hover{background:#4392f10f}.ss-course-code{font-family:var(--font-mono);font-size:.72rem;font-weight:700;color:var(--blue, #4392f1);background:#4392f11a;padding:2px 6px;border-radius:5px;flex-shrink:0;margin-top:1px}.ss-course-detail{display:flex;flex-direction:column;gap:1px;min-width:0}.ss-course-title{font-size:.8rem;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss-course-lec{font-size:.73rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ss-timetable{display:flex;flex-direction:column;overflow:hidden;min-height:0}.ss-no-timetable{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--muted);padding:40px 24px}.ss-no-timetable p{font-size:.95rem;font-weight:600;color:var(--ink-soft);margin:0}.ss-no-timetable span{font-size:.8rem;text-align:center}.ss-day-tabs{display:flex;gap:0;border-bottom:1.5px solid var(--border);padding:0 16px;overflow-x:auto;flex-shrink:0;-webkit-overflow-scrolling:touch}.ss-day-tab{padding:11px 18px;border:none;background:transparent;border-bottom:2px solid transparent;margin-bottom:-1.5px;color:var(--muted);font-size:.845rem;font-weight:500;cursor:pointer;white-space:nowrap;font-family:var(--font-sans);transition:color var(--ease),border-color var(--ease)}.ss-day-tab:hover{color:var(--ink-soft)}.ss-day-tab.active{color:var(--blue, #4392f1);border-bottom-color:var(--blue, #4392f1);font-weight:600}.ss-grid-wrap{flex:1;min-height:0;overflow:auto}.ss-day-empty{padding:40px 24px;color:var(--muted);font-size:.875rem;text-align:center}.ss-grid{width:100%;border-collapse:collapse;min-width:500px}.ss-grid thead tr{background:var(--surface-app, #f2f4f8);position:sticky;top:0;z-index:2}.ss-col-label{text-align:left;padding:9px 14px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);white-space:nowrap;min-width:120px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.ss-col-slot{text-align:center;padding:9px 12px;font-size:.7rem;font-weight:600;color:var(--muted);white-space:nowrap;border-right:1px solid var(--border);border-bottom:1px solid var(--border);min-width:130px;font-family:var(--font-mono)}.ss-grid tbody tr{border-bottom:1px solid rgba(15,31,56,.05)}.ss-grid tbody tr:last-child{border-bottom:none}.ss-cohort-cell{padding:10px 14px;font-size:.78rem;font-weight:600;color:var(--ink-soft);background:var(--surface-app, #f2f4f8);border-right:1px solid var(--border);white-space:nowrap;position:sticky;left:0;z-index:1}.ss-empty-cell{border-right:1px solid rgba(15,31,56,.04);background:#fafbfc}.ss-session-cell{padding:6px 8px;border-right:1px solid rgba(15,31,56,.06);vertical-align:top}.ss-session-block{display:flex;flex-direction:column;gap:2px;background:#4392f117;border-left:3px solid var(--blue, #4392f1);border-radius:5px;padding:6px 8px}.ss-s-code{font-size:.755rem;font-weight:700;color:var(--blue, #4392f1);font-family:var(--font-mono)}.ss-s-room{font-size:.72rem;color:var(--ink-soft)}.ss-s-lec{font-size:.7rem;color:var(--muted)}.ss-lec-avatar{width:34px;height:34px;border-radius:50%;background:var(--blue, #4392f1);color:#fff;font-size:.88rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.ss-session-block--lec{background:#7c3aed17;border-left-color:#7c3aed}.ss-session-block--lec .ss-s-code{color:#7c3aed}.app-body.app-courses-lec .page-content,.app-body.app-courses-stu .page-content{overflow:hidden;min-height:0;padding-bottom:0}.app-body.app-courses-lec .page-fade,.app-body.app-courses-stu .page-fade{flex:1;min-height:0;display:flex;flex-direction:column}@media (max-width: 900px){.ss-layout{grid-template-columns:1fr}.ss-sidebar{border-right:none;border-bottom:1px solid var(--border);max-height:240px}}.user-management{display:grid;gap:16px}.um-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.um-stat-card{background:#fff;border:1px solid var(--border);border-radius:var(--r-lg);padding:16px 20px;display:flex;flex-direction:column;gap:4px;border-top:3px solid var(--accent, #4392f1);box-shadow:var(--shadow-xs)}.um-stat-value{font-size:1.75rem;font-weight:700;color:var(--ink);line-height:1;font-family:var(--font-sans)}.um-stat-label{font-size:.72rem;color:var(--muted);font-weight:600;text-transform:uppercase;letter-spacing:.08em}.um-share-panel{padding:14px 20px}.um-share-inner{display:flex;align-items:center;gap:20px;flex-wrap:wrap}.um-share-label{display:flex;flex-direction:column;gap:2px;min-width:0}.um-share-label strong{font-size:.85rem;color:var(--ink);font-weight:600}.um-share-label span{font-size:.78rem;color:var(--muted)}.um-share-row{display:flex;gap:8px;align-items:center;flex:1;min-width:260px}.um-share-input{flex:1;padding:8px 12px;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-app, #f2f4f8);font-size:.8rem;color:var(--muted);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;outline:none}.um-table-panel{gap:12px}.um-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.um-role-tabs{display:flex;gap:2px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border);border-radius:10px;padding:3px}.um-role-tab{display:flex;align-items:center;gap:6px;padding:5px 12px;border-radius:7px;border:none;background:transparent;color:var(--muted);font-size:.8rem;font-weight:500;cursor:pointer;transition:background var(--ease),color var(--ease);font-family:var(--font-sans);white-space:nowrap}.um-role-tab:hover{color:var(--ink-soft);background:#0f1f380d}.um-role-tab.active{background:#fff;color:var(--blue);font-weight:600;box-shadow:0 1px 4px #0f1f381a}.um-role-tab-count{font-size:.7rem;background:var(--border);color:var(--muted);border-radius:99px;padding:1px 6px;font-weight:600}.um-role-tab.active .um-role-tab-count{background:#4392f126;color:var(--blue)}.um-search-wrap{flex:1;min-width:200px;position:relative;display:flex;align-items:center}.um-search-icon{position:absolute;left:10px;color:var(--muted);pointer-events:none;flex-shrink:0}.um-search{width:100%;padding:7px 32px;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:#fff;font-size:.845rem;color:var(--ink);font-family:var(--font-sans);outline:none;transition:border-color var(--ease),box-shadow var(--ease)}.um-search:focus{border-color:var(--blue);box-shadow:0 0 0 3px #4392f11f}.um-search-clear{position:absolute;right:8px;border:none;background:none;color:var(--muted);cursor:pointer;font-size:1rem;line-height:1;padding:0 4px;transition:color var(--ease)}.um-search-clear:hover{color:var(--ink)}.um-table-wrap{border:1px solid var(--border);border-radius:var(--r-lg);overflow:auto;max-height:calc(100vh - 340px)}.um-table{width:100%;border-collapse:collapse;min-width:700px}.um-table thead tr{background:var(--surface-app, #f2f4f8);border-bottom:1px solid var(--border);position:sticky;top:0;z-index:2}.um-table th{padding:10px 14px;text-align:left;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);white-space:nowrap}.um-table td{padding:11px 14px;font-size:.845rem;color:var(--ink-soft);border-bottom:1px solid rgba(15,31,56,.05);vertical-align:middle}.um-table tbody tr:last-child td{border-bottom:none}.um-table tbody tr:hover td{background:var(--alice, #e7f0ff)}.um-user-cell{display:flex;align-items:center;gap:10px}.um-avatar{width:32px;height:32px;border-radius:50%;color:#fff;font-size:.8rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}.um-avatar--lg{width:42px;height:42px;font-size:1rem}.um-user-info{display:flex;flex-direction:column;gap:1px;min-width:0}.um-email{font-size:.845rem;font-weight:600;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.um-username{font-size:.75rem;color:var(--muted)}.um-role-pill{display:inline-block;padding:3px 9px;border-radius:99px;font-size:.72rem;font-weight:600;letter-spacing:.04em}.um-details-cell{max-width:200px;color:var(--muted);font-size:.8rem}.um-details-cell>span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.um-detail-scope{margin-top:2px;font-size:.72rem;color:var(--muted);opacity:.85}.um-student-links{display:flex;flex-wrap:wrap;align-items:center;gap:8px;opacity:1}.um-student-links a{color:var(--accent, #183b7a);font-weight:600;text-decoration:none}.um-student-links a:hover{text-decoration:underline}.um-tag{padding:1px 7px;border-radius:999px!important;background:#fdf2d8;color:#855700;font-size:.66rem;font-weight:700}.um-date-cell{white-space:nowrap;color:var(--muted);font-size:.8rem;font-family:var(--font-mono)}.um-actions{display:flex;gap:4px;flex-wrap:wrap}.um-action-btn{padding:4px 10px;border-radius:6px;border:1px solid var(--border);background:transparent;font-size:.775rem;font-weight:500;color:var(--ink-soft);cursor:pointer;white-space:nowrap;font-family:var(--font-sans);transition:background var(--ease),color var(--ease),border-color var(--ease)}.um-action-btn:hover{background:var(--alice);color:var(--blue);border-color:#4392f14d}.um-action-btn.success{color:#065f46;border-color:#065f4640}.um-action-btn.success:hover{background:#d1fae5;border-color:#059669}.um-action-btn.warn{color:#854d0e;border-color:#854d0e40}.um-action-btn.warn:hover{background:#fef3c7;border-color:#d97706}.um-action-btn.danger{color:var(--cinnabar, #dc493a);border-color:#dc493a40}.um-action-btn.danger:hover{background:#dc493a14;border-color:#dc493a80}.um-empty{text-align:center;color:var(--muted);padding:40px 16px!important;font-size:.875rem}.um-pagination-row{display:flex;align-items:center;justify-content:space-between;padding-top:4px;flex-wrap:wrap;gap:8px}.um-pagination-info{font-size:.78rem;color:var(--muted)}.um-pagination{display:flex;align-items:center;gap:3px}.um-page-btn{min-width:30px;height:30px;padding:0 6px;border-radius:7px;border:1px solid var(--border);background:#fff;color:var(--ink-soft);font-size:.8rem;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:background var(--ease),color var(--ease),border-color var(--ease);font-family:var(--font-sans)}.um-page-btn:hover:not(:disabled){background:var(--alice);color:var(--blue);border-color:#4392f14d}.um-page-btn.active{background:var(--blue);color:#fff;border-color:var(--blue);font-weight:700}.um-page-btn:disabled{opacity:.35;cursor:default}.um-page-ellipsis{width:28px;text-align:center;color:var(--muted);font-size:.8rem}.um-modal-user-head{display:flex;align-items:center;gap:12px}@media (max-width: 900px){.um-stats{grid-template-columns:repeat(2,1fr)}.um-share-inner{flex-direction:column;align-items:stretch}}.timetable-preview .preview-placeholder{display:grid;gap:6px;padding:16px;border-radius:var(--r-lg);border:1px dashed rgba(67,146,241,.3);background:var(--alice)}@keyframes loader-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes logo-pop{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}@keyframes page-fade-in{0%{opacity:0}to{opacity:1}}@keyframes toast-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 1200px){.timetable-grid{grid-template-columns:1fr}.timetable-right{grid-column:1}.content-grid{grid-template-columns:1fr}}@media (max-width: 1024px){.page-grid,.section-grid,.panel-split{grid-template-columns:1fr}}@media (max-width: 900px){.app-shell{grid-template-columns:1fr}.sidebar{position:fixed;height:100vh;width:240px;inset:0 auto 0 0;transform:translate(-110%);transition:transform .22s ease;z-index:30;box-shadow:var(--shadow-lg)}.sidebar.open{transform:translate(0)}.menu-btn{display:inline-flex}.topbar-center{display:none}.page-content{padding:16px}}@media (max-width: 600px){.sidebar{top:0;right:25%;bottom:0;left:0}.sheet-actions{flex-direction:column;gap:6px}.sheet-actions button{width:100%}}.table-panel{gap:8px}.table-panel .panel-header{margin-bottom:2px}.table-panel .table-shell{margin-top:-2px}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans)}@keyframes app-fade{0%{opacity:0}to{opacity:1}}.page-content>*{animation:app-fade .35s ease}.sidebar-link{transition:background var(--ease),color var(--ease),transform .2s cubic-bezier(.34,1.56,.64,1)}.sidebar-link:hover{transform:translate(4px)}.sidebar-link-icon{transition:background var(--ease),color var(--ease),transform .3s cubic-bezier(.34,1.56,.64,1)}.sidebar-link:hover .sidebar-link-icon{transform:scale(1.14) rotate(-4deg)}.sidebar-link.active .sidebar-link-icon{transform:none}.topbar-icon-btn,.topbar-user,.sidebar-collapse-btn{transition:background var(--ease),color var(--ease),transform .2s cubic-bezier(.34,1.56,.64,1)}.topbar-icon-btn:hover{transform:translateY(-2px) scale(1.08)}.topbar-user:hover{transform:translateY(-1px)}@media (prefers-reduced-motion: reduce){.page-content>*,.dashboard-container>*{animation:none!important}.sidebar-link:hover,.sidebar-link:hover .sidebar-link-icon,.topbar-icon-btn:hover,.topbar-user:hover{transform:none!important}}.tt-list-header,.tt-saved-header,.sem-header,.exp-section-header,.ax-toolbar,.aud-header-actions{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));box-shadow:0 1px 4px #0f1f380d;padding:16px 20px}.sidebar-link-badge{margin-left:auto;min-width:18px;padding:1px 6px;border-radius:9px;background:#c2410c;color:#fff;font-size:.68rem;font-weight:800;line-height:1.5;text-align:center}.acr-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.acr-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.acr-select-all{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.78rem;font-weight:700}.acr-bulk .acr-danger-ghost{border-style:dashed}.acr-list{display:grid;gap:10px}.acr-card{display:grid;gap:10px;padding:13px 15px;border:1px solid #e2e9ef;border-radius:10px;background:#fff}.acr-card.is-selected{border-color:#315fbe;background:#f7faff}.acr-card-head{display:flex;align-items:flex-start;gap:10px}.acr-card-title{display:grid;gap:2px;min-width:0;flex:1}.acr-card-title strong{display:flex;align-items:center;gap:8px;color:#17324d;font-size:.92rem}.acr-card-title>span{color:var(--muted);font-size:.75rem;font-weight:600}.acr-op{padding:2px 7px;border-radius:5px;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.acr-op--create{background:#e6f5ec;color:#1f6f43}.acr-op--update{background:#e9f0fb;color:#21408a}.acr-op--delete{background:#fdeaea;color:#b4232a}.acr-card-actions{display:flex;gap:7px}.acr-status{padding:3px 9px;border-radius:6px;font-size:.7rem;font-weight:800}.acr-status--approved{background:#e6f5ec;color:#1f6f43}.acr-status--rejected{background:#fdeaea;color:#b4232a}.acr-stale{margin:0;padding:8px 11px;border:1px solid #f0dcb4;border-radius:7px;background:#fdf7ea;color:#8a6d3b;font-size:.76rem;font-weight:700}.acr-diff{display:grid;gap:5px;padding:10px 12px;border-radius:8px;background:#f7f9fb}.acr-diff-row{display:grid;grid-template-columns:minmax(110px,.8fr) minmax(0,1fr) 14px minmax(0,1fr);align-items:baseline;gap:9px;font-size:.79rem}.acr-diff-row>span:first-child{color:var(--muted);font-weight:700}.acr-diff-row--added{grid-template-columns:minmax(110px,.8fr) minmax(0,2fr)}.acr-diff-row del{color:#8a97a8;text-decoration:line-through}.acr-diff-row ins{color:#1f6f43;font-weight:700;text-decoration:none}.acr-nodiff,.acr-reason{margin:0;color:var(--muted);font-size:.78rem}.acr-reason strong{color:#17324d}.acr-trail{margin:0;color:var(--muted);font-size:.72rem;font-variant-numeric:tabular-nums}.acr-empty{display:grid;gap:5px;justify-items:center;padding:44px 20px;color:var(--muted);text-align:center}.acr-empty strong{color:#17324d;font-size:.95rem}.acr-empty span{font-size:.82rem}@media (max-width: 720px){.acr-diff-row{grid-template-columns:1fr;gap:2px}.acr-diff-row>span[aria-hidden]{display:none}}.apr-deo-ack{display:inline-flex;align-items:center;padding:2px 8px;border-radius:4px;background:#fff7e6;color:#92400e;font-size:.7rem;font-weight:600;cursor:help}.apr-deo-ack.is-done{background:#e8f6ee;color:#166534;cursor:default}.acr-kinds{margin-bottom:12px;padding-bottom:12px;border-bottom:1px solid #e2e9ef}.acr-standing{margin:0;padding:6px 11px;border-radius:6px;background:#fff7e6;color:#92400e;font-size:.78rem;font-weight:600}.acr-standing.fits{background:#e6f5ec;color:#1f6f43}.acr-pager{display:flex;align-items:center;justify-content:center;gap:14px;margin-top:16px;padding-top:14px;border-top:1px solid #e2e9ef;color:var(--muted);font-size:.8rem;font-weight:700}.acr-pager em{display:block;font-style:normal;font-weight:500;font-size:.72rem;opacity:.8}.acr-pager span{text-align:center}.acr-held-tag{margin-left:8px;padding:2px 8px;border-radius:999px;background:#fef3c7;color:#92400e;font-size:.64rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.sidebar-switch{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-bottom:10px;padding:9px 10px;border:1px dashed rgba(255,255,255,.35);border-radius:8px;background:#ffffff0f;color:#fff;font:inherit;font-size:.8rem;font-weight:600;cursor:pointer;transition:background .18s}.sidebar-switch:hover{background:#ffffff24}.topbar-dropdown-role[data-view=lecturer]:after{content:" · teaching";font-weight:500;opacity:.7}.topbar-dropdown-role[data-view=admin]:after{content:" · administering";font-weight:500;opacity:.7}.inline-loader{display:inline-flex;align-items:center;gap:8px;font-size:.78rem;font-weight:500;color:#6a7a96;vertical-align:middle}.inline-loader-spin{display:inline-block;flex:none;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;opacity:.55;animation:inline-loader-turn .65s linear infinite}@keyframes inline-loader-turn{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.inline-loader-spin{animation:inline-loader-pulse 1.2s ease-in-out infinite}@keyframes inline-loader-pulse{0%,to{opacity:.25}50%{opacity:.75}}}.inline-loader--block{display:flex;justify-content:center;padding:18px 0}.page-empty-note{display:flex;justify-content:center;padding:18px 0;margin:0;color:var(--muted);font-size:.9rem}.ax-semester-note{margin:0 0 10px;padding:8px 12px;border-left:3px solid var(--blue, #315fbe);border-radius:6px;background:#315fbe0f;font-size:.8rem;color:var(--muted, #5b6472)}.rc-panel{border:1px solid var(--border, #dce4ec);border-radius:8px;padding:10px 12px;display:grid;gap:8px;background:#fbfcfd}.rc-panel--issues{border-color:#fca5a5;background:snow}.rc-panel--fits{border-color:#86efac;background:#f6fef9}.rc-panel>header{display:flex;align-items:center;justify-content:space-between;gap:8px}.rc-panel>header strong{font-size:.8rem;color:var(--ink, #1e293b)}.rc-checking{font-size:.74rem;color:var(--muted, #64748b)}.rc-error{margin:0;font-size:.76rem;color:#b91c1c}.rc-fits{margin:0;font-size:.78rem;color:#047857;font-weight:600}.rc-list{display:grid;gap:8px}.rc-group{border-radius:7px;padding:8px 10px}.rc-group>strong{display:block;font-size:.76rem;margin-bottom:4px}.rc-group ul{margin:0;padding:0;list-style:none;display:grid;gap:6px}.rc-group--problem{background:#fef2f2;border:1px solid #fecaca;color:#7f1d1d}.rc-group--problem li{font-size:.78rem;line-height:1.45}.rc-group--clash{background:#fffbeb;border:1px solid #fde68a;color:#78350f}.rc-group--clash li{display:grid;gap:2px;font-size:.78rem;line-height:1.45}.rc-group--clash li.rc-item--self{padding:4px 6px;border-radius:5px;background:#fee2e2;color:#7f1d1d}.rc-self{margin:0 0 6px;padding:6px 8px;border-radius:5px;background:#fee2e2;color:#991b1b;font-size:.76rem;font-weight:700}.rc-kinds{display:flex;gap:4px;flex-wrap:wrap}.rc-kind{display:inline-flex;align-items:center;font-style:normal;font-size:.7rem;font-weight:700;padding:2px 10px;border-radius:999px;background:#fde68a;color:#78350f}.rc-kind--lecturer{background:#fecaca;color:#991b1b}.rc-kind--class{background:#e9d5ff;color:#581c87}.rc-explain{color:inherit}.rc-meta{font-size:.72rem;color:#92400e;opacity:.85}.rc-list--compact .rc-group{padding:6px 8px}.rc-list--compact .rc-group li{font-size:.74rem}.rc-room{margin:0;display:flex;flex-wrap:wrap;gap:4px 10px;font-size:.76rem;color:var(--muted, #64748b)}.rc-room strong{color:var(--ink, #1e293b)}.rc-room .ok:before{content:"✓ ";color:#059669;font-weight:800}.rc-room .bad{color:#b91c1c;font-weight:600}.rc-room .bad:before{content:"✗ "}.rc-room--bad strong{color:#b91c1c}.rc-ack{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;align-items:start;padding:8px 10px;border:1px dashed #f87171;border-radius:7px;background:#fff;font-size:.78rem;color:#7f1d1d;cursor:pointer}.rc-ack input{margin-top:2px}.rc-sent{margin:0;font-size:.74rem;color:#92400e}.rc-sent--fit{color:#047857}.requests-clash-toggle{display:block;margin-top:4px;padding:0;border:none;background:none;font-size:.72rem;font-weight:700;color:#047857;cursor:pointer;text-decoration:underline}.requests-clash-toggle.has-issues{color:#b45309}.requests-detail-row td{background:#f8fafc}.requests-detail{display:grid;gap:8px;padding:4px 2px}.requests-detail-move{margin:0;display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.8rem}.requests-detail-move span{color:var(--muted, #64748b);text-decoration:line-through}.apr-cr-move{display:flex;flex-wrap:wrap;gap:6px;align-items:center;font-size:.76rem}.apr-cr-move span{color:var(--muted, #64748b);text-decoration:line-through}.apr-cr-move strong{color:var(--ink, #1e293b)}.deo-suggest-bar-issues{margin-left:6px;padding:0 6px;border-radius:999px;background:#fee2e2;color:#991b1b;font-size:.66rem;font-weight:800}.acr-facts{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:3px 12px;margin:8px 0 0;font-size:.78rem}.acr-facts dt{color:var(--muted, #64748b);font-weight:600}.acr-facts dd{margin:0;color:var(--ink, #1e293b)}.acr-impact{margin-top:8px;padding:8px 10px;border:1px solid #bfdbfe;border-radius:6px;background:#eff6ff;font-size:.78rem;color:#1e3a8a}.acr-impact strong{display:block;margin-bottom:3px;font-size:.74rem;text-transform:uppercase;letter-spacing:.04em}.acr-impact ul{margin:0;padding-left:18px;display:grid;gap:3px}.rc-venue-read{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:4px 0;font-size:.78rem;color:#334155}.rc-venue-read--unknown{color:#92400e}.rc-venue-pick{padding:2px 10px;border:1px solid #cbd5e1;border-radius:999px!important;background:#fff;color:#183b7a;font:inherit;font-size:.76rem;font-weight:700;cursor:pointer}.rc-venue-pick:hover{background:#eef2f8}.rc-competing{margin:6px 0;padding:8px 10px;border:1px solid #e9d5a8;border-radius:8px!important;background:#fffbf0;font-size:.78rem;color:#78350f}.rc-competing strong{display:block;margin-bottom:2px;font-size:.76rem}.rc-competing ul{margin:0;padding-left:16px}.rc-competing span{color:#92400e}.rc-moved-by{display:block;margin-top:2px;font-size:.72rem;color:#475569;font-style:italic}.rc-options{margin:8px 0;padding:10px 12px;border:1px solid #c7e3d1;border-radius:10px!important;background:#f6fcf8}.rc-options>strong{display:block;margin-bottom:6px;font-size:.8rem;color:#14532d}.rc-options ul{display:grid;gap:6px;margin:0;padding:0;list-style:none}.rc-options li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:8px;font-size:.8rem;color:#0f172a}.rc-option-kind{padding:1px 8px;border-radius:999px!important;background:#dcfce7;color:#166534;font-size:.68rem;font-weight:700}.rc-option-where small{display:block;color:#64748b;font-size:.72rem}.rc-option-use{padding:4px 12px;border:1px solid #183b7a;border-radius:999px!important;background:#fff;color:#183b7a;font:inherit;font-size:.76rem;font-weight:700;white-space:nowrap;cursor:pointer}.rc-option-use:hover{background:#eef2f8}.rc-override-btn{margin-top:6px;padding:6px 12px;border:1px dashed #dc2626;border-radius:8px!important;background:#fff;color:#b91c1c;font:inherit;font-size:.78rem;font-weight:700;cursor:pointer}.rc-override{margin:8px 0 0;padding:10px 12px;border-radius:10px!important;font-size:.8rem}.rc-override--ask{border:1px solid #fecaca;background:#fef2f2;color:#7f1d1d}.rc-override--ask p{margin:4px 0 8px;line-height:1.45}.rc-override--ask div{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.rc-override--on{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;border:1px solid #fde68a;background:#fffbeb;color:#92400e}@media (max-width: 600px){.rc-options li{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"kind use" "where use";row-gap:2px;padding-top:6px;border-top:1px solid #dcefe3}.rc-options li:first-child{padding-top:0;border-top:0}.rc-option-kind{grid-area:kind;justify-self:start}.rc-option-where{grid-area:where}.rc-options .rc-option-use{grid-area:use;align-self:center;white-space:normal;max-width:9.5em;text-align:center;border-radius:14px!important}}.acr-swap{margin:8px 0 0;padding:8px 12px;border:1px solid #c7e3d1;border-radius:8px!important;background:#f6fcf8;color:#14532d;font-size:.8rem;line-height:1.45}html body .btn-toolbar.acr-swap-btn{border-color:#1f6f43;color:#1f6f43;font-weight:700}html body .rc-group,html body .rc-self,html body .rc-group--clash li.rc-item--self{border-radius:10px!important}html body .rc-kind{border-radius:999px!important}html body .rc-panel,html body .acr-impact{border-radius:10px!important}.acr-filters{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:10px 0 4px;width:100%}.acr-search{display:flex;flex:1 1 260px;align-items:center;gap:8px;min-width:0;padding:0 12px;border:1px solid #dce4ec;border-radius:999px!important;background:#fff;color:#64748b}.acr-search input{flex:1;min-width:0;padding:8px 0;border:0;outline:none;background:transparent;font:inherit;font-size:.84rem;color:#0f172a}.acr-filters select{padding:7px 12px;border:1px solid #dce4ec;border-radius:999px!important;background:#fff;font:inherit;font-size:.82rem;color:#0f172a}.acr-clear{padding:6px 12px;border:0;border-radius:999px!important;background:#eef2f8;color:#183b7a;font:inherit;font-size:.78rem;font-weight:700;cursor:pointer}html body .btn-toolbar.acr-override-btn{border-color:#b45309;color:#92400e;font-weight:700}.acr-override-text{margin:0 0 12px;line-height:1.5;font-size:.86rem;color:#334155}@media (max-width: 600px){.acr-filters select{flex:1 1 45%}}html body .acr-search input,html body .acr-search input:focus{border:0!important;box-shadow:none!important;outline:none;background:transparent}.time-range-picker{display:grid;grid-template-columns:1fr 1fr;gap:12px}.time-range-picker .field{margin:0}.sm-page{display:grid;gap:16px;padding-bottom:8px}.sm-hello{display:flex;align-items:center;gap:12px;padding:4px 2px 0}.sm-avatar{flex:0 0 auto;display:grid;place-items:center;width:46px;height:46px;border-radius:50%!important;background:#183b7a;color:#fff;font-size:1.15rem;font-weight:800}.sm-hello p{margin:0;font-size:.8rem;font-weight:600;color:var(--muted, #64748b)}.sm-hello h2{margin:0;font-size:1.35rem;font-weight:800;color:var(--ink, #0f172a);letter-spacing:-.01em;line-height:1.2}.sm-hello-sub{margin:-8px 2px 0;font-size:.78rem;color:var(--muted, #64748b);line-height:1.4}.sm-hero{display:grid;gap:4px;padding:16px;border-radius:16px!important;background:#fff;color:var(--ink, #0f172a);border:1px solid var(--border, #e2e8f0)}.sm-hero-label{display:inline-flex;align-items:center;gap:6px;font-size:.76rem;font-weight:700;color:#183b7a}.sm-hero-label i{width:8px;height:8px;border-radius:50%!important;background:#34d399;box-shadow:0 0 #34d399b3;animation:sm-pulse 1.6s infinite}.sm-hero strong{font-size:1.5rem;font-weight:800;letter-spacing:-.01em;font-family:JetBrains Mono,monospace}.sm-hero--quiet strong{font-size:1.05rem;font-family:inherit}.sm-hero p{margin:0;font-size:.9rem;line-height:1.35;color:#334155}.sm-hero--quiet p{color:var(--muted, #64748b)}.sm-hero-where{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px!important}.sm-hero-where span{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px!important;background:#f1f5f9;color:#334155;font-size:.78rem;font-weight:600}@keyframes sm-pulse{70%{box-shadow:0 0 0 8px #34d39900}to{box-shadow:0 0 #34d39900}}.sm-section h3{display:flex;align-items:center;gap:8px;margin:0 2px 10px;font-size:1rem;font-weight:800;color:var(--ink, #0f172a)}.sm-section h3 span{padding:1px 8px;border-radius:999px!important;background:#e9eef3;color:#475569;font-size:.72rem}.sm-tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px}.sm-tile{display:grid;gap:2px;padding:14px;border-radius:14px!important;background:#fff;border:1px solid var(--border, #e2e8f0);text-decoration:none;color:inherit}.sm-tile:active{background:#f4f7fb}.sm-tile-top{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.sm-tile-icon{display:grid;place-items:center;width:32px;height:32px;border-radius:10px!important;background:#f1f5f9;color:#334155}.sm-tile-go{display:grid;place-items:center;width:26px;height:26px;border-radius:50%!important;border:1px solid var(--border, #e2e8f0);color:#64748b}.sm-tile strong{font-size:1.6rem;font-weight:800;line-height:1.1;color:var(--ink, #0f172a)}.sm-tile>span:last-child{font-size:.8rem;font-weight:600;color:var(--muted, #64748b)}.sm-list{display:grid;border-radius:14px!important;background:#fff;border:1px solid var(--border, #e2e8f0);overflow:hidden}.sm-card{display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;padding:14px}.sm-card+.sm-card{border-top:1px solid #edf1f6}.sm-group-head{display:flex;align-items:baseline;gap:8px;padding:7px 14px;background:#f8fafc;font-family:JetBrains Mono,monospace;font-size:.72rem;font-weight:700;color:#475569}.sm-card+.sm-group-head{border-top:1px solid #edf1f6}.sm-group-head+.sm-card{border-top:1px solid #edf1f6}.sm-group-head em{font-family:inherit;font-style:normal;font-weight:600;color:#94a3b8}.sm-card.is-done{opacity:.5}.sm-card.is-now{background:#f8fafc}.sm-card-icon{display:grid;place-items:center;width:40px;height:40px;border-radius:12px!important;background:#f1f5f9;color:#475569}.sm-card.is-now .sm-card-icon,.sm-card.is-next .sm-card-icon{background:#183b7a;color:#fff}.sm-card-body{min-width:0;display:grid;gap:2px}.sm-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.sm-card-code{font-family:JetBrains Mono,monospace;font-size:.74rem;font-weight:700;color:#64748b}.sm-chip{padding:1px 8px;border-radius:999px!important;background:#eef2f6;font-size:.66rem;font-weight:600;color:#475569}.sm-state{margin-left:auto;padding:2px 8px;border-radius:999px!important;font-size:.66rem;font-weight:800;text-transform:uppercase;letter-spacing:.03em}.sm-state--now{background:#d1fae5;color:#065f46}.sm-state--next{background:#f1f5f9;color:#183b7a;text-transform:none}.sm-state--done{background:#f1f5f9;color:#64748b}.sm-card-title{margin:0;font-size:.92rem;font-weight:700;color:var(--ink, #0f172a);line-height:1.3}.sm-card-meta{margin:3px 0 0;display:flex;flex-wrap:wrap;gap:4px 12px;font-size:.76rem;color:var(--muted, #64748b)}.sm-card-meta>span{display:inline-flex;align-items:center;gap:4px}.sm-time{font-family:JetBrains Mono,monospace;font-size:.72rem}.sm-room{font-weight:700;color:#334155}.sm-who{margin:0;font-size:.74rem;color:#94a3b8}.sm-mode{display:grid;grid-template-columns:1fr 1fr;padding:4px;border-radius:999px!important;background:#e9eef5}.sm-mode button{padding:9px;border:none;border-radius:999px!important;background:none;font-size:.84rem;font-weight:700;color:#475569;cursor:pointer}.sm-mode button.on{background:#fff;color:#183b7a;box-shadow:0 1px 3px #0f172a1f}.sm-cal{padding:14px 10px 10px;border-radius:14px!important;background:#fff;border:1px solid var(--border, #e2e8f0)}.sm-cal-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:0 6px 10px}.sm-cal-head strong{font-size:.98rem;font-weight:800;color:var(--ink, #0f172a)}.sm-cal-head span{font-size:.74rem;color:var(--muted, #64748b)}.sm-days{display:flex;justify-content:space-between;gap:2px;overflow-x:auto;scrollbar-width:none}.sm-days::-webkit-scrollbar{display:none}.sm-day{flex:1 0 44px;display:grid;justify-items:center;gap:4px;padding:2px 0;border:none;background:none;color:#334155;cursor:pointer;font:inherit}.sm-day-name{font-size:.7rem;font-weight:700;color:#94a3b8;text-transform:uppercase;letter-spacing:.03em}.sm-day-num{display:grid;place-items:center;width:38px;height:38px;border-radius:50%!important;font-size:.95rem;font-weight:800}.sm-day.is-today .sm-day-num{color:#0f172a;box-shadow:inset 0 0 0 1.5px #94a3b8}.sm-day.is-active .sm-day-num{background:#183b7a;color:#fff;box-shadow:none}.sm-day.is-recess .sm-day-num{color:#cbd5e1}.sm-dots{display:flex;gap:3px;height:5px}.sm-dots i{width:5px;height:5px;border-radius:50%!important;background:#94a3b8}.sm-day.is-active .sm-dots i{background:#183b7a}.sm-day-panel{display:grid;gap:10px;min-height:45vh;align-content:start;touch-action:pan-y}.sm-day-title{display:flex;align-items:baseline;gap:8px;margin:2px 2px 0;font-size:1rem;font-weight:800;color:var(--ink, #0f172a)}.sm-day-title small{font-size:.8rem;font-weight:600;color:var(--muted, #64748b)}.sm-day-title em{align-self:center;padding:1px 8px;border-radius:999px!important;background:#e9eef3;color:#475569;font-size:.66rem;font-style:normal;font-weight:800;text-transform:uppercase}.sm-day-title>span{margin-left:auto;font-size:.76rem;font-weight:600;color:var(--muted, #64748b)}.sm-empty{margin:0;padding:28px 16px;border-radius:14px!important;background:#fff;border:1px solid var(--border, #e2e8f0);text-align:center;color:var(--muted, #64748b);font-size:.88rem}.sm-hint{margin:4px 0 0;text-align:center;font-size:.72rem;color:#94a3b8}.sm-week{display:grid;gap:18px}.sm-week-day{display:grid;gap:8px}.sm-week-go{padding:0;border:0!important;background:none;font:inherit;color:inherit;cursor:pointer}.app-body.app-schedule-phone .sm-schedule{display:block}.sm-meets{margin:4px 0 0;display:grid;gap:2px;font-size:.74rem;color:#475569}.sm-meets b{color:#0f172a}body:has(.app-shell--tabbar){--tabbar-top: calc(60px + env(safe-area-inset-bottom, 0px)) }.sm-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:60;display:flex;align-items:center;justify-content:space-around;gap:4px;padding:8px 12px calc(8px + env(safe-area-inset-bottom,0px));border-top:1px solid var(--border, #e2e8f0);border-radius:0!important;background:#fff;box-shadow:none!important}.sm-tab{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px;height:44px;padding:0 12px;border-radius:999px!important;color:#64748b;text-decoration:none;-webkit-tap-highlight-color:transparent;transition:background .15s ease,color .15s ease,padding .15s ease}.sm-tab-icon{display:grid;place-items:center}.sm-tab-label{display:none;font-size:.8rem;font-weight:700;white-space:nowrap}.sm-tab.active{padding:0 18px;background:#e6ecf6;color:#183b7a}.sm-tab.active .sm-tab-label{display:inline}.app-shell.app-shell--tabbar .app-main .page-content{padding-bottom:calc(var(--tabbar-top, 62px) + 24px)!important}.app-shell--tabbar .menu-btn{display:none}.app-body.app-student .sm-hello h2{font-size:1.3rem}.app-body.app-student .sm-hero strong{font-size:1.45rem}.app-body.app-student .sm-hero--quiet strong{font-size:1.02rem}.app-body.app-student .sm-section h3,.app-body.app-student .sm-day-title{font-size:.97rem}.app-body.app-student .sm-tile strong{font-size:1.55rem}.app-body.app-student .sm-card-title{font-size:.89rem}.app-body.app-student .sm-mode button{font-size:.81rem}.public-tt-body{margin:0;background:#eef3f6}.ptt-page{--ptt-ink: #172b3f;--ptt-soft: #40546a;--ptt-muted: #718096;--ptt-line: #dfe6ed;--ptt-faint: #f4f7fa;--ptt-navy: #183b7a;--ptt-block: #eaf0fa;--ptt-block-line: #c9d7ee;--ptt-merged: #fbf1dc;--ptt-merged-line: #ecd29c;--ptt-merged-ink: #7a5200;--ptt-row: 60px;--ptt-lane: 30px;min-height:100vh;background:#eef3f6;color:var(--ptt-ink)}.ptt-top{background:linear-gradient(#091830bd,#091830bd),var(--ptt-photo, none) center 58% / cover no-repeat;background-color:#0f1f38;color:#fff}.ptt-bar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 32px}.ptt-brand{display:flex;align-items:center;gap:12px;color:#fff;text-decoration:none;min-width:0}.ptt-brand img{width:40px;height:40px;border-radius:50%!important;background:#fff;object-fit:contain;flex:none}.ptt-brand span{display:grid;min-width:0}.ptt-brand strong{font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptt-brand small{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:#ffffffc7}.ptt-bar-actions{display:flex;align-items:center;gap:10px;flex:none}.ptt-kind{display:flex;padding:3px;border-radius:8px!important;background:#ffffff24}.ptt-kind button{padding:6px 14px;border:0;background:none;color:#ffffffd1;font:inherit;font-size:.82rem;font-weight:600;cursor:pointer}.ptt-kind button.on{background:#fff;color:var(--ptt-navy)}.ptt-bar-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 13px;border:1px solid rgba(255,255,255,.3);background:#ffffff1a;color:#fff;font:inherit;font-size:.82rem;font-weight:600;text-decoration:none;cursor:pointer;border-radius:7px!important}.ptt-bar-btn:hover{background:#ffffff2e}.ptt-menu{position:relative}.ptt-menu-pop{position:absolute;right:0;top:calc(100% + 6px);z-index:30;width:270px;padding:6px;background:#fff;border:1px solid var(--ptt-line);border-radius:10px!important;box-shadow:0 12px 32px #0f1f382e!important}.ptt-menu-pop button{display:grid;gap:2px;width:100%;padding:9px 11px;border:0;background:none;text-align:left;font:inherit;color:var(--ptt-ink);cursor:pointer;border-radius:7px!important}.ptt-menu-pop button:hover{background:var(--ptt-faint)}.ptt-menu-pop b{font-size:.86rem}.ptt-menu-pop span{font-size:.75rem;color:var(--ptt-muted)}.ptt-hero{max-width:760px;margin:0 auto;padding:22px 24px 34px;text-align:center}.ptt-hero h1{margin:0 0 16px;font-size:1.6rem;font-weight:700;letter-spacing:-.01em}.ptt-hero-hint{margin:-8px 0 14px;font-size:.86rem;color:#fffc}.ptt-hero-meta{display:inline-flex;align-items:center;gap:8px;margin:14px 0 0;font-size:.8rem;color:#fffc}.ptt-live{width:7px;height:7px;border-radius:50%!important;background:#34d399;flex:none}.ptt-hero-error{margin:10px 0 0;font-size:.8rem;color:#fecaca}.ptt-find{position:relative;text-align:left}.ptt-find>svg{position:absolute;left:16px;top:17px;color:var(--ptt-muted);pointer-events:none}.ptt-find input{width:100%;height:52px;padding:0 16px 0 46px;border:0;background:#fff;color:var(--ptt-ink);font:inherit;font-size:1rem;border-radius:10px!important;outline:none;box-shadow:0 8px 24px #09183040!important}.ptt-find input:focus{box-shadow:0 0 0 3px #93c5fdb3,0 8px 24px #09183040!important}.ptt-find-list{position:absolute;left:0;right:0;top:calc(100% + 6px);z-index:40;max-height:420px;overflow-y:auto;margin:0;padding:6px;list-style:none;background:#fff;color:var(--ptt-ink);border:1px solid var(--ptt-line);border-radius:10px!important;box-shadow:0 16px 40px #09183047!important}.ptt-find-list li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;gap:10px;padding:9px 11px;cursor:pointer;border-radius:7px!important;font-size:.86rem}.ptt-find-list li.on{background:#eef3fb}.ptt-find-list li b{white-space:nowrap}.ptt-find-list li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ptt-soft);font-size:.8rem}.ptt-find-list li em{font-style:normal;font-size:.72rem;color:var(--ptt-muted);white-space:nowrap}.ptt-find-list li.ptt-find-group{display:block;padding:8px 11px 4px;cursor:default;font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ptt-muted)}.ptt-find-list li.ptt-find-none{display:block;cursor:default;color:var(--ptt-muted)}.ptt-nav{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 32px;background:#fff;border-bottom:1px solid var(--ptt-line)}.ptt-views{display:flex;gap:4px;padding:3px;background:#eef2f7;border-radius:9px!important;min-width:0}.ptt-views button{padding:7px 16px;border:0;background:none;font:inherit;font-size:.85rem;font-weight:600;color:var(--ptt-soft);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px;border-radius:7px!important}.ptt-views button.on{background:#fff;color:var(--ptt-navy);box-shadow:0 1px 3px #0f1f381f!important}.ptt-weeks{display:flex;align-items:center;gap:10px;font-size:.84rem;color:var(--ptt-soft)}.ptt-weeks button{width:32px;height:32px;border:1px solid var(--ptt-line);background:#fff;font-size:1.1rem;color:var(--ptt-ink);cursor:pointer;border-radius:8px!important}.ptt-weeks button:disabled{opacity:.35;cursor:default}.ptt-weeks span{display:grid;text-align:center;line-height:1.25}.ptt-weeks strong{color:var(--ptt-ink)}.ptt-weeks em{font-style:normal;font-size:.74rem;color:var(--ptt-muted)}.ptt-main{padding:22px 32px 56px}.ptt-state{display:grid;justify-items:center;gap:12px;padding:72px 16px;text-align:center;color:var(--ptt-soft)}.ptt-spinner{width:28px;height:28px;border:3px solid #d6e0ec;border-top-color:var(--ptt-navy);border-radius:50%!important;animation:ptt-spin .8s linear infinite}@keyframes ptt-spin{to{transform:rotate(360deg)}}.ptt-empty{padding:40px 16px;text-align:center;color:var(--ptt-muted);font-size:.9rem}.ptt-link{padding:0;border:0;background:none;font:inherit;color:var(--ptt-navy);font-weight:600;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.ptt-text-btn{padding:7px 13px;border:1px solid var(--ptt-line);background:#fff;font:inherit;font-size:.82rem;font-weight:600;color:var(--ptt-ink);cursor:pointer;border-radius:7px!important}.ptt-text-btn:hover{background:var(--ptt-faint)}.ptt-primary{padding:10px 18px;border:0;background:var(--ptt-navy);color:#fff;font:inherit;font-size:.88rem;font-weight:600;cursor:pointer;border-radius:8px!important}.ptt-directory{display:grid;gap:22px}.ptt-directory-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.ptt-directory-head h2{margin:0 0 4px;font-size:1.3rem;letter-spacing:-.01em}.ptt-directory-head p{margin:0;font-size:.86rem;color:var(--ptt-soft)}.ptt-directory-tools{display:flex;gap:10px;align-items:center;flex:1 1 360px;justify-content:flex-end}.ptt-directory-tools .ptt-filter{max-width:380px}.ptt-directory-grid{column-width:380px;column-gap:48px}.ptt-dir-dept{break-inside:avoid;margin-bottom:30px}.ptt-dir-dept h3{display:flex;align-items:baseline;gap:8px;margin:0 0 4px;padding-bottom:8px;border-bottom:2px solid var(--ptt-ink);font-size:.82rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.ptt-dir-dept h3 span{font-size:.74rem;font-weight:600;color:var(--ptt-muted);letter-spacing:0}.ptt-dir-dept ul{margin:0;padding:0;list-style:none}.ptt-dir-dept li{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--ptt-line)}.ptt-dir-name{display:grid;gap:1px;min-width:0}.ptt-dir-name b{font-size:.88rem;font-weight:600;line-height:1.3}.ptt-dir-name span{font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--ptt-muted)}.ptt-dir-years{display:flex;gap:5px;flex:none}.ptt-dir-years button{min-width:32px;height:30px;padding:0 8px;border:1px solid var(--ptt-line);background:#fff;font:inherit;font-size:.8rem;font-weight:700;color:var(--ptt-navy);cursor:pointer;border-radius:7px!important}.ptt-dir-years button:hover,.ptt-dir-years button:focus-visible{background:var(--ptt-navy);border-color:var(--ptt-navy);color:#fff}.ptt-picked{display:grid;gap:16px}.ptt-picked-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px}.ptt-eyebrow{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ptt-muted)}.ptt-picked-head h2{margin:2px 0 4px;font-size:1.5rem;letter-spacing:-.01em}.ptt-picked-head p{margin:0;font-size:.86rem;color:var(--ptt-soft)}.ptt-picked-actions{display:flex;gap:8px;flex:none}.ptt-week{--ptt-cols: 62px repeat(var(--ptt-days), minmax(0, 1fr));background:#fff;border:1px solid var(--ptt-line);border-radius:12px!important;overflow:hidden}.ptt-week-head{display:grid;grid-template-columns:var(--ptt-cols);border-bottom:1px solid var(--ptt-line);background:#fafbfd}.ptt-week-day{display:flex;align-items:baseline;gap:6px;padding:12px 12px 10px;border-left:1px solid var(--ptt-line);font-size:.86rem}.ptt-week-day span{font-size:.76rem;color:var(--ptt-muted)}.ptt-week-day em{margin-left:auto;padding:1px 8px;font-style:normal;font-size:.68rem;font-weight:700;color:#fff;background:var(--ptt-navy);border-radius:999px!important}.ptt-week-day.is-today strong{color:var(--ptt-navy)}.ptt-week-body{display:grid;grid-template-columns:var(--ptt-cols)}.ptt-hours{display:grid;grid-auto-rows:var(--ptt-row)}.ptt-hours span{padding:6px 10px 0 0;text-align:right;font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--ptt-muted)}.ptt-col{position:relative;display:grid;grid-auto-rows:var(--ptt-row);border-left:1px solid var(--ptt-line)}.ptt-col.is-today{background:#f7faff}.ptt-col-line{border-top:1px solid #f0f3f7}.ptt-col-line:first-child{border-top:0}.ptt-now{position:absolute;left:0;right:0;z-index:3;height:2px;background:#d64545;pointer-events:none}.ptt-now:before{content:"";position:absolute;left:-4px;top:-3px;width:8px;height:8px;background:#d64545;border-radius:50%!important}.ptt-block{position:absolute;z-index:2;display:flex;flex-direction:column;gap:2px;overflow:hidden;padding:7px 9px;border:1px solid var(--t-line, var(--ptt-block-line));background:var(--t-bg, var(--ptt-block));color:var(--ptt-ink);font:inherit;text-align:left;cursor:pointer;border-radius:8px!important}.ptt-block:hover,.ptt-block:focus-visible{border-color:var(--t-ink, var(--ptt-navy));z-index:4}.ptt-block-top{display:flex;align-items:center;gap:6px;min-width:0;flex-wrap:wrap}.ptt-block-top b{font-size:.82rem;color:var(--t-ink, var(--ptt-navy));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptt-block-title{font-size:.78rem;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ptt-block-meta{font-size:.72rem;color:var(--ptt-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptt-block-who{font-size:.72rem;color:var(--ptt-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptt-block.is-short{padding:4px 8px;gap:0}.ptt-block.is-short .ptt-block-title,.ptt-block.is-short .ptt-block-who{display:none}.ptt-chip{display:inline-flex;align-items:center;gap:4px;padding:1px 7px;font-size:.66rem;font-weight:600;color:var(--ptt-soft);background:#fff;border:1px solid var(--ptt-line);white-space:nowrap;border-radius:999px!important}.ptt-chip--merged{color:var(--ptt-ink);background:#ffffffd9;border-color:#172b3f2e}.ptt-tone-0{--t-bg: #e8f0fe;--t-line: #bcd0f7;--t-ink: #1d4ed8}.ptt-tone-1{--t-bg: #def3ef;--t-line: #a7dcd2;--t-ink: #0f766e}.ptt-tone-2{--t-bg: #e8f5e3;--t-line: #bde2b0;--t-ink: #3b7a1e}.ptt-tone-3{--t-bg: #fdf2d8;--t-line: #efd391;--t-ink: #855700}.ptt-tone-4{--t-bg: #fdeadf;--t-line: #f4c3a5;--t-ink: #b0431a}.ptt-tone-5{--t-bg: #fce7ee;--t-line: #f1bdcf;--t-ink: #ad2758}.ptt-tone-6{--t-bg: #f0e8fb;--t-line: #d4c1f0;--t-ink: #6a34b6}.ptt-tone-7{--t-bg: #e4ecf7;--t-line: #bfcfe6;--t-ink: #2b4a82}.ptt-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:100;display:grid;place-items:center;padding:16px;background:#09183073}.ptt-sheet{width:min(460px,100%);max-height:calc(100vh - 32px);overflow-y:auto;padding:20px 22px 22px;background:#fff;color:var(--ptt-ink);border-radius:14px!important;box-shadow:0 24px 60px #09183059!important}.ptt-sheet header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:14px}.ptt-sheet header strong{font-size:1.1rem;color:var(--ptt-navy)}.ptt-sheet header p{margin:4px 0 0;font-size:.9rem;line-height:1.4}.ptt-sheet-close{width:32px;height:32px;flex:none;border:1px solid var(--ptt-line);background:#fff;font-size:1.2rem;line-height:1;cursor:pointer;border-radius:50%!important}.ptt-sheet dl{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:10px 16px;margin:0;font-size:.86rem}.ptt-sheet dt{color:var(--ptt-muted)}.ptt-sheet dd{margin:0}.ptt-sheet-classes{display:flex;flex-wrap:wrap;gap:6px}.ptt-class-chip{padding:4px 10px;border:1px solid var(--ptt-block-line);background:var(--ptt-block);color:var(--ptt-navy);font:inherit;font-size:.8rem;font-weight:600;cursor:pointer;border-radius:999px!important}.ptt-class-chip:hover{border-color:var(--ptt-navy)}.ptt-sheet-note{margin:16px 0 0;padding:10px 12px;font-size:.8rem;line-height:1.5;color:var(--ptt-merged-ink);background:var(--ptt-merged);border-radius:8px!important}.ptt-browse{display:grid;gap:14px}.ptt-browse-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.ptt-days{display:flex;gap:4px;padding:3px;background:#fff;border:1px solid var(--ptt-line);border-radius:9px!important;overflow-x:auto}.ptt-days button{display:flex;align-items:baseline;gap:6px;padding:7px 14px;border:0;background:none;font:inherit;font-size:.85rem;font-weight:600;color:var(--ptt-soft);cursor:pointer;white-space:nowrap;border-radius:7px!important}.ptt-days button small{font-size:.72rem;font-weight:500;color:var(--ptt-muted)}.ptt-days button.on{background:var(--ptt-navy);color:#fff}.ptt-days button.on small{color:#ffffffbf}.ptt-day-short{display:none}.ptt-filter{flex:1 1 220px;max-width:340px;height:38px;padding:0 12px;border:1px solid var(--ptt-line);background:#fff;font:inherit;font-size:.86rem}.ptt-browse-count{font-size:.8rem;color:var(--ptt-muted);white-space:nowrap}.ptt-pages{display:flex;gap:4px;margin-left:auto}.ptt-pages button{min-width:32px;height:32px;padding:0 8px;border:1px solid var(--ptt-line);background:#fff;font:inherit;font-size:.82rem;font-weight:600;color:var(--ptt-ink);cursor:pointer;border-radius:7px!important}.ptt-pages button.on{background:var(--ptt-navy);border-color:var(--ptt-navy);color:#fff}.ptt-pages button:disabled{opacity:.35;cursor:default}.ptt-grid-wrap{max-height:calc(100vh - 150px);overflow:auto;background:#fff;border:1px solid var(--ptt-line);border-radius:12px!important}.ptt-grid{--ptt-dept-w: 46px;--ptt-col-w: 168px;min-width:calc(var(--ptt-dept-w) + var(--ptt-periods) * var(--ptt-col-w))}.ptt-grid-head,.ptt-grid-row{display:grid;grid-template-columns:var(--ptt-dept-w) minmax(0,1fr)}.ptt-grid-head{position:sticky;top:0;z-index:4;background:#fafbfd;border-bottom:1px solid var(--ptt-line)}.ptt-grid-corner{position:sticky;left:0;z-index:1;display:grid;place-items:center;background:#fafbfd;border-right:1px solid var(--ptt-line);font-size:.62rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ptt-muted)}.ptt-grid-cols,.ptt-grid-cells{display:grid;grid-template-columns:repeat(var(--ptt-periods),minmax(0,1fr))}.ptt-grid-cols span{padding:10px 0;text-align:center;border-left:1px solid var(--ptt-line);font-family:JetBrains Mono,monospace;font-size:.74rem;font-weight:600;color:var(--ptt-soft)}.ptt-grid-cols span:first-child{border-left:0}.ptt-grid-row+.ptt-grid-row{border-top:1px solid var(--ptt-line)}.ptt-grid-row:nth-child(odd) .ptt-grid-cells{background-color:#fbfcfe}.ptt-grid-dept{position:sticky;left:0;z-index:3;display:flex;align-items:center;justify-content:center;padding:10px 0;background:#fff;border-right:1px solid var(--ptt-line)}.ptt-grid-dept span{writing-mode:vertical-rl;transform:rotate(180deg);max-height:190px;overflow:hidden;text-align:center;line-height:1.2;font-size:.72rem;font-weight:700;color:var(--ptt-ink)}.ptt-grid-cells{grid-auto-flow:row dense;grid-auto-rows:minmax(64px,auto);gap:6px 0;padding:7px 0;min-height:96px;background-image:linear-gradient(to right,#eef2f6 1px,transparent 1px);background-size:calc(100% / var(--ptt-periods)) 100%}.ptt-gcard{display:flex;flex-direction:column;gap:2px;min-width:0;margin:0 6px;padding:7px 9px 7px 10px;border:1px solid var(--t-line, var(--ptt-block-line));border-left:3px solid var(--t-ink, var(--ptt-navy));background:var(--t-bg, var(--ptt-block));color:var(--ptt-ink);font:inherit;text-align:left;cursor:pointer;border-radius:7px!important}.ptt-gcard:hover,.ptt-gcard:focus-visible{border-color:var(--t-ink, var(--ptt-navy));position:relative;z-index:1}.ptt-gcard-top{display:flex;align-items:center;gap:6px;min-width:0}.ptt-gcard-top b{font-size:.82rem;color:var(--t-ink, var(--ptt-navy));white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptt-gcard-merged{display:inline-flex;align-items:center;gap:3px;flex:none;margin-left:auto;padding:1px 6px;font-size:.64rem;font-weight:700;color:var(--ptt-ink);background:#ffffffd9;border:1px solid rgba(23,43,63,.16);border-radius:999px!important}.ptt-gcard-classes{font-size:.66rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:var(--ptt-soft);line-height:1.35;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.ptt-gcard-classes em{font-style:normal;font-weight:600;text-transform:none;letter-spacing:0;color:var(--ptt-muted)}.ptt-gcard-meta{font-size:.7rem;color:var(--ptt-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ptt-phone-week .sm-page{padding-bottom:0}.ptt-phone-week .sm-card[class*=ptt-tone-]:not(.is-now):not(.is-next) .sm-card-icon{background:var(--t-bg);color:var(--t-ink)}.ptt-phone-week .sm-card[class*=ptt-tone-] .sm-card-code{color:var(--t-ink)}@media (max-width: 760px){.ptt-page{--ptt-lane: 28px}.ptt-bar{padding:10px 16px;gap:10px}.ptt-brand img{width:34px;height:34px}.ptt-brand strong{font-size:.86rem}.ptt-brand small{display:none}.ptt-kind button{padding:5px 10px;font-size:.76rem}.ptt-bar-btn{padding:6px 9px}.ptt-bar-btn-text,.ptt-home{display:none}.ptt-hero{padding:6px 16px 20px}.ptt-hero h1{margin-bottom:12px;font-size:1.15rem}.ptt-hero-hint{margin:-6px 0 10px;font-size:.78rem}.ptt-find input{height:48px;font-size:16px}.ptt-find>svg{top:15px}.ptt-find-list li{grid-template-columns:auto minmax(0,1fr)}.ptt-find-list li em{display:none}.ptt-hero-meta{margin-top:10px;font-size:.74rem}.ptt-nav{padding:8px 16px}.ptt-views{flex:1 1 100%}.ptt-views button{flex:1;padding:7px 10px;font-size:.8rem}.ptt-weeks{flex:1 1 100%;justify-content:space-between}.ptt-main{padding:14px 16px 40px}.ptt-picked-head{flex-direction:column;align-items:stretch;gap:10px}.ptt-picked-head h2{font-size:1.3rem}.ptt-directory-grid{column-width:auto;column-count:1}.ptt-directory-tools{flex-wrap:wrap;justify-content:stretch}.ptt-directory-tools .ptt-filter{max-width:none}.ptt-sheet-backdrop{place-items:end stretch;padding:0}.ptt-sheet{width:100%;max-height:85vh;border-radius:16px 16px 0 0!important;padding-bottom:calc(22px + env(safe-area-inset-bottom))}.ptt-browse-tools{gap:8px}.ptt-days{flex:1 1 100%}.ptt-days button{flex:1;justify-content:center;padding:7px 6px}.ptt-day-long{display:none}.ptt-day-short{display:inline}.ptt-filter{max-width:none}.ptt-browse--phone{gap:12px}.ptt-phone-tools{display:grid;gap:8px}.ptt-dept-pick{display:grid;gap:4px}.ptt-dept-pick span{font-size:.68rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ptt-muted)}.ptt-dept-pick select{width:100%;height:46px;padding:0 36px 0 12px;border:1px solid var(--ptt-line);font:inherit;font-size:16px;font-weight:600;color:var(--ptt-ink);border-radius:10px!important;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%23718096' stroke-width='2.4'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center}.ptt-browse--phone .ptt-filter{height:42px;font-size:16px;border-radius:10px!important}}@supports (height: 100dvh){.app-body,.app-shell,.app-shell .app-main,.app-shell .sidebar{height:100dvh}.app-body{min-height:100dvh}}@media (max-width: 600px){.app-shell .app-main .app-topbar{gap:6px;padding:0 10px}.app-shell .app-main .topbar-left{flex:1 1 auto;min-width:0;gap:6px}.app-shell .app-main .topbar-right{flex-shrink:0;gap:6px}.app-shell .app-main .topbar-help-btn,.app-shell .app-main .topbar-user-meta,.app-shell .app-main .topbar-chevron{display:none}.app-shell .app-main .topbar-user{padding:3px;gap:0}.app-shell .app-main .topbar-left>:not(.menu-btn):not(.topbar-page){flex-shrink:0;font-size:0;gap:0!important;min-width:36px;min-height:36px;padding:6px 8px!important;justify-content:center}.topbar-actions-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;flex-shrink:0;padding:10px 12px 0;background:transparent}.topbar-actions-row>*{display:flex;flex:0 1 auto;flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;min-width:0}.topbar-actions-row button,.topbar-actions-row a{flex:0 0 auto;justify-content:center;min-height:36px;padding:8px 16px!important;border-radius:999px!important;font-size:.84rem!important}body .deo-suggest-banner{top:auto;bottom:14px;left:12px;right:12px;transform:none;white-space:normal;border-radius:12px;line-height:1.35}.app-shell .page-content .tt-fixed-schedule,.app-shell .page-content .schedule-grid-table.tt-fixed-schedule{--tt-cohort-column-width: 108px;--tt-slot-column-width: 156px}}.notif-bell-btn{position:relative}.notif-badge{position:absolute;top:3px;right:3px;min-width:16px;height:16px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:.6rem;font-weight:700;line-height:16px;text-align:center;pointer-events:none;border:2px solid var(--surface, #fff)}.notif-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#00000047;z-index:1100;opacity:0;pointer-events:none;transition:opacity .25s ease}.notif-backdrop--visible{opacity:1;pointer-events:all}.notif-drawer{position:fixed;top:0;right:0;bottom:0;width:400px;max-width:100vw;background:var(--surface, #fff);box-shadow:-6px 0 32px #00000024;display:flex;flex-direction:column;z-index:1101;transform:translate(100%);transition:transform .28s cubic-bezier(.4,0,.2,1);border-left:1px solid var(--border, #e5e7eb)}.notif-drawer--open{transform:translate(0)}.notif-drawer-header{display:flex;align-items:center;justify-content:space-between;padding:18px 20px 16px;border-bottom:1px solid var(--border, #e5e7eb);flex-shrink:0}.notif-drawer-title{display:flex;align-items:center;gap:8px;font-size:.95rem;font-weight:700;color:var(--ink, #111827)}.notif-header-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:#ef4444;color:#fff;font-size:.65rem;font-weight:700}.notif-drawer-header-right{display:flex;align-items:center;gap:8px}.notif-mark-all-btn{background:none;border:1px solid var(--border, #e5e7eb);border-radius:6px;padding:4px 10px;font-size:.72rem;font-weight:600;color:var(--accent, #2563eb);cursor:pointer;transition:background .15s,border-color .15s}.notif-mark-all-btn:hover{background:var(--surface-app, #f8fafc);border-color:var(--accent, #2563eb)}.notif-close-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;border:none;background:none;color:var(--muted, #6b7280);cursor:pointer;transition:background .15s,color .15s}.notif-close-btn:hover{background:var(--surface-app, #f8fafc);color:var(--ink, #111827)}.notif-drawer-body{flex:1;overflow-y:auto;overscroll-behavior:contain}.notif-drawer-footer{padding:10px 20px;border-top:1px solid var(--border, #e5e7eb);font-size:.72rem;color:var(--muted, #6b7280);flex-shrink:0;text-align:center}.notif-group{padding-top:4px}.notif-group-label{padding:10px 20px 4px;font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted, #6b7280);position:sticky;top:0;background:var(--surface, #fff);z-index:1;border-bottom:1px solid var(--border, #e5e7eb)}.notif-item{display:flex;align-items:flex-start;gap:0;padding:0 8px 0 0;border-bottom:1px solid var(--border, #e5e7eb);transition:background .12s}.notif-item--unread{background:#f0f7ff}.notif-item:hover{background:var(--surface-app, #f8fafc)}.notif-item--unread:hover{background:#e8f2ff}.notif-item-body{display:flex;align-items:flex-start;gap:12px;flex:1;padding:14px 8px 14px 16px;background:none;border:none;text-align:left;cursor:pointer;min-width:0}.notif-icon-wrap{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;flex-shrink:0;margin-top:1px}.notif-content{flex:1;min-width:0}.notif-title{margin:0 0 3px;font-size:.82rem;font-weight:600;color:var(--ink, #111827);line-height:1.35;word-break:break-word}.notif-body-text{margin:0 0 4px;font-size:.76rem;color:var(--ink-soft, #374151);line-height:1.4;word-break:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.notif-time{font-size:.68rem;color:var(--muted, #6b7280)}.notif-unread-dot{width:8px;height:8px;border-radius:50%;background:#2563eb;flex-shrink:0;margin-top:18px}.notif-dismiss-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;margin-top:12px;border-radius:6px;border:none;background:none;color:transparent;cursor:pointer;flex-shrink:0;transition:background .12s,color .12s}.notif-item:hover .notif-dismiss-btn{color:var(--muted, #9ca3af)}.notif-dismiss-btn:hover{background:var(--border, #e5e7eb);color:var(--ink, #374151)!important}.notif-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 32px;text-align:center;color:var(--muted, #6b7280);gap:10px}.notif-empty p{margin:0;font-size:.9rem;font-weight:600;color:var(--ink, #374151)}.notif-empty span{font-size:.78rem;line-height:1.5;color:var(--muted, #6b7280)}@keyframes notif-shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.notif-skeleton-list{padding:8px 0}.notif-skeleton-item{display:flex;align-items:flex-start;gap:12px;padding:14px 20px;border-bottom:1px solid var(--border, #e5e7eb)}.notif-skeleton-icon{width:36px;height:36px;border-radius:10px;flex-shrink:0;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:400px 100%;animation:notif-shimmer 1.4s infinite linear}.notif-skeleton-lines{flex:1;display:flex;flex-direction:column;gap:6px;padding-top:2px}.notif-skeleton-line{border-radius:4px;background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0,#f0f0f0 75%);background-size:400px 100%;animation:notif-shimmer 1.4s infinite linear}.notif-skeleton-line--title{height:13px;width:70%}.notif-skeleton-line--body{height:11px;width:90%}.notif-skeleton-line--time{height:10px;width:40%}@media (max-width: 480px){.notif-drawer{width:100vw}}body.app-body .notif-backdrop{background:#13263a7a;-webkit-backdrop-filter:blur(7px) saturate(.85);backdrop-filter:blur(7px) saturate(.85)}body.app-body .notif-drawer{top:12px;right:12px;bottom:12px;width:min(420px,calc(100vw - 24px));max-width:none;overflow:hidden;border:1px solid #d8e2eb;border-radius:8px!important;background:#fff;box-shadow:inset 0 3px #315fbe,-18px 0 48px #1930482e!important;transform:translate(calc(100% + 24px))}body.app-body .notif-drawer--open{transform:translate(0)}body.app-body .notif-drawer-header{min-height:74px;padding:14px 14px 13px 16px;border-bottom:1px solid #e2e9ef;background:#f7f9fb}body.app-body .notif-drawer-title{gap:10px;min-width:0;color:#17324d}.notif-drawer-title-icon{display:inline-grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border-radius:7px!important;background:#e5edf8;color:#315f8e}.notif-drawer-title-copy{display:flex;flex-direction:column;gap:2px;min-width:0}.notif-drawer-title-copy>span{display:flex;align-items:center;gap:7px;color:#17324d;font-size:.9rem;font-weight:800}.notif-drawer-title-copy small{color:#78899a;font-size:.69rem;font-weight:600}body.app-body .notif-header-count{min-width:19px;height:19px;padding:0 5px;border-radius:6px!important;background:#315f8e;font-size:.62rem}body.app-body .notif-drawer-header-right{gap:6px}body.app-body .notif-mark-all-btn{min-height:32px;padding:6px 9px;border:1px solid #cdd9e4;border-radius:6px!important;background:#fff;color:#315f8e;font-size:.68rem;font-weight:750}body.app-body .notif-mark-all-btn:hover{border-color:#aebfd0;background:#edf3f8}body.app-body .notif-close-btn{width:32px;height:32px;border:1px solid #d3dde6;border-radius:6px!important;background:#fff;color:#637489}body.app-body .notif-close-btn:hover{border-color:#bdcad6;background:#edf2f6;color:#17324d}body.app-body .notif-drawer-body{background:#fff;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}body.app-body .notif-drawer-body::-webkit-scrollbar{width:9px}body.app-body .notif-drawer-body::-webkit-scrollbar-track{background:#f4f7f9}body.app-body .notif-drawer-body::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px!important;background:#aebed0}body.app-body .notif-group{padding-top:0}body.app-body .notif-group-label{padding:9px 16px 7px;border-bottom:1px solid #e5ebf0;background:#f8fafb;color:#728297;font-size:.64rem;font-weight:800;letter-spacing:.06em}body.app-body .notif-item{position:relative;padding-right:8px;border-bottom:1px solid #e7edf2;background:#fff}body.app-body .notif-item--unread{background:#f2f6fc;box-shadow:inset 3px 0 #315fbe}body.app-body .notif-item:hover,body.app-body .notif-item--unread:hover{background:#eef3f7}body.app-body .notif-item-body{gap:11px;padding:13px 7px 13px 15px}body.app-body .notif-icon-wrap{width:34px;height:34px;border-radius:7px!important}body.app-body .notif-title{margin-bottom:3px;color:#263a50;font-size:.78rem;font-weight:750}body.app-body .notif-body-text{color:#5f7185;font-size:.73rem;line-height:1.45}body.app-body .notif-time{color:#8492a2;font-size:.65rem}body.app-body .notif-unread-dot{width:7px;height:7px;margin-top:15px;border-radius:50%!important;background:#315fbe}body.app-body .notif-dismiss-btn{width:27px;height:27px;margin-top:11px;border:1px solid transparent;border-radius:6px!important;color:#9aa7b5}body.app-body .notif-dismiss-btn:hover{border-color:#d2dce5;background:#fff;color:#40546a!important}body.app-body .notif-empty{padding:72px 32px;color:#718096}body.app-body .notif-empty svg{padding:10px;border-radius:8px!important;background:#edf3f8;color:#53708d}body.app-body .notif-empty p{color:#263a50;font-size:.84rem;font-weight:750}body.app-body .notif-empty span{color:#718096;font-size:.73rem}body.app-body .notif-drawer-footer{padding:10px 16px;border-top:1px solid #dfe7ee;background:#f7f9fb;color:#78899a;font-size:.68rem}body.app-body .notif-badge{border-radius:6px!important}.swap-alert-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1300;display:grid;place-items:center;padding:20px;background:#0f1f3880;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.swap-alert-dialog{width:min(520px,100%);display:grid;grid-template-columns:48px minmax(0,1fr);gap:14px;padding:22px;border:1px solid #dce5ec;border-radius:8px;background:#fff;box-shadow:0 24px 70px #0f1f383d}.swap-alert-icon{width:44px;height:44px;display:grid;place-items:center;border-radius:8px;background:#fffbeb;color:#b45309}.swap-alert-copy{min-width:0}.swap-alert-label{display:block;margin-bottom:3px;color:#b45309;font-size:.68rem;font-weight:800;text-transform:uppercase}.swap-alert-copy h2{margin:0;color:#172b3f;font-size:1.05rem;font-weight:800}.swap-alert-copy p{margin:8px 0;color:#40546a;font-size:.84rem;line-height:1.5}.swap-alert-note{padding:8px 10px;border-left:3px solid #2563eb;background:#eff6ff;color:#334155;font-size:.74rem;line-height:1.45}.swap-alert-actions{grid-column:1 / -1;display:flex;justify-content:flex-end;gap:8px;padding-top:4px}.swap-alert-actions button{min-height:36px;padding:0 14px;border-radius:6px;font-size:.78rem;font-weight:750;cursor:pointer}.swap-alert-later{border:1px solid #cbd5e1;background:#fff;color:#475569}.swap-alert-later:hover{background:#f8fafc}.swap-alert-review{border:1px solid #1d4ed8;background:#1d4ed8;color:#fff}.swap-alert-review:hover{background:#1e40af}@media (max-width: 480px){body.app-body .notif-drawer{top:8px;right:8px;bottom:8px;width:calc(100vw - 16px)}body.app-body .notif-drawer-header{padding-inline:12px}body.app-body .notif-mark-all-btn{padding-inline:7px}.swap-alert-dialog{grid-template-columns:40px minmax(0,1fr);padding:16px}.swap-alert-icon{width:38px;height:38px}.swap-alert-actions{flex-direction:column-reverse}.swap-alert-actions button{width:100%}}.class-reminder-controls{position:relative;display:flex;align-items:center;flex:0 0 auto}.class-reminder-trigger.is-enabled{color:var(--blue, #2878d0)}.class-reminder-menu{position:absolute;z-index:80;top:calc(100% + 10px);right:0;width:min(320px,calc(100vw - 32px));padding:16px;border:1px solid var(--border, #e2e8f0);border-radius:14px;background:var(--surface-card, #fff);box-shadow:0 16px 42px #0f1f382e;color:var(--ink, #17243b)}.class-reminder-menu strong,.class-reminder-menu p{display:block;margin:0 0 9px}.class-reminder-menu strong{font-size:.9rem}.class-reminder-menu p{color:var(--muted, #68778e);font-size:.79rem;line-height:1.5}.class-reminder-menu .class-reminder-menu-note{color:var(--ink-soft, #40516b)}.class-reminder-menu button{min-height:36px;padding:7px 11px;border:1px solid var(--border, #d8e0eb);border-radius:8px;background:var(--surface-card, #fff);color:var(--ink, #17243b);font:inherit;font-size:.78rem;font-weight:600;cursor:pointer}.class-reminder-menu button:disabled{opacity:.6;cursor:wait}.class-reminder-menu button.class-reminder-enable,.class-reminder-enable{border-color:var(--blue, #2878d0);background:var(--blue, #2878d0);color:#fff}.class-reminder-menu .class-reminder-dismiss{margin-left:7px}.class-reminder-prompt{position:fixed;z-index:100;right:20px;bottom:20px;display:flex;align-items:center;gap:18px;width:min(540px,calc(100vw - 32px));padding:16px;border:1px solid var(--border, #dce4ef);border-radius:16px;background:var(--surface-card, #fff);box-shadow:0 18px 48px #0f1f3833;color:var(--ink, #17243b)}.class-reminder-prompt-copy{display:grid;gap:5px;min-width:0}.class-reminder-prompt-copy strong{font-size:.88rem}.class-reminder-prompt-copy span{color:var(--muted, #68778e);font-size:.78rem;line-height:1.45}.class-reminder-prompt .class-reminder-prompt-error{color:#b42318}.class-reminder-prompt-actions{display:flex;flex:0 0 auto;align-items:center;gap:8px}.class-reminder-prompt-actions button{min-height:36px;padding:7px 11px;border:1px solid var(--border, #d8e0eb);border-radius:8px;background:var(--surface-card, #fff);color:var(--ink, #17243b);font:inherit;font-size:.76rem;font-weight:600;cursor:pointer}.class-reminder-prompt-actions button:disabled{opacity:.6;cursor:wait}.class-reminder-prompt-actions .class-reminder-enable{border-color:var(--blue, #2878d0);background:var(--blue, #2878d0);color:#fff}@media (max-width: 640px){.class-reminder-prompt{right:12px;bottom:max(12px,env(safe-area-inset-bottom));align-items:stretch;flex-direction:column;gap:12px;width:calc(100vw - 24px);padding:14px}.class-reminder-prompt-actions{justify-content:flex-end}.class-reminder-menu{position:fixed;top:auto;right:12px;bottom:max(70px,calc(env(safe-area-inset-bottom) + 58px))}}body:has(.app-shell--tabbar) .class-reminder-prompt{bottom:calc(var(--tabbar-top, 62px) + 10px);border-radius:16px!important;box-shadow:0 10px 30px #0f172a24!important}@media (max-width: 640px){body:has(.app-shell--tabbar) .class-reminder-menu{bottom:calc(var(--tabbar-top, 62px) + 10px)}}.driver-active .driver-overlay,.driver-active *{pointer-events:none}.driver-active .driver-active-element,.driver-active .driver-active-element *,.driver-popover,.driver-popover *{pointer-events:auto}@keyframes animate-fade-in{0%{opacity:0}to{opacity:1}}.driver-fade .driver-overlay{animation:animate-fade-in .2s ease-in-out}.driver-fade .driver-popover{animation:animate-fade-in .2s}.driver-popover{all:unset;box-sizing:border-box;color:#2d2d2d;margin:0;padding:15px;border-radius:5px;min-width:250px;max-width:300px;box-shadow:0 1px 10px #0006;z-index:1000000000;position:fixed;top:0;right:0;background-color:#fff}.driver-popover *{font-family:Helvetica Neue,Inter,ui-sans-serif,"Apple Color Emoji",Helvetica,Arial,sans-serif}.driver-popover-title{font:19px/normal sans-serif;font-weight:700;display:block;position:relative;line-height:1.5;zoom:1;margin:0}.driver-popover-close-btn{all:unset;position:absolute;top:0;right:0;width:32px;height:28px;cursor:pointer;font-size:18px;font-weight:500;color:#d2d2d2;z-index:1;text-align:center;transition:color;transition-duration:.2s}.driver-popover-close-btn:hover,.driver-popover-close-btn:focus{color:#2d2d2d}.driver-popover-title[style*=block]+.driver-popover-description{margin-top:5px}.driver-popover-description{margin-bottom:0;font:14px/normal sans-serif;line-height:1.5;font-weight:400;zoom:1}.driver-popover-footer{margin-top:15px;text-align:right;zoom:1;display:flex;align-items:center;justify-content:space-between}.driver-popover-progress-text{font-size:13px;font-weight:400;color:#727272;zoom:1}.driver-popover-footer button{all:unset;display:inline-block;box-sizing:border-box;padding:3px 7px;text-decoration:none;text-shadow:1px 1px 0 #fff;background-color:#fff;color:#2d2d2d;font:12px/normal sans-serif;cursor:pointer;outline:0;zoom:1;line-height:1.3;border:1px solid #ccc;border-radius:3px}.driver-popover-footer .driver-popover-btn-disabled{opacity:.5;pointer-events:none}:not(body):has(>.driver-active-element){overflow:hidden!important}.driver-no-interaction,.driver-no-interaction *{pointer-events:none!important}.driver-popover-footer button:hover,.driver-popover-footer button:focus{background-color:#f7f7f7}.driver-popover-navigation-btns{display:flex;flex-grow:1;justify-content:flex-end}.driver-popover-navigation-btns button+button{margin-left:4px}.driver-popover-arrow{content:"";position:absolute;border:5px solid #fff}.driver-popover-arrow-side-over{display:none}.driver-popover-arrow-side-left{left:100%;border-right-color:transparent;border-bottom-color:transparent;border-top-color:transparent}.driver-popover-arrow-side-right{right:100%;border-left-color:transparent;border-bottom-color:transparent;border-top-color:transparent}.driver-popover-arrow-side-top{top:100%;border-right-color:transparent;border-bottom-color:transparent;border-left-color:transparent}.driver-popover-arrow-side-bottom{bottom:100%;border-left-color:transparent;border-top-color:transparent;border-right-color:transparent}.driver-popover-arrow-side-center{display:none}.driver-popover-arrow-side-left.driver-popover-arrow-align-start,.driver-popover-arrow-side-right.driver-popover-arrow-align-start{top:15px}.driver-popover-arrow-side-top.driver-popover-arrow-align-start,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-start{left:15px}.driver-popover-arrow-align-end.driver-popover-arrow-side-left,.driver-popover-arrow-align-end.driver-popover-arrow-side-right{bottom:15px}.driver-popover-arrow-side-top.driver-popover-arrow-align-end,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-end{right:15px}.driver-popover-arrow-side-left.driver-popover-arrow-align-center,.driver-popover-arrow-side-right.driver-popover-arrow-align-center{top:50%;margin-top:-5px}.driver-popover-arrow-side-top.driver-popover-arrow-align-center,.driver-popover-arrow-side-bottom.driver-popover-arrow-align-center{left:50%;margin-left:-5px}.driver-popover-arrow-none{display:none}.driver-popover.htu-tour{background:var(--surface, #ffffff);color:var(--ink, #0f1f38);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:14px;box-shadow:0 18px 48px #0f1f3838;padding:18px 18px 14px;max-width:320px;font-family:Aptos,Segoe UI,system-ui,-apple-system,sans-serif}.driver-popover.htu-tour .driver-popover-title{font-size:.98rem;font-weight:800;letter-spacing:-.01em;color:var(--ink, #0f1f38);margin:0 0 6px;line-height:1.3}.driver-popover.htu-tour .driver-popover-description{font-size:.84rem;line-height:1.5;color:var(--ink-soft, #2d3f5a)}.driver-popover.htu-tour .driver-popover-description strong{color:var(--ink, #0f1f38);font-weight:700}.driver-popover.htu-tour .driver-popover-progress-text{font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted, #6a7a96)}.driver-popover.htu-tour .driver-popover-footer{margin-top:14px;gap:8px}.driver-popover.htu-tour .driver-popover-footer button{font-family:inherit;font-size:.8rem;font-weight:700;border-radius:8px;padding:7px 14px;text-shadow:none;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s}.driver-popover.htu-tour .driver-popover-prev-btn{background:transparent;color:var(--muted, #6a7a96);border-color:var(--border, rgba(15, 31, 56, .12))}.driver-popover.htu-tour .driver-popover-prev-btn:hover{background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38)}.driver-popover.htu-tour .driver-popover-next-btn{background:var(--accent, #4392f1);color:#fff;border-color:var(--accent, #4392f1)}.driver-popover.htu-tour .driver-popover-next-btn:hover{filter:brightness(.95)}.driver-popover.htu-tour .driver-popover-close-btn{color:var(--muted, #6a7a96);font-size:18px;transition:color .15s}.driver-popover.htu-tour .driver-popover-close-btn:hover{color:var(--ink, #0f1f38)}.driver-popover.htu-tour .driver-popover-arrow{border-color:var(--surface, #ffffff)}.driver-active .driver-overlay,.driver-active *{transition:all .25s ease}.topbar-help-btn{display:inline-flex;align-items:center;justify-content:center}.driver-popover.htu-tour{width:min(360px,calc(100vw - 24px));max-width:min(360px,calc(100vw - 24px));padding:20px 20px 16px;overflow:hidden;border:1px solid #d8e2eb;border-radius:8px!important;background:#fff;color:#172b3f;box-shadow:inset 0 3px #315fbe,0 24px 70px #12263b3d;font-family:var(--font-sans, "Aptos", "Segoe UI", system-ui, sans-serif)}.driver-popover.htu-tour .driver-popover-title{margin:0 32px 7px 0;color:#17324d;font-size:.95rem;font-weight:800;letter-spacing:0;line-height:1.35}.driver-popover.htu-tour .driver-popover-description{color:#5f7185;font-size:.79rem;line-height:1.55}.driver-popover.htu-tour .driver-popover-description strong{color:#263a50;font-weight:750}.driver-popover.htu-tour .driver-popover-close-btn{top:12px;right:12px;display:inline-grid;place-items:center;width:30px;height:30px;padding:0;border:1px solid #d3dde6;border-radius:6px!important;background:#fff;color:#637489;font-size:17px;line-height:1;text-shadow:none}.driver-popover.htu-tour .driver-popover-close-btn:hover{border-color:#bdcad6;background:#edf2f6;color:#17324d}.driver-popover.htu-tour .driver-popover-footer{align-items:center;gap:10px;margin-top:17px;padding-top:13px;border-top:1px solid #e3e9ef}.driver-popover.htu-tour .driver-popover-progress-text{min-height:24px;padding:5px 8px;border-radius:6px!important;background:#edf3f8;color:#60748a;font-size:.64rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.driver-popover.htu-tour .driver-popover-navigation-btns{justify-content:flex-end;gap:7px}.driver-popover.htu-tour .driver-popover-footer button{min-height:34px;padding:7px 13px;border-radius:6px!important;font-family:inherit;font-size:.74rem;font-weight:750;letter-spacing:0;text-shadow:none}.driver-popover.htu-tour .driver-popover-prev-btn{border:1px solid #cdd9e4;background:#fff;color:#40546a}.driver-popover.htu-tour .driver-popover-prev-btn:hover{border-color:#aebfd0;background:#edf3f8;color:#17324d}.driver-popover.htu-tour .driver-popover-next-btn{border:1px solid #315f8e;background:#315f8e;color:#fff}.driver-popover.htu-tour .driver-popover-next-btn:hover{border-color:#264f78;background:#264f78;color:#fff;filter:none}.driver-popover.htu-tour .driver-popover-arrow-side-left.driver-popover-arrow{border-left-color:#fff}.driver-popover.htu-tour .driver-popover-arrow-side-right.driver-popover-arrow{border-right-color:#fff}.driver-popover.htu-tour .driver-popover-arrow-side-top.driver-popover-arrow{border-top-color:#fff}.driver-popover.htu-tour .driver-popover-arrow-side-bottom.driver-popover-arrow{border-bottom-color:#fff}@media (max-width: 480px){.driver-popover.htu-tour{width:calc(100vw - 20px);max-width:calc(100vw - 20px);padding:16px 16px 12px}.driver-popover.htu-tour .driver-popover-title{font-size:.92rem}.driver-popover.htu-tour .driver-popover-description{font-size:.82rem;line-height:1.5}.driver-popover.htu-tour .driver-popover-footer{margin-top:12px;padding-top:10px}.driver-popover.htu-tour .driver-popover-footer button{min-height:40px;padding:8px 16px;font-size:.8rem}}.sm-tab.st-more{border:0;background:none;font:inherit;cursor:pointer}.sm-tab.st-more.active{background:#e6ecf6;color:#183b7a}.st-sheet-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:64;background:#0f172a52;animation:st-fade .18s ease}.st-sheet{position:fixed;left:0;right:0;bottom:0;z-index:65;max-height:78vh;display:flex;flex-direction:column;padding:8px 0 calc(var(--tabbar-top, 62px) + 16px);border-radius:22px 22px 0 0!important;background:#fff;box-shadow:0 -12px 32px #0f172a29!important;transform:translateY(105%);transition:transform .24s cubic-bezier(.22,1,.36,1);visibility:hidden}.st-sheet.is-open{transform:none;visibility:visible}.st-sheet-handle{align-self:center;width:40px;height:4px;margin:4px 0 10px;border-radius:999px!important;background:#d5dde7}.st-sheet-body{overflow-y:auto;padding:0 16px;display:grid;gap:18px}.st-sheet-section h4{margin:0 4px 8px;font-size:.7rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8}.st-sheet-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.st-sheet-link{position:relative;display:flex;align-items:center;gap:10px;min-height:52px;padding:10px 12px;border:1px solid #e2e8f0;border-radius:14px!important;background:#fff;color:#0f172a;text-decoration:none;font-size:.84rem;font-weight:600;line-height:1.25;-webkit-tap-highlight-color:transparent}.st-sheet-link:active{background:#f4f7fb}.st-sheet-link.active{border-color:#183b7a}.st-sheet-icon{display:grid;place-items:center;flex:0 0 auto;width:32px;height:32px;border-radius:10px!important;background:#f1f5f9;color:#334155}.st-sheet-link.active .st-sheet-icon{background:#183b7a;color:#fff}.st-sheet-label{min-width:0}.st-sheet-badge{position:absolute;top:6px;right:8px;min-width:18px;padding:0 5px;border-radius:999px!important;background:#dc2626;color:#fff;font-size:.64rem;text-align:center;line-height:18px}.app-shell--tabbar .sm-tabbar{z-index:66}@keyframes st-fade{0%{opacity:0}to{opacity:1}}.sm-card.is-tappable{cursor:pointer;-webkit-tap-highlight-color:transparent}.sm-card.is-tappable:active{background:#f4f7fb}body.tv-phone-own .tv-viewer-toolbar,body.tv-phone-own .tv-personal-hint{display:none!important}body.tv-phone-own .tv-filter-bar>:not(.tv-kind-switch){display:none!important}body.tv-phone-own .tv-filter-bar:not(:has(.tv-kind-switch)){display:none!important}body.tv-phone-own .tv-compact-controls{display:block!important;background:transparent;border:0}body.tv-phone-own .tv-compact-controls>.tv-sheet-tabs,body.tv-phone-own .tv-compact-controls>.more-menu,body.tv-phone-own .tv-compact-controls>.sheet-tabs{display:none!important}body.tv-phone-own .tv-filter-bar{padding:0 0 12px;background:transparent}body.tv-phone-own .page-content{overflow-y:auto!important}body.tv-phone-own .tv-viewer-panel{flex:none!important;overflow:visible!important;border:0!important;background:transparent!important}body.tv-phone-own .tv-phone-week{flex:none!important}@media (max-width: 900px){.app-shell--tabbar .page-content{overflow-y:auto!important}.app-shell--tabbar .page-fade{flex:none!important;min-height:auto!important}.app-shell--tabbar .lecturer-course-window{overflow:visible!important}}.st-needs h3 span{text-transform:none}.st-needs-list{display:grid;border:1px solid #e2e8f0;border-radius:14px!important;background:#fff;overflow:hidden}.st-needs-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:14px 16px;color:#0f172a;text-decoration:none;font-size:.88rem;font-weight:600;-webkit-tap-highlight-color:transparent}.st-needs-row+.st-needs-row{border-top:1px solid #edf1f5}.st-needs-row:active{background:#f4f7fb}.st-needs-row svg{color:#94a3b8}.st-needs-count{display:grid;place-items:center;min-width:32px;height:32px;padding:0 8px;border-radius:10px!important;background:#183b7a;color:#fff;font-size:.9rem}.st-needs-row.is-clear{color:#64748b;font-weight:500}.st-needs-row.is-clear .st-needs-count{background:#f1f5f9;color:#94a3b8}.st-needs-clear{margin:0;padding:14px 16px;border:1px solid #e2e8f0;border-radius:14px!important;background:#fff;color:#64748b;font-size:.86rem}@media (max-width: 900px){.app-shell--tabbar .apr-card{flex-shrink:0;min-height:0;border-color:#e2e8f0;border-radius:14px!important}.app-shell--tabbar .apr-card-accent{display:none!important}.app-shell--tabbar .apr-card-inner{flex-direction:column;align-items:stretch;gap:12px;padding:14px 16px}.app-shell--tabbar .apr-card-name{white-space:normal}.app-shell--tabbar .apr-card-actions{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:8px}.app-shell--tabbar .apr-card-actions>*{justify-content:center;min-height:40px;border-radius:10px!important}.app-shell--tabbar .apr-review-note{border-left:0;border-radius:10px!important}.app-shell--tabbar .rc-group{border-left-width:1px!important;border-radius:10px!important}.app-shell--tabbar .apr-request-group-list{max-height:none!important;overflow:visible!important}}.st-dept{display:grid;gap:14px}.st-dept-pick{display:grid;gap:10px}.st-dept-select{display:grid;gap:4px}.st-dept-select span{font-size:.7rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#94a3b8}.st-dept-select select{width:100%;min-height:46px;padding:10px 14px;border:1px solid #e2e8f0;border-radius:14px!important;background:#fff;color:#0f172a;font:inherit;font-size:16px;font-weight:600}@media (max-width: 900px){body:has(.app-shell--tabbar) .deo-suggest-bar,body:has(.app-shell--tabbar) .deo-suggest-banner{left:12px!important;right:12px!important;bottom:calc(var(--tabbar-top, 62px) + 10px)!important;transform:none!important;max-width:none!important;border-radius:16px!important;z-index:67}body:has(.app-shell--tabbar) .deo-suggest-bar{flex-wrap:wrap;gap:10px}body:has(.app-shell--tabbar) .deo-suggest-bar>.primary-btn{flex:1 1 100%;min-height:42px;border-radius:12px!important}}.tv-phone-scope{margin-bottom:12px}@media (max-width: 700px){.app-shell--tabbar :is(.data-table-scroll,.asn-table-wrap,.asn-table-scroll){overflow:visible!important;max-height:none!important;border:0!important;background:transparent!important}.app-shell--tabbar :is(table.data-table,table.asn-table){display:block;width:100%;min-width:0!important;table-layout:auto;border:0!important;background:transparent!important}.app-shell--tabbar :is(table.data-table,table.asn-table) colgroup,.app-shell--tabbar :is(table.data-table,table.asn-table) thead{display:none}.app-shell--tabbar :is(table.data-table,table.asn-table) tbody{display:grid;gap:10px}.app-shell--tabbar :is(table.data-table,table.asn-table) tbody tr{position:relative;display:grid;gap:6px;padding:12px 14px;border:1px solid #e2e8f0;border-radius:14px!important;background:#fff!important}.app-shell--tabbar :is(table.data-table,table.asn-table) td{display:flex;justify-content:space-between;align-items:baseline;gap:12px;height:auto;padding:0!important;border:0!important;width:auto!important;min-width:0!important;max-width:none!important;text-align:right;white-space:normal;font-size:.84rem}.app-shell--tabbar :is(table.data-table,table.asn-table) tbody tr:has(>td>input[type=checkbox]){padding-right:46px}.app-shell--tabbar :is(table.data-table,table.asn-table) td:before{content:attr(data-label);flex:0 0 auto;text-align:left;font-size:.68rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}.app-shell--tabbar :is(table.data-table,table.asn-table) td[data-label=""]:before,.app-shell--tabbar :is(table.data-table,table.asn-table) td:not([data-label]):before{display:none}.app-shell--tabbar :is(table.data-table,table.asn-table) td.td-num{display:none}.app-shell--tabbar :is(table.data-table,table.asn-table) td:has(>input[type=checkbox]){position:absolute;top:12px;right:14px}.app-shell--tabbar :is(table.data-table,table.asn-table) td.td-actions{justify-content:flex-end;flex-wrap:wrap;padding-top:8px!important;border-top:1px solid #edf1f5!important}.app-shell--tabbar :is(table.data-table,table.asn-table) td.td-actions:before{display:none}.app-shell--tabbar :is(table.data-table,table.asn-table) td.td-actions>*{display:flex;gap:8px}.app-shell--tabbar :is(table.data-table,table.asn-table) td.td-actions button{min-width:40px;min-height:36px}.app-shell--tabbar :is(table.data-table,table.asn-table) td.td-actions svg{width:16px;min-width:16px}.app-shell--tabbar :is(table.data-table,table.asn-table) td>*{max-width:72%;white-space:normal!important;overflow-wrap:anywhere}.app-shell--tabbar :is(table.data-table,table.asn-table) tbody tr:has(>td[colspan]){padding:8px 2px 0;border:0;background:transparent!important}.app-shell--tabbar :is(table.data-table,table.asn-table) td[colspan]{justify-content:flex-start;text-align:left}.app-shell--tabbar :is(table.data-table,table.asn-table) td[colspan]:before{display:none}}@media (max-width: 900px){.app-shell--tabbar .asn-left{height:auto!important}.app-shell--tabbar .asn-lec-list{flex-direction:column!important;overflow-x:hidden!important;overflow-y:auto!important;max-height:40vh;padding:6px!important;gap:4px!important}.app-shell--tabbar .asn-lec-item{flex:0 0 auto!important;width:100%!important;height:auto!important;max-width:none!important;flex-direction:row!important;align-items:center!important;min-width:0!important;padding:10px 12px!important;text-align:left!important;border-radius:12px!important}.app-shell--tabbar .asn-lec-info{align-items:flex-start!important}.app-shell--tabbar .asn-lec-name{font-size:.86rem!important}.app-shell--tabbar .asn-right{min-height:0!important}.app-shell--tabbar .asn-right:has(>.asn-empty-state){display:none!important}.app-shell--tabbar .asn-right-header{flex-direction:column!important;align-items:stretch!important;gap:10px!important}.app-shell--tabbar .asn-right-lec-name{white-space:normal!important}.app-shell--tabbar .asn-right-actions{display:flex!important;flex-wrap:wrap!important;gap:8px!important}.app-shell--tabbar .asn-right-actions>button{flex:1 1 auto;min-height:40px;border-radius:12px!important}.app-shell--tabbar .asn-scope-note{border-left-width:1px!important;border-radius:12px!important;font-size:.76rem!important;line-height:1.5}}.sheet-close{position:fixed;right:12px;z-index:100000!important;display:grid;place-items:center;width:36px;height:36px;min-height:0!important;padding:0!important;border:1px solid #e2e8f0!important;border-radius:50%!important;background:#fff;color:#0f172a;box-shadow:0 4px 14px #0f172a29!important;cursor:pointer}.busy-overlay{z-index:100001!important}@media (max-width: 700px){html body .modal-backdrop,html body .lpref-modal-backdrop,html body .dpref-modal-backdrop,html body .dean-modal-backdrop,html body .expv-import-modal-backdrop,html body .swap-alert-backdrop{align-items:flex-end!important;justify-content:stretch!important}html body .modal-card,html body .lpref-modal,html body .dpref-modal,html body .dean-modal,html body .expv-import-modal,html body .tt-force-modal,html body .swap-alert-dialog{width:100vw!important;height:auto!important;max-height:92dvh!important;border:0!important;border-radius:20px 20px 0 0!important;box-shadow:0 -12px 36px #0f172a38!important;animation:sheet-up .26s cubic-bezier(.22,1,.36,1) both!important;padding-bottom:env(safe-area-inset-bottom,0px)}html body .modal-card:before,html body .lpref-modal:before,html body .dpref-modal:before,html body .dean-modal:before,html body .expv-import-modal:before,html body .tt-force-modal:before,html body .swap-alert-dialog:before{content:"";flex:0 0 auto;align-self:center;width:40px;height:4px;margin:8px auto 2px;border-radius:999px!important;background:#d5dde7}html body .modal-card>.modal-header,html body .dean-modal>.dean-modal-header,html body .lpref-modal>.lpref-modal-head,html body .dpref-modal>.dpref-modal-head{padding-right:56px!important}html body .modal-card *,html body .lpref-modal *,html body .dpref-modal *,html body .dean-modal *,html body .tt-force-modal *,html body .swap-alert-dialog *{min-width:0;max-width:100%;box-sizing:border-box}html body .modal-card :is(input,select,textarea),html body .lpref-modal :is(input,select,textarea),html body .dpref-modal :is(input,select,textarea),html body .dean-modal :is(input,select,textarea){width:100%;font-size:16px}html body .modal-card :is(.form-grid,.form-row,.field-row,.cr-grid,.modal-grid,.grid-2,.two-col),html body .modal-card form{grid-template-columns:minmax(0,1fr)!important}html body .modal-card>.modal-footer,html body .modal-card>.modal-actions,html body .modal-card .modal-actions{display:flex!important;flex-wrap:wrap;gap:8px;flex-direction:row!important;position:sticky!important;bottom:0;z-index:3;margin:0 -16px!important;padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px))!important;background:#fff!important;border-top:1px solid #edf1f5!important}html body .modal-card>.modal-footer>button,html body .modal-card>.modal-actions>button,html body .modal-card .modal-actions>button{flex:1 1 0;min-height:44px;border-radius:12px!important}html body .notif-drawer.notif-drawer--open{top:auto!important;bottom:0!important;left:0!important;right:0!important;width:100vw!important;max-width:100vw!important;height:auto!important;max-height:92dvh!important;border-radius:20px 20px 0 0!important;animation:sheet-up .26s cubic-bezier(.22,1,.36,1) both!important}}@keyframes sheet-up{0%{transform:translateY(100%)}to{transform:none}}.app-body.app-dashboard .page-content{overflow-y:auto}.dash-first-card{position:relative;overflow:hidden;background:linear-gradient(135deg,var(--blue, #4392f1) 0%,var(--blue-deep, #1a5abf) 100%)!important;border:none!important;box-shadow:0 18px 44px #1a5abf73,0 6px 14px #1a5abf4d!important;transform:translateY(-2px);color:#fff}.dash-first-card:after{content:"";position:absolute;top:-40%;right:-15%;width:160px;height:160px;background:radial-gradient(circle,rgba(255,255,255,.22) 0%,transparent 70%);pointer-events:none}.dash-first-card:before{content:"";position:absolute;top:0;bottom:0;left:-60%;width:45%;z-index:0;pointer-events:none;background:linear-gradient(100deg,transparent 0%,rgba(255,255,255,.3) 50%,transparent 100%);transform:skew(-18deg);animation:dash-hero-sheen 7s ease-in-out infinite}@keyframes dash-hero-sheen{0%{left:-60%}14%{left:130%}to{left:130%}}@media (prefers-reduced-motion: reduce){.dash-first-card:before{animation:none}}.dash-first-card>*{position:relative;z-index:1}.dash-first-card .app-card-label{color:#ffffffd1!important}.dash-first-card .app-card-value{color:#fff!important;font-size:2rem}.dash-first-card .app-card-sub{color:#ffffffc7!important}.dash-first-card .app-card-icon,.dash-first-card .app-card-icon[class*=app-card-icon--]{background:#ffffff2e!important;color:#fff!important;box-shadow:inset 0 0 0 1px #ffffff40!important}.app-body.app-dashboard .page-fade{display:flex;flex-direction:column}.dashboard-container{display:flex;flex-direction:column;gap:24px;padding-bottom:32px}.dash-welcome{position:relative;overflow:hidden;background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .08));color:var(--ink, #0f1f38);padding:24px 28px;display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}.dash-welcome:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;background-image:repeating-linear-gradient(-45deg,rgba(67,146,241,.06) 0px,rgba(67,146,241,.06) 2px,transparent 2px,transparent 15px);-webkit-mask-image:linear-gradient(to left,#000 0%,rgba(0,0,0,.5) 35%,transparent 62%);mask-image:linear-gradient(to left,#000 0%,rgba(0,0,0,.5) 35%,transparent 62%)}.dash-welcome-text,.dash-welcome .dash-timetable-badge{position:relative;z-index:1}.dash-welcome-eyebrow{margin:0 0 7px;font-size:.66rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--blue-dark, #2b74d4)}.dash-greet-text{margin:0;font-size:1.5rem;font-weight:700;color:var(--ink, #0f1f38);line-height:1.2}.dash-greet-date{margin:4px 0 0;font-size:.82rem;color:var(--muted, #6a7a96)}.dash-timetable-badge{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;font-size:.78rem;font-weight:600;flex-shrink:0;border-radius:999px;background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.25);color:var(--blue-dark, #2b74d4)}.dash-dot{width:7px;height:7px;border-radius:50%;display:inline-block;flex-shrink:0}.dot-green{background:#22c55e}.dot-amber{background:#f59e0b}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.stat-card{position:relative;background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:18px 20px 16px;display:flex;flex-direction:column;gap:0;box-shadow:0 1px 4px #0f1f380d;transition:box-shadow var(--ease),transform var(--ease);overflow:hidden}.stat-card:before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;border-radius:12px 0 0 12px}.stat-card:hover{box-shadow:0 6px 20px #0f1f3817;transform:translateY(-2px)}.stat-card-clickable{cursor:pointer}.stat-accent-blue:before{background:var(--blue, #4392f1)}.stat-accent-indigo:before{background:#6366f1}.stat-accent-teal:before{background:#0d9488}.stat-accent-amber:before{background:#f59e0b}.stat-accent-purple:before{background:#8b5cf6}.stat-accent-slate:before{background:#64748b}.stat-accent-red:before{background:var(--cinnabar, #dc493a)}.stat-sq-icon{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-body{display:flex;flex-direction:column;padding-right:48px}.stat-title{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted, #6a7a96);margin:0 0 6px}.stat-num{font-size:2rem;font-weight:700;color:var(--ink, #0f1f38);font-family:var(--font-mono);line-height:1;margin:0 0 6px}.stat-sub{font-size:.74rem;color:var(--muted, #6a7a96);margin:0;line-height:1.4}.stat-icon-blue{background:#4392f11f;color:var(--blue, #4392f1)}.stat-icon-indigo{background:#6366f11f;color:#4f46e5}.stat-icon-teal{background:#0d94881f;color:#0d9488}.stat-icon-amber{background:#f59e0b1f;color:#b45309}.stat-icon-purple{background:#8b5cf61f;color:#7c3aed}.stat-icon-slate{background:#64748b1f;color:#475569}.stat-icon-red{background:#dc493a1a;color:var(--cinnabar, #dc493a)}.dash-actions-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;overflow:hidden;box-shadow:0 1px 4px #0f1f380d}.dash-actions-card-head{padding:14px 18px 12px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09))}.dash-section-label{margin:0;font-size:.7rem;font-weight:700;color:var(--muted, #6a7a96);text-transform:uppercase;letter-spacing:.1em}.dash-actions-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border, rgba(15, 31, 56, .09))}.dash-action-card{background:#fff;border:none;border-radius:0;padding:13px 16px;display:flex;flex-direction:row;align-items:center;gap:12px;cursor:pointer;transition:background var(--ease);text-align:left;font-family:var(--font-sans)}.dash-action-card:hover{background:var(--surface-app, #f2f4f8)}.dash-action-icon{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dash-action-text{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}.dash-action-label{font-size:.84rem;font-weight:700;color:var(--ink, #0f1f38);line-height:1.2}.dash-action-sub{font-size:.72rem;color:var(--muted, #6a7a96);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.dash-action-arrow{color:var(--muted, #6a7a96);flex-shrink:0;opacity:.5}.dash-bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}.dash-panel{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;overflow:hidden;box-shadow:0 1px 4px #0f1f380d;display:flex;flex-direction:column}.dash-panel-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));gap:12px}.dash-panel-title{font-size:.875rem;font-weight:700;color:var(--ink-soft, #2d3f5a)}.dash-panel-meta{font-size:.75rem;color:var(--muted, #6a7a96);font-family:var(--font-mono)}.dash-panel-body{padding:14px 16px;display:flex;flex-direction:column;gap:0}.dash-panel-body .table-wrapper{border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px}.dash-panel-body .requests-list{gap:0}.dash-panel-body .request-card{border:none;border-bottom:1px solid var(--border, rgba(15, 31, 56, .07));border-radius:0;padding:10px 4px;box-shadow:none}.dash-panel-body .request-card:last-child{border-bottom:none}.dash-panel-body .request-card:hover{background:#4392f108;border-color:var(--border)}.dash-view-all{background:none;border:none;color:var(--blue, #4392f1);font-size:.78rem;font-weight:600;cursor:pointer;padding:0;font-family:var(--font-sans);transition:color var(--ease)}.dash-view-all:hover{color:var(--blue-dark, #2b74d4)}.empty-state{text-align:center;padding:32px 24px;color:var(--muted, #6a7a96);border:1px dashed var(--border, rgba(15, 31, 56, .13));border-radius:10px;background:transparent}.empty-state p{margin:0;font-size:.875rem}.table-wrapper{overflow-x:auto;border-radius:10px;border:1px solid var(--border, rgba(15, 31, 56, .09));background:#fff}.timetable{width:100%;border-collapse:collapse;font-size:.875rem}.timetable thead{background:var(--blue-light, #e3ebff);border-bottom:1px solid rgba(67,146,241,.18)}.timetable th{padding:10px 14px;text-align:left;font-weight:700;color:var(--blue-dark, #2b74d4);font-size:.7rem;text-transform:uppercase;letter-spacing:.06em;white-space:nowrap}.timetable tbody tr{border-bottom:1px solid var(--border, rgba(15, 31, 56, .07));transition:background var(--ease)}.timetable tbody tr:last-child{border-bottom:none}.timetable tbody tr:hover{background:#4392f108}.timetable td{padding:9px 14px;color:var(--ink-soft, #2d3f5a);font-size:.82rem}.course-cell{font-weight:600;color:var(--blue, #4392f1);font-family:var(--font-mono);font-size:.8rem}.time-cell{font-family:var(--font-mono);font-size:.8rem;color:var(--ink-soft, #2d3f5a);white-space:nowrap}.venue-cell{font-family:var(--font-mono);font-size:.78rem;color:var(--muted, #6a7a96)}.requests-list{display:flex;flex-direction:column;gap:8px}.request-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:10px;padding:12px 14px;display:flex;align-items:center;justify-content:space-between;gap:12px;transition:border-color var(--ease),box-shadow var(--ease)}.request-card:hover{border-color:#4392f147;box-shadow:0 2px 8px #0f1f380f}.request-info{flex:1;display:flex;flex-direction:column;gap:3px;min-width:0}.request-info h4{margin:0;font-size:.84rem;font-weight:600;color:var(--ink-soft, #2d3f5a)}.request-details{margin:0;font-size:.75rem;color:var(--muted, #6a7a96);font-family:var(--font-mono);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.request-action{display:flex;align-items:center;gap:10px;flex-shrink:0}.status-badge{padding:3px 8px;border-radius:5px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.status-badge.status-pending{background:#4392f11a;color:var(--blue-dark, #2b74d4)}.status-badge.status-approved{background:#22c55e1a;color:#15803d}.status-badge.status-rejected{background:#dc493a1a;color:var(--cinnabar, #dc493a)}.review-btn{background:var(--blue, #4392f1);color:#fff;border:none;border-radius:6px;padding:5px 10px;font-size:.76rem;font-weight:600;cursor:pointer;transition:background var(--ease),box-shadow var(--ease);font-family:var(--font-sans);white-space:nowrap}.review-btn:hover{background:var(--blue-dark, #2b74d4);box-shadow:0 3px 8px #4392f13d}@media (max-width: 1100px){.dash-bottom-grid{grid-template-columns:1fr}}@media (max-width: 900px){.stats-grid{grid-template-columns:repeat(2,1fr);gap:10px}}@media (max-width: 768px){.stat-card{padding:14px 16px}.stat-num{font-size:1.7rem}}@media (max-width: 480px){.stats-grid{grid-template-columns:1fr}.timetable{font-size:.78rem}.timetable th,.timetable td{padding:8px 10px}.dash-greet-text{font-size:1.15rem}}.app-dashboard .page-content>*{animation:none}.dashboard-container>*{animation:app-rise .55s cubic-bezier(.22,1,.36,1) both}.dashboard-container>*:nth-child(1){animation-delay:.04s}.dashboard-container>*:nth-child(2){animation-delay:.12s}.dashboard-container>*:nth-child(3){animation-delay:.2s}.dashboard-container>*:nth-child(4){animation-delay:.28s}.dashboard-container>*:nth-child(5){animation-delay:.36s}.stat-card:hover{box-shadow:0 12px 28px #0f1f3821;transform:translateY(-4px)}.stat-icon,.dash-action-icon{transition:transform .35s cubic-bezier(.34,1.56,.64,1)}.stat-card:hover .stat-icon{transform:scale(1.12) rotate(-6deg)}.dash-action-card{transition:background var(--ease),transform .24s cubic-bezier(.34,1.56,.64,1),box-shadow var(--ease)}.dash-action-card:hover{transform:translateY(-3px);box-shadow:0 10px 24px #0f1f381a}.dash-action-arrow{transition:transform .24s ease}.dash-action-card:hover .dash-action-arrow{transform:translate(5px)}.dash-action-card:hover .dash-action-icon{transform:scale(1.12) rotate(-6deg)}.dash-panel{transition:box-shadow var(--ease),transform var(--ease)}.dash-panel:hover{box-shadow:0 10px 28px #0f1f3814}@media (prefers-reduced-motion: reduce){.dashboard-container>*{animation:none!important}.stat-card:hover,.dash-action-card:hover,.stat-card:hover .stat-icon,.dash-action-card:hover .dash-action-arrow,.dash-action-card:hover .dash-action-icon{transform:none!important}}.seg-tabs{display:inline-flex;flex-shrink:0;gap:4px;padding:4px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:10px;align-self:flex-start;flex-wrap:wrap;max-width:100%}.seg-tab{border:none;background:transparent;color:var(--muted, #6a7a96);font-size:.85rem;font-weight:600;font-family:var(--font-sans);padding:7px 16px;border-radius:7px;cursor:pointer;transition:background .15s ease,color .15s ease;white-space:nowrap}.seg-tab:hover:not(:disabled){color:var(--ink-soft, #2d3f5a)}.seg-tab.active{background:#fff;color:var(--blue, #4392f1);box-shadow:0 1px 3px #0f1f381f}.seg-tab:disabled{opacity:.5;cursor:not-allowed}.seg-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;margin-left:7px;border-radius:999px;font-size:.68rem;font-weight:700;background:var(--blue, #4392f1);color:#fff}.seg-tab:not(.active) .seg-tab-count{background:#0f1f382e;color:var(--ink-soft, #2d3f5a)}.seg-tabs--sm{padding:3px;gap:3px}.seg-tabs--sm .seg-tab{padding:5px 12px;font-size:.8rem}@keyframes hintEnter{0%{opacity:0;transform:translate(-50%) translateY(-14px)}to{opacity:1;transform:translate(-50%) translateY(0)}}.app-body.app-timetable .page-content{overflow:hidden;min-height:0;gap:0;padding-bottom:0}.app-body.app-timetable .page-content:has(.tt-list-page){overflow-y:auto}.app-body.app-timetable .page-fade{flex:1;min-height:0;display:flex;flex-direction:column}.tv-filter-bar{display:flex;align-items:center;gap:8px;padding:10px 16px;border-bottom:1px solid var(--border, rgba(15,31,56,.08));background:var(--surface-app, #f8fafc);flex-wrap:wrap;flex-shrink:0}.tv-filter-label{display:flex;align-items:center;gap:5px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);white-space:nowrap;flex-shrink:0}.tv-filter-select{height:32px;padding:0 26px 0 10px;border:1px solid var(--border, rgba(15,31,56,.1));border-radius:7px;font-size:.8rem;font-family:var(--font-sans);color:var(--ink, #0f1f38);background:#fff;cursor:pointer;outline:none;transition:border-color .15s ease,box-shadow .15s ease;max-width:180px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%236a7a96' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.tv-filter-select:focus{border-color:var(--blue, #4392f1);box-shadow:0 0 0 2px #4392f11f}.tv-filter-select:has(option:not([value=""]):checked){border-color:var(--blue, #4392f1);background-color:#4392f10d;color:var(--blue, #4392f1);font-weight:600}.tv-filter-clear{height:32px;padding:0 12px;border:1px solid rgba(220,73,58,.25);border-radius:7px;background:#dc493a0f;color:var(--cinnabar, #dc493a);font-size:.78rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;white-space:nowrap;transition:background .15s ease}.tv-filter-clear:hover{background:#dc493a1f}.tv-filter-toggle-btn{height:32px;padding:0 12px;border:1px solid var(--border, rgba(15,31,56,.1));border-radius:7px;background:#fff;color:var(--ink-soft, #2d3f5a);font-size:.78rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;margin-left:auto;white-space:nowrap;transition:background .15s ease}.tv-filter-toggle-btn:hover{background:var(--surface-app, #f2f4f8)}.app-body.app-timetable-view .page-content{padding:10px 12px 12px;gap:8px;overflow:hidden}.app-body.app-timetable-view .page-fade{flex:1;min-height:0;display:flex;flex-direction:column}.app-body.app-timetable-view .tv-viewer-panel{flex:1;min-height:0;width:100%;max-width:none;display:flex;flex-direction:column;gap:0;padding:0;border:1px solid #cdd9e4;border-radius:8px;overflow:hidden;background:#eef3f7;box-shadow:0 10px 24px #0f1f3814}.app-body.app-timetable-view .tv-viewer-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:40px;padding:7px 10px 7px 12px;border-bottom:1px solid #d7e1eb;background:#fff;gap:10px;flex-shrink:0}.app-body.app-timetable-view .tv-viewer-title{min-width:0;display:flex;align-items:baseline;gap:10px}.app-body.app-timetable-view .tv-viewer-title strong{min-width:0;overflow:hidden;color:#102845;font-size:.88rem;font-weight:760;text-overflow:ellipsis;white-space:nowrap}.app-body.app-timetable-view .tv-viewer-title span{flex-shrink:0;color:#6a7a96;font-size:.69rem;font-family:var(--font-mono)}.app-body.app-timetable-view .tv-viewer-toolbar-actions{display:flex;align-items:center;gap:8px}.app-body.app-timetable-view .tv-compact-controls{display:grid;grid-template-columns:max-content minmax(0,1fr);align-items:stretch;gap:1px;border-bottom:1px solid #d7e1eb;background:#d7e1eb;flex-shrink:0}.app-body.app-timetable-view .tv-filter-bar{min-width:0;padding:7px 10px;border-bottom:0;background:#f8fafc;gap:6px;flex-wrap:nowrap;overflow:visible}.app-body.app-timetable-view .tv-filter-label{width:26px;height:28px;justify-content:center;border:1px solid #d8e2eb;border-radius:7px;background:#fff;font-size:0}.app-body.app-timetable-view .tv-filter-label svg{width:14px;height:14px}.app-body.app-timetable-view .tv-filter-select{width:clamp(122px,13vw,168px);height:28px;max-width:none;border-radius:7px;font-size:.72rem;flex:0 0 auto}.app-body.app-timetable-view .tv-filter-clear,.app-body.app-timetable-view .tv-filter-toggle-btn{height:28px;border-radius:7px;font-size:.72rem;flex:0 0 auto;margin-left:0}.app-body.app-timetable-view .tv-filter-drawer-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:28px;padding:0 12px;border:1px solid #102845;border-radius:7px;background:#102845;color:#fff;font:800 .72rem var(--font-sans);cursor:pointer;white-space:nowrap;box-shadow:0 5px 12px #10284524}.app-body.app-timetable-view .tv-filter-drawer-btn svg{width:13px;height:13px}.app-body.app-timetable-view .tv-filter-drawer-btn span{min-width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;border-radius:999px;background:#fff;color:#102845;font-size:.66rem;font-family:var(--font-mono)}.app-body.app-timetable-view .tv-filter-drawer-shell{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;justify-content:flex-end;background:#00000047}.app-body.app-timetable-view .tv-filter-drawer{width:400px;max-width:100vw;height:100%;display:flex;flex-direction:column;border-left:1px solid #dce4ec;background:#fff;box-shadow:-18px 0 48px #19304829}.app-body.app-timetable-view .tv-filter-drawer-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 20px 16px;border-bottom:1px solid #e4eaf0;background:#f8fafb}.app-body.app-timetable-view .tv-filter-drawer-head div{min-width:0;display:flex;flex-direction:column;gap:3px}.app-body.app-timetable-view .tv-filter-drawer-head strong{color:#102845;font-size:.98rem;font-weight:850}.app-body.app-timetable-view .tv-filter-drawer-head span{color:#6a7a96;font-size:.72rem;font-family:var(--font-mono)}.app-body.app-timetable-view .tv-filter-drawer-close{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:#6b7280;font-size:1.15rem;line-height:1;cursor:pointer}.app-body.app-timetable-view .tv-filter-drawer-close:hover{background:#eef3f6;color:#102845}.app-body.app-timetable-view .tv-filter-drawer-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:12px;padding:16px 20px;overflow-y:auto;overscroll-behavior:contain}.app-body.app-timetable-view .tv-filter-field{display:flex;flex-direction:column;gap:6px}.app-body.app-timetable-view .tv-filter-field>span{color:#586a82;font-size:.68rem;font-weight:850;text-transform:uppercase}.app-body.app-timetable-view .tv-filter-drawer .tv-filter-select{width:100%;max-width:none;height:34px;flex:0 0 auto;border-radius:7px;font-size:.78rem}.app-body.app-timetable-view .tv-filter-drawer-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 20px 14px;border-top:1px solid #e4eaf0;background:#fff}.app-body.app-timetable-view .tv-filter-drawer-actions .tv-filter-clear{margin-right:auto}.app-body.app-timetable-view .tv-filter-drawer-actions .tv-filter-clear.danger{min-width:84px;border-color:#dc493a;background:#dc493a;color:#fff}.app-body.app-timetable-view .tv-filter-drawer-actions .tv-filter-clear:disabled{opacity:.45;cursor:not-allowed}.app-body.app-timetable-view .tv-filter-drawer-shell.notif-backdrop{display:block;background:#13263a7a;-webkit-backdrop-filter:blur(7px) saturate(.85);backdrop-filter:blur(7px) saturate(.85)}.app-body.app-timetable-view .tv-filter-drawer.notif-drawer{top:12px;right:12px;bottom:12px;width:min(420px,calc(100vw - 24px));height:auto;max-width:none;overflow:hidden;border:1px solid #d8e2eb;border-radius:8px!important;background:#fff;box-shadow:inset 0 3px #315fbe,-18px 0 48px #1930482e!important}.app-body.app-timetable-view .tv-filter-drawer-head.notif-drawer-header{min-height:74px;padding:14px 14px 13px 16px;border-bottom:1px solid #e2e9ef;background:#f7f9fb}.app-body.app-timetable-view .tv-filter-drawer-head .notif-drawer-title{display:flex;align-items:center;gap:10px;min-width:0;color:#17324d}.app-body.app-timetable-view .tv-filter-drawer-head .notif-drawer-title-icon{width:36px;height:36px;flex:0 0 36px;border-radius:7px!important;background:#e5edf8;color:#315f8e}.app-body.app-timetable-view .tv-filter-drawer-head .notif-drawer-title-copy{min-width:0}.app-body.app-timetable-view .tv-filter-drawer-head .notif-drawer-title-copy>span{color:#17324d;font-size:.9rem;font-weight:800}.app-body.app-timetable-view .tv-filter-drawer-head .notif-drawer-title-copy small{color:#78899a;font-size:.69rem;font-weight:600}.app-body.app-timetable-view .tv-filter-drawer-head .notif-header-count{min-width:19px;height:19px;padding:0 5px;border-radius:6px!important;background:#315f8e;font-size:.62rem}.app-body.app-timetable-view .tv-filter-drawer-head .notif-drawer-header-right{display:flex;align-items:center;gap:6px}.app-body.app-timetable-view .tv-filter-drawer-head .notif-mark-all-btn{min-height:32px;padding:6px 9px;border:1px solid #cdd9e4;border-radius:6px!important;background:#fff;color:#315f8e;font-size:.68rem;font-weight:750}.app-body.app-timetable-view .tv-filter-drawer-head .notif-mark-all-btn:hover{border-color:#aebfd0;background:#edf3f8}.app-body.app-timetable-view .tv-filter-drawer-close.notif-close-btn{width:32px;height:32px;border:1px solid #d3dde6;border-radius:6px!important;background:#fff;color:#637489;font-size:inherit}.app-body.app-timetable-view .tv-filter-drawer-close.notif-close-btn:hover{border-color:#bdcad6;background:#edf2f6;color:#17324d}.app-body.app-timetable-view .tv-filter-drawer-body.notif-drawer-body{gap:0;padding:0;background:#fff;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.app-body.app-timetable-view .tv-filter-drawer-body.notif-drawer-body::-webkit-scrollbar{width:9px}.app-body.app-timetable-view .tv-filter-drawer-body.notif-drawer-body::-webkit-scrollbar-track{background:#f4f7f9}.app-body.app-timetable-view .tv-filter-drawer-body.notif-drawer-body::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px!important;background:#aebed0}.app-body.app-timetable-view .tv-filter-drawer-body .tv-filter-field{gap:7px;padding:14px 16px;border-bottom:1px solid #e7edf2;background:#fff}.app-body.app-timetable-view .tv-filter-drawer-body .tv-filter-field:hover{background:#f6f9fb}.app-body.app-timetable-view .tv-filter-drawer-body .tv-filter-field>span{color:#728297;font-size:.64rem;font-weight:800;letter-spacing:.06em}.app-body.app-timetable-view .tv-filter-drawer.notif-drawer .tv-filter-select{height:36px;border:1px solid #d7e1eb;border-radius:7px;background:#f8fafb;color:#263a50;font-size:.76rem;font-weight:750}.app-body.app-timetable-view .tv-filter-drawer.notif-drawer .tv-filter-select:focus{outline:none;border-color:#315f8e;background:#fff;box-shadow:0 0 0 3px #315f8e1f}.app-body.app-timetable-view .tv-filter-drawer-actions.notif-drawer-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid #dfe7ee;background:#f7f9fb}.app-body.app-timetable-view .tv-filter-drawer-actions.notif-drawer-footer .tv-filter-clear{margin-right:auto;min-width:84px}.app-body.app-timetable-view .tv-filter-drawer-actions.notif-drawer-footer .primary-btn{min-height:32px;padding:0 14px;border-radius:6px;background:#102845;border-color:#102845;font-size:.72rem}.app-body.app-timetable-view .tv-filter-toggle-btn.danger{border-color:#f0c4bd;background:#fff4f3;color:#b42318}.app-body.app-timetable-view .tv-schedule-panel-shell.notif-backdrop{display:block;background:#13263a7a;-webkit-backdrop-filter:blur(7px) saturate(.85);backdrop-filter:blur(7px) saturate(.85)}.app-body.app-timetable-view .tv-schedule-panel.notif-drawer{top:12px;right:12px;bottom:12px;width:min(420px,calc(100vw - 24px));height:auto;max-width:none;overflow:hidden;border:1px solid #d8e2eb;border-radius:8px!important;background:#fff;box-shadow:inset 0 3px #315fbe,-18px 0 48px #1930482e!important}.app-body.app-timetable-view .tv-alloc-brief{margin:14px 16px;padding:12px 14px;border:1px solid #e2e9ef;border-radius:8px!important;background:#fbfcfd}.app-body.app-timetable-view .tv-alloc-brief h5{margin:0 0 7px;color:#728297;font-size:.63rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.app-body.app-timetable-view .tv-alloc-brief p{margin:0 0 6px;color:#46596e;font-size:.76rem;line-height:1.5}.app-body.app-timetable-view .tv-alloc-brief p:last-child{margin-bottom:0}.app-body.app-timetable-view .tv-alloc-brief b{color:#22394f;font-weight:750}.app-body.app-timetable-view .tv-alloc-warn{color:#8a5d16!important;font-weight:650}.app-body.app-timetable-view .tv-alloc-quiet{color:#78899a!important;font-size:.73rem!important}.app-body.app-timetable-view .tv-alloc-list{margin:0 0 6px;padding:0;list-style:none;border:1px solid #eef2f6;border-radius:6px!important;background:#fff;overflow:hidden}.app-body.app-timetable-view .tv-alloc-list li{display:grid;grid-template-columns:82px minmax(0,1fr) auto;align-items:baseline;gap:10px;padding:7px 11px;border-bottom:1px solid #f4f7fa;font-size:.73rem}.app-body.app-timetable-view .tv-alloc-list li:last-child{border-bottom:0}.app-body.app-timetable-view .tv-alloc-list b{color:#22394f;font-weight:750}.app-body.app-timetable-view .tv-alloc-list i{color:#6c7f94;font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-timetable-view .tv-alloc-list s{color:#9b6a2f;font-size:.7rem;text-decoration:none;white-space:nowrap}.app-body.app-timetable-view .tv-alloc-hint{margin-top:3px;color:#8195a9!important;font-size:.71rem!important}@media (max-width: 560px){.app-body.app-timetable-view .tv-alloc-list li{grid-template-columns:minmax(0,1fr);gap:2px}}.app-body.app-timetable-view .tv-schedule-panel--form.notif-drawer{width:min(880px,calc(100vw - 24px))}.app-body.app-timetable-view .tv-panel-form-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-bottom:1px solid #e7edf2}.app-body.app-timetable-view .tv-panel-form-row>label{border-bottom:0;border-right:1px solid #eef2f6}.app-body.app-timetable-view .tv-panel-form-row>label:last-child{border-right:0}.app-body.app-timetable-view .tv-panel-form-row--pair{grid-template-columns:repeat(2,minmax(0,1fr))}@media (max-width: 560px){.app-body.app-timetable-view .tv-panel-form-row{grid-template-columns:minmax(0,1fr)}.app-body.app-timetable-view .tv-panel-form-row>label{border-right:0;border-bottom:1px solid #eef2f6}}.app-body.app-timetable-view .tv-panel-form>.tv-split-alert,.app-body.app-timetable-view .tv-panel-form>.tv-split-panel{margin:14px 16px}.app-body.app-timetable-view .tv-panel-form>.tv-split-alert+.tv-split-panel{margin-top:0}.app-body.app-timetable-view .tv-plan-verdict{margin:0;padding:11px 16px;border-bottom:1px solid #e7edf2;font-size:.76rem;font-weight:650;line-height:1.45}.app-body.app-timetable-view .tv-plan-verdict.is-ok{background:#f1f9f4;color:#1f6b43;box-shadow:inset 3px 0 #3f9c6b}.app-body.app-timetable-view .tv-plan-verdict.is-warn{background:#fdf8ef;color:#8a5d16;box-shadow:inset 3px 0 #d9a33c}.app-body.app-timetable-view .tv-plan-verdict.is-bad{background:#fdf5f4;color:#9b382a;box-shadow:inset 3px 0 #d1584a}.app-body.app-timetable-view .tv-split-alert{padding:12px 14px;border:1px solid #f0d3cd;border-radius:8px!important;background:#fdf5f4;box-shadow:inset 3px 0 #d1584a}.app-body.app-timetable-view .tv-split-alert strong{display:block;margin-bottom:4px;color:#8f3326;font-size:.82rem;font-weight:800}.app-body.app-timetable-view .tv-split-alert p{margin:0 0 3px;color:#6f4a44;font-size:.75rem;line-height:1.5}.app-body.app-timetable-view .tv-split-alert p:last-child{margin-bottom:0}.app-body.app-timetable-view .tv-split-alert b{font-weight:800}.app-body.app-timetable-view .tv-split-panel{border:1px solid #e2e9ef;border-radius:8px!important;background:#fff;overflow:hidden}.app-body.app-timetable-view .tv-split-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;background:#fbfcfd;border-bottom:1px solid #eef2f6}.app-body.app-timetable-view .tv-split-head strong{display:block;color:#22394f;font-size:.82rem;font-weight:750}.app-body.app-timetable-view .tv-split-head small{display:block;margin-top:2px;color:#6c7f94;font-size:.71rem;font-weight:500}.app-body.app-timetable-view .tv-split-stepper{display:inline-flex;align-items:center;gap:2px;flex-shrink:0;padding:2px;border:1px solid #dbe3ea;border-radius:7px!important;background:#fff}.app-body.app-timetable-view .tv-split-stepper button{width:26px;height:26px;border:0;border-radius:5px!important;background:#f1f5f8;color:#46596e;font-size:.95rem;font-weight:800;line-height:1;cursor:pointer}.app-body.app-timetable-view .tv-split-stepper button:hover{background:#e3ebf2}.app-body.app-timetable-view .tv-split-stepper b{min-width:34px;text-align:center;color:#22394f;font-size:.78rem;font-weight:800}.app-body.app-timetable-view .tv-split-preview{margin:0;padding:0;list-style:none}.app-body.app-timetable-view .tv-split-preview li{display:grid;grid-template-columns:72px 92px minmax(0,1fr);align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid #f1f4f8}.app-body.app-timetable-view .tv-split-preview li:last-child{border-bottom:0}.app-body.app-timetable-view .tv-split-preview b{color:#22394f;font-size:.78rem;font-weight:800}.app-body.app-timetable-view .tv-split-preview i{color:#46596e;font-size:.73rem;font-style:normal}.app-body.app-timetable-view .tv-split-preview em{color:#6c7f94;font-size:.71rem;font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-timetable-view .tv-split-preview li.is-unfit em{color:#b4453a;font-weight:650}.app-body.app-timetable-view .tv-split-preview em s{margin-left:6px;padding:1px 5px;border-radius:4px!important;background:#fdf1de;color:#8a5d16;font-weight:700;text-decoration:none}.app-body.app-timetable-view .tv-split-note{margin:0;padding:9px 14px;border-top:1px solid #f1f4f8;background:#f8fafc;color:#5f7185;font-size:.72rem;line-height:1.45}@media (max-width: 620px){.app-body.app-timetable-view .tv-split-preview li{grid-template-columns:minmax(0,1fr);gap:2px}}.app-body.app-timetable-view .tv-schedule-panel--wide.notif-drawer{width:min(1040px,calc(100vw - 24px))}.app-body.app-timetable-view .tv-schedule-panel--edit.notif-drawer{width:min(760px,calc(100vw - 24px))}.app-body.app-timetable-view .tv-edit-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px 16px;padding:14px 16px;border-bottom:1px solid #e7edf2;background:#f8fafc}.app-body.app-timetable-view .tv-edit-facts div{display:grid;gap:2px;min-width:0}.app-body.app-timetable-view .tv-edit-facts .tv-edit-facts-wide{grid-column:1 / -1}.app-body.app-timetable-view .tv-edit-facts span{color:#64748b;font-size:.66rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.app-body.app-timetable-view .tv-edit-facts strong{color:#17324d;font-size:.82rem;overflow-wrap:anywhere}.app-body.app-timetable-view .tv-edit-facts .is-target strong{color:#1d4ed8}.app-body.app-timetable-view .tv-edit-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border-bottom:1px solid #e7edf2}.app-body.app-timetable-view .tv-edit-grid label{border-bottom:0;border-right:1px solid #e7edf2}.app-body.app-timetable-view .tv-edit-grid label:last-child{border-right:0}.app-body.app-timetable-view .tv-edit-room-note{color:#64748b;font-size:.72rem}.app-body.app-timetable-view .tv-edit-ways{display:grid;gap:10px;padding:14px 16px 18px;background:#fff}.app-body.app-timetable-view .tv-edit-ways h4{margin:4px 0 0;color:#64748b;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.app-body.app-timetable-view .tv-edit-blockers{display:grid;gap:6px;margin:0;padding:0;list-style:none}.app-body.app-timetable-view .tv-edit-blockers li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 12px;border:1px solid #fecaca;border-radius:8px;background:#fff7f7}.app-body.app-timetable-view .tv-edit-blockers li div{display:grid;gap:2px;min-width:0}.app-body.app-timetable-view .tv-edit-blockers strong{color:#17324d;font-size:.8rem}.app-body.app-timetable-view .tv-edit-blockers small{color:#64748b;font-size:.72rem}.app-body.app-timetable-view .tv-edit-reasons{display:flex;flex-wrap:wrap;gap:4px;justify-content:flex-end}.app-body.app-timetable-view .tv-edit-reasons em{padding:2px 7px;border-radius:999px;background:#fee2e2;color:#991b1b;font-size:.66rem;font-style:normal;font-weight:800;white-space:nowrap}.app-body.app-timetable-view .tv-edit-options{display:grid;gap:8px}.app-body.app-timetable-view .tv-edit-option{display:grid;gap:3px;width:100%;padding:11px 13px;border:1px solid #d7e1eb;border-radius:9px;background:#fff;color:inherit;text-align:left;cursor:pointer}.app-body.app-timetable-view button.tv-edit-option:hover:not(:disabled){border-color:#315f8e;box-shadow:0 0 0 3px #315f8e1a}.app-body.app-timetable-view .tv-edit-option:disabled{cursor:not-allowed;opacity:.6}.app-body.app-timetable-view .tv-edit-option.is-static{cursor:default}.app-body.app-timetable-view .tv-edit-option.is-search{border-style:dashed;background:#f8fafc}.app-body.app-timetable-view .tv-edit-option strong{color:#17324d;font-size:.82rem}.app-body.app-timetable-view .tv-edit-option small{color:#64748b;font-size:.74rem;line-height:1.45}.app-body.app-timetable-view .tv-edit-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.app-body.app-timetable-view .tv-edit-chips button{padding:4px 10px;border:1px solid #bfdbfe;border-radius:999px;background:#eff6ff;color:#1d4ed8;font-size:.74rem;font-weight:700;cursor:pointer}.app-body.app-timetable-view .tv-order{display:grid}.app-body.app-timetable-view .tv-order-pick{display:grid;gap:8px;padding:14px 16px;border-bottom:1px solid #e7edf2;background:#fff}.app-body.app-timetable-view .tv-order-label{color:#64748b;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.app-body.app-timetable-view .tv-order-pick input[type=search]{width:100%;height:36px;padding:0 10px;border:1px solid #d7e1eb;border-radius:7px;background:#f8fafb;font-size:.8rem}.app-body.app-timetable-view .tv-order-chosen{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid #bfdbfe;border-radius:8px;background:#eff6ff}.app-body.app-timetable-view .tv-order-chosen div{display:grid;gap:2px;min-width:0}.app-body.app-timetable-view .tv-order-chosen strong{color:#17324d;font-size:.84rem}.app-body.app-timetable-view .tv-order-chosen small{color:#64748b;font-size:.74rem}.app-body.app-timetable-view .tv-order-rules{padding:14px 16px;background:#fff}.app-body.app-timetable-view .tv-order-rules h4{margin:0 0 8px;color:#64748b;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.app-body.app-timetable-view .tv-order-rules ul{display:grid;gap:6px;margin:0;padding:0;list-style:none}.app-body.app-timetable-view .tv-order-rules li{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 12px;border:1px solid #e2e8f0;border-radius:8px;font-size:.78rem}.app-body.app-timetable-view .tv-order-rules li em{margin-left:8px;padding:1px 7px;border-radius:999px;background:#ecfdf5;color:#065f46;font-size:.66rem;font-style:normal;font-weight:800}.app-body.app-timetable-view .tv-order-rules li.is-broken em{background:#fee2e2;color:#991b1b}.app-body.app-timetable-view .tv-order-rules li.is-unplaced em{background:#f1f5f9;color:#475569}@media (max-width: 640px){.app-body.app-timetable-view .tv-edit-facts,.app-body.app-timetable-view .tv-edit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.app-body.app-timetable-view .tv-edit-grid label:nth-child(2){border-right:0}}.app-body.app-timetable-view .tv-resolve-headline{padding:18px 20px 16px;border-bottom:1px solid #e7edf2;background:#f8fafc}.app-body.app-timetable-view .tv-resolve-headline strong{display:block;color:#17324d;font-size:1.02rem;font-weight:800;letter-spacing:-.01em}.app-body.app-timetable-view .tv-resolve-headline p{margin:4px 0 0;color:#64788f;font-size:.78rem;font-weight:500}.app-body.app-timetable-view .tv-review-start{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:11px 14px;border:0;border-bottom:1px solid #eef2f6;background:#f4f8fd;text-align:left;cursor:pointer}.app-body.app-timetable-view .tv-review-start strong{display:block;color:#1d4f9c;font-size:.79rem;font-weight:800}.app-body.app-timetable-view .tv-review-start small{display:block;margin-top:2px;color:#5f7a9e;font-size:.72rem}.app-body.app-timetable-view .tv-review-start b{color:#7d9ac0;font-size:1.2rem;line-height:1}.app-body.app-timetable-view .tv-review-start:hover{background:#e9f1fb}.app-body.app-timetable-view .tv-review-bar{position:fixed;left:50%;bottom:22px;transform:translate(-50%);z-index:9100;display:flex;align-items:center;gap:14px;max-width:calc(100vw - 32px);padding:10px 12px 10px 16px;border:1px solid #d8e2eb;border-radius:10px!important;background:#fff;box-shadow:0 14px 40px #19304842}.app-body.app-timetable-view .tv-review-count{flex-shrink:0;padding:3px 9px;border-radius:999px!important;background:#eef2f6;color:#4a5f77;font-size:.72rem;font-weight:800}.app-body.app-timetable-view .tv-review-copy{min-width:0}.app-body.app-timetable-view .tv-review-copy strong{display:block;color:#22394f;font-size:.82rem;font-weight:750;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-body.app-timetable-view .tv-review-copy small{display:block;color:#6c7f94;font-size:.72rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.app-body.app-timetable-view .tv-review-unsaved{flex-shrink:0;padding:4px 10px;border:1px solid #e6d5a0;border-radius:999px!important;background:#fffdf5;color:#7a5b00;font-size:.71rem;font-weight:700;white-space:nowrap}.app-body.app-timetable-view .tv-review-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.app-body.app-timetable-view .tv-review-actions button{min-width:32px;height:32px;padding:0 9px;border:1px solid #dbe3ea;border-radius:7px!important;background:#fff;color:#46596e;font-family:inherit;font-size:.95rem;font-weight:700;line-height:1;cursor:pointer}.app-body.app-timetable-view .tv-review-actions button:hover:not(:disabled){background:#f1f5f8;border-color:#b9c9d8}.app-body.app-timetable-view .tv-review-actions button:disabled{opacity:.35;cursor:default}.app-body.app-timetable-view .tv-review-back{font-size:.76rem!important;font-weight:700!important}.app-body.app-timetable-view .tv-review-close{border-color:transparent!important;color:#8aa0b4!important}@media (max-width: 640px){.app-body.app-timetable-view .tv-review-bar{left:12px;right:12px;transform:none;max-width:none;flex-wrap:wrap}.app-body.app-timetable-view .tv-review-copy{flex:1 1 100%;order:3}.app-body.app-timetable-view .tv-review-back,.app-body.app-timetable-view .tv-review-unsaved{display:none}}.app-body.app-timetable-view .tv-resolve-batch{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:16px 20px 0;padding:14px 16px;border:1px solid #d6e3f2;border-radius:8px!important;background:#f4f8fd}.app-body.app-timetable-view .tv-resolve-batch strong{display:block;color:#1d4f9c;font-size:.85rem;font-weight:800}.app-body.app-timetable-view .tv-resolve-batch small{display:block;margin-top:3px;max-width:70ch;color:#5f7a9e;font-size:.73rem;line-height:1.45}.app-body.app-timetable-view .tv-resolve-batch .primary-btn{flex-shrink:0}.app-body.app-timetable-view .tv-resolve-report{margin:14px 20px 0;border:1px solid #e2e9ef;border-radius:8px!important;background:#fff;overflow:hidden}.app-body.app-timetable-view .tv-resolve-report>header{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;border-bottom:1px solid #eef2f6;background:#fbfcfd}.app-body.app-timetable-view .tv-resolve-report>header strong{color:#22394f;font-size:.83rem;font-weight:800}.app-body.app-timetable-view .tv-resolve-report>header button{border:0;background:none;color:#8aa0b4;font-size:1.2rem;line-height:1;cursor:pointer}.app-body.app-timetable-view .tv-resolve-report details{border-bottom:1px solid #f1f4f8}.app-body.app-timetable-view .tv-resolve-report details:last-child{border-bottom:0}.app-body.app-timetable-view .tv-resolve-report summary{display:flex;align-items:baseline;gap:8px;padding:10px 14px;color:#22394f;font-size:.78rem;font-weight:750;cursor:pointer}.app-body.app-timetable-view .tv-resolve-report summary small{color:#8195a9;font-size:.7rem;font-weight:500}.app-body.app-timetable-view .tv-resolve-report summary b{margin-left:auto;padding:1px 7px;border-radius:999px!important;background:#eef2f6;color:#4a5f77;font-size:.7rem}.app-body.app-timetable-view .tv-report-table{width:100%;border-collapse:collapse;font-size:.73rem;table-layout:fixed}.app-body.app-timetable-view .tv-report-table th{padding:5px 10px;border-bottom:1px solid #e7edf2;background:#fafbfc;color:#8195a9;font-size:.63rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;text-align:left}.app-body.app-timetable-view .tv-report-table td{padding:7px 10px;border-bottom:1px solid #f4f7fa;color:#46596e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-timetable-view .tv-report-table tr:last-child td{border-bottom:0}.app-body.app-timetable-view .tv-report-table td b{color:#22394f;font-weight:750}.app-body.app-timetable-view .tv-report-table td.is-time{font-family:JetBrains Mono,ui-monospace,monospace;font-size:.69rem;color:#6c7f94}.app-body.app-timetable-view .tv-report-table td em{margin-left:5px;padding:0 5px;border-radius:4px!important;background:#eef2f6;color:#5f7185;font-size:.66rem;font-style:normal;font-weight:700}.app-body.app-timetable-view .tv-report-table th:nth-child(1),.app-body.app-timetable-view .tv-report-table td:nth-child(1){width:15%}.app-body.app-timetable-view .tv-report-table th:nth-child(2),.app-body.app-timetable-view .tv-report-table td:nth-child(2){width:20%}.app-body.app-timetable-view .tv-report-table th:nth-child(3),.app-body.app-timetable-view .tv-report-table td:nth-child(3){width:13%}.app-body.app-timetable-view .tv-report-table th:nth-child(4),.app-body.app-timetable-view .tv-report-table td:nth-child(4){width:14%}.app-body.app-timetable-view .tv-report-table tr.is-linked{cursor:pointer}.app-body.app-timetable-view .tv-report-table tr.is-linked:hover td{background:#f1f6fc}.app-body.app-timetable-view .tv-report-table tr.is-linked:hover td b{color:#1d4f9c}.app-body.app-timetable-view .tv-resolve-report p{display:flex;flex-direction:column;gap:2px;margin:0;padding:8px 14px;border-bottom:1px solid #f4f7fa;font-size:.73rem}.app-body.app-timetable-view .tv-resolve-report p:last-child{border-bottom:0}.app-body.app-timetable-view .tv-resolve-report p b{color:#22394f;font-weight:750}.app-body.app-timetable-view .tv-resolve-report p i{color:#9b6a2f;font-style:normal;line-height:1.45}@media (max-width: 700px){.app-body.app-timetable-view .tv-resolve-batch{flex-direction:column;align-items:stretch}.app-body.app-timetable-view .tv-report-table th:nth-child(2),.app-body.app-timetable-view .tv-report-table td:nth-child(2){display:none}}.app-body.app-timetable-view .tv-resolve-group{padding:16px 20px 4px}.app-body.app-timetable-view .tv-resolve-heading{margin:0 0 10px;color:#728297;font-size:.64rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase}.app-body.app-timetable-view .tv-resolve-heading b{margin-left:5px;padding:1px 6px;border-radius:4px!important;background:#e7edf3;color:#4a5f77;font-size:.66rem}.app-body.app-timetable-view .tv-resolve-card{margin-bottom:12px;border:1px solid #e2e9ef;border-radius:8px!important;background:#fff;overflow:hidden}.app-body.app-timetable-view .tv-resolve-card--hard{box-shadow:inset 3px 0 #d1584a}.app-body.app-timetable-view .tv-resolve-card--soft{box-shadow:inset 3px 0 #e0a23c}.app-body.app-timetable-view .tv-resolve-card--missing{box-shadow:inset 3px 0 #6b86a8}.app-body.app-timetable-view .tv-resolve-card--drift{box-shadow:inset 3px 0 #7c3aed}.app-body.app-timetable-view .tv-resolve-card-head{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#fbfcfd;border-bottom:1px solid #eef2f6}.app-body.app-timetable-view .tv-resolve-dot{width:8px;height:8px;border-radius:50%!important;flex-shrink:0}.app-body.app-timetable-view .tv-resolve-card--hard .tv-resolve-dot{background:#d1584a}.app-body.app-timetable-view .tv-resolve-card--soft .tv-resolve-dot{background:#e0a23c}.app-body.app-timetable-view .tv-resolve-card--missing .tv-resolve-dot{background:#6b86a8}.app-body.app-timetable-view .tv-resolve-card--drift .tv-resolve-dot{background:#7c3aed}.app-body.app-timetable-view .tv-resolve-ignore{margin-left:auto;flex-shrink:0}.app-body.app-timetable-view .tv-resolve-card-copy{min-width:0;flex:1;display:flex;flex-direction:column;gap:2px}.app-body.app-timetable-view .tv-resolve-card-copy strong{color:#22394f;font-size:.83rem;font-weight:750;line-height:1.3}.app-body.app-timetable-view .tv-resolve-card-copy small{color:#6c7f94;font-size:.73rem;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-timetable-view .tv-resolve-count{flex-shrink:0;min-width:22px;padding:2px 7px;border-radius:999px!important;background:#eef2f6;color:#566d85;font-size:.7rem;font-weight:800;text-align:center}.app-body.app-timetable-view .tv-resolve-members{margin:0;padding:0;list-style:none}.app-body.app-timetable-view .tv-resolve-members li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 14px;border-bottom:1px solid #f1f4f8}.app-body.app-timetable-view .tv-resolve-members li:last-child{border-bottom:0}.app-body.app-timetable-view .tv-resolve-member-copy{min-width:0;display:flex;flex-direction:column;gap:1px}.app-body.app-timetable-view .tv-resolve-member-copy b{color:#22394f;font-size:.78rem;font-weight:750}.app-body.app-timetable-view .tv-resolve-course-title{margin-left:8px;color:#6c7f94;font-size:.74rem;font-weight:550}.app-body.app-timetable-view .tv-resolve-member-copy i{color:#78899a;font-size:.71rem;font-style:normal;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-timetable-view .tv-resolve-member-actions{display:inline-flex;align-items:center;gap:6px;flex-shrink:0}.app-body.app-timetable-view .tv-resolve-ghost{background:transparent!important;color:#6c7f94!important}.app-body.app-timetable-view .tv-swap-partners{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.app-body.app-timetable-view .tv-swap-partner{display:flex;align-items:flex-start;gap:12px;padding:11px 14px;border:1px solid #e6ebf2;border-radius:10px;background:#fff}.app-body.app-timetable-view .tv-swap-partner-main{display:flex;flex-direction:column;gap:1px;min-width:150px}.app-body.app-timetable-view .tv-swap-partner-trade{display:flex;flex-direction:column;gap:2px;flex:1;min-width:0;font-size:.76rem;color:#46596e}.app-body.app-timetable-view .tv-swap-partner-meta{color:#78899a;font-size:.71rem}.app-body.app-timetable-view .tv-swap-partner-warn{color:#92400e;font-size:.71rem}.app-body.app-timetable-view .tv-resolve-reasons{margin:6px 0 0;padding-left:18px;color:#46596e;font-size:.76rem}.app-body.app-timetable-view .tv-resolve-empty{padding:14px;border:1px dashed #d8e0ea;border-radius:10px;color:#46596e;font-size:.8rem}@media (max-width: 720px){.app-body.app-timetable-view .tv-swap-partner{flex-direction:column;align-items:stretch}}.app-body.app-timetable-view .tv-resolve-detail{margin:0;padding:9px 14px;border-top:1px solid #f1f4f8;color:#46596e;font-size:.73rem;font-weight:550;line-height:1.45}.app-body.app-timetable-view .tv-resolve-detail+.tv-resolve-advice{border-top-style:dashed}.app-body.app-timetable-view .tv-resolve-advice{margin:0;padding:9px 14px;border-top:1px solid #f1f4f8;background:#f8fafc;color:#5f7185;font-size:.73rem;font-weight:500;line-height:1.45}@media (max-width: 820px){.app-body.app-timetable-view .tv-resolve-members li{flex-direction:column;align-items:stretch;gap:8px}.app-body.app-timetable-view .tv-resolve-member-actions{justify-content:flex-start}}.app-body.app-timetable-view .tv-schedule-panel-head.notif-drawer-header{min-height:74px;padding:14px 14px 13px 16px;border-bottom:1px solid #e2e9ef;background:#f7f9fb}.app-body.app-timetable-view .tv-schedule-panel .notif-drawer-title{display:flex;align-items:center;gap:10px;min-width:0}.app-body.app-timetable-view .tv-schedule-panel .notif-drawer-title-copy{min-width:0}.app-body.app-timetable-view .tv-schedule-panel .notif-drawer-title-copy>span{color:#17324d;font-size:.9rem;font-weight:800}.app-body.app-timetable-view .tv-schedule-panel .notif-drawer-title-copy small{color:#78899a;font-size:.69rem;font-weight:600}.app-body.app-timetable-view .tv-panel-icon-btn.notif-close-btn{width:32px;height:32px;flex:0 0 32px}.app-body.app-timetable-view .tv-schedule-panel-body.notif-drawer-body{gap:0;padding:0;background:#fff;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.app-body.app-timetable-view .tv-schedule-panel-body.notif-drawer-body::-webkit-scrollbar{width:9px}.app-body.app-timetable-view .tv-schedule-panel-body.notif-drawer-body::-webkit-scrollbar-track{background:#f4f7f9}.app-body.app-timetable-view .tv-schedule-panel-body.notif-drawer-body::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px!important;background:#aebed0}.app-body.app-timetable-view .tv-panel-summary,.app-body.app-timetable-view .tv-panel-confirm{display:flex;flex-direction:column;gap:3px;padding:14px 16px;border-bottom:1px solid #e7edf2;background:#fff}.app-body.app-timetable-view .tv-panel-summary>span,.app-body.app-timetable-view .tv-panel-form label>span,.app-body.app-timetable-view .tv-panel-section summary{color:#728297;font-size:.64rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.app-body.app-timetable-view .tv-panel-summary strong,.app-body.app-timetable-view .tv-panel-confirm strong,.app-body.app-timetable-view .tv-panel-row-action strong,.app-body.app-timetable-view .tv-panel-issue-row strong,.app-body.app-timetable-view .tv-panel-status strong{color:#263a50;font-size:.78rem;font-weight:750;line-height:1.35}.app-body.app-timetable-view .tv-panel-summary small,.app-body.app-timetable-view .tv-panel-confirm span,.app-body.app-timetable-view .tv-panel-row-action small,.app-body.app-timetable-view .tv-panel-issue-row small,.app-body.app-timetable-view .tv-panel-status span,.app-body.app-timetable-view .tv-panel-empty{color:#5f7185;font-size:.73rem;font-weight:500;line-height:1.45}.app-body.app-timetable-view .tv-panel-row-list{display:grid;gap:0}.app-body.app-timetable-view .tv-panel-row-action,.app-body.app-timetable-view .tv-panel-issue-row{width:100%;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:54px;padding:13px 8px 13px 16px;border:0;border-bottom:1px solid #e7edf2;background:#fff;color:#263a50;text-align:left}.app-body.app-timetable-view .tv-panel-row-action{cursor:pointer}.app-body.app-timetable-view .tv-panel-row-action:hover,.app-body.app-timetable-view .tv-panel-issue-row:hover{background:#eef3f7}.app-body.app-timetable-view .tv-panel-row-action.danger strong{color:#b42318}.app-body.app-timetable-view .tv-panel-row-action.active{background:#eef6ff;box-shadow:inset 3px 0 #315f8e}.app-body.app-timetable-view .tv-panel-row-action.active b{color:#315f8e;font-size:.9rem}.app-body.app-timetable-view .tv-panel-row-action>span,.app-body.app-timetable-view .tv-panel-issue-row>span{min-width:0;display:flex;flex-direction:column;gap:2px}.app-body.app-timetable-view .tv-panel-row-action b{color:#8aa0b4;font-size:1.2rem;line-height:1}.app-body.app-timetable-view .tv-panel-issue-actions{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.app-body.app-timetable-view .tv-panel-lock-issue{grid-template-columns:minmax(0,1fr)}.app-body.app-timetable-view .tv-panel-lock-issue .tv-panel-issue-actions{justify-content:flex-start;min-width:0}.app-body.app-timetable-view .tv-panel-lock-issue button{max-width:100%;white-space:normal;overflow-wrap:anywhere;text-align:left}.app-body.app-timetable-view .tv-panel-form{display:grid;gap:0}.app-body.app-timetable-view .tv-panel-form label{display:grid;gap:7px;padding:14px 16px;border-bottom:1px solid #e7edf2;background:#fff}.app-body.app-timetable-view .tv-panel-form select,.app-body.app-timetable-view .tv-panel-form input[type=text],.app-body.app-timetable-view .tv-panel-form input[type=search]{width:100%;height:36px;border:1px solid #d7e1eb;border-radius:7px;background:#f8fafb;color:#263a50;font-size:.76rem;font-weight:750}.app-body.app-timetable-view .tv-panel-form select:focus,.app-body.app-timetable-view .tv-panel-form input[type=text]:focus,.app-body.app-timetable-view .tv-panel-form input[type=search]:focus{outline:none;border-color:#315f8e;background:#fff;box-shadow:0 0 0 3px #315f8e1f}.app-body.app-timetable-view .tv-panel-form .tv-panel-check{grid-template-columns:18px minmax(0,1fr);align-items:center}.app-body.app-timetable-view .tv-panel-form .tv-panel-check input{width:16px;height:16px}.app-body.app-timetable-view .tv-panel-status{display:grid;gap:2px;padding:12px 16px;border-bottom:1px solid #e7edf2;background:#f8fafb}.app-body.app-timetable-view .tv-panel-status.ok{background:#f0fdf4}.app-body.app-timetable-view .tv-panel-status.danger{background:#fff4f3}.app-body.app-timetable-view .tv-panel-status.danger strong{color:#b42318}.app-body.app-timetable-view .tv-panel-section{border-bottom:1px solid #e7edf2;background:#fff}.app-body.app-timetable-view .tv-panel-section summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 16px;background:#f8fafb;cursor:pointer}.app-body.app-timetable-view .tv-panel-section summary b{min-width:22px;height:20px;display:inline-grid;place-items:center;border-radius:6px;background:#e5edf8;color:#315f8e;font-size:.65rem}.app-body.app-timetable-view .tv-custom-allocation-results .tv-panel-row-list{max-height:280px;overflow-y:auto}.app-body.app-timetable-view .tv-panel-empty{margin:0;padding:14px 16px}.app-body.app-timetable-view .tv-schedule-panel-actions.notif-drawer-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:10px 16px;border-top:1px solid #dfe7ee;background:#f7f9fb}.app-body.app-timetable-view .tv-schedule-panel-actions.notif-drawer-footer:empty{display:none}.app-body.app-timetable-view .tv-schedule-panel-actions .primary-btn{min-height:32px;padding:0 14px;border-radius:6px;background:#102845;border-color:#102845;font-size:.72rem}.app-body.app-timetable-view .tv-schedule-panel-actions .ghost-btn,.app-body.app-timetable-view .tv-schedule-panel-actions .tv-filter-clear{min-height:32px;border-radius:6px;font-size:.72rem}.app-body.app-timetable-view .tv-sheet-tabs{min-width:0;display:flex;align-items:center;gap:5px;margin:0;padding:7px 10px;border:0;background:#f8fafc;overflow-x:auto;overflow-y:hidden;flex-wrap:nowrap;scrollbar-width:thin}.app-body.app-timetable-view .tv-sheet-tabs .sheet-tab,.app-body.app-timetable-view .tv-sheet-tabs .tt-week-tab{flex:0 0 auto;min-width:0;height:30px;padding:0 14px;border:0!important;border-radius:7px;background:transparent;color:#475569;font-size:.76rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center}.app-body.app-timetable-view .tv-sheet-tabs .sheet-tab:hover:not(.active):not(:disabled){background:#eef2f6;color:#0f172a}.app-body.app-timetable-view .sheet-panel{flex:1;min-height:0;display:flex;flex-direction:column;gap:0;overflow:hidden;padding:8px}.app-body.app-timetable-view .sheet-table-wrapper{flex:1;min-height:0;max-height:none;border-radius:8px;border-color:#cdd9e4;box-shadow:none}.app-body.app-timetable-view .tt-fixed-schedule{--tt-cohort-column-width: 170px;--tt-slot-column-width: 152px}.app-body.app-timetable-view .tt-fixed-schedule .schedule-session-cell,.app-body.app-timetable-view .tt-fixed-schedule .schedule-empty-cell{height:82px}.app-body.app-timetable-view .tt-fixed-schedule .schedule-session-block{min-height:82px}.app-body.app-timetable-view .tv-student-banner{min-width:0;padding:7px 10px;border-bottom:0;background:#f8fafc;overflow:hidden}.app-body.app-timetable .panel{flex:1;min-height:0;display:flex;flex-direction:column;overflow:hidden}.app-body.app-timetable .sheet-panel{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.app-body.app-timetable .sheet-table-wrapper{flex:1;min-height:0;max-height:none;overflow:auto;border-color:#d6e0e9;border-radius:8px;background:#fff;box-shadow:0 3px 14px #142a4012}.tt-fixed-schedule{--tt-cohort-column-width: 172px;--tt-slot-column-width: 178px;--tt-break-column-width: 38px;width:max-content!important;min-width:100%!important;table-layout:fixed!important}.tt-fixed-schedule .tt-fixed-cohort-column,.tt-fixed-schedule .schedule-cohort-col,.tt-fixed-schedule .schedule-cohort-cell{width:var(--tt-cohort-column-width)!important;min-width:var(--tt-cohort-column-width)!important;max-width:var(--tt-cohort-column-width)!important}.tt-fixed-schedule .tt-fixed-slot-column,.tt-fixed-schedule .schedule-slot-col,.tt-fixed-schedule .schedule-session-cell,.tt-fixed-schedule .schedule-empty-cell{width:var(--tt-slot-column-width)!important;min-width:var(--tt-slot-column-width)!important;max-width:var(--tt-slot-column-width)!important}.tt-fixed-schedule .tv-spanned-session-cell,.tt-fixed-schedule .tv-venue-lock-cell{width:auto!important;max-width:none!important}.tt-fixed-schedule .tt-fixed-break-column,.tt-fixed-schedule .tt-break-col-head,.tt-fixed-schedule .tt-break-col{width:var(--tt-break-column-width)!important;min-width:var(--tt-break-column-width)!important;max-width:var(--tt-break-column-width)!important}.tt-fixed-schedule :where(th,td){box-sizing:border-box;overflow:hidden}.tt-fixed-schedule .schedule-slot-col,.tt-fixed-schedule .schedule-cohort-col,.tt-fixed-schedule .schedule-cohort-cell{text-overflow:ellipsis;white-space:nowrap}.tt-fixed-schedule .schedule-session-cell{height:76px}.tt-fixed-schedule .schedule-empty-cell{height:76px;background:#f5f7fa}.tt-fixed-schedule .schedule-session-block{width:100%;min-width:0;min-height:76px;justify-content:center;overflow:hidden}.tt-fixed-schedule .schedule-session-block>.sc-title{width:100%;min-width:0;margin:1px 0 2px}.tt-fixed-schedule .schedule-session-block>:where(.sc-course,.sc-time,.sc-room,.sc-lecturer){display:block;width:100%;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-fixed-schedule .tv-venue-lock-cell{background-image:repeating-linear-gradient(135deg,#ffffff29 0,#ffffff29 8px,#ffffff0a 8px,#ffffff0a 16px)}.tt-fixed-schedule .tv-venue-lock-block{border:1px dashed rgba(255,255,255,.7);background:#ffffff29}.tt-fixed-schedule .tv-venue-lock-band{border:1px dashed currentColor;min-height:76px}.tt-fixed-schedule .tv-venue-lock-heading{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;width:100%;padding:8px 12px;border:0;border-bottom:1px solid rgba(255,255,255,.3);border-radius:0;background:#ffffff29;color:inherit;font:inherit;font-size:12px;text-align:left;cursor:pointer}.tt-fixed-schedule .tv-venue-lock-heading:disabled{opacity:1;cursor:default}.tt-fixed-schedule .tv-venue-lock-sessions{display:grid;min-height:40px}.tt-fixed-schedule .tv-venue-lock-sessions .schedule-session-block{border-right:1px solid rgba(255,255,255,.3);cursor:pointer}.tt-fixed-schedule .tv-venue-lock-badge{display:inline-flex;align-self:center;max-width:100%;padding:2px 7px;border-radius:999px;background:#ffffff38;color:inherit;font-size:.62rem;font-weight:800;line-height:1;text-transform:uppercase;letter-spacing:.02em}.tv-lab-badge{display:inline-flex;align-self:center;max-width:100%;margin-bottom:2px;padding:2px 7px;border-radius:999px;background:#fef3c7;color:#92400e;font-size:.6rem;font-weight:800;line-height:1;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.tv-stream-badge{display:inline-flex;align-self:center;max-width:100%;margin-bottom:2px;padding:2px 7px;border-radius:999px;border:1px solid currentColor;background:#0f1f3814;color:inherit;font-size:.6rem;font-weight:800;line-height:1;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.tv-merged-badge{display:inline-flex;align-self:center;max-width:100%;margin-bottom:2px;padding:2px 7px;border-radius:999px;border:1px dashed currentColor;background:#0f1f380f;color:inherit;font-size:.6rem;font-weight:800;line-height:1;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;cursor:help}.tt-fixed-schedule .schedule-dept-header>span{display:block;max-width:calc(100vw - 330px);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-fixed-schedule tbody tr:not(:has(.schedule-dept-header)):hover>td{box-shadow:inset 0 1px #315fbe33,inset 0 -1px #315fbe33}.tt-fixed-schedule .schedule-cohort-cell{box-shadow:3px 0 8px #142a4014}.tt-fixed-schedule .schedule-dept-header{height:34px;padding:7px 14px;background:#173a61;border-bottom:2px solid #fff}.tt-table-scroll:has(>.tt-fixed-schedule){border:1px solid #d6e0e9;border-radius:8px;background:#fff;box-shadow:0 3px 14px #142a4012;scrollbar-width:thin;scrollbar-color:#a9b9c9 #edf2f6}.tt-table-scroll:has(>.tt-fixed-schedule)::-webkit-scrollbar,.app-body.app-timetable .sheet-table-wrapper::-webkit-scrollbar{width:10px;height:10px}.tt-table-scroll:has(>.tt-fixed-schedule)::-webkit-scrollbar-track,.app-body.app-timetable .sheet-table-wrapper::-webkit-scrollbar-track{background:#edf2f6}.tt-table-scroll:has(>.tt-fixed-schedule)::-webkit-scrollbar-thumb,.app-body.app-timetable .sheet-table-wrapper::-webkit-scrollbar-thumb{border:2px solid #edf2f6;border-radius:8px;background:#a9b9c9}@media (max-width: 720px){.tt-fixed-schedule{--tt-cohort-column-width: 138px;--tt-slot-column-width: 162px}.tt-fixed-schedule .schedule-dept-header>span{max-width:calc(100vw - 80px)}}.tt-container{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.tt-tabs{display:flex;gap:0;flex-shrink:0;padding:0;margin-bottom:16px;background:transparent;border:none;border-bottom:1.5px solid var(--border, rgba(15, 31, 56, .1));overflow-x:auto;-webkit-overflow-scrolling:touch}.tt-tab{display:flex;align-items:center;gap:8px;padding:10px 22px;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1.5px;color:var(--muted, #6a7a96);font-size:.875rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:color var(--ease),border-color var(--ease);font-family:var(--font-sans)}.tt-tab:hover{color:var(--ink-soft, #2d3f5a);background:transparent}.tt-tab.active{color:var(--blue, #4392f1);border-bottom-color:var(--blue, #4392f1);background:transparent;box-shadow:none}.tt-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;padding:2px 6px;font-size:.7rem;font-weight:700;background:var(--blue-light, #e3ebff);color:var(--blue-dark, #2b74d4)}.tt-tab.active .tt-tab-count{background:#4392f126;color:var(--blue, #4392f1)}.tt-content{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column}.tt-panel{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding-bottom:16px;display:flex;flex-direction:column;gap:16px}.tt-panel[data-tour=tt-saved]{background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09));box-shadow:0 1px 4px #0f1f380d;padding:22px 26px 20px}.tt-stepper{display:flex;flex-direction:column;width:100%;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09));box-shadow:0 1px 4px #0f1f380d;padding:26px 30px}.tt-deadline-panel{width:min(100%,980px);margin:0 auto;display:flex;flex-direction:column;gap:14px}.tt-dl{width:100%;display:flex;flex-direction:column;gap:20px}.tt-dl-hero{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:16px;box-shadow:var(--shadow-sm, 0 1px 4px rgba(15,31,56,.07));padding:28px 28px 24px;position:relative;overflow:hidden}.tt-dl-hero:before{content:"";position:absolute;inset:0 0 auto 0;height:3px;background:#94a3b8;border-radius:16px 16px 0 0}.tt-dl-hero.open:before{background:linear-gradient(90deg,#f59e0b,#fbbf24)}.tt-dl-hero.closed:before{background:linear-gradient(90deg,#22c55e,#4ade80)}.tt-dl-hero.complete:before{background:linear-gradient(90deg,#4392f1,#818cf8)}.tt-dl-hero-inner{display:flex;gap:32px;align-items:flex-start}@media (max-width: 800px){.tt-dl-hero-inner{flex-direction:column;gap:24px}}.tt-dl-hero-left{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:0}.tt-dl-hero-label-row{display:flex;align-items:center;gap:8px;margin-bottom:10px}.tt-dl-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0;background:#94a3b8}.tt-dl-hero.open .tt-dl-dot{background:#f59e0b;box-shadow:0 0 0 3px #f59e0b33;animation:tt-dl-pulse 2s ease-in-out infinite}.tt-dl-hero.closed .tt-dl-dot{background:#22c55e;box-shadow:0 0 0 3px #22c55e2e}.tt-dl-hero.complete .tt-dl-dot{background:#4392f1;box-shadow:0 0 0 3px #4392f133}@keyframes tt-dl-pulse{0%,to{opacity:1}50%{opacity:.3}}.tt-dl-state-pill{display:inline-flex;align-items:center;padding:2px 10px;border-radius:999px;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;background:#94a3b824;color:#64748b}.tt-dl-state-pill.open{background:#f59e0b1f;color:#92400e}.tt-dl-state-pill.closed{background:#22c55e1f;color:#166534}.tt-dl-state-pill.complete{background:#4392f11f;color:#2b74d4}.tt-dl-hero-title{margin:0 0 6px;font-size:1.2rem;font-weight:800;color:var(--ink, #0f1f38);line-height:1.25}.tt-dl-hero-sub{margin:0 0 20px;font-size:.83rem;color:var(--muted, #6a7a96);line-height:1.5}.tt-dl-stats-row{display:flex;align-items:center;gap:0;margin-bottom:16px;background:var(--surface-app, #f2f4f8);border-radius:12px;padding:14px 20px}.tt-dl-stat{display:flex;flex-direction:column;gap:2px;flex:1}.tt-dl-stat-div{width:1px;height:36px;background:var(--border, rgba(15,31,56,.1));margin:0 20px;flex-shrink:0}.tt-dl-stat-value{font-size:1.6rem;font-weight:800;font-family:var(--font-mono, monospace);color:var(--ink, #0f1f38);line-height:1}.tt-dl-stat-unit{font-size:1rem;font-weight:700;color:var(--muted, #6a7a96);margin-left:1px}.tt-dl-stat-label{font-size:.67rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--muted, #6a7a96);margin-top:2px}.tt-dl-bar{height:6px;border-radius:999px;background:var(--surface-app, #eef1f6);overflow:hidden}.tt-dl-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#4392f1,#22c55e);transition:width .5s ease;min-width:4px}.tt-dl-hero-bar{margin-top:0}.tt-dl-hero-right{flex:0 0 280px;display:flex;flex-direction:column;gap:16px}@media (max-width: 800px){.tt-dl-hero-right{flex:none;width:100%}}.tt-dl-deadline-block{background:var(--surface-app, #f2f4f8);border-radius:10px;padding:12px 14px;display:flex;flex-direction:column;gap:3px}.tt-dl-deadline-label{font-size:.64rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--muted, #6a7a96)}.tt-dl-deadline-val{font-size:.84rem;font-weight:700;color:var(--ink, #0f1f38);line-height:1.4}.tt-dl-controls{display:flex;flex-direction:column;gap:10px}.tt-dl-actions{display:flex;gap:8px;flex-wrap:wrap}.tt-dl-note{margin:4px 0 0;font-size:.75rem;color:#b45309}.tt-dl-depts-section{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:16px;box-shadow:var(--shadow-sm, 0 1px 4px rgba(15,31,56,.07));overflow:hidden}.tt-combo-section{margin-top:22px;border-top:1px solid var(--border, rgba(15, 31, 56, .09));padding-top:20px}.tt-combo-callout{display:flex;align-items:center;gap:12px;padding:14px 16px;border:1px solid #d9e2ee;border-left:4px solid #2563eb;border-radius:8px;background:#f8fafc}.tt-combo-callout-icon{width:38px;height:38px;display:grid;place-items:center;flex-shrink:0;border-radius:8px;background:#e7f0ff;color:#1d4ed8}.tt-combo-callout-copy{min-width:0;display:flex;flex:1;flex-direction:column;gap:2px}.tt-combo-callout-copy strong{font-size:.86rem;color:var(--ink, #0f1f38)}.tt-combo-callout-copy span{font-size:.74rem;color:var(--muted, #6a7a96)}.tt-combo-callout-btn{display:inline-flex;align-items:center;gap:7px;flex-shrink:0;padding:8px 11px;border:1px solid #bfd2ed;border-radius:7px;background:#fff;color:#1d4ed8;font:700 .76rem var(--font-sans);cursor:pointer}.tt-combo-callout-btn:hover{background:#eef5ff}.tt-combo-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.tt-combo-head h3{margin:0 0 3px;font-size:.96rem;color:var(--ink, #0f1f38)}.tt-combo-head p{margin:0;font-size:.8rem;color:var(--muted, #6a7a96)}.tt-combo-head>span{flex-shrink:0;padding:4px 9px;border-radius:6px;background:#fff7ed;color:#9a3412;font-size:.72rem;font-weight:800}.tt-combo-empty{padding:18px 0;color:var(--muted, #6a7a96);font-size:.82rem}.tt-combo-list{display:flex;flex-direction:column;gap:8px}.tt-combo-row{display:grid;grid-template-columns:minmax(240px,1fr) auto auto auto;align-items:center;gap:14px;padding:13px 14px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;background:var(--surface-card, #fff)}.tt-combo-main{min-width:0;display:flex;flex-direction:column;gap:3px}.tt-combo-main>strong{font-size:.86rem;color:var(--ink, #0f1f38)}.tt-combo-main>span,.tt-combo-main>small{font-size:.72rem;color:var(--muted, #6a7a96)}.tt-combo-programmes{display:flex;flex-wrap:wrap;gap:5px;margin-top:3px}.tt-combo-programmes span{padding:3px 7px;border-radius:5px;background:#eef2ff;color:#3730a3;font-size:.68rem;font-weight:700}.tt-combo-meta{display:flex;flex-direction:column;gap:3px;font-size:.7rem;color:var(--ink-soft, #2d3f5a)}.tt-combo-status{padding:4px 8px;border-radius:6px;font-size:.68rem;font-weight:800}.tt-combo-status.pending{background:#fff7ed;color:#9a3412}.tt-combo-status.approved{background:#ecfdf5;color:#166534}.tt-combo-status.rejected{background:#fef2f2;color:#991b1b}.tt-combo-actions{display:flex;gap:6px}.tt-combo-btn{padding:6px 10px;border-radius:6px;font-size:.72rem;font-weight:750;cursor:pointer;background:#fff}.tt-combo-btn:disabled{opacity:.5;cursor:default}.tt-combo-btn.reject{border:1px solid #fecaca;color:#b91c1c}.tt-combo-btn.approve{border:1px solid #15803d;background:#15803d;color:#fff}.tt-combo-btn.approve:hover:not(:disabled){background:#166534}.tt-combo-btn.reject:hover:not(:disabled){background:#fef2f2}.tt-requests-workspace{width:100%;flex:1;min-height:0;display:flex;flex-direction:column;gap:14px}.tt-requests-header{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:20px 22px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;background:#fff}.tt-requests-heading{min-width:0}.tt-requests-eyebrow,.tt-ops-kicker{display:block;margin-bottom:6px;color:#49617e;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.tt-requests-heading h2{margin:0 0 5px;color:var(--ink, #0f1f38);font-size:1.15rem;line-height:1.25}.tt-requests-heading p{margin:0;color:var(--muted, #6a7a96);font-size:.8rem}.tt-requests-refresh{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:7px 11px;border:1px solid #d5deea;border-radius:7px;background:#fff;color:#334155;font:700 .75rem var(--font-sans);cursor:pointer}.tt-requests-refresh:hover:not(:disabled){background:#f8fafc;border-color:#aebfd2}.tt-requests-refresh:disabled{opacity:.5;cursor:default}.tt-request-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.tt-request-metric{min-width:0;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:13px 15px;border:1px solid #dde4ed;border-radius:8px;background:#fff}.tt-request-metric span{color:#596b82;font-size:.73rem;font-weight:700}.tt-request-metric strong{color:var(--ink, #0f1f38);font-size:1.32rem;line-height:1}.tt-request-metric.pending{border-left:3px solid #d97706}.tt-request-metric.approved{border-left:3px solid #15803d}.tt-request-metric.rejected{border-left:3px solid #dc2626}.tt-request-metric.total{border-left:3px solid #2563eb}.tt-requests-surface{overflow:hidden;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;background:#fff;box-shadow:var(--shadow-xs)}.tt-requests-toolbar{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:10px 14px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));background:#fff}.tt-requests-search{width:min(100%,330px);height:34px;display:flex;align-items:center;gap:8px;padding:0 10px;border:1px solid #d5deea;border-radius:7px;background:#fff;color:#718096}.tt-requests-search:focus-within{border-color:#2563eb;box-shadow:0 0 0 2px #2563eb1a}.tt-requests-search input{min-width:0;width:100%;height:100%;padding:0;border:0!important;border-radius:0;outline:0;box-shadow:none!important;background:transparent;color:var(--ink, #0f1f38);font:.77rem var(--font-sans)}.tt-request-list{display:block;min-height:0;overflow:auto;scrollbar-gutter:stable}.tt-request-table{width:100%;min-width:860px;table-layout:fixed;border-collapse:collapse}.tt-request-col-course{width:12%}.tt-request-col-details{width:52%}.tt-request-col-scope{width:16%}.tt-request-col-review{width:20%}.tt-request-table th{position:sticky;top:0;z-index:2;height:38px;padding:9px 14px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));color:var(--muted, #6a7a96);background:var(--surface-app, #f2f4f8);font-size:.7rem;font-weight:700;letter-spacing:.06em;text-align:left;text-transform:uppercase;white-space:nowrap}.tt-request-table th:last-child{text-align:right}.tt-request-row{height:94px;background:#fff}.tt-request-row:hover{background:var(--alice, #e7f0ff)}.tt-request-row td{min-width:0;max-width:0;height:94px;overflow:hidden;padding:10px 14px;border-right:1px solid rgba(15,31,56,.05);border-bottom:1px solid #e8edf3;text-overflow:ellipsis;vertical-align:middle}.tt-request-row td:last-child{border-right:0}.tt-request-row:last-child td{border-bottom:0}.tt-request-course-code{color:var(--blue-dark, #2b74d4);font-family:var(--font-mono);font-size:.8rem;font-weight:700;text-align:left;text-overflow:ellipsis;white-space:nowrap}.tt-request-details{text-align:left}.tt-request-title-line{display:flex;min-width:0;align-items:center;justify-content:flex-start;gap:8px;flex-wrap:nowrap}.tt-request-title-line h3{min-width:0;flex:1;margin:0;overflow:hidden;color:var(--ink, #0f1f38);font-size:.88rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.tt-request-title-line .tt-combo-status{flex:0 0 auto}.tt-request-lecturer{margin:3px 0 7px;overflow:hidden;color:var(--muted, #6a7a96);font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.tt-request-lecturer strong{color:#34465e}.tt-request-note{margin:9px 0 0;padding:7px 9px;border-left:2px solid #94a3b8;background:#f8fafc;color:#526277;font-size:.72rem;font-style:normal;line-height:1.45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}.tt-request-details .tt-combo-programmes{min-width:0;width:100%;justify-content:flex-start;flex-wrap:nowrap;overflow:hidden}.tt-request-details .tt-combo-programmes span:not(.tt-combo-plus){min-width:0;max-width:46%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-combo-programmes .tt-combo-plus{padding:0;background:transparent;color:#8291a5;font-size:.72rem}.tt-request-facts{text-align:left}.tt-request-facts-inner{display:flex;align-items:flex-start;justify-content:center;flex-direction:column;gap:5px;height:100%;overflow:hidden;color:#64748b;font-size:.7rem;text-align:left}.tt-request-facts-inner>span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-request-facts strong{color:#25364d;font-size:.76rem}.tt-request-facts .accessible{color:#0369a1;font-weight:700}.tt-request-actions{text-align:right}.tt-request-actions-inner{display:flex;min-width:0;height:100%;align-items:center;justify-content:flex-end;gap:7px;overflow:hidden}.tt-request-reviewed{color:#64748b;font-size:.7rem;font-weight:700}.tt-requests-empty{min-height:260px;display:grid;place-items:center;align-content:center;gap:8px;padding:36px 20px;text-align:center}.tt-requests-empty-icon{width:50px;height:50px;display:grid;place-items:center;margin-bottom:3px;border-radius:8px;background:#ecfdf5;color:#15803d}.tt-requests-empty h3{margin:0;color:var(--ink, #0f1f38);font-size:.9rem}.tt-requests-empty p{margin:0;color:var(--muted, #6a7a96);font-size:.76rem}@media (max-width: 850px){.tt-combo-row{grid-template-columns:1fr auto}.tt-combo-actions{grid-column:1 / -1}.tt-request-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 620px){.tt-combo-callout{align-items:flex-start;flex-wrap:wrap}.tt-combo-callout-btn{width:100%;justify-content:center}.tt-requests-header{padding:16px}.tt-request-metrics{grid-template-columns:1fr}.tt-requests-toolbar{align-items:stretch;flex-direction:column}.tt-requests-search{width:100%}}.tt-dl-depts-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:20px 22px 16px;border-bottom:1px solid var(--border-light, #edf1f7)}.tt-dl-depts-info h3{margin:0;font-size:1rem;font-weight:800;color:var(--ink, #0f1f38)}.tt-dl-depts-info p{margin:3px 0 0;font-size:.8rem;color:var(--muted, #6a7a96)}.tt-dl-depts-filters{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.tt-dl-chips{display:flex;gap:6px;flex-wrap:wrap}.tt-dl-chip{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:999px;font-size:.72rem;font-weight:700;border:1px solid transparent}.tt-dl-chip-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0;background:currentColor}.tt-dl-chip.submitted{background:#22c55e17;color:#166534;border-color:#22c55e33}.tt-dl-chip.none{background:#4392f117;color:#2b74d4;border-color:#4392f133}.tt-dl-chip.missed{background:#dc493a14;color:#991b1b;border-color:#dc493a2e}.tt-dl-chip.pending{background:#f59e0b1a;color:#92400e;border-color:#f59e0b38}.tt-dl-search-wrap{position:relative;display:flex;align-items:center}.tt-dl-search-icon{position:absolute;left:10px;pointer-events:none;color:var(--muted, #6a7a96)}.tt-dl-search{height:34px;padding:0 12px 0 30px;border:1px solid var(--border, rgba(15, 31, 56, .1));border-radius:8px;font-size:.82rem;font-family:var(--font-sans);background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38);width:200px;outline:none;transition:border-color .15s,box-shadow .15s,background .15s}.tt-dl-search:focus{border-color:var(--blue, #4392f1);box-shadow:0 0 0 2px #4392f11f;background:#fff}.tt-dl-dept-grid{max-height:420px;overflow-y:auto;overscroll-behavior:contain}.tt-dl-dept-card{display:grid;grid-template-columns:36px 1fr auto auto;align-items:center;gap:16px;padding:14px 22px;background:#fff;border-left:3px solid transparent;border-bottom:1px solid var(--border-light, #edf1f7);transition:background .12s}.tt-dl-dept-card:last-child{border-bottom:none}.tt-dl-dept-card:hover{background:var(--surface-app, #f8fafc)}.tt-dl-dept-card.submitted{border-left-color:#22c55e}.tt-dl-dept-card.none{border-left-color:#4392f1}.tt-dl-dept-card.missed{border-left-color:#ef4444}.tt-dl-dept-card.pending{border-left-color:#cbd5e1}.tt-dl-dept-card-icon{flex-shrink:0;width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center}.tt-dl-dept-card.submitted .tt-dl-dept-card-icon{background:#22c55e1f;color:#166534}.tt-dl-dept-card.none .tt-dl-dept-card-icon{background:#4392f11f;color:#2b74d4}.tt-dl-dept-card.missed .tt-dl-dept-card-icon{background:#ef44441a;color:#991b1b}.tt-dl-dept-card.pending .tt-dl-dept-card-icon{background:#cbd5e166;color:#64748b}.tt-dl-dept-name{font-size:.9rem;font-weight:700;color:var(--ink, #0f1f38);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tt-dl-dept-card .tt-pref-status{white-space:nowrap}.tt-dl-dept-card-action{display:flex;justify-content:flex-end;min-width:90px}.tt-dl-dept-manage-btn{display:inline-flex;align-items:center;gap:5px;padding:6px 14px;border-radius:7px;font-size:.76rem;font-weight:700;color:var(--blue, #4392f1);background:#4392f114;border:1px solid rgba(67,146,241,.2);cursor:pointer;transition:background .14s,color .14s,border-color .14s;white-space:nowrap}.tt-dl-dept-manage-btn:hover{background:var(--blue, #4392f1);color:#fff;border-color:var(--blue, #4392f1)}.tt-dl-dept-pending-hint{font-size:.74rem;color:var(--muted, #94a3b8);font-style:italic}.tt-gen-block{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-top:14px;padding:14px 16px;background:#f59e0b14;border:1px solid rgba(245,158,11,.3);border-radius:12px}.tt-gen-block-text strong{display:block;font-size:.88rem;font-weight:800;color:var(--ink, #0f1f38)}.tt-gen-block-text p{margin:3px 0 0;font-size:.8rem;color:var(--muted, #6a7a96);max-width:62ch}.tt-step{display:grid;grid-template-columns:40px 1fr;gap:16px}.tt-step-rail{display:flex;flex-direction:column;align-items:center}.tt-step-num{width:32px;height:32px;flex-shrink:0;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:var(--font-mono);font-size:.92rem;font-weight:700;color:#fff;background:var(--blue, #4392f1);box-shadow:0 0 0 4px #4392f11f}.tt-step:not(.tt-step-last) .tt-step-rail:after{content:"";flex:1;width:2px;margin:8px 0;background:linear-gradient(180deg,#4392f159,#4392f114);border-radius:2px}.tt-step-main{min-width:0;padding-bottom:26px}.tt-step-head{margin-bottom:14px}.tt-step-title{margin:0;font-size:1rem;font-weight:800;color:var(--ink, #0f1f38);line-height:1.25}.tt-step-sub{margin:3px 0 0;font-size:.82rem;color:var(--muted, #6a7a96)}.tt-checklist{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:12px}.tt-check{display:flex;align-items:center;gap:10px;padding:12px 14px;background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;box-shadow:var(--shadow-xs)}.tt-check-mark{width:26px;height:26px;flex-shrink:0;border-radius:50%;display:flex;align-items:center;justify-content:center}.tt-check.ok .tt-check-mark{background:#22c55e1f;color:#16a34a}.tt-check.miss .tt-check-mark{background:#f59e0b24;color:#d97706}.tt-check-value{font-family:var(--font-mono);font-size:1.25rem;font-weight:700;color:var(--ink, #0f1f38);line-height:1}.tt-check-label{font-size:.78rem;color:var(--muted, #6a7a96)}@media (max-width: 760px){.tt-checklist{grid-template-columns:1fr}}.tt-config-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.tt-config-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:16px;display:flex;flex-direction:column;gap:8px;box-shadow:var(--shadow-xs)}.tt-config-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96)}.tt-config-card select,.tt-config-card input{width:100%;padding:10px 12px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.875rem;font-family:var(--font-sans);color:var(--ink, #0f1f38);background:var(--surface-app, #f2f4f8);transition:border-color .18s ease,box-shadow .18s ease;-webkit-appearance:none;-moz-appearance:none;appearance:none}.tt-config-card select:focus,.tt-config-card input:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a;background:#fff}.tt-date-source{font-size:.74rem;line-height:1.35;color:var(--muted, #6a7a96)}.tt-date-card.is-missing{border-color:#f59e0b8c;box-shadow:0 0 0 2px #f59e0b1f}.tt-date-card.is-missing .tt-date-source{color:#b45309;font-weight:600}.tt-date-reset{border:0;background:none;padding:0;font:inherit;font-weight:600;color:var(--blue, #4392f1);cursor:pointer}.tt-date-reset:hover{text-decoration:underline}.tt-stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.tt-stat-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:16px;display:flex;align-items:center;gap:14px;box-shadow:var(--shadow-xs)}.tt-stat-icon{width:42px;height:42px;border-radius:11px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.tt-stat-icon.blue{background:#4392f11f;color:var(--blue, #4392f1)}.tt-stat-icon.indigo{background:#6366f11f;color:#4f46e5}.tt-stat-icon.teal{background:#0d94881f;color:#0d9488}.tt-stat-info{display:flex;flex-direction:column;gap:3px}.tt-stat-value{font-size:1.6rem;font-weight:700;color:var(--ink, #0f1f38);font-family:var(--font-mono);line-height:1}.tt-stat-label{font-size:.75rem;color:var(--muted, #6a7a96)}.tt-generate-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:20px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow-xs)}.tt-generate-card h3{font-size:.875rem;font-weight:700;color:var(--ink-soft, #2d3f5a);margin:0}.tt-preference-gate{display:flex;flex-direction:column;gap:16px}.tt-preference-card{border-left:4px solid var(--blue, #4392f1)}.tt-preference-status-card{padding:0;overflow:hidden}.tt-gate{display:flex;flex-direction:column;gap:16px;max-width:760px}.tt-gate-head{margin-bottom:2px}.tt-gate-eyebrow{display:inline-block;font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--blue, #4392f1);margin-bottom:6px}.tt-gate-title{margin:0;font-size:1.15rem;font-weight:800;color:var(--ink, #0f1f38);line-height:1.2}.tt-gate-lead{margin:6px 0 0;font-size:.86rem;color:var(--muted, #6a7a96);max-width:60ch}.tt-gate-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:14px;padding:18px 20px;box-shadow:var(--shadow-xs)}.tt-gate-list-card{padding:18px 0 0;overflow:hidden}.tt-gate-list-card .tt-gate-card-head{padding:0 20px}.tt-gate-card-head{margin-bottom:14px}.tt-gate-card-head h4{margin:0;font-size:.92rem;font-weight:800;color:var(--ink, #0f1f38)}.tt-gate-card-head p{margin:3px 0 0;font-size:.8rem;color:var(--muted, #6a7a96)}.tt-gate-progress-head{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}.tt-gate-progress-count{font-family:var(--font-mono);font-size:1.7rem;font-weight:700;color:var(--ink, #0f1f38);line-height:1}.tt-gate-progress-total{color:var(--muted, #6a7a96);font-size:1.1rem}.tt-gate-progress-label{display:block;margin-top:4px;font-size:.8rem;color:var(--muted, #6a7a96)}.tt-gate-deadline-pill{display:inline-flex;align-items:center;padding:5px 11px;border-radius:999px;font-size:.74rem;font-weight:700;color:var(--ink-soft, #2d3f5a);background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09));white-space:nowrap}.tt-gate-bar{height:8px;border-radius:999px;background:var(--surface-app, #eef1f6);overflow:hidden}.tt-gate-bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#4392f1,#22c55e);transition:width .4s ease}.tt-gate-dept-row{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}.tt-gate-dept-name{display:block;font-size:1.05rem;font-weight:800;color:var(--ink, #0f1f38)}.tt-gate-dept-sub{display:block;margin-top:2px;font-size:.8rem;color:var(--muted, #6a7a96)}.tt-gate-dept-deadline{margin:12px 0 0;font-size:.82rem;color:var(--muted, #6a7a96)}.tt-gate-dept-deadline strong{color:var(--ink-soft, #2d3f5a)}.tt-pref-status-row.is-selected{background:#4392f10f;box-shadow:inset 3px 0 0 var(--blue, #4392f1)}.tt-pref-card{margin-top:12px;padding:14px 16px;background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-left:3px solid var(--blue, #4392f1);border-radius:12px;box-shadow:var(--shadow-xs)}.tt-pref-card.ok{border-left-color:#22c55e}.tt-pref-card.wait{border-left-color:#f59e0b}.tt-pref-card-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;flex-wrap:wrap}.tt-pref-card-title{display:block;font-size:.9rem;font-weight:800;color:var(--ink, #0f1f38)}.tt-pref-card-sub{display:block;margin-top:2px;font-size:.78rem;color:var(--muted, #6a7a96)}.tt-pref-card-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:12px;padding-top:12px;border-top:1px dashed var(--border, rgba(15, 31, 56, .12))}.tt-pref-card-note{font-size:.78rem;color:var(--muted, #6a7a96);flex:1;min-width:180px}.tt-pref-skip-btn{display:inline-flex;align-items:center;gap:7px;padding:8px 14px;border-radius:8px;border:1px solid rgba(245,158,11,.4);background:#f59e0b1a;color:#b45309;font-size:.82rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .15s ease,border-color .15s ease}.tt-pref-skip-btn:hover:not(:disabled){background:#f59e0b2e;border-color:#f59e0b99}.tt-pref-skip-btn:disabled{opacity:.55;cursor:default}.tt-pref-card-right{display:flex;flex-direction:column;align-items:flex-end;gap:8px}.tt-pref-pop-wrap{position:relative}.tt-pref-pop-trigger{display:inline-flex;align-items:center;gap:5px;padding:4px 9px;border-radius:7px;border:1px solid var(--border, rgba(15, 31, 56, .12));background:var(--surface-app, #f2f4f8);color:var(--ink-soft, #2d3f5a);font-size:.74rem;font-weight:700;cursor:pointer;white-space:nowrap;transition:background .15s ease,border-color .15s ease}.tt-pref-pop-trigger:hover{background:var(--alice, #e7f0ff);border-color:#4392f166}.tt-pref-pop-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:40}.tt-pref-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:41;width:320px;max-width:80vw;background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .12));border-radius:12px;box-shadow:var(--shadow-lg, 0 12px 32px rgba(15, 31, 56, .18));overflow:hidden;animation:tt-pop-in .12s ease-out}@keyframes tt-pop-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.tt-pref-pop-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));background:var(--surface-app, #f2f4f8)}.tt-pref-pop-head span:first-child{font-size:.82rem;font-weight:800;color:var(--ink, #0f1f38)}.tt-pref-pop-head span:last-child{font-size:.72rem;color:var(--muted, #6a7a96)}.tt-pref-pop-list{max-height:320px;overflow-y:auto}.tt-pref-pop-list .tt-pref-status{min-width:0;padding:3px 8px;font-size:.62rem}.tt-gate-actions{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:16px;padding-top:16px;border-top:1px dashed var(--border, rgba(15, 31, 56, .12))}.tt-gate-actions-note{margin:0;font-size:.8rem;color:var(--muted, #6a7a96);flex:1;min-width:200px}.tt-gate-hint{margin:10px 0 0;font-size:.78rem;color:var(--amber-text, #92400e)}.tt-force-modal{width:min(440px,92vw);background:#fff;border-radius:16px;border:1px solid var(--border, rgba(15, 31, 56, .09));box-shadow:var(--shadow-lg);padding:24px;text-align:center}.tt-force-icon{width:48px;height:48px;margin:0 auto 14px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--blue, #4392f1);background:#4392f11f}.tt-force-title{margin:0 0 8px;font-size:1.05rem;font-weight:800;color:var(--ink, #0f1f38)}.tt-force-text{margin:0 0 20px;font-size:.86rem;line-height:1.5;color:var(--muted, #6a7a96)}.tt-force-actions{display:flex;gap:10px;justify-content:center}.tt-preference-status-card>h3,.tt-preference-status-card>.helper-text{margin-left:20px;margin-right:20px}.tt-preference-status-card>h3{margin-top:18px}.tt-pref-status-list{border-top:1px solid var(--border);max-height:420px;overflow:auto}.tt-pref-status-row{display:grid;grid-template-columns:minmax(220px,1fr) auto;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--border-light, #edf1f7)}.tt-pref-status-row:last-child{border-bottom:0}.tt-pref-dept-name{font-size:.86rem;font-weight:700;color:var(--ink, #0f1f38)}.tt-pref-status{display:inline-flex;align-items:center;justify-content:center;min-width:150px;padding:4px 10px;border-radius:999px;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase}.tt-pref-status.pending{background:#f59e0b1f;color:#92400e;border:1px solid rgba(245,158,11,.25)}.tt-pref-status.submitted{background:#22c55e1a;color:#166534;border:1px solid rgba(34,197,94,.24)}.tt-pref-status.none{background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);border:1px solid rgba(67,146,241,.25)}.tt-pref-status.missed{background:#dc493a17;color:#991b1b;border:1px solid rgba(220,73,58,.22)}.tt-pref-status-empty{padding:18px 20px;color:var(--muted, #6a7a96);font-size:.84rem}.tt-pref-row-actions{display:flex;align-items:center;gap:8px}.tt-pref-manage-btn{display:inline-flex;align-items:center;padding:3px 11px;border-radius:8px;border:1px solid rgba(67,146,241,.35);background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);font-size:.74rem;font-weight:700;cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}.tt-pref-manage-btn:hover{background:var(--blue, #4392f1);color:#fff;border-color:var(--blue, #4392f1)}.pref-mgr{display:flex;flex-direction:column;gap:14px}.pref-mgr-clash-banner{display:flex;align-items:flex-start;gap:10px;padding:10px 14px;border-radius:10px;background:#dc493a0f;border:1px solid rgba(220,73,58,.22);color:#991b1b;font-size:.84rem;line-height:1.4}.pref-mgr-clash-banner svg{flex-shrink:0;margin-top:1px}.pref-mgr-loading,.pref-mgr-empty{padding:32px 20px;text-align:center;color:var(--muted, #6a7a96);font-size:.88rem}.pref-mgr-table-wrap{overflow-x:auto;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:10px}.pref-mgr-table{width:100%;border-collapse:collapse;font-size:.84rem}.pref-mgr-table th{text-align:left;padding:10px 14px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);background:var(--surface-app, #f2f4f8);border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));white-space:nowrap}.pref-mgr-hint{font-weight:500;text-transform:none;letter-spacing:0;font-size:.68rem;color:var(--muted, #6a7a96)}.pref-mgr-table td{padding:8px 14px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));vertical-align:middle}.pref-mgr-table tr:last-child td{border-bottom:none}.pref-mgr-table tr.pref-mgr-clash-row{background:#dc493a0a}.pref-mgr-table tr.pref-mgr-clash-row td:first-child{box-shadow:inset 3px 0 #dc493a}.pref-mgr-name{font-weight:700;color:var(--ink, #0f1f38);white-space:nowrap;display:flex;align-items:center;gap:8px}.pref-mgr-clash-tag{display:inline-flex;align-items:center;padding:2px 8px;border-radius:999px;background:#dc493a1a;color:#991b1b;font-size:.68rem;font-weight:700}.pref-mgr-input{width:100%;min-width:140px;height:34px;padding:0 10px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;background:#fff;color:var(--ink, #0f1f38);font:inherit;font-size:.82rem;outline:none;transition:border-color .15s,box-shadow .15s}.pref-mgr-input:focus{border-color:var(--blue, #4392f1);box-shadow:0 0 0 2px #4392f11f}.pref-mgr-footer{display:flex;justify-content:flex-end;gap:8px;padding-top:4px;border-top:1px solid var(--border, rgba(15, 31, 56, .09))}.tt-generate-row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.tt-inline-field{display:inline-flex;align-items:center;gap:8px;padding:6px 8px 6px 12px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:10px;background:var(--surface-app, #f2f4f8);color:var(--muted, #6a7a96);font-size:.78rem;font-weight:700}.tt-inline-field input{width:76px;height:34px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;background:#fff;color:var(--ink, #0f1f38);font:inherit;font-weight:700;text-align:center;outline:none}.tt-inline-field input:focus{border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a}.tt-inline-field small{color:var(--muted, #6a7a96);font-size:.72rem;font-weight:600}.tt-generate-btn{display:inline-flex;align-items:center;gap:8px;background:var(--blue, #4392f1);color:#fff;border:none;border-radius:10px;padding:12px 24px;font-size:.9rem;font-weight:700;cursor:pointer;transition:background .18s ease,box-shadow .18s ease,transform .18s ease;font-family:var(--font-sans)}.tt-generate-btn:hover:not(:disabled){background:var(--blue-dark, #2b74d4);box-shadow:0 6px 20px #4392f159;transform:translateY(-1px)}.tt-generate-btn:disabled{opacity:.55;cursor:not-allowed;transform:none}.tt-error{padding:10px 14px;background:#dc493a0f;border:1px solid rgba(220,73,58,.2);border-radius:8px;font-size:.85rem;color:var(--cinnabar, #dc493a)}.tt-preview-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:14px 16px;box-shadow:var(--shadow-xs);flex-shrink:0}.tt-sheet-tabs{display:flex;gap:6px;flex-wrap:wrap}.tt-sheet-tab{padding:6px 14px;background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.15);border-radius:8px;font-size:.82rem;font-weight:600;color:var(--ink-soft, #2d3f5a);cursor:pointer;transition:all .18s ease;font-family:var(--font-sans)}.tt-sheet-tab.active{background:var(--blue, #4392f1);border-color:var(--blue, #4392f1);color:#fff;box-shadow:0 3px 10px #4392f14d}.tt-preview-actions{display:flex;gap:8px;flex-wrap:wrap}.tt-weekend-view{display:flex;flex-direction:column;gap:14px;min-height:0}.tt-week-tabs{display:flex;flex-shrink:0;gap:8px;overflow-x:auto;padding:2px 2px 8px;scrollbar-width:thin}.tt-week-tab{border:1px solid var(--border, rgba(15, 31, 56, .1));background:#fff;color:var(--ink-soft, #2d3f5a);border-radius:999px;padding:8px 16px;font-size:.78rem;font-weight:800;white-space:nowrap;cursor:pointer;box-shadow:var(--shadow-xs)}.tt-week-tab.active{background:var(--blue, #4392f1);border-color:var(--blue, #4392f1);color:#fff}.tt-week-tab.recess:not(.active){background:#0f1f380a;color:var(--muted, #6a7a96)}.tt-review-window .tt-week-tabs{padding:8px 12px;border-bottom:1px solid #d6e0e9}.tt-weekend-days{display:flex;flex-direction:column;gap:18px}.tt-weekend-day{border:1px solid var(--border, rgba(15, 31, 56, .1));border-radius:10px;overflow:hidden;background:#fff;box-shadow:var(--shadow-xs)}.tt-weekend-day-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;background:#172947;color:#fff}.tt-weekend-day-head strong{font-size:.9rem;letter-spacing:.04em;text-transform:uppercase}.tt-weekend-day-head span{font-family:var(--font-mono);font-size:.72rem;opacity:.8}.tt-weekend-table{min-width:860px;width:100%}.tt-break-col-head,.tt-break-col{width:34px;min-width:34px;max-width:34px;padding:0;text-align:center;background:repeating-linear-gradient(45deg,#0f1f380f,#0f1f380f 6px,#0f1f381a 6px,#0f1f381a 12px);border-left:1px solid rgba(15,31,56,.12);border-right:1px solid rgba(15,31,56,.12)}.tt-break-col-head span,.tt-break-col span{display:inline-block;writing-mode:vertical-rl;transform:rotate(180deg);letter-spacing:.14em;font-size:.58rem;font-weight:900;color:#0f1f3894}.tt-weekend-dept{background:#20395f;color:#fff;padding:7px 14px;font-weight:800;font-size:.76rem;letter-spacing:.04em;position:sticky;left:0}.tt-weekend-cohort{padding:0 14px;font-weight:700;font-size:.74rem;white-space:nowrap;vertical-align:middle;position:sticky;left:0;z-index:1;border-right:2px solid rgba(0,0,0,.1)}.tt-weekend-session-cell{padding:0;min-width:190px;vertical-align:stretch;background:var(--surface-app, #f2f4f8)}.tt-weekend-session{min-height:78px;height:100%;padding:10px 12px;display:flex;flex-direction:column;justify-content:center;gap:4px;line-height:1.3;transition:opacity .15s}.tt-weekend-session strong{font-size:.78rem;font-weight:900}.tt-weekend-session span{font-size:.7rem;font-weight:700}.tt-weekend-session small{font-size:.62rem;opacity:.68}.tt-recess-card{min-height:320px;border:1px solid rgba(67,146,241,.18);border-radius:14px;background:linear-gradient(135deg,#4392f11a,#0d948814),#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;box-shadow:var(--shadow-xs)}.tt-recess-card span{font-size:clamp(2.2rem,7vw,5rem);font-weight:900;letter-spacing:.18em;color:#172947}.tt-recess-card p{margin:8px 0 0;font-size:.95rem;color:var(--muted, #6a7a96);font-weight:700}.app-body.app-timetable-view .tt-weekend-days{height:100%;min-height:0}.app-body.app-timetable-view .tt-weekend-day{height:100%;min-height:0;display:flex;flex-direction:column}.app-body.app-timetable-view .tt-weekend-day>.tt-table-scroll{flex:1;min-height:0;max-height:none}.app-body.app-timetable-view .tt-weekend-day thead th{position:sticky;top:0;z-index:2}.app-body.app-timetable-view .tv-sheet-tabs .tv-week-current{min-width:196px;font-variant-numeric:tabular-nums}.app-body.app-timetable-view .tv-sheet-tabs .tv-week-current.recess:not(.active){color:var(--muted, #6a7a96)}.tv-sheet-tabs .tv-week-step:disabled,.tt-week-tabs .tt-week-tab:disabled{opacity:.4;cursor:default}.tt-week-tabs .tt-week-current{min-width:196px}.tt-dept-away-cell{padding:18px 12px;text-align:center;vertical-align:middle;background:linear-gradient(135deg,#4392f114,#0d94880f),#fff;border:1px solid rgba(67,146,241,.16)}.tt-dept-away-cell span{display:block;font-size:clamp(1.4rem,3.4vw,2.6rem);font-weight:900;letter-spacing:.18em;color:#172947;opacity:.8}.tt-dept-away-cell p{margin:4px 0 0;font-size:.8rem;font-weight:700;color:var(--muted, #6a7a96)}.tt-dept-away-cell.is-finished{background:linear-gradient(135deg,#16a34a14,#0d94880d),#fff;border-color:#16a34a2e}.tt-dept-away-cell.is-finished span{color:#14532d}.tt-class-finished-cell{padding:0 16px;vertical-align:middle;background:repeating-linear-gradient(135deg,#16a34a08 0,#16a34a08 10px,#16a34a0f 10px,#16a34a0f 20px),#fff;color:#3f6b4f;font-size:.78rem;font-weight:700;letter-spacing:.02em}.tt-dept-away-cell.is-recess{background:repeating-linear-gradient(135deg,#0f1f3808 0,#0f1f3808 10px,#0f1f380f 10px,#0f1f380f 20px),#fff}.app-body.app-timetable-view .tt-weekend-days{display:flex;flex-direction:column;gap:8px}.tt-weekend-day-switch{display:inline-flex;gap:4px;padding:3px;border-radius:8px;background:#ffffff14}.tt-weekend-day-switch button{border:0;border-radius:6px;padding:6px 14px;background:none;color:#ffffff9e;font:inherit;font-size:.9rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;cursor:pointer}.tt-weekend-day-switch button:hover:not(:disabled){color:#fff}.tt-weekend-day-switch button.active{background:#fff;color:#172947}.tt-weekend-day-switch button:disabled{opacity:.4;cursor:default}.tt-weekend-day-switch small{margin-left:8px;font-family:var(--font-mono);font-size:.68rem;font-weight:600;letter-spacing:0;text-transform:none;opacity:.75}.tt-action-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:8px;font-size:.82rem;font-weight:600;cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);border:1px solid var(--border, rgba(15, 31, 56, .09));background:#fff;color:var(--ink-soft, #2d3f5a)}.tt-action-btn:hover:not(:disabled){background:var(--alice, #e7f0ff);border-color:#4392f14d;color:var(--blue, #4392f1)}.tt-action-btn.primary{background:var(--blue, #4392f1);color:#fff;border-color:var(--blue, #4392f1)}.tt-action-btn.primary:hover:not(:disabled){background:var(--blue-dark, #2b74d4);border-color:var(--blue-dark, #2b74d4)}.tt-action-btn.danger{background:#fff0ef;color:var(--cinnabar, #dc493a);border-color:#dc493a59}.tt-action-btn.danger:hover:not(:disabled){background:var(--cinnabar, #dc493a);color:#fff;border-color:var(--cinnabar, #dc493a)}.tt-action-btn:disabled{opacity:.5;cursor:not-allowed}.tt-table-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;overflow:hidden;box-shadow:var(--shadow-xs);display:flex;flex-direction:column;min-height:0}.tt-table-meta{padding:8px 14px;font-size:.75rem;color:var(--muted, #6a7a96);background:var(--alice, #e7f0ff);border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));font-family:var(--font-mono);flex-shrink:0}.tt-table-scroll{overflow:auto;max-height:55vh}.tt-review-window .tt-table-card{width:100%;min-width:0;border:1px solid #d6e0e9;border-radius:6px;box-shadow:none}.tt-review-window .tt-sheet-tabs{padding:8px 12px;margin-bottom:0!important;border-bottom:1px solid #d6e0e9}.tt-review-window .tt-table-scroll{height:max(360px,calc(100dvh - 310px));max-height:none;overscroll-behavior:contain;border:0;border-radius:0;box-shadow:none}.tt-review-window .tt-fixed-schedule{--tt-slot-column-width: 150px;width:100%!important}.tt-review-window .tt-table-scroll thead{position:sticky;top:0;z-index:2}.tt-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:56px 24px;text-align:center;background:#fff;border:1px dashed rgba(67,146,241,.25);border-radius:12px;color:var(--muted, #6a7a96)}.tt-empty h3{font-size:1rem;font-weight:600;color:var(--ink-soft, #2d3f5a);margin:0}.tt-empty p{font-size:.85rem;margin:0}.tt-saved-header{display:flex;align-items:center;justify-content:space-between;gap:12px}.tt-saved-header h3{font-size:.95rem;font-weight:700;color:var(--ink-soft, #2d3f5a);margin:0}.tt-saved-list{display:flex;flex-direction:column;gap:8px}.tt-saved-group-header{display:flex;align-items:center;gap:8px;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding:12px 4px 6px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));margin-bottom:4px}.tt-saved-group-header:first-child{padding-top:4px}.tt-saved-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:14px 16px;display:flex;align-items:center;gap:12px;transition:border-color .18s ease,box-shadow .18s ease;box-shadow:var(--shadow-xs)}.tt-saved-card:hover{border-color:#4392f14d;box-shadow:var(--shadow-sm)}.tt-saved-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.tt-saved-name{font-size:.875rem;font-weight:700;color:var(--ink, #0f1f38);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tt-saved-meta{font-size:.75rem;color:var(--muted, #6a7a96);font-family:var(--font-mono)}.tt-saved-tags{display:flex;gap:6px;flex-wrap:wrap;align-items:center}.tt-saved-actions{display:flex;gap:6px;flex-shrink:0}.tt-tab-num{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;font-size:.63rem;font-weight:800;background:#0f1f381a;color:var(--muted, #6a7a96);flex-shrink:0;transition:background .18s,color .18s}.tt-tab.active .tt-tab-num{background:var(--blue, #4392f1);color:#fff}.tt-tab-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.tt-tab-dot.unsaved{background:var(--cinnabar, #dc493a)}.tt-preflight{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;font-size:.875rem;border:1px solid transparent}.tt-preflight.ok{background:#22c55e12;border-color:#22c55e38;color:#166534}.tt-preflight.warn{background:#eab30812;border-color:#eab30847;color:#854d0e}.tt-preflight strong{display:block;font-weight:700;margin-bottom:2px;font-size:.875rem}.tt-preflight p{margin:0;font-size:.8rem;opacity:.85}.tt-preflight-icon{flex-shrink:0;margin-top:1px}.tt-review-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:14px 18px;background:#fff;border:1px solid var(--border, rgba(15,31,56,.09));box-shadow:var(--shadow-xs);flex-shrink:0}.tt-review-info{display:flex;flex-direction:column;gap:3px}.tt-review-dept{font-size:.95rem;font-weight:700;color:var(--ink, #0f1f38)}.tt-review-meta{font-size:.72rem;color:var(--muted, #6a7a96);font-family:var(--font-mono)}.tt-review-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.tt-pair-switch{display:inline-flex;gap:2px;padding:3px;border-radius:8px;background:#eef2f6}.tt-pair-switch button{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:0;border-radius:6px;background:transparent;color:#5f7185;font:inherit;font-size:.8rem;font-weight:700;cursor:pointer}.tt-pair-switch button:hover:not(.active){color:#22394f}.tt-pair-switch button.active{background:#fff;color:#1d4f9c;box-shadow:0 1px 3px #0f1f3824}.tt-pair-saved{color:#1f8a5b;font-size:.75rem}.tt-saved-indicator{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;background:#22c55e17;border:1px solid rgba(34,197,94,.28);color:#166534;font-size:.78rem;font-weight:700;font-family:var(--font-mono);letter-spacing:.04em}.tt-status-draft{background:#eab3081a;color:#854d0e;border:1px solid rgba(234,179,8,.28)}.tt-status-pending{background:#4392f11a;color:var(--blue-dark, #2b74d4);border:1px solid rgba(67,146,241,.25)}.tt-status-approved{background:#22c55e1a;color:#166534;border:1px solid rgba(34,197,94,.25)}.tt-status-pill{display:inline-flex;align-items:center;padding:3px 9px;font-size:.68rem;font-weight:700;letter-spacing:.07em;text-transform:uppercase;font-family:var(--font-mono);white-space:nowrap}.tt-merge-hint{font-size:.75rem;color:var(--muted, #6a7a96);padding:10px 14px;background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.15);border-radius:var(--r-md, 8px)}.tt-card-selected{outline:2px solid rgba(67,146,241,.45);outline-offset:-1px;background:var(--alice, #e7f0ff)}.tt-merged-badge{display:inline-flex;align-items:center;gap:4px;font-size:.6rem;font-weight:800;letter-spacing:.09em;text-transform:uppercase;font-family:var(--font-mono);padding:2px 7px;border-radius:4px;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);border:1px solid rgba(67,146,241,.28);flex-shrink:0}.tt-merge-sources{display:flex;flex-direction:column;gap:4px;margin-top:6px;padding:8px 10px;background:var(--surface-app, #f2f4f8);border-radius:var(--r-sm, 6px);border:1px solid var(--border)}.tt-merge-sources-label{font-size:.67rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.1em;font-family:var(--font-mono);margin-bottom:2px}.tt-merge-source-row{display:flex;align-items:center;gap:7px;font-size:.75rem;color:var(--ink-soft, #3a4f70)}.tt-merge-source-dot{width:5px;height:5px;border-radius:50%;background:var(--blue, #4392f1);flex-shrink:0}@media (max-width: 900px){.tt-config-row{grid-template-columns:1fr 1fr}.tt-stats-row{grid-template-columns:1fr 1fr 1fr}}@media (max-width: 640px){.tt-config-row,.tt-stats-row{grid-template-columns:1fr}.tt-preview-header{flex-direction:column;align-items:flex-start}.tt-saved-card{flex-wrap:wrap}}.tt-list-page{display:flex;flex-direction:column;gap:22px;padding:4px 0;flex:1;min-height:0}.tt-ops-overview{overflow:hidden;border:1px solid #dbe3ed;border-radius:8px;background:#fff}.tt-ops-overview-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 20px;border-bottom:1px solid #e7ecf2}.tt-ops-overview-head h2{margin:0 0 3px;color:var(--ink, #0f1f38);font-size:1.08rem;line-height:1.3}.tt-ops-overview-head p{margin:0;color:var(--muted, #6a7a96);font-size:.76rem}.tt-ops-primary{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:36px;padding:8px 13px;border:1px solid #1d4ed8;border-radius:7px;background:#1d4ed8;color:#fff;font:700 .78rem var(--font-sans);cursor:pointer}.tt-ops-primary:hover{background:#1e40af}.tt-ops-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.tt-ops-item{position:relative;min-width:0;min-height:88px;display:grid;grid-template-columns:38px minmax(0,1fr) auto;align-items:center;gap:11px;padding:15px 16px;border:0;border-right:1px solid #e7ecf2;background:#fff;color:inherit;font-family:var(--font-sans);text-align:left;cursor:pointer}.tt-ops-item:last-child{border-right:0}.tt-ops-item:hover{background:#f8fafc}.tt-ops-item.attention{background:#fffaf2}.tt-ops-item.attention:before{content:"";position:absolute;inset:0 auto 0 0;width:3px;background:#d97706}.tt-ops-item-icon{width:38px;height:38px;display:grid;place-items:center;border-radius:8px}.tt-ops-item.requests .tt-ops-item-icon{background:#fff1dd;color:#b45309}.tt-ops-item.submissions .tt-ops-item-icon{background:#ecfdf5;color:#15803d}.tt-ops-item.drafts .tt-ops-item-icon{background:#f1f5f9;color:#475569}.tt-ops-item.published .tt-ops-item-icon{background:#e7f0ff;color:#1d4ed8}.tt-ops-item-copy{min-width:0;display:flex;flex-direction:column;gap:3px}.tt-ops-item-copy>span{overflow:hidden;color:#26384f;font-size:.76rem;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.tt-ops-item-copy small{color:#7a899d;font-size:.66rem;font-weight:500}.tt-ops-item>strong{color:var(--ink, #0f1f38);font-size:1.28rem;line-height:1}.tt-ops-item>strong em{color:#7a899d;font-size:.76rem;font-style:normal;font-weight:700}.tt-list-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}@media (max-width: 1000px){.tt-ops-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.tt-ops-item:nth-child(2){border-right:0}.tt-ops-item:nth-child(-n+2){border-bottom:1px solid #e7ecf2}}@media (max-width: 600px){.tt-ops-overview-head{align-items:flex-start;flex-direction:column}.tt-ops-primary{width:100%}.tt-ops-grid{grid-template-columns:1fr}.tt-ops-item,.tt-ops-item:nth-child(2){border-right:0;border-bottom:1px solid #e7ecf2}.tt-ops-item:last-child{border-bottom:0}}.tt-list-title{font-size:1.25rem;font-weight:700;color:var(--ink, #0f1f38);margin:0 0 4px;letter-spacing:-.3px}.tt-list-sub{font-size:.82rem;color:var(--muted, #6a7a96);margin:0}.tt-list-generate-btn{display:inline-flex;align-items:center;gap:10px;background:linear-gradient(135deg,var(--blue, #4392f1) 0%,#3182ce 100%);color:#fff;border:none;border-radius:12px;padding:14px 28px;font-size:.95rem;font-weight:700;cursor:pointer;font-family:var(--font-sans);box-shadow:0 6px 20px #4392f14d;transition:transform .18s ease,box-shadow .18s ease;letter-spacing:-.1px}.tt-list-generate-btn:hover{transform:translateY(-2px);box-shadow:0 10px 28px #4392f166}.tt-list-generate-btn:active{transform:translateY(0)}.tt-list-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:72px 24px;gap:16px;flex:1}.tt-list-empty-icon{width:96px;height:96px;border-radius:24px;background:var(--alice, #e7f0ff);display:flex;align-items:center;justify-content:center;color:var(--blue, #4392f1);margin-bottom:8px}.tt-list-empty h3{font-size:1.1rem;font-weight:700;color:var(--ink, #0f1f38);margin:0}.tt-list-empty p{font-size:.875rem;color:var(--muted, #6a7a96);margin:0;max-width:320px}.tt-list-rows{display:flex;flex-direction:column;background:#fff;border:1px solid var(--border, rgba(15,31,56,.09));border-radius:14px;overflow:hidden;box-shadow:0 2px 8px #0f1f380f}.tt-list-section{display:flex;flex-direction:column}.tt-list-row{display:flex;align-items:center;gap:16px;padding:15px 20px;border-bottom:1px solid var(--border, rgba(15,31,56,.07));transition:background .15s ease}.tt-list-row:last-child{border-bottom:none}.tt-list-row:hover{background:#fafbfc}.tt-list-row-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.tt-list-row--draft .tt-list-row-dot{background:#d1d5db}.tt-list-row--pending .tt-list-row-dot{background:var(--blue, #4392f1)}.tt-list-row--approved .tt-list-row-dot{background:#22c55e}.tt-list-row--published .tt-list-row-dot{background:#0ea5e9;box-shadow:0 0 0 3px #0ea5e92e}.tt-list-row--rejected .tt-list-row-dot{background:#ef4444}.tt-list-row-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.tt-list-row-name{font-size:.9rem;font-weight:700;color:var(--ink, #0f1f38);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:-.1px}.tt-list-row-meta{font-size:.74rem;color:var(--muted, #6a7a96);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tt-list-row-tags,.tt-list-row-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.tt-list-rename-input{width:100%;padding:5px 10px;border:1.5px solid var(--blue, #4392f1);border-radius:7px;font-size:.9rem;font-weight:700;font-family:var(--font-sans);color:var(--ink, #0f1f38);background:#fff;box-shadow:0 0 0 3px #4392f11f;outline:none}.tt-list-drafts{border-top:1px solid var(--border, rgba(15,31,56,.07))}.tt-list-drafts-toggle{display:flex;align-items:center;gap:8px;width:100%;padding:12px 20px;background:var(--surface-app, #f8fafc);border:none;cursor:pointer;font-size:.8rem;font-weight:700;color:var(--ink-soft, #2d3f5a);font-family:var(--font-sans);text-align:left;transition:background .15s ease;letter-spacing:.01em}.tt-list-drafts-toggle:hover{background:#f0f2f5}.tt-list-drafts-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:#0f1f3814;font-size:.7rem;font-weight:700;color:var(--muted, #6a7a96)}.tt-list-drafts-body{display:flex;flex-direction:column}.tt-list-drafts-body .tt-list-row{background:#fdfeff}.tt-list-drafts-body .tt-list-row:hover{background:#f8fafc}.tt-list-drafts-body .tt-list-row:last-child{border-bottom:none}.tt-list-status{display:inline-flex;align-items:center;padding:3px 10px;border-radius:20px;font-size:.71rem;font-weight:700;letter-spacing:.02em;text-transform:uppercase}.tt-list-status--draft{background:#f3f4f6;color:#6b7280}.tt-list-status--pending{background:#4392f11f;color:var(--blue, #4392f1)}.tt-list-status--approved{background:#22c55e1f;color:#15803d}.tt-list-status--published{background:#0ea5e91f;color:#0369a1}.tt-list-status--rejected{background:#ef44441a;color:#b91c1c}.tt-list-tag{display:inline-flex;align-items:center;padding:3px 9px;border-radius:20px;font-size:.71rem;font-weight:600;background:var(--surface-app, #f2f4f8);color:var(--ink-soft, #2d3f5a)}.tt-list-tag--merged{background:#6366f11a;color:#4f46e5}.tt-list-action-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:7px 14px;border:1px solid var(--border, rgba(15,31,56,.1));border-radius:8px;font-size:.8rem;font-weight:600;background:#fff;color:var(--ink-soft, #2d3f5a);cursor:pointer;font-family:var(--font-sans);transition:background .15s ease,border-color .15s ease}.tt-list-action-btn:hover{background:var(--surface-app, #f2f4f8);border-color:#0f1f3829}.tt-list-action-btn--primary{background:var(--alice, #e7f0ff);border-color:#4392f14d;color:var(--blue, #4392f1)}.tt-list-action-btn--primary:hover{background:#4392f12e;border-color:#4392f173}.tt-list-action-btn--danger{background:#fff;border-color:#dc493a2e;color:var(--cinnabar, #dc493a);padding:7px 10px}.tt-list-action-btn--danger:hover{background:#dc493a0f;border-color:#dc493a4d}.tt-data-sheet-wrap{overflow:auto;max-width:100%;padding:4px}.tt-ds-empty{padding:32px;text-align:center;color:var(--muted, #6a7a96);font-size:.9rem}.tt-data-sheet{border-collapse:separate;border-spacing:0;font-size:.82rem;min-width:480px;background:#fff;border:1px solid var(--border, rgba(15,31,56,.1));border-radius:10px;overflow:hidden}.tt-ds-cell{padding:9px 14px;border-bottom:1px solid var(--border, rgba(15,31,56,.07));border-right:1px solid var(--border, rgba(15,31,56,.05));color:var(--ink, #0f1f38);vertical-align:middle;white-space:nowrap}.tt-data-sheet tr:last-child .tt-ds-cell{border-bottom:none}.tt-ds-cell.head{background:var(--surface-app, #f2f4f8);font-weight:700;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-soft, #2d3f5a)}.tt-ds-cell.section{background:#0f1f38;color:#fff;font-weight:700;font-size:.78rem;letter-spacing:.02em}.tt-ds-swatch-row{display:inline-flex;align-items:center;gap:8px}.tt-ds-swatch{width:16px;height:16px;border-radius:4px;border:1px solid rgba(15,31,56,.15);flex-shrink:0}.tt-ds-swatch-code{font-family:var(--font-mono, monospace);font-size:.7rem;color:var(--muted, #6a7a96)}.app-body.app-timetable .page-content,.app-body.app-timetable .page-fade,.app-body.app-timetable .tt-container,.app-body.app-timetable .tt-content,.app-body.app-timetable .tt-panel,.app-body.app-timetable .tt-list-page{width:100%;min-width:0;max-width:100%;box-sizing:border-box}.app-body.app-timetable .page-content{overflow-x:hidden}.app-body.app-timetable .tt-tabs{width:100%;min-width:0;max-width:100%}.app-body.app-timetable .tt-panel>*,.app-body.app-timetable .tt-list-page>*{min-width:0;max-width:100%;box-sizing:border-box}.app-body.app-timetable .tt-list-page{gap:16px;padding:0 0 20px}.app-body.app-timetable .tt-ops-overview{container-type:inline-size;overflow:hidden;border:1px solid #cfdbe6;border-radius:8px!important;background:#edf3f6;box-shadow:0 10px 28px #172b3f1a!important}.app-body.app-timetable .tt-ops-overview-head{min-width:0;padding:20px 22px;border-bottom:0;background:#173f75;color:#fff}.app-body.app-timetable .tt-ops-overview-head>div{min-width:0}.app-body.app-timetable .tt-ops-kicker{display:block;margin-bottom:5px;color:#83d5b7;font-size:.62rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.app-body.app-timetable .tt-ops-overview-head h2{margin-bottom:4px;color:#fff;font-size:1.16rem;font-weight:780;letter-spacing:0}.app-body.app-timetable .tt-ops-overview-head p{overflow:hidden;max-width:100%;color:#bfd1e2;text-overflow:ellipsis;white-space:nowrap}.app-body.app-timetable .tt-ops-primary{flex-shrink:0;min-height:38px;padding:8px 14px;border:1px solid rgba(255,255,255,.88);border-radius:7px!important;background:#fff;color:#173f75;box-shadow:0 6px 16px #071b322e!important}.app-body.app-timetable .tt-ops-primary:hover{border-color:#8ad9bc;background:#e7f6ef;color:#126d50}.app-body.app-timetable .tt-ops-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;padding:1px 0 0;background:#dbe4ec}.app-body.app-timetable .tt-ops-item,.app-body.app-timetable .tt-ops-item:nth-child(2),.app-body.app-timetable .tt-ops-item:nth-child(-n+2){min-width:0;min-height:94px;grid-template-columns:38px minmax(0,1fr) auto;gap:10px;padding:15px;border:0;background:#fff}.app-body.app-timetable .tt-ops-item:hover{background:#f8fafb}.app-body.app-timetable .tt-ops-item.attention{background:#fffaf1}.app-body.app-timetable .tt-ops-item.attention:before{background:#e3a11c}.app-body.app-timetable .tt-ops-item-icon{width:38px;height:38px;border-radius:7px!important}.app-body.app-timetable .tt-ops-item.requests .tt-ops-item-icon{background:#fff2dc;color:#a86608}.app-body.app-timetable .tt-ops-item.submissions .tt-ops-item-icon{background:#e7f6ef;color:#14815d}.app-body.app-timetable .tt-ops-item.drafts .tt-ops-item-icon{background:#eef1f4;color:#536477}.app-body.app-timetable .tt-ops-item.published .tt-ops-item-icon{background:#eaf1fc;color:#315fbe}.app-body.app-timetable .tt-ops-item-copy>span{color:#263a50;font-size:.75rem;letter-spacing:0;white-space:normal}.app-body.app-timetable .tt-ops-item-copy small{overflow:hidden;color:#748397;font-size:.64rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-timetable .tt-ops-item>strong{align-self:center;color:#172b3f;font-size:1.35rem;font-variant-numeric:tabular-nums}.app-body.app-timetable .tt-ops-empty{display:grid;grid-template-columns:42px minmax(0,1fr);align-items:center;gap:13px;padding:16px 18px;border-top:1px solid #dbe4ec;background:#fff}.app-body.app-timetable .tt-ops-empty-icon{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:7px!important;background:#eef3f8;color:#536b82}.app-body.app-timetable .tt-ops-empty-copy{min-width:0}.app-body.app-timetable .tt-ops-empty-copy h3{margin:0;color:#263a50;font-size:.84rem;font-weight:800;letter-spacing:0}.app-body.app-timetable .tt-ops-empty-copy p{margin:3px 0 0;color:#748397;font-size:.7rem}.app-body.app-timetable .tt-ops-overview>.tt-list-rows{border:0;border-top:1px solid #dbe4ec;border-radius:0!important;box-shadow:none!important}.app-body.app-timetable .tt-list-header{width:100%;min-width:0;padding:14px 16px;border:1px solid #dce4ec;border-radius:8px!important;background:#fff;box-shadow:0 4px 14px #172b3f0f!important}.app-body.app-timetable .tt-list-header>div{min-width:0}.app-body.app-timetable .tt-list-title{color:#172b3f;font-size:1rem;letter-spacing:0}.app-body.app-timetable .tt-list-rows{container-type:inline-size;width:100%;min-width:0;max-width:100%;border-radius:8px!important;box-shadow:0 5px 18px #172b3f12!important}.app-body.app-timetable .tt-list-row{display:grid;grid-template-columns:8px minmax(180px,1fr) minmax(0,auto) auto;align-items:center;gap:12px;width:100%;min-width:0;max-width:100%;padding:14px 16px;box-sizing:border-box}.app-body.app-timetable .tt-list-row-info,.app-body.app-timetable .tt-list-row-tags,.app-body.app-timetable .tt-list-row-actions{min-width:0;max-width:100%}.app-body.app-timetable .tt-list-row-tags,.app-body.app-timetable .tt-list-row-actions{flex-wrap:wrap;justify-content:flex-end}.app-body.app-timetable .tt-list-action-btn,.app-body.app-timetable .tt-list-status,.app-body.app-timetable .tt-list-tag{white-space:nowrap}.app-body.app-timetable .tt-list-generate-btn{border-radius:7px!important;background:#173f75;box-shadow:0 7px 18px #173f7533!important}.app-body.app-timetable .tt-list-generate-btn:hover{background:#102e55;box-shadow:0 10px 24px #173f7542!important}@container (max-width: 940px){.app-body.app-timetable .tt-ops-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@container (max-width: 520px){.app-body.app-timetable .tt-ops-overview-head{align-items:flex-start;flex-direction:column;padding:18px}.app-body.app-timetable .tt-ops-primary{width:100%}.app-body.app-timetable .tt-ops-grid{grid-template-columns:1fr}.app-body.app-timetable .tt-ops-empty{grid-template-columns:42px minmax(0,1fr);align-items:start;padding:15px}}@container (max-width: 860px){.app-body.app-timetable .tt-list-row{grid-template-columns:8px minmax(0,1fr) auto}.app-body.app-timetable .tt-list-row-actions{grid-column:2 / -1}}@container (max-width: 620px){.app-body.app-timetable .tt-list-row{grid-template-columns:8px minmax(0,1fr);align-items:start}.app-body.app-timetable .tt-list-row-tags,.app-body.app-timetable .tt-list-row-actions{grid-column:2;justify-content:flex-start}}@media (max-width: 700px){.app-body.app-timetable .page-content{padding-left:12px;padding-right:12px}.app-body.app-timetable .tt-list-header{align-items:flex-start}}.tt-dl-head{display:flex;align-items:flex-start;justify-content:space-between;gap:24px;flex-wrap:wrap;padding:20px 22px;background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .1));border-left:4px solid var(--blue, #4392f1)}.tt-dl-head.open{border-left-color:#16a37c}.tt-dl-head.closed{border-left-color:var(--muted, #6a7a96)}.tt-dl-head.complete{border-left-color:#16a37c}.tt-dl-head-text{flex:1 1 380px;min-width:0}.tt-dl-head-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:4px}.tt-dl-head-title h2{margin:0;font-size:1.05rem;font-weight:700;color:var(--ink, #0f1f38)}.tt-dl-head-text>p{margin:0 0 14px;font-size:.86rem;line-height:1.55;color:var(--muted, #6a7a96);max-width:60ch}.tt-dl-progress{display:flex;flex-direction:column;gap:6px;max-width:460px}.tt-dl-progress .tt-dl-bar{height:7px;background:var(--surface-app, #eef1f6);overflow:hidden}.tt-dl-progress .tt-dl-bar-fill{height:100%;background:var(--blue, #4392f1);transition:width .3s ease}.tt-dl-progress-text{font-size:.82rem;color:var(--muted, #6a7a96)}.tt-dl-progress-text strong{color:var(--ink, #0f1f38);font-family:var(--font-mono)}.tt-dl-head-action{display:flex;flex-direction:column;gap:10px;align-items:flex-start;flex:0 0 auto;min-width:220px}.tt-dl-when{margin:0;display:flex;flex-direction:column;gap:1px}.tt-dl-when>span{font-size:.72rem;text-transform:uppercase;letter-spacing:.07em;color:var(--muted, #6a7a96)}.tt-dl-when>strong{font-size:.86rem;color:var(--ink, #0f1f38)}.tt-dl-when>em{font-style:normal;font-size:.76rem;color:var(--blue-dark, #2b74d4)}.tt-dl-head-action .tt-dl-actions{display:flex;gap:8px;flex-wrap:wrap}.tt-dl-head{display:block;padding:18px 20px}.tt-dl-head-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:3px}.tt-dl-head-lead{margin:0 0 12px;font-size:.85rem;line-height:1.5;color:var(--muted, #6a7a96);max-width:62ch}.tt-dl-missed{color:#b45309;font-weight:600}.tt-dl-head-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;padding-top:12px;border-top:1px solid var(--border, rgba(15, 31, 56, .08))}.tt-dl-when{font-size:.82rem;color:var(--muted, #6a7a96)}.tt-dl-when strong{color:var(--ink, #0f1f38);font-weight:600}.tt-dl-when em{font-style:normal;color:var(--blue-dark, #2b74d4)}.tt-dl-head-controls{display:flex;align-items:center;gap:8px;margin-left:auto;flex-wrap:wrap}.tt-dl-date{padding:7px 10px;border:1px solid var(--border, rgba(15, 31, 56, .14));background:var(--surface-card, #fff);font:inherit;font-size:.82rem;color:var(--ink, #0f1f38)}.tt-pref-data-table{flex:1;min-height:0}.tt-pref-data-toolbar{flex-wrap:wrap}.tt-pref-data-toolbar>.data-table-search{flex:1 1 240px;max-width:420px}.tt-pref-data-toolbar .btn-toolbar:disabled{opacity:.45;cursor:not-allowed}.tt-pref-deadline-tools{display:flex;min-width:0;align-items:center;gap:8px;margin-left:auto}.tt-pref-deadline-state{display:inline-flex;min-height:26px;align-items:center;padding:3px 8px;border:1px solid #d8e2eb;border-radius:6px;color:#53687e;background:#f4f7fa;font-size:.68rem;font-weight:800;text-transform:uppercase;white-space:nowrap}.tt-pref-deadline-state.open,.tt-pref-deadline-state.complete{border-color:#b9d7cc;color:#176a50;background:#edf7f3}.tt-pref-deadline-meta{max-width:150px;overflow:hidden;color:var(--muted, #6a7a96);font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.tt-pref-deadline-input{width:190px;height:34px;padding:0 9px;border:1px solid var(--border, rgba(15, 31, 56, .12));border-radius:8px;color:var(--ink, #0f1f38);background:#fff;font:.76rem var(--font-sans)}.tt-pref-data-scroll{max-height:min(590px,calc(100dvh - 260px));scrollbar-gutter:stable}.tt-pref-academic-table{min-width:520px;table-layout:fixed}.tt-pref-academic-table th:last-child{width:220px}.tt-pref-academic-table td{height:52px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-pref-academic-table .tt-pref-status{min-width:0;padding:3px 8px;border-radius:6px;letter-spacing:.04em}.tt-pref-selectable-row{cursor:pointer;outline:none}.tt-pref-selectable-row.is-selected{background:var(--alice, #e7f0ff);box-shadow:inset 3px 0 0 var(--blue, #4392f1)}.tt-pref-selectable-row:focus-visible{box-shadow:inset 0 0 0 2px var(--blue, #4392f1)}.tt-pref-department-name{font-weight:600}.tt-pref-empty-cell{height:110px!important;text-align:center}@media (max-width: 920px){.tt-pref-deadline-tools{width:100%;margin-left:0}}.tt-dl-groups{display:flex;flex-direction:column;gap:8px}.tt-dl-group{background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .1));overflow:hidden}.tt-dl-group-head{width:100%;display:flex;align-items:center;gap:9px;padding:11px 14px;border:none;background:transparent;font:inherit;cursor:pointer;text-align:left}.tt-dl-group-head:hover{background:var(--surface-app, #f6f8fb)}.tt-dl-caret{color:var(--muted, #9aa7bd);transition:transform .15s ease;flex-shrink:0}.tt-dl-caret.open{transform:rotate(90deg)}.tt-dl-group-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;background:var(--muted, #9aa7bd)}.tt-dl-group.submitted .tt-dl-group-dot{background:#16a37c}.tt-dl-group.none .tt-dl-group-dot{background:var(--blue, #4392f1)}.tt-dl-group.missed .tt-dl-group-dot{background:#dc2626}.tt-dl-group.pending .tt-dl-group-dot{background:#f59e0b}.tt-dl-group-title{font-size:.86rem;font-weight:600;color:var(--ink, #0f1f38)}.tt-dl-group-count{margin-left:auto;font-size:.76rem;font-family:var(--font-mono);color:var(--muted, #6a7a96);background:var(--surface-app, #f2f4f8);padding:2px 9px;border-radius:999px}.tt-dl-group-rows{border-top:1px solid var(--border, rgba(15, 31, 56, .08))}.tt-dl-row{display:flex;align-items:center;gap:12px;padding:9px 14px 9px 36px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .05))}.tt-dl-row:last-child{border-bottom:none}.tt-dl-row:hover{background:var(--surface-app, #f6f8fb)}.tt-dl-row-name{flex:1;min-width:0;font-size:.85rem;color:var(--ink-soft, #2d3f5a);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tt-dl-row .tt-dl-dept-manage-btn{flex-shrink:0}.tt-dl-head .tt-dl-progress-text{margin:0;font-size:.85rem;color:var(--muted, #6a7a96)}.tt-dl-head .tt-dl-progress-text strong{color:var(--ink, #0f1f38);font-family:var(--font-mono)}.tt-requests-surface{flex:1;min-height:0;display:flex;flex-direction:column}.tt-requests-surface .tt-request-list{flex:1;min-height:0;overflow-y:auto}.tt-requests-surface .tt-requests-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center}@media (min-width: 1500px){.tt-request-metrics{grid-template-columns:repeat(4,minmax(0,1fr))}}.tt-department-handoff{width:min(92vw,620px)}.tt-handoff-eyebrow{display:block;margin-bottom:4px;color:#087553;font-size:.68rem;font-weight:900;letter-spacing:0;text-transform:uppercase}.tt-handoff-body{display:flex;flex-direction:column;gap:14px;padding:18px 20px}.tt-handoff-body>p{margin:0;color:var(--ink-soft);font-size:.82rem;line-height:1.55}.tt-handoff-route{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:center}.tt-handoff-route>svg{color:var(--muted)}.tt-handoff-department{min-width:0;padding:12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-app)}.tt-handoff-department.next{border-color:#aedac8;background:#effaf5}.tt-handoff-department span,.tt-handoff-department strong{display:block}.tt-handoff-department span{margin-bottom:4px;color:var(--muted);font-size:.66rem;font-weight:800;text-transform:uppercase}.tt-handoff-department strong{overflow-wrap:anywhere;color:var(--ink);font-size:.84rem}.tt-handoff-complete{padding:9px 11px;border:1px solid #f1d08a;border-radius:7px;color:#85540b;background:#fff8e7;font-size:.72rem}.tt-view-download{display:inline-flex;align-items:center;gap:7px}.tt-view-header-actions{display:inline-flex;align-items:center;gap:8px;min-width:0}.tt-view-save{display:inline-flex;align-items:center;gap:7px;background:#0f2f57;border-color:#0f2f57}.tt-unsaved-label{display:inline-flex;align-items:center;min-height:30px;padding:0 10px;border:1px solid rgba(245,158,11,.28);border-radius:999px;background:#fff8e7;color:#8a5a00;font-size:.72rem;font-weight:850;white-space:nowrap}.tt-view-save:disabled{opacity:.65;cursor:not-allowed}@media (max-width: 640px){.tt-handoff-route{grid-template-columns:1fr}.tt-handoff-route>svg{justify-self:center;transform:rotate(90deg)}.tt-view-header-actions{gap:6px}.tt-unsaved-label{display:none}}.app-body.app-timetable .tt-step-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.app-body.app-timetable .tt-refresh-btn{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;min-height:30px;padding:0 11px;border:1px solid #ccd7e2;border-radius:6px!important;background:#fff;color:#40546a;font-size:.72rem;font-weight:750;cursor:pointer}.app-body.app-timetable .tt-refresh-btn:hover:not(:disabled){border-color:#9eb0c2;background:#f5f8fa;color:#244c9d}.app-body.app-timetable .tt-refresh-btn:disabled{opacity:.55;cursor:not-allowed}.tv-search{display:inline-flex;align-items:center;gap:8px;min-width:240px;flex:0 1 360px;height:34px;padding:0 4px 0 11px;border:1px solid #ccd7e2;border-radius:8px;background:#fff;color:#7b8a9c;transition:border-color .15s ease,box-shadow .15s ease}.tv-search:hover{border-color:#aebdcb}.tv-search:focus-within{border-color:#315fbe;box-shadow:0 0 0 3px #315fbe1c}.tv-search svg{flex-shrink:0}.app-main .tv-search input,.app-main .tv-search input:hover,.app-main .tv-search input:focus{flex:1;min-width:0;min-height:0;height:100%;padding:0;border:0!important;border-radius:0!important;box-shadow:none!important;outline:none;background:transparent;font:inherit;font-size:.8rem;color:var(--ink, #0f1f38)}.app-main .tv-search input::-webkit-search-cancel-button{cursor:pointer}.tv-search-count{flex-shrink:0;font-size:.72rem;font-weight:700;color:var(--ink-soft, #2d3f5a);white-space:nowrap}.tv-search-next{flex-shrink:0;height:24px;padding:0 8px;border:0;border-radius:6px;background:#e8f0fb;color:#1d4f91;font:inherit;font-size:.72rem;font-weight:800;cursor:pointer;white-space:nowrap}.tv-search-next:hover{background:#d8e6f8}.tt-merge-family{display:flex;flex-direction:column;gap:6px}.tt-saved-card--merged{border-color:#315fbe38;border-left:4px solid #315fbe;background:linear-gradient(90deg,#f1f5fd,#f8faff 45%,#fff)}.tt-saved-card--merged:hover{border-color:#315fbe66}.tt-saved-card--merged .tt-saved-name{color:#1f3f7a}.tt-saved-card--merged .tt-merged-badge{background:#e8eefb;color:#2b56b0;border-color:#315fbe4d}.tt-merge-toggle{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;margin-top:4px;padding:3px 10px 3px 8px;border:1px solid rgba(49,95,190,.3);border-radius:999px;background:#e8eefb;color:#2b56b0;font:inherit;font-size:.74rem;font-weight:700;cursor:pointer}.tt-merge-toggle:hover{background:#dbe5f8;border-color:#315fbe73}.tt-merge-toggle.is-open{background:#315fbe;border-color:#315fbe;color:#fff}.tt-merge-caret{transition:transform .18s ease}.tt-merge-toggle.is-open .tt-merge-caret{transform:rotate(180deg)}.tt-merge-children{display:flex;flex-direction:column;gap:6px;margin:0 0 6px 22px;padding-left:14px;border-left:2px dashed rgba(49,95,190,.3)}.tt-saved-card--nested{padding:10px 14px;border-radius:10px;background:#f9fbfd;box-shadow:none}.tt-saved-card--nested .tt-saved-name{font-size:.86rem}.tv-override-badge{display:inline-flex;align-self:center;max-width:100%;margin-bottom:2px;padding:2px 7px;border-radius:999px;background:#fff7ed;border:1px solid #fdba74;color:#9a3412;font-size:.6rem;font-weight:800;line-height:1;text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;cursor:help}.tv-override-panel{display:flex;flex-direction:column;gap:12px;margin:14px 16px;padding:16px 18px;border:1px solid #fed7aa;border-radius:12px;background:linear-gradient(180deg,#fffaf3,#fff)}.tv-override-panel>div:first-child{display:flex;flex-direction:column;gap:3px}.tv-override-panel>div:first-child strong{color:#7c2d12;font-size:.95rem;font-weight:800}.tv-override-panel>div:first-child small{color:#8a6a55;font-size:.8rem;line-height:1.45}.tv-override-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:10px}.app-body.app-timetable-view .tv-panel-form .tv-override-option,.app-body .tv-override-option{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0;padding:14px 16px;border:1px solid #ecdccb;border-bottom:1px solid #ecdccb;border-radius:10px;background:#fff;cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.app-body .tv-override-option:hover{border-color:#fdba74}.app-body .tv-override-option.is-on{border-color:#fb923c;background:#fff4e6;box-shadow:0 0 0 3px #fb923c24}.app-body.app-timetable-view .tv-panel-form .tv-override-option>.tv-override-text,.app-body .tv-override-text{display:flex;flex-direction:column;gap:4px;min-width:0;color:inherit;font-size:inherit;font-weight:inherit;letter-spacing:0;text-transform:none}.app-body .tv-override-text b{color:#431407;font-size:.9rem;font-weight:800}.app-body .tv-override-text small{color:#7a5b47;font-size:.78rem;line-height:1.4}.app-body .tv-switch{-moz-appearance:none;appearance:none;-webkit-appearance:none;position:relative;flex-shrink:0;width:40px!important;height:22px!important;min-height:0!important;margin:0;padding:0;border:0!important;border-radius:999px!important;background:#d5dce5!important;box-shadow:none!important;cursor:pointer;transition:background .18s ease}.app-body .tv-switch:before{content:"";position:absolute;top:3px;left:3px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0f1f3840;transition:transform .18s ease}.app-body .tv-switch:checked{background:#ea580c!important}.app-body .tv-switch:checked:before{transform:translate(18px)}.app-body .tv-switch:focus-visible{outline:2px solid #fb923c;outline-offset:2px}.tv-override-used{margin:0;padding:8px 12px;border-radius:8px;background:#fff4e6;font-size:.8rem;font-weight:700;color:#9a3412}.tv-override-panel--batch{margin-top:10px}.tv-override-actions{display:flex;justify-content:flex-end;gap:8px}.tv-resolve-batch-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.tv-resolve-card-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.tv-accept-btn{background:#fff7ed!important;color:#9a3412!important;border-color:#fdba74!important}.tv-override-review{margin-top:12px;padding:12px 14px;border:1px solid #fed7aa;border-radius:10px;background:#fffbf5}.tv-override-review header{display:flex;flex-direction:column;gap:2px;margin-bottom:8px}.tv-override-review header strong{color:#7c2d12;font-size:.86rem}.tv-override-review header small{color:#8a6a55;font-size:.74rem}.tv-override-review ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;max-height:280px;overflow:auto}.tv-override-review li{display:flex;align-items:center;gap:8px}.tv-override-review li>button:first-child,.tv-override-review li>div{flex:1;display:grid;gap:1px;text-align:left;padding:7px 10px;border:1px solid #fde3c7;border-radius:8px;background:#fff;font:inherit;cursor:pointer}.tv-override-review li>div{cursor:default}.tv-override-review b{font-size:.8rem;color:#1f2937}.tv-override-review span{font-size:.74rem;color:#4b5563}.tv-override-review em{font-style:normal;font-size:.72rem;font-weight:700;color:#9a3412}.tv-ignored-review{border-color:#dbe3ec;background:#f8fafc}.tv-ignored-review>summary{display:flex;flex-direction:column;gap:2px;cursor:pointer;list-style:none}.tv-ignored-review>summary::-webkit-details-marker{display:none}.tv-ignored-review>summary strong{color:#334155;font-size:.86rem}.tv-ignored-review>summary small{color:#64748b;font-size:.74rem}.tv-ignored-review[open]>summary{margin-bottom:8px}.tv-ignored-review li>span{flex:1;padding:7px 10px;border:1px solid #e2e8f0;border-radius:8px;background:#fff;color:#334155;font-size:.76rem}.tv-ignored-review li>span small{color:#64748b;font-size:.7rem}.app-body.app-timetable-view .tv-panel-status-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.schedule-session-block[data-assignment-drift=true]{box-shadow:inset 0 0 0 2px #7c3aed}.tv-override-undo{flex-shrink:0;padding:5px 10px;border:1px solid #fdba74;border-radius:7px;background:#fff;color:#9a3412;font:inherit;font-size:.74rem;font-weight:700;cursor:pointer}.tv-no-slot{display:flex;flex-direction:column;gap:14px;margin:14px 16px;padding:16px 18px;border:1px solid #fecaca;border-radius:12px;background:linear-gradient(180deg,#fff6f6,#fff)}.tv-no-slot-head{display:flex;align-items:flex-start;gap:12px}.tv-no-slot-icon{flex-shrink:0;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#fee2e2;color:#b91c1c;font-weight:900;font-size:1rem}.tv-no-slot-head div{display:flex;flex-direction:column;gap:3px}.tv-no-slot-head strong{color:#7f1d1d;font-size:.98rem;font-weight:800}.tv-no-slot-head small{color:#7a4a4a;font-size:.8rem;line-height:1.45}.tv-no-slot-reasons{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.tv-no-slot-reasons li{display:flex;flex-direction:column;gap:2px;padding:10px 12px 10px 14px;border-radius:8px;background:#fff;border:1px solid #f3dede;box-shadow:inset 3px 0 #f87171}.tv-no-slot-reasons li.is-lecturer{box-shadow:inset 3px 0 #fb923c}.tv-no-slot-reasons li.is-room,.tv-no-slot-reasons li.is-size{box-shadow:inset 3px 0 #60a5fa}.tv-no-slot-reasons li.is-calendar{box-shadow:inset 3px 0 #a78bfa}.tv-no-slot-reasons b{font-size:.84rem;color:#1f2937}.tv-no-slot-reasons span{font-size:.78rem;color:#4b5563;line-height:1.45}.tv-no-slot-actions{display:flex;flex-direction:column;gap:8px}.tv-no-slot-actions>span{font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#7a4a4a}.tv-no-slot-actions>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:8px}.tv-no-slot-actions button{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 12px;border:1px solid #fdba74;border-radius:9px;background:#fff7ed;font:inherit;text-align:left;cursor:pointer;transition:background .15s ease,border-color .15s ease}.tv-no-slot-actions button:hover{background:#ffedd5;border-color:#fb923c}.tv-no-slot-actions button b{font-size:.82rem;color:#9a3412}.tv-no-slot-actions button small{font-size:.74rem;color:#8a6a55}.tv-review-copy strong .tv-override-badge{margin:0 0 0 8px;vertical-align:middle}.tv-override-review .tv-rule-bent{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin-top:3px;font-size:.76rem;color:#4b5563;cursor:help}.tv-override-review .tv-rule-bent i{font-style:normal;padding:1px 7px;border-radius:999px;background:#fff4e6;border:1px solid #fdba74;color:#9a3412;font-size:.62rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.tv-override-review .tv-rule-bent strong{font-size:.8rem;color:#7c2d12}.tv-override-review .tv-rule-bent>span{font-size:.76rem;color:#4b5563}.tv-override-review .tv-rule-bent>span:before{content:"4�a0";color:#c2a58f}.tv-override-review li em{font-weight:600;color:#8a6a55}.tt-date-card.is-worst-case{border-color:#d9770680;box-shadow:0 0 0 2px #d977061a}.tt-date-card.is-worst-case .tt-date-source{color:#9a4b00;font-weight:600}.tt-dept-head{position:sticky;left:14px;display:flex;align-items:center;gap:12px;width:max-content;max-width:calc(100vw - 330px);min-width:0}.tt-dept-head-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tt-dept-once{display:inline-flex;align-items:center;gap:8px;flex:none;color:#ffffffd9;font-size:11px;font-weight:600;letter-spacing:.01em;text-transform:none}.tt-strip-once{padding:1px 7px;border-radius:3px;background:#fbbf24;color:#3b2500;font-size:10px;font-weight:800;letter-spacing:.03em}@media (max-width: 720px){.tt-dept-head{max-width:calc(100vw - 60px)}.tt-dept-once{font-size:0;gap:0}.tt-dept-once .tt-strip-once{font-size:10px}}.schedule-cohort-cell .sc-cohort-code{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.schedule-cohort-cell .sc-cohort-name{display:-webkit-box;margin-top:2px;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2;font-family:var(--font-sans, inherit);font-size:.64rem;font-weight:500;line-height:1.25;letter-spacing:0;text-transform:none;white-space:normal;opacity:.82}.tv-personal-schedule .sheet-table-wrapper,.sch-class-grid .sheet-table-wrapper{flex:1;min-height:0;max-height:none;overflow:auto}.sch-class-grid{flex:1;min-height:0;display:flex;flex-direction:column}.tv-personal-schedule .sheet-table-wrapper>.schedule-grid-table,.sch-class-grid .sheet-table-wrapper>.schedule-grid-table{height:100%}.tv-kind-switch{display:inline-flex;gap:2px;padding:2px;border-radius:7px;background:#0f1f3812}.tv-kind-switch button{border:0;background:transparent;padding:5px 12px;border-radius:5px;font:inherit;font-size:.78rem;font-weight:700;color:#4a5b73;cursor:pointer}.tv-kind-switch button.active{background:#173a61;color:#fff}.tv-kind-switch button:disabled{opacity:.45;cursor:default}.cr-ways{display:flex;flex-direction:column;gap:8px}.cr-ways-label{margin:0;font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--muted, #6b7a90)}.cr-way{display:flex;flex-direction:column;gap:3px;width:100%;padding:10px 12px;text-align:left;background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .14));border-left:3px solid #2b74d4;border-radius:8px;cursor:pointer;font:inherit}.cr-way:hover:not(:disabled){background:#f4f8ff;border-left-color:#173a61}.cr-way:disabled{opacity:.55;cursor:default}.cr-way-title{font-size:.85rem;font-weight:700;color:#0f1f38}.cr-way-detail{font-size:.78rem;color:var(--muted, #6b7a90);line-height:1.45}.cr-ways-none{margin:0;padding:8px 12px;background:#fef9c3;border-left:3px solid #f59e0b;border-radius:6px;font-size:.78rem;color:#7c5310}.cr-ways-note{display:flex;flex-direction:column;gap:4px}.cr-ways-note span{font-size:.75rem;font-weight:600;color:var(--muted, #6b7a90)}.cr-ways-note textarea{width:100%;padding:8px 10px;border:1px solid var(--border, rgba(15, 31, 56, .16));border-radius:6px;font:inherit;font-size:.82rem;resize:vertical}.cr-clash-reason{margin:0;padding:9px 12px;background:#fef2f2;border-left:3px solid #dc2626;border-radius:6px;color:#7f1d1d;font-size:.8rem;font-weight:600;line-height:1.5}.cr-held-note{padding:9px 12px;background:#fffbeb;border-left:3px solid #f59e0b;border-radius:6px;color:#78350f;font-size:.79rem;line-height:1.5}.tt-generate-all-note{margin:10px 0 0;font-size:.78rem;color:var(--muted);line-height:1.6}.tt-generate-one-link{border:none;background:none;padding:0;font:inherit;color:var(--blue, #315fbe);font-weight:600;cursor:pointer;text-decoration:underline;text-underline-offset:2px}.tt-generate-one-link:hover:not(:disabled){color:var(--blue-dark, #244c9d)}.tt-generate-one-link:disabled{color:var(--muted);cursor:not-allowed;text-decoration:none}.tt-batch-pane{display:flex;flex-direction:column;gap:16px;min-height:100%}.tt-batch-lead{margin:0;font-size:.85rem;line-height:1.6;color:var(--ink)}.tt-batch-foot{margin-top:auto!important;position:sticky;bottom:0;z-index:1;background:var(--surface-card, #fff)}.tt-batch-ready{list-style:none;margin:0;padding:10px 12px;display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:2px 14px;border:1px solid var(--border);border-radius:var(--r-lg, 8px);background:var(--surface-hover, #f4f7fa)}.tt-batch-ready li{display:flex;align-items:center;gap:8px;padding:3px 0;font-size:.79rem;color:var(--ink)}.tt-batch-ready-num{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:50%;background:var(--blue-light, #e9effb);color:var(--blue-dark, #244c9d);font-size:.66rem;font-weight:700;flex-shrink:0}.tt-batch-waiting{padding:10px 12px;background:#fffbeb;border-left:3px solid #f59e0b;border-radius:var(--r-md, 7px);color:#78350f;font-size:.78rem;line-height:1.5}.tt-batch-waiting p{margin:4px 0}.tt-batch-waiting span{opacity:.85}.tt-batch-field{display:flex;flex-direction:column;gap:6px}.tt-batch-field>span{font-size:.82rem;font-weight:600;color:var(--ink)}.tt-batch-field em{font-style:normal;font-weight:400;font-size:.75rem;color:var(--muted);margin-left:6px}.tt-batch-field input{width:100%;padding:9px 12px;border:1px solid var(--border);border-radius:var(--r-lg, 8px);font-size:.85rem}.tt-batch-warn{margin:0;font-size:.77rem;color:var(--muted);line-height:1.55}.tt-batch-stage{display:flex;align-items:center;gap:14px}.tt-batch-orb{position:relative;width:48px;height:48px;border-radius:50%;flex-shrink:0}.tt-batch-orb-ring{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;border:2.5px solid rgba(148,163,184,.25);border-top-color:var(--blue, #315fbe);animation:tt-batch-orbit .9s linear infinite}.tt-batch-orb-face{position:absolute;top:4px;right:4px;bottom:4px;left:4px;overflow:hidden;border-radius:50%;display:grid;place-items:center;background:#fff;border:1px solid rgba(49,95,190,.16);box-shadow:0 6px 18px #315fbe1f;color:var(--blue-dark, #244c9d)}.tt-batch-orb-logo{width:30px;height:30px;border-radius:50%;object-fit:cover;animation:tt-batch-logo-pulse 1.6s ease-in-out infinite}.tt-batch-orb.done .tt-batch-orb-face{background:#dcfce7;border-color:#16a34a40;box-shadow:none;color:#15803d}.tt-batch-orb.stopped .tt-batch-orb-face{background:#f1f5f9;color:var(--muted)}@keyframes tt-batch-orbit{to{transform:rotate(360deg)}}@keyframes tt-batch-logo-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.07)}}.tt-batch-stage-text{display:flex;flex-direction:column;gap:3px;min-width:0}.tt-batch-stage-text strong{font-size:.92rem;font-weight:700;color:var(--ink);line-height:1.3}.tt-batch-stage-text span{font-size:.78rem;color:var(--muted);animation:tt-batch-step-in .45s ease both}@keyframes tt-batch-step-in{0%{opacity:0;transform:translateY(3px)}to{opacity:1;transform:none}}.tt-batch-bar{position:relative;height:8px;border-radius:999px;background:#e4ebf2;overflow:hidden;flex-shrink:0}.tt-batch-bar>span{position:relative;display:block;height:100%;border-radius:999px;overflow:hidden;background:var(--blue, #315fbe);transition:width .42s cubic-bezier(.22,.61,.36,1)}.tt-batch-bar.live>span:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(90deg,transparent,rgba(255,255,255,.45),transparent);animation:tt-batch-sheen 1.6s ease-in-out infinite}.tt-batch-bar.done>span{background:#16a34a}@keyframes tt-batch-sheen{0%{transform:translate(-100%)}to{transform:translate(100%)}}.tt-batch-tally{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;text-align:center}.tt-batch-tally>div{padding:10px 6px;border:1px solid var(--border);border-radius:var(--r-lg, 8px);background:var(--surface-hover, #f4f7fa)}.tt-batch-tally strong{display:block;font-size:1.15rem;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.2}.tt-batch-tally em{font-style:normal;font-size:.8rem;font-weight:600;color:var(--muted)}.tt-batch-tally span{display:block;margin-top:2px;font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.tt-batch-tally .warn strong{color:#b45309}.tt-batch-log{list-style:none;margin:0;padding:0;flex:1 1 auto;min-height:110px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-lg, 8px)}.tt-batch-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;font-size:.79rem;border-bottom:1px solid #eef2f6;animation:tt-batch-row-in .3s ease both}.tt-batch-row:last-child{border-bottom:none}.tt-batch-row-name{font-weight:600;color:var(--ink)}.tt-batch-row-meta{color:var(--muted);font-size:.74rem;white-space:nowrap}.tt-batch-row.skipped{background:#fffbeb}.tt-batch-row.skipped .tt-batch-row-meta{color:#92400e}.tt-batch-row.failed{background:#fef2f2}.tt-batch-row.failed .tt-batch-row-meta{color:#991b1b}.tt-batch-row.running{background:var(--blue-light, #e9effb)}.tt-batch-row.running .tt-batch-row-name,.tt-batch-row.running .tt-batch-row-meta{color:var(--blue-dark, #244c9d);font-weight:600}.tt-batch-row.running .tt-batch-row-meta{animation:tt-batch-pulse 1.4s ease-in-out infinite}@keyframes tt-batch-row-in{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}@keyframes tt-batch-pulse{0%,to{opacity:1}50%{opacity:.45}}.tt-batch-summary{margin:0;padding:10px 12px;border-radius:var(--r-lg, 8px);background:#f0fdf4;border-left:3px solid #16a34a;font-size:.81rem;line-height:1.6;color:#14532d}@media (max-width: 640px){.tt-batch-ready,.tt-batch-tally{grid-template-columns:1fr}}@media (prefers-reduced-motion: reduce){.tt-batch-orb-ring,.tt-batch-orb-logo,.tt-batch-bar.live>span:after,.tt-batch-row.running .tt-batch-row-meta,.tt-batch-stage-text span,.tt-batch-row{animation:none}.tt-batch-bar>span{transition:none}}.tt-batch-stop{border-color:#e6b9b2!important;background:#fff7f5!important;color:#b94736!important}.tt-batch-stop:hover:not(:disabled){background:#fdeeeb!important;border-color:#d9a396!important}.cp-panel{display:flex;flex-direction:column;gap:16px}.cp-filters{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:14px 16px;border:1px solid var(--border);border-radius:var(--r-lg, 8px);background:var(--surface-card, #fff)}.cp-filter{display:flex;flex-direction:column;gap:5px;min-width:200px}.cp-filter-grow{flex:1 1 260px}.cp-filter>span{font-size:.74rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.cp-filter select,.cp-filter input{padding:9px 12px;border:1px solid var(--border);border-radius:var(--r-md, 7px);font-size:.85rem;background:#fff}.cp-search-btn{padding:10px 20px;border:none;border-radius:var(--r-md, 7px);background:var(--blue, #315fbe);color:#fff;font-size:.85rem;font-weight:700;cursor:pointer}.cp-search-btn:hover:not(:disabled){background:var(--blue-dark, #244c9d)}.cp-search-btn:disabled{opacity:.55;cursor:not-allowed}.cp-empty{padding:34px 24px;text-align:center;border:1px dashed var(--border-strong, #c9d4df);border-radius:var(--r-lg, 8px);background:var(--surface-hover, #f4f7fa)}.cp-empty h4{margin:0 0 6px;font-size:.95rem;color:var(--ink)}.cp-empty p{margin:0 auto;max-width:62ch;font-size:.82rem;line-height:1.65;color:var(--muted)}.cp-truncated{margin:0;font-size:.78rem;color:#78350f;background:#fffbeb;border-left:3px solid #f59e0b;border-radius:var(--r-md, 7px);padding:9px 12px}.cp-lecturer{border:1px solid var(--border);border-radius:var(--r-lg, 8px);background:var(--surface-card, #fff);overflow:hidden}.cp-lecturer-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:13px 16px;border-bottom:1px solid var(--border);background:var(--surface-hover, #f4f7fa)}.cp-lecturer-head h4{margin:0;font-size:.92rem;font-weight:700;color:var(--ink)}.cp-lecturer-head span{font-size:.76rem;color:var(--muted)}.cp-course{padding:14px 16px;border-bottom:1px solid #eef2f6}.cp-course:last-child{border-bottom:none}.cp-course-head{display:flex;align-items:baseline;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:9px}.cp-course-head strong{font-size:.85rem;color:var(--ink)}.cp-course-title{margin-left:8px;font-size:.8rem;color:var(--muted)}.cp-course-meta{font-size:.74rem;color:var(--muted)}.cp-classes{list-style:none;margin:0;padding:0}.cp-class{display:grid;grid-template-columns:minmax(150px,1.1fr) minmax(0,1.5fr) 62px minmax(150px,1fr);align-items:center;gap:10px;padding:7px 8px;border-radius:var(--r-md, 7px);font-size:.79rem}.cp-class:nth-child(odd){background:#fafcfe}.cp-class.decided{background:var(--blue-light, #e9effb)}.cp-class-pick{display:flex;align-items:center;gap:9px;cursor:pointer}.cp-class-pick input{cursor:pointer}.cp-class.decided .cp-class-pick{cursor:default}.cp-class-code{font-weight:650;color:var(--ink)}.cp-class-code em{font-style:normal;margin-left:7px;font-size:.7rem;font-weight:600;color:var(--muted)}.cp-class-name{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-class-size{text-align:right;font-weight:700;color:var(--ink);font-variant-numeric:tabular-nums}.cp-class-decision{display:flex;align-items:center;gap:8px;justify-content:flex-end}.cp-tag{padding:2px 9px;border-radius:999px;font-size:.68rem;font-weight:700;white-space:nowrap}.cp-tag.combination{background:#dbeafe;color:#1e40af}.cp-tag.split{background:#ede9fe;color:#5b21b6}.cp-undo{border:none;background:none;padding:0;font:inherit;font-size:.72rem;font-weight:650;color:var(--cinnabar-dark, #b94736);text-decoration:underline;cursor:pointer}.cp-undo:disabled{opacity:.5;cursor:not-allowed}.cp-action{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:10px;padding:11px 13px;border-radius:var(--r-md, 7px);background:var(--surface-hover, #f4f7fa);border:1px solid var(--border)}.cp-action-text{display:flex;flex-direction:column;gap:3px;font-size:.79rem;color:var(--ink)}.cp-action-text strong{font-size:.88rem}.cp-ok{font-size:.75rem;color:#15803d}.cp-warn{font-size:.75rem;color:#b45309}.cp-streams{font-size:.73rem;color:var(--muted);font-variant-numeric:tabular-nums}.cp-split-controls{display:flex;align-items:center;gap:10px}.cp-split-controls label{display:flex;align-items:center;gap:6px;font-size:.76rem;color:var(--muted);font-weight:600}.cp-split-controls input{width:62px;padding:7px 9px;border:1px solid var(--border);border-radius:var(--r-md, 7px);font-size:.82rem}.cp-do{padding:9px 16px;border:none;border-radius:var(--r-md, 7px);background:var(--blue, #315fbe);color:#fff;font-size:.8rem;font-weight:700;cursor:pointer;white-space:nowrap}.cp-do:hover:not(:disabled){background:var(--blue-dark, #244c9d)}.cp-do:disabled{opacity:.55;cursor:not-allowed}@media (max-width: 760px){.cp-class{grid-template-columns:1fr auto;row-gap:4px}.cp-class-name{grid-column:1 / -1}.cp-class-decision{grid-column:1 / -1;justify-content:flex-start}.cp-action{flex-direction:column;align-items:stretch}}.cp-class.off-cohort{opacity:.45}.cp-class.off-cohort .cp-class-pick{cursor:not-allowed}.cp-cohort{font-style:normal;margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--blue-light, #e9effb);color:var(--blue-dark, #244c9d);font-size:.68rem;font-weight:700}.cp-decided{border:1px solid var(--border);border-radius:var(--r-lg, 8px);background:var(--surface-card, #fff);overflow:hidden}.cp-decided>header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:11px 16px;border-bottom:1px solid var(--border);background:var(--surface-hover, #f4f7fa)}.cp-decided>header h4{margin:0;font-size:.85rem;font-weight:700;color:var(--ink)}.cp-decided>header span{font-size:.75rem;color:var(--muted);font-weight:600}.cp-decided-empty{margin:0;padding:14px 16px;font-size:.79rem;line-height:1.6;color:var(--muted)}.cp-decided-table{overflow:hidden}.cp-decided-table-head,.cp-decided li{display:grid;grid-template-columns:minmax(0,1fr) 68px;align-items:center;gap:12px}.cp-decided-table-head{padding:9px 16px;border-bottom:1px solid var(--border);background:#fbfcfe;color:var(--muted);font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.cp-decided-columns,.cp-decided-main{display:grid;grid-template-columns:minmax(95px,.7fr) minmax(130px,1.15fr) minmax(150px,1.3fr) minmax(125px,1fr) minmax(105px,.8fr);align-items:center;gap:12px;min-width:0}.cp-decided ul{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto}.cp-decided li{padding:0 16px;font-size:.78rem;border-bottom:1px solid #eef2f6}.cp-decided li:last-child{border-bottom:none}.cp-decided li:hover{background:#f8fafc}.cp-decided-main{width:100%;padding:12px 0;border:0;background:transparent;color:inherit;font:inherit;text-align:left;cursor:pointer}.cp-decided-main:focus-visible{outline:2px solid var(--blue, #4392f1);outline-offset:-2px}.cp-decided-type{display:flex;align-items:center}.cp-decided-course strong{color:var(--ink)}.cp-decided-course em{display:block;font-style:normal;font-size:.71rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-decided-classes{color:var(--ink)}.cp-decided-who,.cp-decided-size{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cp-pending{display:block;font-style:normal;font-size:.68rem;font-weight:700;color:#b45309}@media (max-width: 860px){.cp-decided-table-head{display:none}.cp-decided-table{overflow-x:hidden}.cp-decided li{grid-template-columns:minmax(0,1fr) 58px;gap:8px;padding:0 12px}.cp-decided-main{display:flex;flex-direction:column;align-items:stretch;gap:7px;padding:11px 0}.cp-decided-main>span{display:block;white-space:normal}.cp-decided-main>span:before{content:attr(data-label);display:block;margin-bottom:2px;color:var(--muted);font-size:.68rem;font-weight:650}.cp-decided-course em{white-space:normal}}.vl-panel{display:flex;flex-direction:column;gap:16px}.vl-held,.vl-form{border:1px solid var(--border);border-radius:var(--r-lg, 8px);background:var(--surface-card, #fff);overflow:hidden}.vl-held>header,.vl-form>header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:11px 16px;border-bottom:1px solid var(--border);background:var(--surface-hover, #f4f7fa)}.vl-held>header h4,.vl-form>header h4{margin:0;font-size:.85rem;font-weight:700;color:var(--ink)}.vl-held>header span{font-size:.75rem;color:var(--muted);font-weight:600}.vl-held-toggle{display:flex;align-items:center;gap:8px;margin:-11px -8px -11px -16px;padding:11px 8px 11px 16px;background:none;border:none;font:inherit;cursor:pointer;color:inherit;text-align:left}.vl-held-toggle:hover h4{color:var(--blue-dark, #244c9d)}.vl-held-toggle:focus-visible{outline:2px solid var(--blue, #4392f1);outline-offset:-2px}.vl-held-caret{width:0;height:0;border-left:5px solid currentColor;border-top:4px solid transparent;border-bottom:4px solid transparent;color:var(--muted);transform:rotate(90deg);transition:transform .15s ease}.vl-held--closed .vl-held-caret{transform:rotate(0)}.vl-held--closed>header{border-bottom:none}.vl-held-empty{margin:0;padding:14px 16px;font-size:.79rem;line-height:1.6;color:var(--muted)}.vl-held-table{overflow:hidden}.vl-held-table-head,.vl-held li{display:grid;grid-template-columns:minmax(0,1fr) 72px;align-items:center;gap:12px}.vl-held-table-head{padding:9px 16px;border-bottom:1px solid var(--border);background:#fbfcfe;color:var(--muted);font-size:.66rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.vl-held-columns,.vl-held-main{display:grid;grid-template-columns:minmax(150px,1.3fr) minmax(115px,.85fr) minmax(110px,.9fr) minmax(130px,1fr);align-items:center;gap:12px;min-width:0}.vl-held ul{list-style:none;margin:0;padding:0;max-height:330px;overflow-y:auto}.vl-held li{padding:0 16px;font-size:.78rem;border-bottom:1px solid #eef2f6}.vl-held li:last-child{border-bottom:none}.vl-held li:hover{background:#f8fafc}.vl-held-filters{display:grid;grid-template-columns:minmax(150px,1fr) minmax(190px,1.35fr) minmax(125px,.7fr) minmax(145px,.8fr) auto;align-items:end;gap:10px;padding:12px 16px;border-bottom:1px solid #eef2f6;background:var(--surface-app, #f8fafc)}.vl-held-filter{display:flex;min-width:0;flex-direction:column;gap:5px}.vl-held-filter>span{font-size:.68rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.vl-held-filter input,.vl-held-filter select{width:100%;min-width:0;height:36px;padding:7px 9px;border:1px solid var(--border);border-radius:var(--r-md, 7px);background:var(--surface-card, #fff);color:var(--ink);font:inherit;font-size:.78rem}.vl-held-filter-clear{height:36px;padding:0 10px;border:1px solid var(--border);border-radius:var(--r-md, 7px);background:#fff;color:var(--blue-dark, #244c9d);font:inherit;font-size:.74rem;font-weight:650;white-space:nowrap;cursor:pointer}.vl-held-filter-clear:disabled{opacity:.5;cursor:not-allowed}.vl-held-filter-count{grid-column:1 / -1;justify-self:end;margin-top:-3px;font-size:.7rem;color:var(--muted)}.vl-held-class strong{color:var(--ink)}.vl-cohort{font-style:normal;margin-left:6px;padding:1px 7px;border-radius:999px;background:var(--blue-light, #e9effb);color:var(--blue-dark, #244c9d);font-size:.66rem;font-weight:700}.vl-held-venue{color:var(--ink);font-weight:600}.vl-held-venue em{font-style:normal;font-weight:400;color:var(--muted);font-size:.72rem}.vl-held-days{color:var(--ink)}.vl-held-note{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vl-release{justify-self:stretch;border:1px solid #f0d2ce;border-radius:7px;background:#fff;padding:6px 7px;font:inherit;font-size:.73rem;font-weight:650;color:var(--cinnabar-dark, #b94736);cursor:pointer}.vl-release:hover:not(:disabled){background:#fff7f6;border-color:#e5b8b1}.vl-release:disabled{opacity:.5;cursor:not-allowed}.vl-fields{display:flex;gap:12px;flex-wrap:wrap;padding:14px 16px 0}.vl-field{display:flex;flex-direction:column;gap:5px;min-width:190px}.vl-field-grow{flex:1 1 260px}.vl-field>span{font-size:.74rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.vl-field>span em{font-style:normal;font-weight:400;text-transform:none;letter-spacing:0;margin-left:5px}.vl-field select,.vl-field input{padding:9px 12px;border:1px solid var(--border);border-radius:var(--r-md, 7px);font-size:.84rem;background:#fff}.vl-days{padding:14px 16px 0}.vl-days-label{display:block;margin-bottom:6px;font-size:.74rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.vl-days-row{display:flex;gap:8px;flex-wrap:wrap}.vl-day{padding:8px 15px;border:1px solid var(--border);border-radius:999px;background:#fff;font-size:.8rem;font-weight:600;color:var(--ink);cursor:pointer}.vl-day:hover:not(:disabled){border-color:var(--blue, #315fbe)}.vl-day.on{background:var(--blue, #315fbe);border-color:var(--blue, #315fbe);color:#fff}.vl-day.off{opacity:.4;text-decoration:line-through}.vl-day.partly:not(.on){border-style:dashed}.vl-day:disabled{cursor:not-allowed}.vl-window-busy{margin:10px 16px 0;padding:8px 12px;border-left:3px solid var(--blue, #315fbe);background:#315fbe0f;border-radius:var(--r-md, 7px);font-size:.82rem;color:var(--muted, #5b6472)}.vl-notes{list-style:none;margin:14px 16px 0;padding:0;display:flex;flex-direction:column;gap:6px}.vl-note{padding:8px 12px;border-radius:var(--r-md, 7px);font-size:.78rem;line-height:1.55;border-left:3px solid transparent}.vl-note.error{background:#fef2f2;border-left-color:#dc2626;color:#991b1b}.vl-note.warn{background:#fffbeb;border-left-color:#f59e0b;color:#78350f}.vl-note.info{background:var(--surface-hover, #f4f7fa);border-left-color:var(--border-strong, #c9d4df);color:var(--muted)}.vl-actions{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;padding:14px 16px 16px}.vl-save{padding:10px 20px;border:none;border-radius:var(--r-md, 7px);background:var(--blue, #315fbe);color:#fff;font-size:.84rem;font-weight:700;cursor:pointer;white-space:nowrap}.vl-save:hover:not(:disabled){background:var(--blue-dark, #244c9d)}.vl-save:disabled{opacity:.5;cursor:not-allowed}@media (max-width: 860px){.vl-held-table-head{display:none}.vl-held li{grid-template-columns:minmax(0,1fr) 62px;gap:8px;padding:0 12px}.vl-held .vl-held-main{display:flex;flex-direction:column;align-items:stretch;gap:7px;padding:11px 0}.vl-held-main>span{display:block;white-space:normal}.vl-held-main>span:before{content:attr(data-label);display:block;margin-bottom:2px;color:var(--muted);font-size:.68rem;font-weight:650}.vl-held-note{white-space:normal}.vl-held-filters{grid-template-columns:repeat(2,minmax(0,1fr))}.vl-held-filter-clear{justify-self:start}}.cp-cross{border-style:dashed}.cp-cross-toggle{background:none;border:none;padding:0;cursor:pointer;font:inherit;font-size:.85rem;font-weight:600;color:#4392f1}.cp-cross-toggle:hover{color:#2b74d4}.cp-cross-hint{margin:8px 0 12px;font-size:.8rem;line-height:1.5;color:#6a7a96}.cp-cross-code{font-weight:700;color:#4392f1}.cp-cross-title{display:block;margin-top:2px;font-style:normal;font-weight:500;font-size:.74rem;color:#6a7a96}.cp-decided-toggle{display:flex;align-items:center;gap:8px;background:none;border:none;padding:0;cursor:pointer;font:inherit;color:inherit}.cp-decided-toggle h4{margin:0}.cp-decided-caret{font-weight:700;color:#4392f1}.tt-page-head h1{margin:0 0 4px}.tt-page-head p{margin:0 0 18px;max-width:62ch;font-size:.86rem;line-height:1.55;color:#6a7a96}.tt-planning-bar{display:flex;align-items:center;flex-wrap:wrap;margin-bottom:16px}@media (max-width: 720px){.tt-planning-bar{align-items:stretch;flex-direction:column}}.cp-class-tools{display:inline-flex;align-items:center;gap:6px;margin-left:10px}.cp-class-tool{padding:2px 8px;border:1px solid rgba(67,146,241,.35);border-radius:999px;background:#fff;color:#2b74d4;font:inherit;font-size:.7rem;font-weight:700;text-decoration:none;cursor:pointer;white-space:nowrap}.cp-class-tool:hover{background:#4392f114}.cp-class-tool.danger{border-color:#c0392b59;color:#c0392b}.cp-class-tool.danger:hover{background:#c0392b12}.cp-class-tool:disabled{opacity:.5;cursor:not-allowed}.cp-panel{display:flex;flex-direction:column}.cp-lecturer{scroll-margin-top:8px}.cp-unassign p{margin:0 0 12px;font-size:.9rem}.cp-unassign-facts{list-style:none;margin:0 0 12px;padding:0;border:1px solid rgba(15,31,56,.1);border-radius:8px;overflow:hidden}.cp-unassign-facts li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 12px;font-size:.84rem}.cp-unassign-facts li+li{border-top:1px solid rgba(15,31,56,.07)}.cp-unassign-facts span{color:#6a7a96}.cp-unassign-note{padding:9px 12px;border-radius:8px;background:#4392f112;color:#44546f;font-size:.82rem;line-height:1.5}.cp-unassign-actions{display:flex;justify-content:flex-end;gap:10px}.cp-unassign-cancel,.cp-unassign-go{padding:9px 16px;border-radius:8px;font:inherit;font-weight:700;cursor:pointer}.cp-unassign-cancel{border:1px solid rgba(15,31,56,.18);background:#fff;color:#44546f}.cp-unassign-go{border:none;background:#c0392b;color:#fff}.cp-unassign-go:disabled,.cp-unassign-cancel:disabled{opacity:.6;cursor:not-allowed}.tt-combo-status.stale{background:#d645451f;color:#c0392b;border:1px solid rgba(214,69,69,.35)}.tt-request-stale{margin:6px 0 0;padding:7px 10px;border-radius:6px;background:#d6454512;color:#c0392b;font-size:.78rem;line-height:1.45}.vl-window{margin-top:12px;padding:12px 14px;border:1px solid rgba(15,31,56,.1);border-radius:10px;background:#4392f10a}.vl-window-all{display:flex;align-items:center;gap:9px;font-size:.86rem;font-weight:600;cursor:pointer}.vl-window-times{display:flex;gap:12px;flex-wrap:wrap;margin-top:12px}.vl-sittings{margin-top:12px;padding:12px 14px;border:1px dashed rgba(67,146,241,.4);border-radius:10px}.vl-sittings header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:10px}.vl-sittings h5{margin:0;font-size:.88rem}.vl-sittings header span{font-size:.76rem;color:#6a7a96}.vl-sitting-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}.vl-sitting-list li{display:grid;grid-template-columns:minmax(0,1.4fr) auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:8px 10px;border:1px solid rgba(15,31,56,.09);border-radius:8px;font-size:.8rem}.vl-sitting-course{display:flex;flex-direction:column;min-width:0}.vl-sitting-course em{font-style:normal;font-size:.74rem;color:#6a7a96;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vl-sitting-when{font-weight:700;color:#2b74d4;white-space:nowrap}.vl-sitting-who{color:#6a7a96;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vl-sitting-remove{background:none;border:none;cursor:pointer;font-size:1.1rem;line-height:1;color:#6a7a96;padding:0 4px}.vl-sitting-remove:hover{color:#c0392b}.vl-sitting-add{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.vl-sitting-btn{padding:8px 16px;border:1px solid rgba(67,146,241,.45);border-radius:8px;background:#fff;color:#2b74d4;font:inherit;font-weight:700;cursor:pointer}.vl-sitting-btn:disabled{opacity:.5;cursor:not-allowed}.vl-sitting-hint{margin:10px 0 0;font-size:.78rem;color:#6a7a96}.vl-about-to-save{margin:12px 0 0;padding:10px 12px;border-radius:8px;background:#4392f112;color:#44546f;font-size:.82rem;line-height:1.55}.vl-held-main{display:grid;width:100%;background:none;border:none;padding:12px 0;font:inherit;text-align:left;cursor:pointer;color:inherit}.vl-held-main:focus-visible{outline:2px solid var(--blue, #4392f1);outline-offset:-2px}.vl-held-main:disabled{cursor:wait}.vl-held-detail{grid-column:1 / -1;margin-top:8px;padding:10px 12px;border-radius:8px;background:#4392f10d}.vl-held-day+.vl-held-day{margin-top:10px;padding-top:10px;border-top:1px solid rgba(15,31,56,.08)}.vl-held-day header{display:flex;align-items:baseline;gap:10px;font-size:.82rem}.vl-held-day header span{color:#2b74d4;font-weight:700}.vl-held-day ul{list-style:none;margin:6px 0 0;padding:0;display:flex;flex-direction:column;gap:4px}.vl-held-day li{display:grid;grid-template-columns:auto auto minmax(0,1fr);gap:10px;font-size:.78rem;color:#44546f}.vl-held-day li em{font-style:normal;color:#6a7a96;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vl-held-empty-day{margin:6px 0 0;font-size:.78rem;line-height:1.5;color:#6a7a96}.vl-loading{font-size:.78rem;font-weight:500;color:#6a7a96}.vl-held-edit{margin-left:auto;border:none;background:none;padding:0;font:inherit;font-size:.73rem;font-weight:650;color:#2b74d4;text-decoration:underline;cursor:pointer}.vl-held-edit:hover{color:var(--blue-dark, #244c9d)}.planning-detail{display:flex;flex-direction:column;gap:20px}.planning-detail-lede{margin:0;color:var(--muted);font-size:.88rem;line-height:1.55}.planning-detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.planning-detail-grid>div{display:flex;min-width:0;flex-direction:column;gap:5px;padding:12px 13px;border:1px solid #e5eaf0;border-radius:9px;background:#fafbfd}.planning-detail-grid>.planning-detail-wide{grid-column:1 / -1}.planning-detail-grid>div>span{color:var(--muted);font-size:.68rem;font-weight:700;letter-spacing:.035em;text-transform:uppercase}.planning-detail-grid>div>strong{color:var(--ink);font-size:.82rem;font-weight:600;line-height:1.5;overflow-wrap:anywhere}.planning-detail-grid>.planning-detail-warning{border-color:#f2d49b;background:#fffbeb}.planning-detail-section{display:flex;flex-direction:column;gap:12px}.planning-detail-section h3{margin:0;padding-bottom:9px;border-bottom:1px solid #e5eaf0;color:var(--ink);font-size:.84rem}.planning-detail-section .vl-held-day{margin:0;padding:13px;border:1px solid #e5eaf0;border-radius:9px;background:#fff}.planning-detail-section .vl-held-day+.vl-held-day{margin:0;padding-top:13px}@media (max-width: 560px){.planning-detail-grid{grid-template-columns:1fr}.planning-detail-grid>.planning-detail-wide{grid-column:auto}}.vle{display:flex;flex-direction:column;gap:18px}.vle-lede{margin:0;font-size:.8rem;line-height:1.6;color:var(--muted)}.vle-lede strong{color:var(--ink)}.vle-lede em{font-style:normal}.vle-section h5{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin:0;font-size:.78rem;font-weight:700;color:var(--ink)}.vle-section h5 span{font-size:.72rem;font-weight:600;color:var(--muted)}.vle-check{display:flex;align-items:center;gap:8px;font-size:.79rem;color:var(--ink);cursor:pointer}.vle-warn{margin:0;padding:9px 11px;border-radius:7px;background:#b9473614;border-left:3px solid var(--cinnabar-dark, #b94736);font-size:.77rem;line-height:1.55;color:var(--cinnabar-dark, #b94736)}.vle-hint{margin:0;font-size:.75rem;line-height:1.55;color:var(--muted)}.vle-sittings{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.vle-sittings li{display:grid;grid-template-columns:auto auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:7px 10px;border-radius:7px;background:var(--surface-hover, #f4f7fa);font-size:.78rem}.vle-sitting-when{color:#2b74d4;font-weight:650}.vle-sitting-who{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.vl-form-body,.vle-section{min-width:0;margin:0;padding:0;border:none}.vle-section{display:flex;flex-direction:column;gap:10px;padding-top:14px;border-top:1px solid var(--border)}.vle-section:first-of-type{padding-top:0;border-top:none}.vl-form-body:disabled,.vle-section:disabled{opacity:.55;cursor:progress}.vl-held li.releasing{opacity:.5;cursor:progress}.vl-save .inline-loader,.vl-release .inline-loader,.vl-sitting-btn .inline-loader,.vl-sitting-remove .inline-loader,.dialog-primary-btn .inline-loader{color:inherit}.vl-save .inline-loader-spin,.dialog-primary-btn .inline-loader-spin{opacity:.85}.vl-release .inline-loader{text-decoration:none}.vl-sitting-remove .inline-loader{font-size:.78rem;vertical-align:-1px}.cgn{margin:0;padding:10px 12px;border-radius:7px;border-left:3px solid var(--blue, #4392f1);background:#4392f112;font-size:.78rem;line-height:1.55}.cgn--warn{border-left-color:#d8921f;background:#d8921f17}.cgn-lead{margin:0;color:var(--ink)}.cgn-action{display:inline-block;margin-top:8px;padding:5px 12px;border:none;border-radius:6px;background:var(--blue, #4392f1);color:#fff;font:inherit;font-size:.75rem;font-weight:650;text-decoration:none;cursor:pointer}.cgn-action:hover{background:var(--blue-dark, #244c9d)}.cgn-sub{margin:10px 0 0;font-size:.74rem;color:var(--muted)}.cgn-courses{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 10px}.cgn-courses li{display:inline-flex;align-items:baseline;gap:5px;max-width:100%}.cgn-courses a,.cgn-courses button{font:inherit;cursor:pointer;padding:2px 8px;border-radius:999px;background:var(--surface-card, #fff);border:1px solid var(--border);color:var(--blue-dark, #244c9d);font-size:.74rem;font-weight:700;text-decoration:none;white-space:nowrap}.cgn-courses a:hover,.cgn-courses button:hover{border-color:var(--blue, #4392f1)}.cgn-courses em{font-style:normal;font-size:.73rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cgn-more{font-size:.74rem;color:var(--muted);align-self:center}.cgn-aside{margin:8px 0 0;font-size:.74rem;color:var(--muted)}.cgn-aside a{color:var(--blue-dark, #244c9d)}.cgn-aside--quiet{opacity:.75}.vl-field-route{margin-top:5px;font-size:.73rem;line-height:1.5;color:var(--muted)}.vl-field-route a{color:var(--blue-dark, #244c9d);font-weight:650}.csd{display:flex;flex-direction:column;gap:18px}.csd-lede{margin:0;font-size:.8rem;line-height:1.6;color:var(--muted)}.csd-lede strong{color:var(--ink)}.csd-section{display:flex;flex-direction:column;gap:10px;min-width:0;margin:0;padding:14px 0 0;border:none;border-top:1px solid var(--border)}.csd-section:first-of-type{padding-top:0;border-top:none}.csd-section:disabled{opacity:.55;cursor:progress}.csd-section h5{margin:0;font-size:.78rem;font-weight:700;color:var(--ink)}.csd-modes{display:flex;gap:6px}.csd-modes button{flex:1;display:flex;flex-direction:column;gap:2px;padding:9px 12px;text-align:left;border:1px solid var(--border);border-radius:7px;background:var(--surface-card, #fff);font:inherit;font-size:.76rem;font-weight:650;color:var(--muted);cursor:pointer}.csd-modes button.on{border-color:var(--blue, #4392f1);background:#4392f117;color:var(--blue-dark, #244c9d)}.csd-modes button em{font-style:normal;font-size:.7rem;font-weight:500;opacity:.75}.csd-row{display:flex;gap:12px;flex-wrap:wrap}.csd-hint{margin:0;font-size:.74rem;line-height:1.55;color:var(--muted)}.csd-problem{margin:0;padding:8px 11px;border-radius:7px;border-left:3px solid #d8921f;background:#d8921f1a;font-size:.77rem;line-height:1.5;color:#8a5a10}.vl-add-course{align-self:flex-start;margin-top:5px;padding:0;border:none;background:none;font:inherit;font-size:.72rem;font-weight:650;color:var(--blue-dark, #244c9d);text-decoration:underline;cursor:pointer}.vl-add-course:hover{color:var(--blue, #4392f1)}.vl-field-label{display:flex;flex-direction:column;gap:5px}.csd-pick{display:flex;flex-direction:column;gap:10px}.csd-search{display:flex;align-items:center;gap:10px;padding:0 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-card, #fff)}.csd-search:focus-within{border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f124}.csd-search input{flex:1;min-width:0;padding:10px 0;border:none;background:none;font:inherit;font-size:.85rem;color:var(--ink);outline:none}.csd-prompt{margin:0;padding:18px 12px;border:1px dashed var(--border);border-radius:8px;text-align:center;font-size:.79rem;line-height:1.6;color:var(--muted)}.csd-inline-link{border:none;background:none;padding:0;font:inherit;font-weight:650;color:var(--blue-dark, #244c9d);text-decoration:underline;cursor:pointer}.csd-results{list-style:none;margin:0;padding:4px;max-height:300px;overflow-y:auto;border:1px solid var(--border);border-radius:8px;background:var(--surface-card, #fff)}.csd-results li+li{margin-top:2px}.csd-results button{display:grid;grid-template-columns:92px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:8px 10px;border:none;border-radius:6px;background:none;font:inherit;text-align:left;cursor:pointer}.csd-results button:hover{background:var(--surface-hover, #f4f7fa)}.csd-results button.on{background:#4392f11f;box-shadow:inset 0 0 0 1px var(--blue, #4392f1)}.csd-result-code{font-size:.78rem;font-weight:700;color:var(--ink);white-space:nowrap}.csd-result-title{font-size:.78rem;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.csd-result-title em{font-style:italic;color:var(--muted)}.csd-result-meta{font-size:.71rem;color:var(--muted);white-space:nowrap}.csd-result-on{grid-column:1 / -1;font-size:.68rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase;color:#2b7a4b}.csd-count{margin:0;font-size:.73rem;color:var(--muted)}.csd-picked{margin:0;padding:9px 11px;border-radius:7px;border-left:3px solid var(--blue, #4392f1);background:#4392f114;font-size:.78rem;line-height:1.5;color:var(--ink)}.csd-new{display:flex;flex-direction:column;gap:10px}@media (max-width: 620px){.csd-results button{grid-template-columns:76px minmax(0,1fr)}.csd-result-meta{display:none}}.vl-modes{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;padding:14px 16px 0}.vl-mode{display:flex;flex-direction:column;gap:4px;padding:11px 13px;border:1px solid var(--border);border-radius:8px;background:var(--surface-card, #fff);font:inherit;text-align:left;cursor:pointer}.vl-mode:hover{border-color:#b9c6d6}.vl-mode.on{border-color:var(--blue, #4392f1);background:#4392f114;box-shadow:inset 0 0 0 1px var(--blue, #4392f1)}.vl-mode strong{font-size:.83rem;font-weight:700;color:var(--ink)}.vl-mode.on strong{color:var(--blue-dark, #244c9d)}.vl-mode span{font-size:.75rem;line-height:1.5;color:var(--muted)}.vl-hours{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.vl-hours-label{font-size:.74rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-right:2px}.vl-hours-pick{padding:5px 12px;border:1px solid var(--border);border-radius:999px;background:var(--surface-card, #fff);font:inherit;font-size:.76rem;font-weight:650;color:var(--muted);cursor:pointer}.vl-hours-pick.on{border-color:var(--blue, #4392f1);background:#4392f11a;color:var(--blue-dark, #244c9d)}.vl-tie-tag{display:inline-block;padding:1px 8px;border-radius:999px;background:#eaf3ec;color:#2b7a4b;font-size:.7rem;font-weight:700}.vl-sitting-lede{margin:0 0 4px;font-size:.77rem;line-height:1.55;color:var(--muted)}.vl-sitting-lede strong{color:var(--ink)}.vl-activity-tag{font-style:normal;padding:1px 8px;border-radius:999px;background:#f1ecfb;color:#5b3fa8;font-size:.72rem;font-weight:700}.tv-activity-badge{display:inline-block;margin-bottom:3px;padding:1px 6px;border-radius:10px;background:#ede6fb;color:#5b3fa8;font-size:.6rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase}.vl-held-actions{display:inline-flex;align-items:center;gap:12px}.vl-bulk-btn{padding:4px 11px;border:1px solid var(--border);border-radius:999px;background:var(--surface-card, #fff);font:inherit;font-size:.73rem;font-weight:650;color:var(--blue-dark, #244c9d);cursor:pointer}.vl-bulk-btn:hover{border-color:var(--blue, #4392f1)}.vl-merge-none{margin:0 0 12px;font-size:.78rem;line-height:1.55;color:var(--muted)}.vl-merge-cross{margin:6px 0 0;font-size:.74rem;line-height:1.5;color:var(--muted)}.vl-merge-course{display:flex;flex-direction:column;gap:4px;margin:12px 16px 0;padding:10px 12px;border:1px solid var(--border);border-radius:8px;background:var(--surface-app, #f8fafc)}.vl-merge-course h5{margin:0;color:var(--muted);font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.vl-merge-course strong{color:var(--ink);font-size:.84rem}.vl-merge-tag{display:inline-block;max-width:min(280px,100%);margin-left:6px;padding:1px 7px;border-radius:999px;background:#4392f124;font-size:.68rem;font-style:normal;font-weight:650;color:var(--blue-dark, #244c9d);overflow:hidden;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap}.vl-merge-tag.stale{background:#b9473624;color:var(--cinnabar-dark, #b94736)}.vl-preflight{display:flex;align-items:center;gap:7px;flex:1 1 100%;margin:0;padding:8px 11px;border-radius:6px;font-size:.78rem;line-height:1.5}.vl-preflight.ok{background:#2e7d321a;color:#2e6b35}.vl-preflight.bad{background:#b947361f;color:var(--cinnabar-dark, #b94736)}.vl-preflight strong{font-weight:700}.vl-release-all{padding:4px 11px;border:1px solid var(--border);border-radius:999px;background:var(--surface-card, #fff);font:inherit;font-size:.73rem;font-weight:650;color:var(--muted);cursor:pointer}.vl-release-all:hover{border-color:var(--cinnabar-dark, #b94736);color:var(--cinnabar-dark, #b94736)}.vl-release-all.armed{border-color:var(--cinnabar-dark, #b94736);background:var(--cinnabar-dark, #b94736);color:#fff}.vl-release-all:disabled{opacity:.5;cursor:not-allowed}.vlb{display:flex;flex-direction:column;gap:14px}.vlb-lede{margin:0;font-size:.8rem;line-height:1.6;color:var(--muted)}.vlb-lede strong{color:var(--ink)}.vlb-template{align-self:flex-start;padding:6px 13px;border:1px solid var(--border);border-radius:7px;background:var(--surface-card, #fff);font:inherit;font-size:.78rem;font-weight:650;color:var(--blue-dark, #244c9d);cursor:pointer}.vlb-drop{padding:30px 20px;border:2px dashed var(--border);border-radius:10px;text-align:center;font-size:.82rem;color:var(--muted);cursor:pointer}.vlb-drop.on{border-color:var(--blue, #4392f1);background:#4392f10d;color:var(--ink)}.vlb-counts{display:flex;flex-wrap:wrap;gap:8px}.vlb-counts>span{padding:3px 10px;border-radius:999px;font-size:.74rem;font-weight:700}.vlb-ok{background:#e7f3ec;color:#2b7a4b}.vlb-dup{background:#eef2f7;color:#51607a}.vlb-skip{background:#f4f1fb;color:#5b3fa8}.vlb-bad{background:#fdecea;color:#b3261e}.vlb-table-wrap{max-height:380px;overflow:auto;border:1px solid var(--border);border-radius:8px}.vlb-table{width:100%;border-collapse:collapse;font-size:.76rem}.vlb-table th{position:sticky;top:0;z-index:1;padding:7px 9px;text-align:left;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface-hover, #f4f7fa);border-bottom:1px solid var(--border);white-space:nowrap}.vlb-table td{padding:7px 9px;border-bottom:1px solid #eef2f6;vertical-align:top}.vlb-table tr.vlb-bad td{background:#b3261e0d}.vlb-table tr.vlb-dup td{background:#51607a0d}.vlb-table tr.vlb-skip td{opacity:.55}.vlb-tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:.68rem;font-weight:700;white-space:nowrap}.vlb-reason{display:block;margin-top:3px;font-style:normal;font-size:.72rem;line-height:1.45;color:#8a4b45}.vlb-reason--loud{margin:0 0 8px;font-weight:650;color:#b3261e}.vlb-mend{display:flex;flex-direction:column;gap:14px}.vlb-mend-row{padding:12px;border:1px solid var(--border);border-left:3px solid #b3261e;border-radius:8px;background:var(--surface-card, #fff)}.vlb-mend-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.tt-view-incremental{min-height:38px;padding:0 14px;border:1px solid #b9cbe0;border-radius:9px;background:#fff;color:#245da4;font-weight:700;white-space:nowrap}.tt-view-incremental:hover:not(:disabled){border-color:#6d9bd0;background:#f3f8ff}.tt-view-incremental:disabled{cursor:not-allowed;opacity:.55}.tt-incremental-overlay{position:fixed;z-index:1400;top:0;right:0;bottom:0;left:0;display:flex;justify-content:flex-end;background:#0d192b61;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.tt-incremental-panel{display:flex;flex-direction:column;width:min(620px,100vw);height:100%;background:#f8fafc;box-shadow:-16px 0 48px #0f1f3833;color:#20324b}.tt-incremental-header{position:relative;padding:26px 28px 20px;border-bottom:1px solid #e0e7f0;background:#fff}.tt-incremental-eyebrow{color:#5277a6;font-size:.69rem;font-weight:800;letter-spacing:.11em}.tt-incremental-header h2{margin:7px 38px 6px 0;color:#1a2e48;font-size:1.25rem;line-height:1.3}.tt-incremental-header p{max-width:500px;margin:0;color:#64758d;font-size:.85rem;line-height:1.55}.tt-incremental-close{position:absolute;top:20px;right:22px;display:grid;width:34px;height:34px;place-items:center;border:1px solid #dce4ee;border-radius:9px;background:#fff;color:#536780;font-size:1.45rem;line-height:1;cursor:pointer}.tt-incremental-summary{display:flex;flex-wrap:wrap;gap:8px;padding:14px 24px;border-bottom:1px solid #e4eaf2;background:#fff}.tt-incremental-summary span{padding:6px 10px;border:1px solid #e1e8f1;border-radius:999px;background:#f8fafc;color:#5c6e86;font-size:.76rem}.tt-incremental-summary strong{margin-right:3px;color:#1f3c5e}.tt-incremental-sections{flex:1;overflow:auto;padding:4px 24px 22px}.tt-incremental-section{margin-top:19px}.tt-incremental-section h3{display:flex;align-items:center;justify-content:space-between;margin:0 0 9px;color:#314761;font-size:.88rem}.tt-incremental-section h3 span{display:inline-grid;min-width:23px;height:23px;place-items:center;padding:0 6px;border-radius:999px;background:#e8eef6;color:#4c6380;font-size:.72rem}.tt-incremental-row{margin:0 0 8px;padding:12px 14px;border:1px solid #e0e7f0;border-radius:10px;background:#fff}.tt-incremental-row>strong{display:block;margin-top:6px;color:#273c57;font-size:.84rem}.tt-incremental-row p{margin:4px 0 0;color:#687b94;font-size:.78rem;line-height:1.5;overflow-wrap:anywhere}.tt-incremental-row p b{padding:0 4px;color:#486f9d}.tt-incremental-badge{display:inline-flex;padding:4px 8px;border-radius:999px;background:#edf3fa;color:#4b6480;font-size:.66rem;font-weight:800;letter-spacing:.02em}.tt-incremental-badge.is-added,.tt-incremental-badge.is-reassigned{background:#e8f5ed;color:#247244}.tt-incremental-badge.is-removed{background:#fff0ef;color:#a33e37}.tt-incremental-badge.is-moved,.tt-incremental-badge.is-moved_for_constraint,.tt-incremental-badge.is-structure_changed{background:#fff4df;color:#8b5c13}.tt-incremental-badge.is-kept{background:#eef2f7;color:#4a5d75}.tt-incremental-summary span.is-warning{border-color:#f5c2bd;background:#fff4f3;color:#a33e37}.tt-incremental-summary span.is-warning strong{color:#a33e37}.tt-incremental-fold>summary{list-style:none;cursor:pointer}.tt-incremental-fold>summary::-webkit-details-marker{display:none}.tt-incremental-chevron{flex-shrink:0;color:#6c7f94;transition:transform .15s ease}.tt-incremental-fold[open]>summary .tt-incremental-chevron{transform:rotate(90deg)}.tt-incremental-fold>summary:hover h3,.tt-incremental-fold>summary:hover .tt-incremental-chevron{color:#1f3c5e}.tt-incremental-fold>summary:focus-visible{outline:2px solid #4392f1;outline-offset:2px;border-radius:6px}.tt-incremental-fold>summary h3{justify-content:flex-start;gap:6px}.tt-incremental-fold>summary h3 span{margin-left:auto}.tt-incremental-note{margin:0 0 9px;color:#6c7f94;font-size:.76rem}.tt-incremental-section.is-warning .tt-incremental-row{border-color:#f0d6a8;background:#fffcf5}.tt-incremental-section.is-warning .tt-incremental-row>strong{color:#7a5518}.tt-incremental-empty{display:flex;flex-direction:column;gap:6px;margin:24px;padding:20px;border:1px solid #d8e7dd;border-radius:12px;background:#f3faf5;color:#345b43;font-size:.85rem;line-height:1.5}.tt-incremental-empty span{color:#678170}.tt-incremental-footer{padding:14px 24px 18px;border-top:1px solid #e0e7f0;background:#fff}.tt-incremental-footer p{margin:0 0 12px;color:#657790;font-size:.76rem;line-height:1.5}.tt-incremental-footer>div{display:flex;justify-content:flex-end;gap:9px}@media (max-width: 640px){.tt-view-header-actions{flex-wrap:wrap;justify-content:flex-end}.tt-incremental-header{padding:22px 20px 16px}.tt-incremental-summary{padding:12px 18px}.tt-incremental-sections,.tt-incremental-footer{padding-right:18px;padding-left:18px}.tt-incremental-footer>div{flex-direction:column-reverse}.tt-incremental-footer>div button{width:100%}}.planning-resolver{display:flex;flex-direction:column;gap:12px;padding:16px 18px;border:1px solid #dbe4ef;border-radius:12px;background:#fff}.planning-resolver-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.planning-resolver-head h3{margin:0;color:#1d334f;font-size:.98rem}.planning-resolver-head p{margin:4px 0 0;color:#6a7b91;font-size:.78rem;line-height:1.45}.planning-resolver-tools{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex:0 0 auto}.planning-resolver-count,.planning-resolver-severity{display:inline-flex;align-items:center;width:fit-content;padding:4px 8px;border:1px solid transparent;border-radius:999px;font-size:.67rem;font-weight:800;white-space:nowrap}.planning-resolver-count.clean,.planning-resolver-severity.info{color:#216344;background:#edf8f1;border-color:#cce9d6}.planning-resolver-count.has-warnings,.planning-resolver-severity.warning{color:#80530d;background:#fff7e8;border-color:#f1dcad}.planning-resolver-count.has-errors,.planning-resolver-severity.error{color:#9d2929;background:#fff0f0;border-color:#f3caca}.planning-resolver-refresh,.planning-resolver-load-error button,.planning-resolver-issue-actions button{min-height:30px;padding:0 10px;border:1px solid #ccd8e7;border-radius:7px;background:#fff;color:#315d90;font-size:.73rem;font-weight:700;cursor:pointer}.planning-resolver-refresh:hover:not(:disabled),.planning-resolver-load-error button:hover:not(:disabled),.planning-resolver-issue-actions button:hover:not(:disabled){border-color:#88a9d0;background:#f4f8fd}.planning-resolver-refresh:disabled,.planning-resolver-load-error button:disabled,.planning-resolver-issue-actions button:disabled{cursor:wait;opacity:.6}.planning-resolver-empty,.planning-resolver-pending{margin:0;padding:10px 12px;border-radius:8px;background:#f5f8fb;color:#60738c;font-size:.78rem;line-height:1.45}.planning-resolver-pending{border:1px solid #f1dcad;background:#fffaf0;color:#80530d}.planning-resolver-load-error{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 12px;border:1px solid #f0caca;border-radius:8px;background:#fff5f5;color:#903434;font-size:.77rem}.planning-resolver-list{display:flex;flex-direction:column;gap:8px}.planning-resolver-issue{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:11px 12px;border:1px solid #eed9a9;border-radius:9px;background:#fffdf7}.planning-resolver-issue.error{border-color:#efcece;background:snow}.planning-resolver-issue-copy{min-width:0}.planning-resolver-issue-title{display:flex;align-items:center;flex-wrap:wrap;gap:7px;color:#263c56;font-size:.81rem}.planning-resolver-issue-copy p{margin:6px 0 0;color:#53677f;font-size:.77rem;line-height:1.45;overflow-wrap:anywhere}.planning-resolver-issue-copy small{display:block;margin-top:5px;color:#78879a;font-size:.71rem;line-height:1.4}.planning-resolver-issue-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:6px;flex:0 0 auto}.planning-resolver-foot{color:#8794a6;font-size:.67rem;text-align:right}@media (max-width: 640px){.planning-resolver{padding:14px}.planning-resolver-head{flex-direction:column}.planning-resolver-tools{justify-content:flex-start}.planning-resolver-issue{flex-direction:column}.planning-resolver-issue-actions{justify-content:flex-start}.planning-resolver-load-error{align-items:flex-start;flex-direction:column}}.planning-resolver--bar{gap:10px}.planning-resolver-headings{min-width:0}.planning-resolver-count.is-button{gap:8px;cursor:pointer;transition:border-color .12s ease,filter .12s ease}.planning-resolver-count.is-button:hover{filter:brightness(.97)}.planning-resolver-count.is-button:focus-visible{outline:2px solid #315d90;outline-offset:2px}.planning-resolver-count-hint{padding-left:8px;border-left:1px solid currentColor;font-weight:700;opacity:.72}.planning-resolver-drawer-intro{margin:0 0 14px;color:#6a7b91;font-size:.78rem;line-height:1.5}.planning-resolver-drawer .planning-resolver-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:16px;padding-top:12px;border-top:1px solid #e6edf5;text-align:left}.pr-rooms{list-style:none;margin:0;padding:0}.pr-rooms>li{display:flex;justify-content:space-between;gap:16px;padding:12px 16px;border-bottom:1px solid var(--border)}.pr-rooms>li:last-child{border-bottom:none}.pr-rooms>li.releasing{opacity:.55}.pr-room-main{display:flex;flex-direction:column;gap:4px;min-width:0}.pr-room-main>strong{font-size:.88rem;color:var(--ink)}.pr-room-when,.pr-room-counts{font-size:.78rem;color:var(--muted)}.pr-room-classes{list-style:none;margin:2px 0;padding:0;display:flex;flex-wrap:wrap;gap:6px}.pr-room-classes li{display:inline-flex;gap:6px;padding:3px 9px;border:1px solid var(--border);border-radius:999px;font-size:.76rem;background:var(--surface-hover, #f4f7fa)}.pr-room-classes li span{color:var(--muted)}.pr-room-actions{display:flex;align-items:flex-start;gap:8px;flex-shrink:0}.pr-room-actions>button:not(.vl-release){padding:6px 12px;border:1px solid var(--border);border-radius:var(--r-md, 7px);background:#fff;font-size:.78rem;font-weight:600;cursor:pointer}.pr-link{border:none;background:none;padding:0;color:var(--blue, #315fbe);font-size:.76rem;font-weight:600;cursor:pointer}.pr-section{padding:14px 16px 0}.pr-muted{margin:4px 0;font-size:.8rem;color:var(--muted)}.pr-programmes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.pr-programmes>li{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 12px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--r-md, 7px)}.pr-programmes>li.on{border-color:var(--blue, #315fbe);background:#315fbe0d}.pr-programmes label{display:flex;align-items:center;gap:8px;font-size:.82rem;cursor:pointer;min-width:0}.pr-programmes label em{font-style:normal;font-size:.72rem;color:var(--muted)}.pr-programmes label span{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pr-courses{flex-basis:100%;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;padding-top:4px}.pr-courses>div{display:flex;flex-direction:column;gap:3px;font-size:.78rem}.pr-courses small{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.pr-check{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:600;align-self:flex-end;padding-bottom:9px}.pr-modes{padding:0;margin-bottom:10px}.pr-venues{display:flex;flex-direction:column;gap:8px}.pr-venues select,.pr-pairs select{max-width:360px;padding:9px 12px;border:1px solid var(--border);border-radius:var(--r-md, 7px);font-size:.84rem;background:#fff}.pr-chips{display:flex;flex-wrap:wrap;gap:6px}.pr-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border:1px solid var(--blue, #315fbe);border-radius:999px;background:#315fbe14;color:var(--ink);font-size:.78rem;font-weight:600;cursor:pointer}.pr-pairs{display:flex;flex-wrap:wrap;gap:12px}.pr-error{margin:12px 16px 0}.co-rules{list-style:none;margin:0;padding:0;max-height:420px;overflow-y:auto}.co-rules>li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 16px;border-bottom:1px solid var(--border)}.co-rules>li:last-child{border-bottom:none}.co-rule{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;min-width:0}.co-side{display:flex;flex-direction:column;min-width:0}.co-side strong{font-size:.84rem;color:var(--ink)}.co-side em{font-style:normal;font-size:.74rem;color:var(--muted)}.co-arrow{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--blue, #315fbe)}.co-stale{font-size:.72rem;color:#b45309;font-weight:600}.co-note{flex-basis:100%;font-size:.76rem;color:var(--muted)}.co-pickers{display:grid;grid-template-columns:1fr auto 1fr;gap:12px;align-items:start;padding:14px 16px 0}.co-pick{display:flex;flex-direction:column;gap:6px;min-width:0}.co-pick input{padding:9px 12px;border:1px solid var(--border);border-radius:var(--r-md, 7px);font-size:.84rem}.co-results{list-style:none;margin:0;padding:0;max-height:260px;overflow-y:auto;border:1px solid var(--border);border-radius:var(--r-md, 7px)}.co-results button{display:flex;flex-direction:column;align-items:flex-start;width:100%;padding:8px 12px;border:none;border-bottom:1px solid var(--border);background:#fff;text-align:left;cursor:pointer}.co-results li:last-child button{border-bottom:none}.co-results button:hover{background:var(--surface-hover, #f4f7fa)}.co-results strong,.co-picked strong{font-size:.82rem;color:var(--ink)}.co-results span,.co-picked span{font-size:.74rem;color:var(--muted)}.co-picked{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;border:1px solid var(--blue, #315fbe);border-radius:var(--r-md, 7px);background:#315fbe0d}.co-picked>div{display:flex;flex-direction:column;min-width:0}.co-picked button,.co-swap{padding:6px 11px;border:1px solid var(--border);border-radius:var(--r-md, 7px);background:#fff;font-size:.78rem;font-weight:600;cursor:pointer}.co-swap{margin-top:24px;font-size:1rem}@media (max-width: 720px){.co-pickers{grid-template-columns:1fr}.co-swap{margin-top:0;justify-self:center}.pr-rooms>li,.co-rules>li{flex-direction:column;align-items:stretch}}.tv-order-semester{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border:1px dashed var(--border);border-radius:var(--r-md, 7px);font-size:.82rem;cursor:pointer}.tv-order-semester small{display:block;color:var(--muted);font-size:.74rem}.tv-order-rules em.tv-order-semester-tag{background:#315fbe1a;color:var(--blue, #315fbe)}.tv-department-rooms-modal .modal-body{max-height:min(78vh,900px);overflow-y:auto}.tv-view-loading{display:grid;place-items:center;min-height:60vh}.tv-schedule-panel .tv-swap-intro{margin:0;padding:12px 16px 2px;line-height:1.5}.cr-review-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.cr-review-close{display:grid;place-items:center;width:32px;height:32px;min-height:0!important;padding:0!important;border:1px solid #e2e8f0!important;border-radius:50%!important;background:#fff;color:#334155;font-size:1.2rem;line-height:1;cursor:pointer}.cr-review-close:hover{background:#f1f5f9}.cr-review-note{padding:8px 12px;border-radius:8px!important;background:#f8fafc;color:var(--muted);font-size:.78rem;font-style:italic}.cr-review-check{display:grid;gap:6px;padding:12px 14px;border:1px solid #e2e8f0;border-radius:10px!important;background:#fff}.cr-review-check.is-refused{border-color:#fecaca;background:snow}.cr-review-refused{margin:0;font-size:.82rem;color:#991b1b;line-height:1.45}.cr-review-adjust{display:grid;gap:10px;padding:12px 14px;border:1px solid #c7d3e8;border-radius:10px!important;background:#f8fafd}.cr-review-adjust>strong{font-size:.86rem;color:#0f172a}.cr-review-adjust-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.cr-review-adjust-fields label{display:grid;gap:4px;font-size:.72rem;font-weight:700;color:#64748b}.cr-review-adjust-fields select{width:100%;min-height:36px}.cr-review-adjust-hint{margin:0;font-size:.74rem;color:#64748b}.cr-review-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px}.cr-review-bar{position:fixed;left:50%;bottom:22px;z-index:1500;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;max-width:min(94vw,760px);padding:10px 12px 10px 16px;transform:translate(-50%);border:1px solid #c7d3e8;border-radius:14px!important;background:#fff;box-shadow:0 10px 30px #0f172a2e!important;font-size:.84rem;color:#0f172a}.cr-review-bar>span{flex:1 1 260px}.cr-review-bar em{color:#b91c1c;font-style:normal;font-weight:700}@media (max-width: 700px){.cr-review-adjust-fields{grid-template-columns:minmax(0,1fr)}.cr-review-bar{left:12px;right:12px;transform:none;max-width:none;bottom:calc(96px + env(safe-area-inset-bottom,0px))}}.cr-review-edited{display:block;margin-top:2px;font-size:.76rem;color:#475569}.class-request-what{margin:0 24px 12px;line-height:1.5}.class-request .field,.class-request .form-error,.class-request>form>.helper-text,.class-request-streams{margin-left:24px;margin-right:24px}.class-request .modal-actions{padding:0 24px 20px}.class-request-streams{display:flex;flex-wrap:wrap;gap:6px}.class-request-streams span{padding:2px 10px;border-radius:999px!important;background:#eef2f8;color:#183b7a;font-size:.76rem;font-weight:700}.class-request-partners{display:grid;gap:6px;margin:6px 0 0;padding:0;list-style:none}.class-request-partners label{display:flex;align-items:flex-start;gap:8px;padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px!important;cursor:pointer;font-weight:400}.class-request-partners small{display:block;color:#64748b;font-size:.74rem}.class-request-links{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:-4px 0 12px;font-size:.8rem;color:#475569}.class-request-links button{padding:2px 10px;border:1px solid #183b7a;border-radius:999px!important;background:#fff;color:#183b7a;font:inherit;font-weight:700;cursor:pointer}.clr-body{display:flex;flex-direction:column;gap:16px;padding:0 24px 24px}.clr-title{display:block;font-size:.95rem;color:#0f172a}.clr-sub{margin:2px 0 0;font-size:.78rem;color:#64748b}.clr-group{display:grid;gap:10px;padding:12px;border:1px solid #e2e8f0;border-radius:10px!important}.clr-now{display:grid;gap:2px;font-size:.8rem;color:#334155}.clr-place{display:grid;gap:6px}.clr-place-head{font-size:.8rem;color:#0f172a}.clr-keep{font-size:.8rem;color:#475569}.clr-none{margin:0;font-size:.78rem;color:#92400e}.clr-options{display:flex;flex-wrap:wrap;gap:6px}.clr-option{display:inline-flex;flex-direction:column;align-items:flex-start;padding:6px 10px;border:1px solid #cbd5e1;border-radius:8px!important;background:#fff;color:#0f172a;font:inherit;font-size:.78rem;cursor:pointer;text-align:left}.clr-option small{color:#64748b;font-size:.68rem}.clr-option.is-on{border-color:#183b7a;background:#eef2f8;box-shadow:inset 0 0 0 1px #183b7a!important}.clr-option--else{border-style:dashed;color:#475569}.clr-elsewhere{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.clr-elsewhere select,.clr-elsewhere input{padding:5px 8px;border:1px solid #cbd5e1;border-radius:6px!important;font:inherit;font-size:.8rem}.clr-confirm{margin-right:auto;font-size:.82rem;font-weight:700;color:#7f1d1d}.tv-proposed-tag{display:inline-flex;align-self:flex-start;width:max-content;align-items:center;gap:3px;margin-bottom:3px;padding:1px 6px;border-radius:10px!important;background:#fef3c7;color:#b45309;font-size:.6rem;font-weight:700}.tt-combo-link{padding:2px 4px;border:0;background:none;color:#475569;font:inherit;font-size:.72rem;text-decoration:underline;cursor:pointer}.clr-option--override{border-color:#f59e0b}.clr-option--override small:last-child{color:#b45309}.clr-check{margin:2px 0 0;padding:6px 10px;border-radius:8px!important;font-size:.78rem;line-height:1.45}.clr-check--wait{background:#f1f5f9;color:#475569}.clr-check--ok{background:#ecfdf5;color:#047857;font-weight:600}.clr-check--bad{background:#fef2f2;color:#7f1d1d}.clr-check--size{background:#fffbeb;color:#92400e}.clr-check ul{margin:4px 0 0;padding-left:18px}.clr-confirm-box{display:grid;gap:6px;padding:12px;border:1px solid #fde68a;border-radius:10px!important;background:#fffbeb;color:#78350f;font-size:.82rem}.clr-confirm-box p{margin:0;line-height:1.45}.clr-elsewhere .apr-btn{padding:5px 12px}.tt-fixed-schedule.tt-hourly{--tt-slot-column-width: 96px !important}.tt-fixed-schedule.tt-hourly .schedule-slot-col{text-align:center}.tt-fixed-schedule .tt-window-col{height:36px;text-align:center}.tt-fixed-schedule .tt-window-hours th{top:36px;padding:4px 8px;font-size:.68rem;border-bottom-width:2px}.mjp-pick{display:grid;gap:8px}.mjp-pick input[type=search]{padding:8px 10px;border:1px solid #cbd5e1;border-radius:8px!important;font:inherit;font-size:.85rem}.mjp-hint{margin:0;font-size:.75rem;color:#64748b}.mjp-list{display:grid;gap:4px;margin:0;padding:0;list-style:none;max-height:340px;overflow-y:auto}.mjp-list button{display:grid;gap:2px;width:100%;padding:8px 10px;border:1px solid #e2e8f0;border-radius:8px!important;background:#fff;color:#0f172a;font:inherit;font-size:.82rem;text-align:left;cursor:pointer}.mjp-list button:hover{border-color:#183b7a;background:#f8fafc}.mjp-list small{color:#64748b;font-size:.72rem}.mjp-empty{padding:8px 10px;font-size:.8rem;color:#64748b}.mjp .clr-now{grid-template-columns:auto 1fr auto;align-items:center;gap:8px}.mjp-move{display:flex;gap:8px;align-items:flex-start;padding:10px 12px;border:1px solid #f59e0b;border-radius:8px!important;background:#fffbeb;font-size:.8rem;color:#78350f;line-height:1.45;cursor:pointer}.mjp-move input{margin-top:3px}.tsp-note{margin:6px 0 0;font-size:.74rem;line-height:1.45;color:#64748b}.tsp-keep{display:flex;flex-wrap:wrap;align-items:center;gap:6px}.tsp-keep>span{margin-right:4px;font-size:.74rem;font-weight:600;color:#475569}.tsp-who{font-weight:400;color:#64748b}.tsp-off{border-style:dashed;color:#475569}.tsp-off-note{background:#f1f5f9;color:#475569}html .planning-resolver-issue-actions button.planning-resolver-fix{border-color:#183b7a;background:#183b7a;color:#fff}html .planning-resolver-issue-actions button.planning-resolver-fix:hover{background:#12305f}.tt-incremental-hint{margin:0 0 8px;padding:8px 10px;border-radius:8px!important;background:#f1f5f9;font-size:.76rem;line-height:1.5;color:#475569}html .tt-link-btn{padding:0;border:0;background:none;font:inherit;font-weight:600;color:#183b7a;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.lcp-tag{margin-left:8px;padding:1px 7px;border-radius:999px!important;font-size:.66rem;font-weight:600;vertical-align:1px}.lcp-tag.is-free{background:#ecfdf5;color:#047857}.lcp-tag.is-busy{background:#fef2f2;color:#b91c1c}.app-body.app-departments .page-content,.app-body.app-courses .page-content{overflow:hidden;min-height:0;gap:0;padding-bottom:0}.app-body.app-departments .page-fade,.app-body.app-courses .page-fade{flex:1;min-height:0;display:flex;flex-direction:column}.departments-container,.courses-container{display:flex;flex-direction:column;gap:0;flex:1;min-height:0;overflow:hidden}.departments-tabs,.courses-tabs{display:flex;gap:0;flex-shrink:0;padding:0;margin-bottom:16px;background:transparent;border:none;border-bottom:1.5px solid var(--border, rgba(15, 31, 56, .1));overflow-x:auto;scroll-behavior:smooth;-webkit-overflow-scrolling:touch}.departments-tabs::-webkit-scrollbar,.courses-tabs::-webkit-scrollbar{height:3px}.departments-tabs::-webkit-scrollbar-track,.courses-tabs::-webkit-scrollbar-track{background:transparent}.departments-tabs::-webkit-scrollbar-thumb,.courses-tabs::-webkit-scrollbar-thumb{background:#4392f140}.tab-btn{padding:10px 22px;background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1.5px;color:var(--muted, #6a7a96);font-size:.875rem;font-weight:600;cursor:pointer;white-space:nowrap;transition:color var(--ease),border-color var(--ease);font-family:var(--font-sans)}.tab-btn:hover{color:var(--ink-soft, #2d3f5a)}.tab-btn.active{color:var(--blue, #4392f1);border-bottom-color:var(--blue, #4392f1);background:transparent;box-shadow:none}.tab-content-wrapper{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column}.tab-content-wrapper::-webkit-scrollbar{width:6px}.tab-content-wrapper::-webkit-scrollbar-track{background:transparent}.tab-content-wrapper::-webkit-scrollbar-thumb{background:#4392f133;border-radius:3px}.tab-content-wrapper::-webkit-scrollbar-thumb:hover{background:#4392f166}.departments-container .tab-panel,.courses-container .tab-panel,.venus-container .tab-panel,.classes-lecturers-container .tab-panel{display:flex;flex-direction:column;width:100%;height:100%;padding:16px;gap:20px}.form-section{background:#fff;border-radius:16px;border:1px solid rgba(15,31,56,.08);padding:24px;box-shadow:0 2px 10px #0f1f380a;display:flex;flex-direction:column;min-height:0;overflow-y:auto}.form-section h3{margin:0 0 20px;font-size:1.15rem;font-weight:700;color:var(--ink, #0f1f38);display:flex;align-items:center;gap:10px}.form-section h3:before{content:"";width:4px;height:24px;background:var(--blue, #4392f1);border-radius:2px}.form-grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-bottom:20px}@media (max-width: 1024px){.form-grid-2{grid-template-columns:1fr}}.form-grid-col{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:20px}@media (max-width: 1024px){.form-grid-col{grid-template-columns:1fr}}.form-field{display:flex;flex-direction:column;gap:8px}.form-field label{font-size:.75rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted, #6a7a96)}.form-field input,.form-field select{height:40px;padding:0 12px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.875rem;font-family:var(--font-sans);background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38);transition:border-color .18s ease,box-shadow .18s ease}.form-field textarea{padding:10px 12px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.875rem;font-family:var(--font-sans);background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38);transition:border-color .18s ease,box-shadow .18s ease}.form-field input:focus,.form-field select:focus,.form-field textarea:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a;background:#fff}.form-field input::placeholder,.form-field textarea::placeholder{color:var(--muted, #6a7a96)}.form-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:20px}.form-actions button{padding:12px 20px;border-radius:10px;font-size:.9rem;font-weight:600;cursor:pointer;transition:all .2s ease;border:none}.btn-primary{background:var(--blue, #4392f1);color:#fff}.btn-primary:hover{background:#2b74d4;box-shadow:0 8px 20px #4392f14d;transform:translateY(-1px)}.btn-primary:disabled{background:#b0c4e8;cursor:not-allowed;box-shadow:none;transform:none}.btn-secondary{background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);border:1px solid rgba(67,146,241,.2)}.btn-secondary:hover{background:var(--blue-light, #e3ebff);border-color:#4392f14d}.btn-danger{background:#dc493a1a;color:var(--cinnabar, #dc493a);border:1px solid rgba(220,73,58,.2)}.btn-danger:hover{background:#dc493a26;border-color:#dc493a59}.btn-sm{padding:8px 14px;font-size:.85rem}.btn-icon{padding:8px 12px;background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);border:1px solid rgba(67,146,241,.2);border-radius:8px;display:flex;align-items:center;justify-content:center;width:40px;height:40px}.btn-icon:hover{background:var(--blue-light, #e3ebff)}.btn-icon.btn-danger{background:#dc493a14;color:var(--cinnabar, #dc493a);border:1px solid rgba(220,73,58,.2)}.btn-icon.btn-danger:hover{background:#dc493a26;border-color:#dc493a59}.help-text{font-size:.85rem;color:#8b99af;margin:0;padding:8px 0}.form-field .help-text{padding-top:4px;padding-bottom:0}.list-section{background:#fff;border-radius:16px;border:1px solid rgba(15,31,56,.08);padding:24px;box-shadow:0 2px 10px #0f1f380a;display:flex;flex-direction:column;gap:16px;min-height:0;overflow-y:auto}.list-header{display:flex;align-items:center;justify-content:space-between;gap:16px}.list-header h3{margin:0;font-size:1.15rem;font-weight:700;color:var(--ink, #0f1f38)}.list-header .badge-count{background:var(--blue, #4392f1);color:#fff;padding:6px 12px;border-radius:12px;font-size:.8rem;font-weight:700}.item-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;flex:1;min-height:0;overflow-y:auto}.item-list::-webkit-scrollbar{width:6px}.item-list::-webkit-scrollbar-track{background:transparent}.item-list::-webkit-scrollbar-thumb{background:#4392f133;border-radius:3px}.item-card{background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.2);border-radius:12px;padding:16px;display:flex;flex-direction:column;justify-content:space-between;gap:12px;transition:all .2s ease;cursor:pointer}.item-card:hover{border-color:#4392f166;box-shadow:0 8px 20px #4392f11f;transform:translateY(-2px)}.item-card .item-title{font-weight:700;color:var(--ink, #0f1f38);margin:0;font-size:.95rem;word-break:break-word}.item-card .item-meta{font-size:.85rem;color:#8b99af;margin:0;display:flex;gap:8px;flex-wrap:wrap}.item-card .item-code{background:var(--blue, #4392f1);color:#fff;padding:2px 8px;border-radius:6px;font-size:.75rem;font-weight:600}.item-card .item-actions{display:flex;gap:8px;justify-self:flex-end}.item-card .btn-icon{width:36px;height:36px;padding:0}.item-card .btn-icon svg{width:18px;height:18px}.empty-list{text-align:center;padding:40px 24px;color:#8b99af}.empty-list p{margin:0;font-size:.95rem}.stats-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px}.stat-mini{background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.2);border-radius:12px;padding:16px;text-align:center}.stat-mini .value{font-size:1.8rem;font-weight:700;color:var(--blue, #4392f1);margin:0}.stat-mini .label{font-size:.8rem;color:#8b99af;margin:4px 0 0}.alert{padding:14px 16px;border-radius:10px;font-size:.9rem;display:flex;align-items:center;gap:12px;border-left:4px solid}.alert.error{background:#dc493a14;border-left-color:var(--cinnabar, #dc493a);color:var(--cinnabar, #dc493a)}.alert.success{background:#4392f114;border-left-color:var(--blue, #4392f1);color:var(--blue, #4392f1)}.alert.warning{background:#ffa72614;border-left-color:#ffa726;color:#f57c00}.divider{height:1px;background:#4392f11a;margin:20px 0}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:20px;height:100%}@media (max-width: 1200px){.grid-2{grid-template-columns:1fr}}.is-loading{opacity:.6;pointer-events:none}.is-loading:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:16px;background:linear-gradient(90deg,transparent,rgba(255,255,255,.3),transparent);animation:shimmer 2s infinite}@keyframes shimmer{0%{transform:translate(-100%)}to{transform:translate(100%)}}@media (max-width: 900px){.form-section,.list-section{padding:16px}.form-section h3,.list-header h3{font-size:1rem}.item-list{grid-template-columns:repeat(auto-fill,minmax(180px,1fr));max-height:350px}}@media (max-width: 640px){.departments-tabs,.courses-tabs{padding:4px;gap:4px}.tab-btn{padding:8px 14px;font-size:.85rem}.form-grid-2,.form-grid-col,.grid-2{grid-template-columns:1fr}.form-actions{flex-direction:column}.form-actions button{width:100%}.item-list{grid-template-columns:1fr;max-height:400px}}.dep-stats{display:flex;gap:12px;flex-shrink:0;margin-bottom:4px}.dep-stat{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:14px 20px;display:flex;flex-direction:column;gap:3px;box-shadow:var(--shadow-xs)}.dep-stat-val{font-size:1.5rem;font-weight:700;color:var(--ink, #0f1f38);font-family:var(--font-mono);line-height:1}.dep-stat-lbl{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96)}.dep-form-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:18px 20px;flex-shrink:0;box-shadow:var(--shadow-xs);display:flex;flex-direction:column;gap:14px}.dep-form-card h3{font-size:.875rem;font-weight:700;color:var(--ink-soft, #2d3f5a);margin:0}.dep-inline-form{display:flex;gap:8px;align-items:stretch;flex-wrap:wrap}.dep-form-input{flex:1;min-width:160px;height:40px;padding:0 12px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.875rem;font-family:var(--font-sans);color:var(--ink, #0f1f38);background:var(--surface-app, #f2f4f8);transition:border-color .18s ease,box-shadow .18s ease}.dep-form-input:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a;background:#fff}.dep-form-input::placeholder{color:var(--muted, #6a7a96)}.dep-form-row-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.dep-form-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:40px;padding:0 20px;background:var(--blue, #4392f1);color:#fff;border:none;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:background .18s ease,box-shadow .18s ease,transform .18s ease;font-family:var(--font-sans);white-space:nowrap}.dep-form-btn:hover:not(:disabled){background:var(--blue-dark, #2b74d4);box-shadow:0 4px 14px #4392f14d;transform:translateY(-1px)}.dep-form-btn:disabled{opacity:.5;cursor:not-allowed;transform:none}.dep-form-cancel{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;background:var(--alice, #e7f0ff);color:var(--ink-soft, #2d3f5a);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);white-space:nowrap}.dep-form-cancel:hover:not(:disabled){background:#dce8ff;border-color:#4392f140}.dep-form-cancel:disabled{opacity:.5;cursor:not-allowed}.dep-form-danger{display:inline-flex;align-items:center;justify-content:center;height:40px;padding:0 16px;background:#dc493a0f;color:var(--cinnabar, #dc493a);border:1px solid rgba(220,73,58,.2);border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);white-space:nowrap}.dep-form-danger:hover:not(:disabled){background:#dc493a1a;border-color:#dc493a59}.dep-form-danger:disabled{opacity:.5;cursor:not-allowed}.dep-form-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.dep-bulk-section{border-top:1px solid var(--border, rgba(15, 31, 56, .09));padding-top:14px;display:flex;flex-direction:column;gap:10px}.dep-bulk-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);margin:0}.dep-bulk-area{width:100%;padding:10px 12px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.875rem;font-family:var(--font-sans);color:var(--ink, #0f1f38);background:var(--surface-app, #f2f4f8);resize:vertical;min-height:80px;transition:border-color .18s ease}.dep-bulk-area:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a;background:#fff}.dep-bulk-count{font-size:.8rem;color:var(--muted, #6a7a96);font-family:var(--font-mono)}.dep-card-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px;overflow-y:auto}.dep-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;padding:14px 16px;display:flex;align-items:center;gap:12px;transition:border-color .18s ease,box-shadow .18s ease;box-shadow:var(--shadow-xs)}.dep-card:hover{border-color:#4392f14d;box-shadow:var(--shadow-sm)}.dep-card-icon{width:38px;height:38px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:#4392f11a;color:var(--blue, #4392f1)}.dep-card-icon.indigo{background:#6366f11a;color:#4f46e5}.dep-card-icon.teal{background:#0d94881a;color:#0d9488}.dep-card-body{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.dep-card-name{font-size:.875rem;font-weight:700;color:var(--ink, #0f1f38);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin:0}.dep-card-sub{font-size:.75rem;color:var(--muted, #6a7a96);margin:0;display:flex;align-items:center;gap:6px}.dep-card-code{display:inline-block;padding:1px 7px;border-radius:5px;font-size:.7rem;font-weight:700;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);font-family:var(--font-mono)}.dep-card-actions{display:flex;gap:6px;flex-shrink:0}.dep-course-code{display:inline-block;padding:4px 10px;border-radius:8px;font-size:.78rem;font-weight:700;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);font-family:var(--font-mono);white-space:nowrap;flex-shrink:0}.dep-card-name-sm{font-size:.82rem;font-weight:500;margin:0;flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink, #0f1f38)}.modal-card{background:#fff;box-shadow:0 24px 64px #0f1f3838}.modal-header{display:flex;align-items:center;justify-content:space-between;padding:16px 20px 14px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));flex-shrink:0;gap:12px}.modal-title{font-size:.95rem;font-weight:700;color:var(--ink, #0f1f38);margin:0}.modal-close-btn{width:30px;height:30px;border:none;border-radius:7px;background:var(--alice, #e7f0ff);color:var(--ink-soft, #2d3f5a);display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:background .14s ease}.modal-close-btn:hover{background:#dce8ff}.modal-body{padding:20px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:14px}.modal-footer{display:flex;gap:8px;justify-content:flex-end;padding-top:6px;border-top:1px solid var(--border, rgba(15, 31, 56, .09));margin-top:4px}.wizard-steps{display:flex;align-items:center;gap:0;margin-bottom:2px}.wizard-step{display:flex;align-items:center;gap:8px}.wizard-step-num{width:26px;height:26px;border-radius:50%;font-size:.78rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--alice, #e7f0ff);color:var(--muted, #6a7a96);border:2px solid var(--border, rgba(15, 31, 56, .09));transition:all .18s ease}.wizard-step.done .wizard-step-num,.wizard-step.active .wizard-step-num{background:var(--blue, #4392f1);color:#fff;border-color:var(--blue, #4392f1)}.wizard-step-label{font-size:.76rem;font-weight:600;color:var(--muted, #6a7a96);white-space:nowrap}.wizard-step.active .wizard-step-label{color:var(--ink, #0f1f38)}.wizard-connector{flex:1;height:2px;background:var(--border, rgba(15, 31, 56, .09));margin:0 10px;border-radius:1px;min-width:20px;transition:background .18s ease}.wizard-connector.done{background:var(--blue, #4392f1)}.confirm-body{display:flex;gap:16px;align-items:flex-start}.confirm-body p{margin:0;font-size:.9rem;color:var(--ink-soft, #2d3f5a);line-height:1.6}.confirm-body strong{color:var(--ink, #0f1f38)}.confirm-icon{width:44px;height:44px;border-radius:11px;background:#dc493a1a;color:var(--cinnabar, #dc493a);display:flex;align-items:center;justify-content:center;flex-shrink:0}.btn-toolbar{height:34px;padding:0 13px;border-radius:8px;font-size:.8rem;font-weight:600;cursor:pointer;white-space:nowrap;display:inline-flex;align-items:center;gap:5px;transition:all .14s ease;font-family:var(--font-sans);border:none}.btn-toolbar-primary{background:var(--blue, #4392f1);color:#fff}.btn-toolbar-primary:hover{background:var(--blue-dark, #2b74d4)}.venue-location-btn{justify-content:center;text-align:center}.btn-toolbar-ghost{background:#fff;color:var(--ink-soft, #2d3f5a);border:1px solid var(--border, rgba(15, 31, 56, .09))}.btn-toolbar-ghost:hover{background:var(--alice, #e7f0ff)}.btn-toolbar-danger{background:transparent;color:var(--cinnabar, #dc493a);border:1px solid rgba(220,73,58,.2)}.btn-toolbar-danger:hover{background:#dc493a0f}.data-table-filter{height:34px;padding:0 10px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.82rem;font-family:var(--font-sans);background:var(--surface-app, #f2f4f8);color:var(--ink-soft, #2d3f5a);cursor:pointer;min-width:150px;max-width:220px}.data-table-filter:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a}.data-table .btn-icon{width:34px;height:34px}.data-table .btn-icon svg{width:16px;height:16px}.data-table-wrap{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;overflow:hidden;box-shadow:var(--shadow-xs);display:flex;flex-direction:column}.data-table-toolbar{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));flex-shrink:0}.data-table-search{flex:1;height:34px;padding:0 11px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.85rem;font-family:var(--font-sans);background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38);transition:border-color .18s ease,box-shadow .18s ease}.data-table-search:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a;background:#fff}.data-table-search::placeholder{color:var(--muted, #6a7a96)}.data-table-count{font-size:.75rem;color:var(--muted, #6a7a96);font-family:var(--font-mono);white-space:nowrap}.data-table-scroll{overflow-x:auto;overflow-y:auto;flex:1;min-height:0}.data-table{width:100%;border-collapse:collapse;min-width:480px}.data-table th{text-align:left;padding:9px 14px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);background:var(--surface-app, #f2f4f8);border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));white-space:nowrap;position:sticky;top:0;z-index:1}.data-table td{padding:10px 14px;font-size:.875rem;color:var(--ink, #0f1f38);border-bottom:1px solid rgba(15,31,56,.05);vertical-align:middle}.data-table tbody tr:last-child td{border-bottom:none}.data-table tbody tr:hover{background:var(--alice, #e7f0ff)}.data-table .td-num{font-family:var(--font-mono);font-size:.75rem;color:var(--muted, #6a7a96);width:1%;white-space:nowrap}.data-table .td-code{font-family:var(--font-mono);font-size:.8rem;font-weight:700;color:var(--blue-dark, #2b74d4)}.data-table .td-badge{display:inline-block;padding:2px 8px;border-radius:6px;font-size:.72rem;font-weight:700;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);font-family:var(--font-mono);white-space:nowrap}.data-table .td-muted{color:var(--muted, #6a7a96);font-size:.8rem}.data-table .td-actions{text-align:right;white-space:nowrap;width:1%;padding-right:12px}.data-table .td-actions .dep-card-actions{justify-content:flex-end}.pagination{display:flex;align-items:center;justify-content:space-between;padding:8px 14px;border-top:1px solid var(--border, rgba(15, 31, 56, .09));background:#fff;flex-shrink:0;gap:12px}.pagination-info{font-size:.75rem;color:var(--muted, #6a7a96);font-family:var(--font-mono);white-space:nowrap}.pagination-controls{display:flex;align-items:center;gap:3px}.page-btn{min-width:30px;height:30px;padding:0 7px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:7px;font-size:.8rem;font-weight:600;cursor:pointer;background:#fff;color:var(--ink-soft, #2d3f5a);transition:all .15s ease;display:inline-flex;align-items:center;justify-content:center;font-family:var(--font-sans);line-height:1}.page-btn:hover:not(:disabled){background:var(--alice, #e7f0ff);border-color:#4392f14d;color:var(--blue, #4392f1)}.page-btn.active{background:var(--blue, #4392f1);border-color:var(--blue, #4392f1);color:#fff}.page-btn:disabled{opacity:.35;cursor:not-allowed}.page-ellipsis{padding:0 4px;font-size:.8rem;color:var(--muted, #6a7a96);-webkit-user-select:none;user-select:none}@media (max-width: 900px){.dep-form-row-3{grid-template-columns:1fr 1fr}.dep-card-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}}@media (max-width: 640px){.dep-stats{gap:8px}.dep-form-row-3{grid-template-columns:1fr}.dep-inline-form{flex-direction:column;align-items:stretch}.dep-form-input{min-width:unset}.dep-card-grid{grid-template-columns:1fr}}.prog-course-step{display:flex;flex-direction:column;gap:0}.prog-course-picker-section{display:flex;flex-direction:column;gap:6px}.prog-course-picker-label{display:flex;align-items:center;justify-content:space-between;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted, #6a7a96)}.prog-course-picker-count{font-size:.7rem;font-weight:700;background:var(--blue, #4392f1);color:#fff;border-radius:99px;padding:1px 8px}.dep-picker-search{height:32px;padding:0 10px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:7px;font-size:.82rem;font-family:var(--font-sans);background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38);width:100%;box-sizing:border-box}.dep-picker-search:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a;background:#fff}.dep-picker-search::placeholder{color:var(--muted, #6a7a96)}.prog-course-picker{max-height:170px;overflow-y:auto;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;background:var(--surface, #fff)}.prog-course-picker::-webkit-scrollbar{width:5px}.prog-course-picker::-webkit-scrollbar-thumb{background:#4392f133;border-radius:3px}.prog-course-picker-item{display:flex;align-items:center;gap:8px;padding:5px 10px;cursor:pointer;font-size:.81rem;border-bottom:1px solid rgba(15,31,56,.04)}.prog-course-picker-item:last-child{border-bottom:none}.prog-course-picker-item:hover{background:var(--alice, #e7f0ff)}.prog-course-picker-item input[type=checkbox]{flex-shrink:0;accent-color:var(--blue, #4392f1);width:14px;height:14px;cursor:pointer}.prog-course-picker-item .picker-code{font-family:var(--font-mono, monospace);font-weight:700;font-size:.77rem;color:var(--blue-dark, #2b74d4);min-width:90px;flex-shrink:0}.prog-course-picker-item .picker-title{flex:1;color:var(--ink, #0f1f38);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.picker-empty{padding:10px 12px;font-size:.8rem;color:var(--muted, #6a7a96);margin:0}.prog-new-course-add{background:none;border:1px solid var(--blue, #4392f1);color:var(--blue, #4392f1);border-radius:5px;padding:2px 9px;font-size:.72rem;font-weight:700;cursor:pointer;transition:background .12s;font-family:var(--font-sans)}.prog-new-course-add:hover{background:var(--alice, #e7f0ff)}.prog-new-course-row{display:flex;gap:6px;align-items:center;margin-top:4px}.prog-new-course-code{width:110px;flex-shrink:0;height:32px;padding:0 8px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:7px;font-size:.81rem;font-family:var(--font-mono, monospace);background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38)}.prog-new-course-code:focus{outline:none;border-color:var(--blue, #4392f1);background:#fff}.prog-new-course-title{flex:1;height:32px;padding:0 8px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:7px;font-size:.81rem;font-family:var(--font-sans);background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38)}.prog-new-course-title:focus{outline:none;border-color:var(--blue, #4392f1);background:#fff}.prog-new-course-remove{flex-shrink:0;background:none;border:none;color:var(--cinnabar, #dc493a);font-size:1.2rem;line-height:1;cursor:pointer;padding:2px 5px;border-radius:5px;transition:background .12s}.prog-new-course-remove:hover{background:#dc493a14}.ax-container{display:flex;flex-direction:column;gap:14px;flex:1;min-height:0;overflow:hidden;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09));box-shadow:0 1px 4px #0f1f380d;padding:18px 20px}.ax-scope-note{display:flex;align-items:center;gap:9px;min-height:36px;padding:8px 12px;border:1px solid rgba(67,146,241,.22);background:#4392f112;color:var(--muted, #5f6f89);font-size:.82rem;font-weight:600}.ax-scope-note-dot{width:8px;height:8px;border-radius:50%;background:var(--blue, #4392f1);box-shadow:0 0 0 4px #4392f11f;flex:0 0 auto}.ax-course-rel-state{display:grid;min-height:170px;place-items:center;color:var(--muted, #6a7a96);font-size:.84rem;font-weight:600}.ax-course-rel-heading{display:flex;align-items:center;gap:13px;min-width:0}.ax-course-rel-code{flex:0 0 auto;padding:7px 10px;border:1px solid rgba(67,146,241,.3);border-radius:6px;background:#fff;color:var(--blue-dark, #2b74d4);font-size:.78rem;font-weight:800}.ax-course-rel-heading>span:last-child{min-width:0}.ax-course-rel-heading .ax-assign-title,.ax-course-rel-heading .ax-assign-sub{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-course-rel-body{display:flex;max-height:min(370px,calc(100dvh - 360px));min-height:0;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.ax-course-rel-panel-error{margin:16px}.ax-course-rel-section{padding:0}.ax-course-rel-section+.ax-course-rel-section{border-top:1px solid var(--border, #dfe6ed)}.ax-course-rel-section-head{display:flex;min-height:42px;align-items:center;justify-content:space-between;gap:12px;margin:0;padding:8px 14px}.ax-course-rel-section-head h3{margin:0;color:var(--ink, #0f1f38);font-size:.82rem}.ax-course-rel-section-head div{min-width:0}.ax-course-rel-section-head>span{display:grid;min-width:24px;height:24px;place-items:center;border:1px solid var(--border, #dfe6ed);border-radius:5px;color:var(--muted, #6a7a96);background:#fff;font-size:.68rem;font-weight:800}.ax-course-rel-table-wrap{overflow:auto;border-top:1px solid var(--border, #dfe6ed)}.ax-course-rel-table{width:100%;min-width:620px;table-layout:fixed;border-collapse:separate;border-spacing:0}.ax-course-rel-table th,.ax-course-rel-table td{height:44px;padding:8px 12px;overflow:hidden;border-right:1px solid #e2e8ef;border-bottom:1px solid #e2e8ef;text-align:left;text-overflow:ellipsis;white-space:nowrap}.ax-course-rel-table th:last-child,.ax-course-rel-table td:last-child{border-right:0}.ax-course-rel-table tbody tr:last-child td{border-bottom:0}.ax-course-rel-table th{color:#5c7085;background:#eef3f7;font-size:.66rem;font-weight:800;text-transform:uppercase}.ax-course-rel-table td{height:40px;color:#31485f;background:#fff;font-size:.78rem}.ax-course-rel-table tbody tr:hover td{background:#f8fafc}.ax-course-rel-table th:last-child,.ax-course-rel-table td.ax-relation-action{width:54px;padding-right:9px;padding-left:9px;text-align:center}.ax-relation-action .btn-icon{margin:0 auto}.ax-course-rel-empty{margin:0;padding:13px 16px;border-top:1px dashed var(--border, #dfe6ed);color:var(--muted, #6a7a96);background:#f8fafc;font-size:.78rem;text-align:center}.ax-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:nowrap;flex-shrink:0}.ax-toolbar-controls{display:flex;align-items:center;gap:8px;flex-wrap:nowrap;min-width:0;flex:1}.ax-search{flex:1 1 130px;min-width:110px}.ax-toolbar-controls>.ax-menu{margin-left:auto}.ax-breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:2px;min-height:30px}.ax-crumb-wrap{display:inline-flex;align-items:center;gap:2px}.ax-crumb{font-size:.9rem;font-weight:600;color:var(--muted, #6a7a96);padding:2px 4px;border:none;background:none;font-family:var(--font-sans)}.ax-crumb-link{cursor:pointer;color:var(--blue, #4392f1);border-radius:6px}.ax-crumb-link:hover{background:var(--alice, #e7f0ff)}.ax-crumb-current{color:var(--ink, #0f1f38)}.ax-crumb-sep{color:var(--muted, #6a7a96);font-size:.9rem;padding:0 2px}.ax-viewtoggle{display:inline-flex;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;overflow:hidden;background:var(--surface-app, #f2f4f8)}.ax-viewtoggle button{border:none;background:transparent;color:var(--muted, #6a7a96);font-size:.8rem;font-weight:600;font-family:var(--font-sans);padding:0 14px;height:34px;cursor:pointer;transition:background .14s ease,color .14s ease}.ax-viewtoggle button+button{border-left:1px solid var(--border, rgba(15, 31, 56, .09))}.ax-viewtoggle button.active{background:var(--blue, #4392f1);color:#fff}.ax-body{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:16px}.ax-body::-webkit-scrollbar{width:6px}.ax-body::-webkit-scrollbar-thumb{background:#4392f133;border-radius:3px}.ax-row-clickable{cursor:pointer}.ax-row-selected{background:var(--alice, #e7f0ff)}.ax-row-selected:hover{background:#dce8ff}.ax-drill-name{display:inline-flex;align-items:center;gap:6px}.ax-drill-arrow{display:inline-flex;color:var(--blue, #4392f1);opacity:0;transform:translate(-3px);transition:opacity .15s ease,transform .15s ease}.ax-row-clickable:hover .ax-drill-arrow{opacity:1;transform:translate(0)}.ax-empty-cell{text-align:center;padding:28px}.ax-bulk-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.25);border-radius:10px;flex-shrink:0}.ax-bulk-bar-count{font-size:.82rem;font-weight:700;color:var(--blue-dark, #2b74d4);margin-right:auto}.ax-bulk-clear{border:none;background:none;color:var(--muted, #6a7a96);font-size:.82rem;font-weight:600;cursor:pointer;font-family:var(--font-sans)}.ax-bulk-clear:hover{color:var(--ink, #0f1f38)}.venue-access-badge{display:inline-block;padding:1px 8px;border-radius:999px;font-size:.7rem;font-weight:700;background:#065f461a;color:#065f46;white-space:nowrap}.ax-general-tag{margin-left:8px;display:inline-block;padding:1px 7px;border-radius:999px;font-size:.66rem;font-weight:700;background:#065f461a;color:#065f46;vertical-align:middle}.ax-course-type-tag{display:inline-flex;align-items:center;padding:2px 9px;border-radius:999px;font-size:.7rem;font-weight:700;white-space:nowrap}.ax-course-type-tag.departmental{background:#4392f11a;color:var(--blue-dark, #2b74d4)}.ax-course-type-tag.university{background:#8b5cf61a;color:#6d28d9}.ax-course-type-tag.full-time{background:#22c55e1a;color:#15803d}.ax-course-type-tag.part-time{background:#f59e0b1a;color:#b45309}.ax-type-filter{height:34px;padding:0 10px;border:1px solid var(--border, rgba(15, 31, 56, .1));border-radius:8px;background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38);font:inherit;font-size:.82rem;outline:none;cursor:pointer;transition:border-color .15s,box-shadow .15s}.ax-type-filter:focus{border-color:var(--blue, #4392f1);box-shadow:0 0 0 2px #4392f11f;background:#fff}.ax-type-filter:disabled{opacity:.5;cursor:not-allowed}.ax-type-filter{max-width:170px;min-width:0;flex:0 1 auto}.ax-breadcrumb{min-width:0;overflow:hidden;flex-shrink:1}.ax-clear-filters{height:34px;padding:0 12px;border:1px solid transparent;background:transparent;color:var(--cinnabar, #dc493a);font:inherit;font-size:.82rem;font-weight:600;cursor:pointer;border-radius:8px;transition:background .15s}.ax-clear-filters:hover{background:#dc493a14}.btn-toolbar-icon{width:34px;padding:0;justify-content:center;gap:0}.btn-toolbar-icon svg{width:16px;height:16px}.seg-tab svg{display:block}.ax-menu{position:relative}.ax-menu-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:50;min-width:220px;background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .12));border-radius:10px;box-shadow:0 16px 40px #0f1f382e;padding:6px;display:flex;flex-direction:column;gap:2px}.ax-menu-item{display:flex;align-items:center;gap:10px;width:100%;padding:9px 12px;border:none;background:transparent;border-radius:7px;font:inherit;font-size:.84rem;font-weight:500;color:var(--ink, #0f1f38);text-align:left;cursor:pointer;transition:background .14s}.ax-menu-item:hover{background:var(--alice, #e7f0ff);color:var(--blue, #4392f1)}.ax-menu-item:disabled{opacity:.55;cursor:default}.ax-menu-item svg{flex-shrink:0}.ax-menu-sep{height:1px;background:var(--border, rgba(15, 31, 56, .09));margin:4px 2px}.ax-overview{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:0}.ax-ov-card{display:flex;flex-direction:column;gap:2px;align-items:flex-start;padding:14px 16px;background:#4392f112;border:1px solid var(--border, rgba(15, 31, 56, .1));border-left:4px solid var(--blue, #4392f1);border-radius:12px;cursor:pointer;text-align:left;font:inherit;box-shadow:0 1px 3px #0f1f380d;transition:transform .18s cubic-bezier(.34,1.56,.64,1),box-shadow .18s,border-color .18s}.ax-ov-card:hover{transform:translateY(-3px);box-shadow:0 10px 24px #0f1f381a}.ax-ov-card--1{background:#4392f11a;border-left-color:#4392f1}.ax-ov-card--2{background:#16a37c1a;border-left-color:#16a37c}.ax-ov-card--3{background:#f59e0b1f;border-left-color:#f59e0b}.ax-ov-card--4{background:#8b5cf61c;border-left-color:#8b5cf6}.ax-ov-static{cursor:default}.ax-ov-static:hover{transform:none;box-shadow:0 1px 3px #0f1f380d}.ax-ov-card strong{font-size:1.5rem;font-weight:800;color:var(--ink, #0f1f38);line-height:1}.ax-ov-card span{font-size:.76rem;color:var(--muted, #6a7a96);font-weight:500}.ax-ov-card.is-active{border-color:currentColor;box-shadow:0 4px 14px #0f1f381f}.ax-ov-card--1.is-active{color:#2b74d4}.ax-ov-card--2.is-active{color:#0f8a66}.ax-ov-card--3.is-active{color:#c97c08}.ax-ov-card--4.is-active{color:#6d3fd4}.ax-ov-card.is-active strong{color:inherit}.ax-ov-card.is-active span{color:inherit;opacity:.85}@media (max-width: 760px){.ax-overview{grid-template-columns:repeat(2,1fr)}}.ax-tree{padding:4px 0}.ax-tree-row{display:flex;align-items:center;gap:10px;padding:8px 14px;border-bottom:1px solid rgba(15,31,56,.05);min-height:40px}.ax-tree-row:hover{background:var(--alice, #e7f0ff)}.ax-tree-row[data-level="0"]{padding-left:14px}.ax-tree-row[data-level="1"]{padding-left:42px;background:#4392f104}.ax-tree-row[data-level="2"]{padding-left:72px;background:#4392f108}.ax-tree-leaf{min-height:34px}.ax-tree-toggle{width:22px;height:22px;flex-shrink:0;border:none;border-radius:6px;background:var(--alice, #e7f0ff);color:var(--ink-soft, #2d3f5a);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}.ax-tree-toggle:hover{background:#dce8ff}.ax-tree-label{font-size:.875rem;font-weight:600;color:var(--ink, #0f1f38);cursor:pointer}.ax-tree-label-sub{font-weight:500;color:var(--ink-soft, #2d3f5a);flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.ax-tree-code{font-family:var(--font-mono, monospace);font-size:.8rem;font-weight:700;color:var(--blue-dark, #2b74d4);flex-shrink:0}.ax-tree-actions{margin-left:auto;display:flex;gap:6px;flex-shrink:0}.ax-tree-actions .btn-icon{width:32px;height:32px}.ax-tree-empty,.ax-tree-row .td-muted{font-size:.85rem;color:var(--muted, #6a7a96)}.ax-tree-empty{padding:24px;text-align:center;margin:0}.pc-prog-badge{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.7rem;font-weight:700;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);font-family:var(--font-mono, monospace);white-space:nowrap;flex-shrink:0}.ax-assign-panel{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;box-shadow:var(--shadow-xs);overflow:hidden;flex-shrink:0}.ax-assign-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));background:var(--surface-app, #f2f4f8)}.ax-assign-title{display:block;font-size:.95rem;font-weight:700;color:var(--ink, #0f1f38)}.ax-assign-sub{display:block;font-size:.76rem;color:var(--muted, #6a7a96);margin-top:2px}.ax-assign-head-right{display:flex;align-items:center;gap:12px}.ax-assign-manage{display:inline-flex;min-height:32px;align-items:center;gap:7px;padding:0 10px;border:1px solid #b9d7cc;border-radius:6px;color:#176a50;background:#edf7f3;font:inherit;font-size:.72rem;font-weight:750;cursor:pointer}.ax-assign-manage:hover{border-color:#75af9b;background:#e3f2ec}.ax-assign-close{border:none;background:var(--alice, #e7f0ff);color:var(--ink-soft, #2d3f5a);width:28px;height:28px;border-radius:7px;cursor:pointer;font-size:.85rem}.ax-assign-close:hover{background:#dce8ff}.ax-move-confirm{display:grid;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:10px;padding:10px 12px;border:1px solid #d8e2eb;border-radius:7px;background:#f4f7fa}.ax-move-confirm-icon{display:grid;width:36px;height:36px;place-items:center;border:1px solid #b9d7cc;border-radius:6px;color:#176a50;background:#e7f3ee}.ax-move-confirm-label,.ax-move-confirm strong{display:block}.ax-move-confirm-label{color:#687d91;font-size:.66rem;font-weight:800;text-transform:uppercase}.ax-move-confirm strong{margin-top:2px;color:#1b344b;font-size:.88rem}.ax-move-confirm-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px}@media (max-width: 720px){.ax-assign-header{align-items:flex-start}.ax-assign-head-right{align-items:flex-end;flex-direction:column-reverse;gap:7px}.ax-course-rel-body{max-height:none}}.ax-field-warn{font-size:.8rem;color:var(--cinnabar, #dc493a);margin-top:4px;display:block}.ax-toggle-field{display:flex;align-items:center;gap:8px;height:40px;padding:0 12px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;background:var(--surface-app, #f2f4f8);font-size:.85rem;color:var(--ink, #0f1f38);cursor:pointer}.ax-toggle-field input{width:16px;height:16px;accent-color:var(--blue, #4392f1);flex-shrink:0}.merge-lecturer-summary{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.merge-lecturer-option{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid var(--border, #e2e5eb);border-radius:8px;background:var(--surface-card, #fff);cursor:pointer}.merge-lecturer-option input{width:16px;height:16px;accent-color:var(--blue, #4392f1)}.merge-lecturer-option span{display:flex;flex-direction:column;gap:2px}.merge-lecturer-option strong{font-size:.88rem;color:var(--ink, #0f1f38)}.merge-lecturer-option small,.merge-lecturer-note{color:var(--muted, #6a7a96);font-size:.78rem}.merge-lecturer-note{margin:10px 0 0;line-height:1.45}.ax-bulk-intro{margin:0;font-size:.875rem;color:var(--ink-soft, #2d3f5a);line-height:1.5}.ax-bulk-intro strong{color:var(--ink, #0f1f38)}.ax-bulk-template-btn{display:inline-flex;align-items:center;gap:6px;align-self:flex-start;height:34px;padding:0 14px;border:1px solid rgba(67,146,241,.3);border-radius:8px;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);font-size:.82rem;font-weight:600;font-family:var(--font-sans);cursor:pointer;transition:background .14s ease}.ax-bulk-template-btn:hover{background:#dce8ff}.ax-bulk-drop{border:2px dashed var(--border, rgba(15, 31, 56, .18));border-radius:10px;padding:26px 20px;text-align:center;cursor:pointer;background:var(--surface-app, #f2f4f8);transition:border-color .15s ease,background .15s ease}.ax-bulk-drop:hover{border-color:#4392f173}.ax-bulk-drop.has-file{border-color:var(--blue, #4392f1);background:#4392f10d}.ax-bulk-drop-hint{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--muted, #6a7a96);font-size:.875rem}.ax-bulk-drop-hint small{font-size:.76rem}.ax-bulk-file{font-size:.875rem;color:var(--ink, #0f1f38)}.ax-bulk-file strong{word-break:break-all}.ax-bulk-file span{margin-left:8px;color:var(--muted, #6a7a96);font-size:.8rem}.ax-bulk-result{display:flex;gap:10px;flex-wrap:wrap}.ax-bulk-stat{flex:1;min-width:90px;border-radius:10px;padding:12px;text-align:center;display:flex;flex-direction:column;gap:2px}.ax-bulk-stat-val{font-size:1.5rem;font-weight:700;font-family:var(--font-mono, monospace);line-height:1}.ax-bulk-stat-lbl{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}.ax-bulk-stat.ok{background:#d1fae5;color:#065f46}.ax-bulk-stat.skip{background:#fef3c7;color:#78350f}.ax-bulk-stat.err{background:#fee2e2;color:#991b1b}.ax-bulk-errors{max-height:200px;overflow-y:auto;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;padding:8px 12px;background:var(--surface-app, #f2f4f8)}.ax-bulk-errors p{margin:0;padding:3px 0;font-size:.8rem;color:var(--cinnabar, #dc493a);border-bottom:1px solid rgba(15,31,56,.05)}.ax-bulk-errors p:last-child{border-bottom:none}@media (max-width: 760px){.ax-toolbar{align-items:stretch;flex-wrap:wrap}.ax-toolbar-controls{width:100%;flex-wrap:wrap}.ax-search{flex:1 1 auto;min-width:0}.ax-tree-row[data-level="1"]{padding-left:30px}.ax-tree-row[data-level="2"]{padding-left:50px}}.app-body.app-venus .page-content{overflow:hidden;min-height:0;gap:0;padding-bottom:0}.app-body.app-venus .page-fade{flex:1;min-height:0;display:flex;flex-direction:column}.venus-container{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}.venue-dept-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.venue-dept-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 6px 4px 10px;border-radius:999px;font-size:.8rem;font-weight:600;color:var(--ink, #0f1f38);background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.25)}.venue-dept-chip-x{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border:none;border-radius:50%;cursor:pointer;font-size:.95rem;line-height:1;color:var(--blue-dark, #2b74d4);background:#4392f129;transition:background .15s ease,color .15s ease}.venue-dept-chip-x:hover{background:var(--cinnabar, #dc493a);color:#fff}.venue-roomtype-filter{padding:7px 10px;border:1px solid var(--border);border-radius:8px;font-size:.83rem;background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38);cursor:pointer}.venue-rt-pill{display:inline-block;margin:1px 4px 1px 0;padding:0;border-radius:0;font-size:.72rem;font-weight:500;color:var(--ink, #0f1f38);background:transparent;border:none}.venue-rt-options{display:grid;grid-template-columns:repeat(2,1fr);gap:4px 12px;margin:4px 0 6px}.venue-rt-options--wide{grid-template-columns:repeat(4,1fr)}@media (max-width: 680px){.venue-rt-options--wide{grid-template-columns:repeat(2,1fr)}}.venue-rt-option{display:flex;align-items:center;gap:7px;font-size:.82rem;color:var(--ink, #0f1f38);cursor:pointer}.venue-rt-option input{cursor:pointer}.venue-bulk-bar{display:flex;align-items:center;gap:10px;padding:8px 12px;margin:0 0 6px;background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.25);border-radius:8px}.venue-bulk-count{font-size:.82rem;font-weight:700;color:var(--ink, #0f1f38)}.btn-toolbar-danger{background:var(--cinnabar, #dc493a);color:#fff;border-color:var(--cinnabar, #dc493a)}.btn-toolbar-danger:hover{filter:brightness(.94)}.venue-bulk-clear{margin-left:auto;background:none;border:none;cursor:pointer;font-size:.8rem;font-weight:600;color:var(--muted, #6a7a96)}.venue-bulk-clear:hover{color:var(--ink, #0f1f38)}.data-table tr.row-selected{background:#4392f10f}.venue-bulk-location-list{max-height:180px;overflow:auto;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;background:var(--surface-app, #f2f4f8);padding:6px}.venue-bulk-location-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:6px;font-size:.83rem;color:var(--ink, #0f1f38)}.venue-bulk-location-item:hover{background:#fff}.venue-bulk-location-item input{cursor:pointer}.venue-bulk-location-actions{display:flex;align-items:center;gap:10px;margin-top:8px;font-size:.76rem;color:var(--muted, #6a7a96)}.venue-bulk-location-actions button{border:none;background:none;color:var(--blue, #4392f1);font-weight:700;cursor:pointer;padding:0}.venue-bulk-location-actions span{margin-left:auto}.venue-location-source{margin-top:8px}.venue-location-source input{width:100%}.venue-merge-list{display:flex;flex-direction:column;gap:6px;margin-top:6px;max-height:220px;overflow-y:auto}.venue-merge-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border:1px solid var(--border, rgba(15, 31, 56, .1));background:var(--surface-app, #f2f4f8)}.venue-merge-info{display:flex;flex-direction:column;gap:1px;min-width:0}.venue-merge-info strong{font-size:.85rem;color:var(--ink, #0f1f38)}.venue-merge-info span{font-size:.74rem;color:var(--muted, #6a7a96);font-family:var(--font-mono)}.venue-merge-row .btn-toolbar{flex-shrink:0}.venue-form-modal{min-height:0!important;max-height:calc(100dvh - 24px)!important}.venue-form-modal .venue-form-grid>.form-field{max-width:420px}.venue-form-modal .venue-form-grid--location>.form-field{max-width:none}.venue-form-modal .modal-body{flex:1;display:flex;flex-direction:column;padding:0!important}.venue-location-copy,.venue-access-control>span:last-child{display:flex;flex-direction:column;gap:2px;min-width:0}.venue-form-section{padding:18px 22px 20px;border-bottom:1px solid #e7edf3}.venue-form-section-head{display:flex;align-items:flex-start;gap:10px;margin-bottom:14px}.venue-form-section-head>span{display:inline-grid;place-items:center;width:27px;height:27px;flex:0 0 27px;border:1px solid #c8d7e7;border-radius:6px;background:#edf3f9;color:#315f8e;font-size:.67rem;font-weight:800}.venue-form-section-head h3{margin:0;color:#20364c;font-size:.86rem;font-weight:800;letter-spacing:0}.venue-form-section-head p{margin:2px 0 0;color:#78899a;font-size:.72rem}.venue-form-modal .venue-form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:15px 16px;align-items:start;align-content:start}.venue-form-grid .form-field{margin:0;min-width:0}.venue-field--wide{grid-column:span 2}.venue-form-modal .form-field>label,.venue-form-modal .venue-field-label{display:block;margin-bottom:7px;color:#40546a;font-size:.75rem;font-weight:750}.venue-form-modal .form-field :where(input,select,textarea){width:100%}.venue-form-modal .form-field :where(input,select){min-height:42px}.venue-form-modal .form-field select{padding-right:34px;cursor:pointer}.venue-field-hint{display:block;margin-top:6px;color:#78899a;font-size:.7rem}.venue-type-selection{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.venue-type-chip{display:inline-flex;align-items:center;gap:5px;min-height:26px;padding:3px 5px 3px 9px;border:1px solid #c7d8ea;border-radius:6px;background:#edf4fb;color:#28547f;font-size:.72rem;font-weight:700}.venue-type-chip button{display:inline-grid;place-items:center;width:20px;height:20px;padding:0;border:0;border-radius:5px;background:transparent;color:#63809d;cursor:pointer}.venue-type-chip button:hover{background:#d7e5f3;color:#17324d}.venue-form-modal .venue-dept-chips{margin:0 0 8px}.venue-form-modal .venue-dept-chip{border-radius:6px;background:#edf4fb;border-color:#c7d8ea;color:#28547f}.venue-form-modal .venue-dept-chip-x{border-radius:5px;background:transparent;color:#63809d}.venue-access-control{display:flex!important;align-items:center;gap:10px;min-height:66px;margin:0!important;padding:11px 12px;border:1px solid #d6e0e9;border-radius:7px;background:#f8fafc;cursor:pointer}.venue-access-control>input{position:absolute;width:1px!important;height:1px;opacity:0;pointer-events:none}.venue-access-switch{position:relative;width:36px;height:20px;flex:0 0 36px;border-radius:10px;background:#bac6d2;transition:background .18s ease}.venue-access-switch i{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #14283c40;transition:transform .18s ease}.venue-access-control>input:checked+.venue-access-switch{background:#218c72}.venue-access-control>input:checked+.venue-access-switch i{transform:translate(16px)}.venue-access-control>input:focus-visible+.venue-access-switch{outline:3px solid rgba(49,95,190,.18)}.venue-access-control strong{color:#30475e;font-size:.75rem}.venue-access-control small{color:#78899a;font-size:.66rem;line-height:1.35}.venue-form-modal .venue-form-grid--location{grid-template-columns:1fr 1fr}.venue-form-modal .venue-form-grid--assignment{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.venue-form-modal .venue-form-grid--assignment .venue-field--wide{grid-column:auto}.venue-location-capture{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:64px;padding:10px 11px;border:1px solid #d6e0e9;border-radius:7px;background:#f8fafc}.venue-location-capture.is-captured{border-color:#b8dccf;background:#f1f8f5}.venue-location-state-icon{display:inline-grid;place-items:center;width:34px;height:34px;border-radius:7px;background:#e5edf5;color:#4c6985}.venue-location-capture.is-captured .venue-location-state-icon{background:#dcefe8;color:#18745f}.venue-location-copy strong{color:#30475e;font-size:.76rem}.venue-location-copy small{color:#78899a;font-size:.67rem}.venue-get-location-btn{min-height:34px;padding:7px 11px;border:1px solid #2f6092;border-radius:6px;background:#315f8e;color:#fff;font-size:.7rem;font-weight:750;cursor:pointer}.venue-get-location-btn:hover:not(:disabled){background:#264f78}.venue-get-location-btn:disabled{opacity:.65;cursor:wait}.venue-form-error{margin:14px 22px 0}.venue-form-modal .venue-form-footer{position:static;margin:0!important;padding:14px 22px!important;border-top:1px solid #dfe7ee!important;background:#f8fafc!important}@media (max-width: 760px){.venue-form-modal .venue-form-grid{grid-template-columns:1fr 1fr}.venue-form-modal .venue-field--wide{grid-column:1 / -1}.venue-form-modal .venue-form-grid--assignment{grid-template-columns:1fr}.venue-form-modal .venue-form-grid--assignment .venue-field--wide{grid-column:auto}}@media (max-width: 560px){.venue-form-section{padding:16px 14px 18px}.venue-form-modal .venue-form-grid,.venue-form-modal .venue-form-grid--location{grid-template-columns:minmax(0,1fr)}.venue-form-modal .venue-field--wide{grid-column:auto}.venue-location-capture{grid-template-columns:auto minmax(0,1fr)}.venue-get-location-btn{grid-column:1 / -1;width:100%}.venue-form-error{margin-inline:14px}.venue-form-modal .venue-form-footer{padding:12px 14px!important}}.lecturer-courses-page{display:flex;min-height:0}.lecturer-course-window{width:100%;min-height:0;overflow:hidden;border:1px solid #d8e1ea;border-radius:8px;background:#fff;box-shadow:0 4px 16px #122a400d}.lecturer-course-toolbar{display:flex;min-height:64px;align-items:center;justify-content:space-between;gap:18px;padding:12px 16px;border-bottom:1px solid #dfe6ed;background:#f8fafc}.lecturer-course-toolbar h2{margin:0;color:#14283d;font-size:.9rem;letter-spacing:0}.lecturer-course-toolbar p{margin:3px 0 0;color:#687c90;font-size:.72rem}.lecturer-course-search{display:flex;width:min(320px,100%);height:36px;align-items:center;gap:8px;padding:0 10px;border:1px solid #ced9e4;border-radius:6px;color:#718398;background:#fff}.lecturer-course-search:focus-within{border-color:#2673c9;box-shadow:0 0 0 2px #2673c91a}.lecturer-course-search input{width:100%;min-width:0;height:100%;padding:0;border:0;outline:0;color:#1e344a;background:transparent;font:inherit;font-size:.78rem}.app-body.app-student .lecturer-course-toolbar h2{font-size:.86rem}.app-body.app-student .lecturer-course-toolbar p{font-size:.69rem}.app-body.app-student .lecturer-course-table td{font-size:.75rem}.app-body.app-student .lecturer-course-title{font-size:.77rem}.lecturer-course-table-wrap{max-height:min(650px,calc(100dvh - 225px));overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.lecturer-course-table{width:100%;min-width:760px;table-layout:fixed;border-collapse:separate;border-spacing:0}.lecturer-course-table col:nth-child(1){width:64px}.lecturer-course-table col:nth-child(2){width:18%}.lecturer-course-table col:nth-child(3){width:42%}.lecturer-course-table col:nth-child(4){width:32%}.lecturer-course-table th{position:sticky;top:0;z-index:2;height:42px;padding:0 14px;border-right:1px solid #dfe6ed;border-bottom:1px solid #d6e0e8;color:#5b7084;background:#eef3f7;font-size:.66rem;font-weight:850;text-align:left;text-transform:uppercase}.lecturer-course-table th:last-child,.lecturer-course-table td:last-child{border-right:0}.lecturer-course-table td{height:62px;min-width:0;padding:10px 14px;border-right:1px solid #e5ebf0;border-bottom:1px solid #e5ebf0;color:#344b61;font-size:.78rem;vertical-align:middle}.lecturer-course-table tbody tr:last-child td{border-bottom:0}.lecturer-course-table tbody tr:hover td{background:#f9fbfc}.lecturer-course-index{color:#8090a0;font-size:.7rem}.lecturer-course-code{display:inline-block;max-width:100%;overflow:hidden;padding:5px 8px;border:1px solid #c9d8e8;border-radius:5px;color:#255177;background:#f1f6fb;font-size:.72rem;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.lecturer-course-title,.lecturer-course-programme{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lecturer-course-title{color:#172c42;font-size:.8rem}.lecturer-course-programme{color:#5e7286}.lecturer-course-empty{display:grid;min-height:280px;place-items:center;padding:32px;color:#708397;font-size:.8rem}@media (max-width: 700px){.lecturer-course-toolbar{align-items:stretch;flex-direction:column}.lecturer-course-search{width:100%}.lecturer-course-table-wrap{max-height:calc(100dvh - 285px)}}@media (max-width: 600px){.lecturer-course-table-wrap{max-height:none;overflow:visible}.lecturer-course-table{min-width:0;table-layout:auto}.lecturer-course-table colgroup,.lecturer-course-table thead{display:none}.lecturer-course-table,.lecturer-course-table tbody{display:block}.lecturer-course-table tr{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-areas:"code title" "code who";gap:4px 12px;padding:12px 14px;border-bottom:1px solid #e5ebf0}.lecturer-course-table tbody tr:last-child{border-bottom:0}.lecturer-course-table td{display:block;height:auto;padding:0;border:0}.lecturer-course-table td.lecturer-course-index{display:none}.lecturer-course-table td:nth-child(2){grid-area:code;align-self:start}.lecturer-course-table td:nth-child(3){grid-area:title}.lecturer-course-table td:nth-child(4){grid-area:who}.lecturer-course-title,.lecturer-course-programme{white-space:normal}}@media (max-width: 600px){.lecturer-course-table tr{grid-template-columns:minmax(0,1fr);grid-template-areas:"code" "title" "who";gap:2px;padding:14px 16px}.lecturer-course-code{padding:0;border:0;background:none;font-family:JetBrains Mono,monospace;font-size:.74rem;font-weight:700;color:#64748b}.lecturer-course-title{font-size:.92rem;color:#0f172a}.lecturer-course-programme{font-size:.78rem;color:#64748b}}.teaching-workspace{min-width:0;width:100%}.teaching-notice{padding:12px 16px;border-left:3px solid #183b60;background:#eef3f7;color:#40566c;font-size:13px;line-height:1.5;margin:12px 0 18px}.teaching-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.teaching-form-grid label{display:grid;gap:6px;min-width:0;font-size:13px;font-weight:600;color:#263a50}.teaching-form-grid input,.teaching-form-grid select{box-sizing:border-box;width:100%;min-width:0;padding:9px 10px;border:1px solid #d6e0e8;border-radius:6px;background:#fff;color:#263a50;font:inherit}.teaching-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:14px 0;font-size:13px;color:#40566c}.teaching-toolbar .primary-btn,.teaching-footer .primary-btn{background:#183b60;color:#fff;border:1px solid #183b60}.teaching-footer{justify-content:flex-end;position:sticky;bottom:0;background:#fff;padding:12px 0;margin-bottom:0}.teaching-table-scroll{overflow:auto;overscroll-behavior:contain;min-height:100px;max-height:65vh;border:1px solid #dce5ed}.teaching-table{width:100%;min-width:700px;table-layout:fixed;border-collapse:collapse;font-size:13px;color:#263a50}.teaching-table th{position:sticky;top:0;z-index:1;background:#eef3f7;text-align:left;font-size:12px}.teaching-table th,.teaching-table td{padding:12px;border-bottom:1px solid #e1e8ef;border-right:1px solid #e1e8ef;vertical-align:top;overflow-wrap:anywhere}.teaching-table tr:nth-child(2n) td{background:#f8fafc}.teaching-table small{display:block;color:#61758a;margin-top:5px}.teaching-table p{margin:6px 0}.teaching-error{color:#b42318;font-size:13px}.teaching-check{display:flex;align-items:start;gap:8px;font-size:13px;margin-top:14px}.teaching-import-dialog .modal-body{overflow-y:auto;min-height:0;overscroll-behavior:contain}.teaching-import-setup summary{color:#263a50;font-size:13px;font-weight:600;padding:8px 0 16px;cursor:pointer;overflow-wrap:anywhere}.teaching-table td{background:#fff}.app-body .teaching-import-dialog .primary-btn,.app-body .teaching-workspace .primary-btn{background:#183b60!important;border-color:#183b60!important;color:#fff!important}.app-body .teaching-footer .dialog-secondary-btn{background:#b42318;color:#fff;border:1px solid #b42318;border-radius:6px;padding:9px 14px;font-size:13px;font-weight:600;cursor:pointer}.teaching-workspace .tt-saved-card{border-radius:6px}@media (max-width: 600px){.teaching-form-grid{grid-template-columns:minmax(0,1fr)}.teaching-table-scroll{max-height:55vh}}.teaching-note{margin:4px 0 10px;font-size:.84rem;color:#475569;line-height:1.45}.teaching-summary{flex-wrap:wrap;gap:8px}.teaching-pill{padding:3px 10px;border-radius:999px!important;background:#eef2f8;color:#183b7a;font-size:.76rem;font-weight:700}.teaching-pill--out{background:#fde2e2;color:#991b1b}.teaching-pill--warn{background:#fef3c7;color:#92400e}.teaching-row--error td{background:#fff7f7}.pm-page{display:flex;flex-direction:column;gap:16px;padding-bottom:40px}.pm-topbar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.pm-back-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-card, #fff);color:var(--text-secondary, #6b7280);font-size:.825rem;font-weight:500;cursor:pointer;transition:border-color .15s,color .15s}.pm-back-btn:hover{border-color:var(--blue, #2563eb);color:var(--blue, #2563eb)}.pm-topbar-meta{display:flex;gap:8px;flex:1}.pm-meta-chip{padding:4px 10px;border-radius:20px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border);font-size:.78rem;color:var(--text-secondary, #6b7280)}.pm-topbar-actions{display:flex;align-items:center;gap:6px;margin-left:auto}.pm-text-btn{background:none;border:none;padding:4px 6px;font-size:.8rem;color:var(--blue, #2563eb);cursor:pointer}.pm-text-btn:hover{text-decoration:underline}.pm-divider{color:var(--border)}.pm-filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.pm-search{flex:1;min-width:220px;padding:8px 12px;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-card, #fff);font-size:.85rem;outline:none}.pm-search:focus{border-color:var(--blue, #2563eb)}.pm-filter-select{padding:7px 12px;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-card, #fff);font-size:.825rem;color:var(--text-primary, #111827);cursor:pointer;outline:none}.pm-filter-select:focus{border-color:var(--blue, #2563eb)}.pm-accordions{display:flex;flex-direction:column;gap:8px}.pm-accordion{border:1px solid var(--border);border-radius:8px;background:var(--surface-card, #fff);overflow:hidden;transition:box-shadow .15s}.pm-accordion--target{border-color:var(--blue, #2563eb);box-shadow:0 0 0 3px #2563eb1a}.pm-accordion--open{box-shadow:0 2px 8px #0f1f380f}.pm-accordion-hd{width:100%;display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:none;border:none;cursor:pointer;text-align:left;gap:10px;transition:background .12s}.pm-accordion-hd:hover{background:var(--surface-app, #f2f4f8)}.pm-accordion-hd-left{display:flex;align-items:center;gap:10px;flex:1;flex-wrap:wrap}.pm-chevron{flex-shrink:0;color:var(--text-secondary, #9ca3af);transition:transform .2s}.pm-chevron--open{transform:rotate(90deg)}.pm-dept-name{font-size:.92rem;font-weight:600;color:var(--text-primary, #111827)}.pm-pref-count{font-size:.78rem;color:var(--text-secondary, #6b7280);white-space:nowrap;flex-shrink:0}.pm-status-badge{padding:2px 8px;border-radius:20px;font-size:.72rem;font-weight:600;letter-spacing:.01em;white-space:nowrap}.pm-badge--submitted{background:#22c55e1f;color:#15803d}.pm-badge--none{background:#6b72801a;color:#374151}.pm-badge--missed{background:#ef44441a;color:#dc2626}.pm-badge--pending{background:#f59e0b1a;color:#b45309}.pm-clash-badge{padding:2px 8px;border-radius:20px;font-size:.72rem;font-weight:600;background:#ef44441a;color:#dc2626}.pm-accordion-body{border-top:1px solid var(--border);padding:14px 16px 16px;background:#f4f7fa}.pm-no-prefs{padding:20px 2px;font-size:.85rem;color:var(--text-secondary, #6b7280);margin:0}.pm-empty{padding:40px 0;text-align:center;font-size:.9rem;color:var(--text-secondary, #6b7280)}.pm-table-wrap{width:100%;max-height:430px;overflow:auto;border:1px solid #d8e2eb;border-radius:7px;background:#fff;overscroll-behavior:contain;scrollbar-gutter:stable}.pm-table{width:100%;min-width:920px;table-layout:fixed;border-collapse:separate;border-spacing:0;font-size:.845rem}.pm-table col:nth-child(1){width:25%}.pm-table col:nth-child(2){width:14%}.pm-table col:nth-child(3){width:31%}.pm-table col:nth-child(4){width:22%}.pm-table col:nth-child(5){width:8%}.pm-table thead th{position:sticky;top:0;z-index:2;height:42px;padding:10px 14px;text-align:left;font-size:.7rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:#5f7286;background:#eef3f7;border-right:1px solid #dce4eb;border-bottom:1px solid var(--border);white-space:nowrap}.pm-table thead th:not(:first-child),.pm-table td:not(:first-child){text-align:center}.pm-table thead th:last-child{border-right:0}.pm-table thead th small{font-weight:400;text-transform:none;letter-spacing:0;color:var(--text-secondary, #9ca3af)}.pm-table tbody tr{transition:background .1s}.pm-table tbody tr:hover td{background:var(--surface-app, #f8fafc)}.pm-table td{height:70px;min-width:0;padding:10px 14px;border-right:1px solid #e3e9ef;border-bottom:1px solid #e3e9ef;background:#fff;text-align:left;vertical-align:middle}.pm-table td:last-child{border-right:0}.pm-table tbody tr:last-child td{border-bottom:0}.pm-row--clash td{background:#ef44440a}.pm-row--clash:hover td{background:#ef444412}.pm-td-name{overflow:hidden}.pm-lecturer-cell{display:grid;min-width:0;grid-template-columns:34px minmax(0,1fr) auto;align-items:center;gap:9px}.pm-lecturer-avatar{display:grid;width:34px;height:34px;place-items:center;border:1px solid #c9dbd4;border-radius:6px;color:#176a50;background:#eaf4f0;font-size:.7rem;font-weight:850}.pm-lecturer-copy{min-width:0}.pm-lecturer-copy strong,.pm-lecturer-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pm-lecturer-copy strong{color:#20384f;font-size:.8rem;font-weight:750}.pm-lecturer-copy small{margin-top:3px;color:#76889a;font-size:.67rem;font-weight:500}.pm-clash-tag{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:4px;font-size:.68rem;font-weight:700;background:#ef44441f;color:#dc2626;vertical-align:middle}.pm-td-type{white-space:nowrap}.pm-type-badge{display:inline-flex;min-height:25px;align-items:center;padding:3px 8px;border-radius:5px;font-size:.72rem;font-weight:600}.pm-type--full{background:#22c55e1a;color:#15803d}.pm-type--part{background:#f59e0b1a;color:#b45309}.pm-no-type{color:var(--text-secondary, #9ca3af)}.pm-input{width:100%;height:36px;min-width:0;padding:6px 9px;border:1px solid var(--border);border-radius:var(--r-md, 6px);font-size:.83rem;background:var(--surface-card, #fff);color:var(--text-primary, #111827);outline:none;transition:border-color .15s,box-shadow .15s}.pm-input:focus{border-color:#327c64;box-shadow:0 0 0 3px #176a501a}.pm-chips{display:flex;flex-wrap:wrap;gap:5px;min-width:168px}.pm-chip{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid var(--border, rgba(15, 31, 56, .14));background:var(--surface-card, #fff);color:var(--muted, #6a7a96);font-size:.74rem;font-weight:600;padding:5px 9px;border-radius:8px;cursor:pointer;line-height:1;white-space:nowrap;transition:background .15s,color .15s,border-color .15s,transform .12s}.pm-chip--slot{font-family:var(--font-mono, monospace);font-size:.7rem;letter-spacing:-.02em}.pm-chip:hover{border-color:var(--blue, #4392f1);color:var(--blue, #4392f1)}.pm-chip:active{transform:scale(.94)}.pm-chip--on{background:var(--blue, #4392f1);border-color:var(--blue, #4392f1);color:#fff;box-shadow:0 2px 6px #4392f14d}.pm-chip--on:hover{color:#fff;background:var(--blue-dark, #2b74d4)}.pm-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:14px}.pm-stat{background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .09));border-left:4px solid var(--muted, #6a7a96);padding:14px 16px;display:flex;flex-direction:column;gap:2px;box-shadow:0 1px 4px #0f1f380d}.pm-stat strong{font-size:1.5rem;font-weight:800;color:var(--ink, #0f1f38);line-height:1}.pm-stat span{font-size:.74rem;color:var(--muted, #6a7a96);font-weight:500}.pm-stat--ok{border-left-color:#22c55e}.pm-stat--warn{border-left-color:var(--cinnabar, #dc493a)}.pm-stat--warn strong{color:var(--cinnabar, #dc493a)}.pm-stat--muted{opacity:.75}@media (max-width: 760px){.pm-summary{grid-template-columns:repeat(2,1fr)}}.pm-empty-toggle{width:100%;margin-top:10px;padding:11px 16px;background:#ffffff8c;border:1px dashed var(--border, rgba(15, 31, 56, .18));color:var(--ink-soft, #2d3f5a);font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s}.pm-empty-toggle:hover{background:#fff;border-color:var(--blue, #4392f1);color:var(--blue, #4392f1)}.pm-heatmap{margin:0 0 14px;padding:14px 16px;background:var(--surface-app, #f6f8fc);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:7px}.pm-heatmap-head{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}.pm-heatmap-title{font-size:.8rem;font-weight:700;color:var(--ink, #0f1f38);letter-spacing:.01em}.pm-heatmap-flag{font-size:.72rem;font-weight:700;padding:3px 9px;border-radius:999px}.pm-heatmap-flag--warn{background:#dc493a1f;color:var(--cinnabar, #dc493a)}.pm-heatmap-flag--ok{background:#22c55e1f;color:#15803d}.pm-heatmap-legend{margin-left:auto;display:flex;gap:12px;font-size:.7rem;color:var(--muted, #6a7a96)}.pm-heatmap-legend span{display:inline-flex;align-items:center;gap:5px}.pm-hm-swatch{width:12px;height:12px;display:inline-block;border-radius:3px}.pm-heatmap-grid-wrap{overflow-x:auto}.pm-heatmap-grid{border-collapse:separate;border-spacing:4px}.pm-heatmap-grid th{font-size:.68rem;font-weight:700;color:var(--muted, #6a7a96);text-transform:uppercase;letter-spacing:.04em;padding:2px 6px;text-align:center}.pm-hm-slot{text-align:right!important;font-family:var(--font-mono, monospace);font-size:.66rem!important;text-transform:none!important;white-space:nowrap;color:var(--ink-soft, #2d3f5a)!important}.pm-hm-cell{width:46px;height:30px;text-align:center;font-size:.78rem;font-weight:700;color:var(--ink, #0f1f38);background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .08));border-radius:6px}.pm-hm-c1{background:#4392f138;border-color:#4392f159;color:var(--blue-deep, #1a5abf)}.pm-hm-c2{background:#f59e0b52;border-color:#f59e0b80;color:#92400e}.pm-hm-c3{background:#dc493a61;border-color:#dc493a8c;color:#fff}.pm-hm-swatch.pm-hm-c1{background:#4392f166}.pm-hm-swatch.pm-hm-c2{background:#f59e0b8c}.pm-hm-swatch.pm-hm-c3{background:#dc493a99}.pm-td-save{white-space:nowrap}.pm-save{display:inline-flex;min-height:25px;align-items:center;font-size:.75rem;font-weight:700;padding:3px 7px;border-radius:5px}.pm-save.idle{color:#607488;background:#eef3f7}.pm-save.saving{color:var(--text-secondary, #6b7280)}.pm-save.saved{color:#15803d}.pm-save.error{color:#dc2626}.pm-period-editor{min-width:280px;display:flex;flex-direction:column;gap:8px}.pm-period-list{display:flex;flex-wrap:wrap;gap:5px}.pm-period-chip{padding:5px 7px;border:1px solid #bfdbfe;border-radius:6px;background:#eff6ff;color:#1d4ed8;font-size:.68rem;font-weight:700;cursor:pointer}.pm-period-chip span{margin-left:3px}.pm-period-add{display:grid;grid-template-columns:64px minmax(130px,1fr) 30px;gap:5px}.pm-period-add select,.pm-period-add button{min-width:0;height:30px;border:1px solid var(--border-strong, rgba(15, 31, 56, .16));border-radius:6px;background:#fff;color:var(--ink-soft, #2d3f5a);font-size:.7rem}.pm-period-add button{cursor:pointer;color:#1d4ed8;font-size:1rem;font-weight:800}.pm-assignment-periods{min-width:220px;display:flex;flex-wrap:wrap;gap:6px}.pm-assignment-period{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border:1px solid #bbf7d0;border-radius:6px;background:#f0fdf4;color:#166534;font-size:.68rem;font-weight:700;white-space:nowrap}.pm-assignment-period strong{color:#14532d}.pm-assignment-period span{padding-right:5px;border-right:1px solid #86efac;color:#475569}.pm-course-pref-trigger{display:grid;width:100%;height:48px;min-width:0;grid-template-columns:30px minmax(0,1fr) 17px;align-items:center;gap:9px;padding:7px 8px;border:1px solid #cfdbe5;border-radius:6px;color:#29445e;background:#f8fafc;cursor:pointer;text-align:left}.pm-course-pref-trigger:hover{border-color:#5e92c8;background:#f2f7fb}.pm-course-pref-icon{display:grid;width:30px;height:30px;place-items:center;border:1px solid #c7d9e8;border-radius:5px;color:#376e9d;background:#eaf2f8}.pm-course-pref-copy{min-width:0}.pm-course-pref-copy strong,.pm-course-pref-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pm-course-pref-copy strong{color:#20384f;font-size:.75rem}.pm-course-pref-copy small{margin-top:2px;color:#6d8092;font-size:.67rem}.pm-course-pref-edit{color:#52799d}body.app-body .pm-course-pref-modal .modal-body{padding:18px 20px 20px!important}.pm-course-pref-editor{display:flex;min-height:0;flex-direction:column;gap:14px}.pm-course-pref-editor-head{display:grid;min-height:58px;grid-template-columns:38px minmax(0,1fr) 34px;align-items:center;gap:11px;padding:11px 13px;border:1px solid #d8e2eb;border-radius:7px;background:#f4f7fa}.pm-course-pref-editor-head strong{display:block;color:#1b344b;font-size:.82rem}.pm-course-pref-editor-head div>span{display:block;margin-top:3px;color:#6c7f91;font-size:.7rem}.pm-course-pref-editor-icon{display:grid;width:38px;height:38px;place-items:center;border:1px solid #bfd8ce;border-radius:6px;color:#176a50;background:#e8f3ef}.pm-course-pref-editor-count{display:grid;width:34px;height:34px;place-items:center;border:1px solid #cad8e4;border-radius:6px;color:#36536d;background:#fff;font-size:.75rem;font-weight:800}.pm-course-pref-grid-wrap{max-height:min(390px,calc(100dvh - 330px));overflow:auto;border:1px solid #d8e1e9;border-radius:7px;background:#fff;overscroll-behavior:contain;scrollbar-gutter:stable}.pm-course-pref-table{width:100%;min-width:720px;table-layout:fixed;border-collapse:separate;border-spacing:0}.pm-course-pref-table col:nth-child(1){width:17%}.pm-course-pref-table col:nth-child(2){width:19%}.pm-course-pref-table col:nth-child(3){width:15%}.pm-course-pref-table col:nth-child(4){width:42%}.pm-course-pref-table col:nth-child(5){width:7%}.pm-course-pref-table th{position:sticky;top:0;z-index:1;height:40px;padding:0 11px;border-right:1px solid #dce4eb;border-bottom:1px solid #d8e1e9;color:#617588;background:#eef3f7;text-align:left;font-size:.68rem;font-weight:800;text-transform:uppercase}.pm-course-pref-table td{height:60px;min-width:0;padding:10px 11px;border-right:1px solid #e3e9ef;border-bottom:1px solid #e3e9ef;overflow:hidden;color:#40566b;background:#fff;text-overflow:ellipsis;white-space:nowrap;font-size:.76rem;vertical-align:middle}.pm-course-pref-table tbody tr:last-child td{border-bottom:0}.pm-course-pref-table th:last-child,.pm-course-pref-table td:last-child{border-right:0;text-align:center}.pm-course-pref-table tbody tr:hover td{background:#f8fafc}.pm-course-pref-course{color:#20384f!important;font-weight:800}.pm-course-pref-table select{width:100%;height:34px;padding:0 7px;border:1px solid #ccd8e3;border-radius:5px;color:#2f475e;background:#fff;outline:none;font-size:.72rem}.pm-course-pref-table select:focus{border-color:#327c64;box-shadow:0 0 0 3px #176a501a}.pm-course-pref-delete-cell button{display:grid;width:30px;height:30px;margin:0 auto;padding:0;place-items:center;border:1px solid #f0c4c8;border-radius:5px;color:#b4232f;background:#fff7f7;cursor:pointer}.pm-course-pref-delete-cell button:hover{border-color:#dc8f96;background:#fff0f1}.pm-course-pref-empty{display:grid;min-height:180px;place-items:center;padding:28px;color:#728496;font-size:.76rem}.pm-course-pref-editor-actions{margin-top:0!important}.pm-course-pref-editor-actions button{min-height:36px;padding:7px 13px;border-radius:6px;font-size:.74rem;font-weight:800;cursor:pointer}.pm-course-pref-editor-actions button:disabled{opacity:.55;cursor:default}@media (max-width: 720px){.pm-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.pm-filters{align-items:stretch;flex-direction:column}.pm-search,.pm-filter-select{width:100%}.pm-accordion-body{padding:10px}.pm-course-pref-editor-head{grid-template-columns:36px minmax(0,1fr) 32px}.pm-course-pref-grid-wrap{overflow:auto}}.app-body.app-examination .page-content{overflow-y:auto}.exam-page{display:flex;flex-direction:column;gap:18px}.exam-tabs{display:flex;align-items:center;gap:8px;overflow-x:auto;padding:2px}.exam-tabs button{border:1px solid var(--border);background:var(--surface-card, #fff);color:var(--ink-soft);border-radius:var(--r-md, 8px);padding:8px 12px;display:inline-flex;align-items:center;gap:7px;font-size:.78rem;font-weight:800;cursor:pointer;white-space:nowrap}.exam-tabs button span{width:20px;height:20px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-app);color:var(--muted);font-family:var(--font-mono);font-size:.68rem}.exam-tabs button small{min-width:20px;height:20px;border-radius:999px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;background:var(--alice);color:var(--blue-dark);font-family:var(--font-mono);font-size:.66rem}.exam-tabs button.active{background:var(--blue);border-color:var(--blue);color:#fff}.exam-tabs button.active span,.exam-tabs button.active small{background:#ffffff2e;color:#fff}.exam-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.exam-stat{background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);padding:14px 16px;display:flex;align-items:center;gap:13px;box-shadow:var(--shadow-xs)}.exam-stat-icon{width:40px;height:40px;border-radius:var(--r-md, 8px);display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}.exam-stat-icon.blue{background:var(--alice);color:var(--blue)}.exam-stat-icon.teal{background:#0d94881f;color:#0d9488}.exam-stat-icon.amber{background:#eab3081f;color:#b45309}.exam-stat strong{display:block;font-size:1.45rem;line-height:1;font-family:var(--font-mono);color:var(--ink)}.exam-stat span{font-size:.73rem;color:var(--muted)}.exam-grid{display:grid;grid-template-columns:minmax(340px,.92fr) minmax(420px,1.08fr);gap:14px;align-items:start}.exam-source-layout{display:grid;grid-template-columns:1fr;gap:14px;align-items:start}.exam-panel{background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);padding:16px;box-shadow:var(--shadow-xs);display:flex;flex-direction:column;gap:14px}.exam-section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding-bottom:10px;border-bottom:1px solid var(--border)}.exam-section-head span{font-size:.75rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft)}.exam-section-head small{color:var(--muted);font-size:.74rem;font-family:var(--font-mono)}.exam-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.exam-config-card{border:1px solid var(--border);border-radius:var(--r-lg, 12px);background:var(--surface-app);overflow:hidden}.exam-config-card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface-card, #fff)}.exam-config-card-header-left{display:flex;align-items:center;gap:9px}.exam-config-card-header-left>span{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.11em;color:var(--ink-soft)}.exam-config-daybadge{display:inline-flex;align-items:center;border-radius:999px;padding:2px 9px;font-family:var(--font-mono);font-size:.63rem;font-weight:800;background:var(--alice);color:var(--blue-dark)}.exam-config-session-count{color:var(--muted);font-size:.72rem;font-family:var(--font-mono)}.exam-config-dates{display:flex;align-items:flex-end;gap:10px;padding:14px;border-bottom:1px solid var(--border)}.exam-config-dates .exam-field{flex:1;min-width:130px;max-width:210px}.exam-config-arrow{color:var(--muted);font-size:1.1rem;padding-bottom:10px;flex-shrink:0}.exam-sessions-builder{padding:14px;display:flex;flex-direction:column;gap:10px}.exam-sessions-builder-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.exam-sessions-builder-head>span{font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--ink-soft)}.exam-sessions-list{display:flex;flex-direction:column;gap:6px}.exam-session-row{display:grid;grid-template-columns:100px 1fr 1fr 96px 30px;gap:10px;align-items:center;background:var(--surface-card, #fff);border:1px solid var(--border);border-left:3px solid var(--blue);border-radius:var(--r-md, 8px);padding:10px 12px}.exam-session-row:has(.exam-session-remove:hover){border-left-color:var(--cinnabar, #dc493a)}.exam-session-label{font-size:.76rem;font-weight:800;color:var(--ink-soft);white-space:nowrap}.exam-session-field{display:flex;flex-direction:column;gap:4px;font-size:.67rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.exam-session-field input,.exam-session-field select{width:100%;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-app);color:var(--ink);font:600 .81rem var(--font-sans);padding:7px 9px}.exam-session-field input:focus,.exam-session-field select:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px #4392f11a}.exam-session-ends{display:flex;flex-direction:column;gap:4px}.exam-session-ends>span{font-size:.67rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.exam-session-ends>strong{font-family:var(--font-mono);font-size:.9rem;font-weight:800;color:var(--ink);padding:6px 0}.exam-session-remove{width:26px;height:26px;border-radius:50%;border:1px solid rgba(220,73,58,.28);background:transparent;color:var(--cinnabar, #dc493a);font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;justify-self:center;transition:background .12s}.exam-session-remove:hover{background:#dc493a17}.exam-field{display:flex;flex-direction:column;gap:6px;color:var(--muted);font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.exam-field input,.exam-field select,.exam-field textarea{width:100%;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-app);color:var(--ink);font:600 .84rem var(--font-sans);padding:10px 11px;text-transform:none;letter-spacing:0;resize:vertical}.exam-field input:focus,.exam-field select:focus,.exam-field textarea:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px #4392f11a}.exam-days{display:flex;flex-wrap:wrap;gap:7px}.exam-days button{border:1px solid var(--border);background:#fff;color:var(--ink-soft);border-radius:var(--r-md, 8px);padding:7px 11px;font-size:.75rem;font-weight:800;cursor:pointer}.exam-days button.active{background:var(--blue);border-color:var(--blue);color:#fff}.exam-preflight{border-radius:var(--r-md, 8px);padding:11px 12px;display:flex;flex-direction:column;gap:3px;font-size:.8rem}.exam-preflight.ok{background:#22c55e1a;border:1px solid rgba(34,197,94,.24);color:#166534}.exam-preflight.warn{background:#f59e0b1c;border:1px solid rgba(245,158,11,.28);color:#92400e}.exam-generate,.exam-btn{border-radius:var(--r-md, 8px);border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-weight:800;cursor:pointer;white-space:nowrap}.exam-generate{width:100%;background:var(--blue);color:#fff;padding:11px 14px;font-size:.84rem}.exam-generate:disabled{opacity:.7;cursor:wait}.exam-btn{padding:7px 11px;font-size:.75rem}.exam-btn:disabled{opacity:.65;cursor:wait}.exam-btn.ghost{background:transparent;color:var(--ink-soft);border-color:var(--border)}.exam-btn.primary{background:var(--blue);color:#fff;border-color:var(--blue)}.exam-btn.outline{background:var(--surface-card, #fff);color:var(--blue-dark);border-color:#4392f159}.exam-btn.outline:hover,.exam-btn.ghost:hover{background:var(--alice);border-color:#4392f18c}.exam-btn.success{background:#16a34a;color:#fff;border-color:#16a34a}.exam-btn.danger{background:transparent;color:var(--cinnabar);border-color:#dc493a52}.exam-btn.danger.solid{background:var(--cinnabar);color:#fff;border-color:var(--cinnabar)}.exam-empty{min-height:220px;border:1px dashed var(--border);background:var(--surface-app);border-radius:var(--r-md, 8px);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;text-align:center;color:var(--muted);padding:20px}.exam-empty.compact{min-height:96px}.exam-preview-list{display:flex;flex-direction:column;gap:8px}.exam-preview-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap}.exam-dept-legend{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0}.exam-dept-legend-item{display:inline-flex;align-items:center;gap:5px;border:1px solid;border-radius:999px;padding:3px 10px 3px 6px;font-size:.71rem;font-weight:700}.exam-dept-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.exam-dept-inline-badge{display:inline-flex;width:max-content;align-items:center;border-radius:999px;padding:1px 7px;font-size:.61rem;font-weight:800}.exam-preview-header-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.exam-day-preview,.exam-session-list{display:flex;flex-direction:column;gap:12px}.exam-session-scroll{max-height:min(64vh,720px);overflow-y:auto;overflow-x:hidden;padding-right:4px}.exam-day-tabs{display:flex;gap:7px;overflow-x:auto;padding:2px 0}.exam-day-tabs button{border:1px solid var(--border);background:#fff;color:var(--ink-soft);border-radius:var(--r-md, 8px);padding:8px 11px;font-size:.74rem;font-weight:800;cursor:pointer;white-space:nowrap}.exam-day-tabs button.active{background:var(--blue);border-color:var(--blue);color:#fff}.exam-session-section{border:1px solid var(--border);border-radius:var(--r-md, 8px);overflow:hidden;background:#fff}.exam-session-head{display:flex;justify-content:space-between;gap:12px;padding:10px 12px;background:#1f2937;color:#fff}.exam-session-head strong,.exam-session-head span{font-size:.75rem;font-weight:900;color:inherit}.exam-free-session{padding:16px;color:var(--muted);font-size:.78rem;font-weight:700;background:var(--surface-app)}.exam-session-cards{display:flex;flex-direction:column;gap:0;padding:0}.exam-session-columns{display:grid;grid-template-columns:minmax(150px,1fr) minmax(170px,1.05fr) minmax(160px,1fr) minmax(150px,.9fr) minmax(150px,.9fr) 80px 90px;gap:12px;padding:9px 14px;border-radius:0;background:var(--surface-app);border-bottom:1px solid var(--border)}.exam-session-columns span{color:var(--muted);font-size:.68rem;font-weight:900;letter-spacing:.08em;text-transform:uppercase}.exam-session-card{display:grid;grid-template-columns:minmax(150px,1fr) minmax(170px,1.05fr) minmax(160px,1fr) minmax(150px,.9fr) minmax(150px,.9fr) 80px 90px;gap:12px;border:0;border-bottom:1px solid var(--border);border-left:4px solid var(--blue);border-radius:0;padding:10px 14px 10px 12px;background:#fff}.exam-session-card:last-child{border-bottom:0}.exam-session-card--clickable{cursor:pointer;user-select:none;-webkit-user-select:none;transition:background .15s,box-shadow .15s}.exam-session-card--clickable:hover{background:#4392f10f;box-shadow:inset 3px 0 0 var(--blue, #4392f1)}.exam-session-card--mergeable{background:repeating-linear-gradient(-45deg,rgba(245,158,11,.06) 0,rgba(245,158,11,.06) 6px,transparent 6px,transparent 12px)}.exam-session-card--selected,.exam-session-card--selected:hover{background:#4392f124;box-shadow:inset 0 0 0 2px var(--blue, #4392f1)}.exam-merge-bar{position:fixed;left:50%;bottom:26px;transform:translate(-50%);z-index:60;display:flex;align-items:center;gap:14px;padding:10px 12px 10px 18px;background:#0f1f38;color:#fff;border-radius:999px;box-shadow:0 16px 40px #0f1f3859}.exam-merge-count{font-weight:700;font-size:.88rem}.exam-merge-hint{font-size:.75rem;color:#fff9}.exam-merge-clear{background:transparent;border:none;color:#ffffffbf;font-size:.82rem;font-weight:600;cursor:pointer;padding:6px 8px}.exam-merge-clear:hover{color:#fff}.exam-merge-go{background:var(--blue, #4392f1);border:none;color:#fff;font-weight:700;font-size:.85rem;padding:9px 18px;border-radius:999px;cursor:pointer;transition:background .18s,transform .18s}.exam-merge-go:hover:not(:disabled){background:var(--blue-dark, #2b74d4);transform:translateY(-1px)}.exam-merge-go:disabled{opacity:.5;cursor:not-allowed}.exam-session-card--simple{border-left:none;border-bottom:1px solid var(--border-light, #f0f0f0);padding:8px 12px;background:transparent}.exam-session-card--simple:last-child{border-bottom:none}.exam-session-card>div{position:relative;min-width:0;display:flex;flex-direction:column;gap:5px;padding-right:12px}.exam-session-card>div:not(:last-child):after{content:"";position:absolute;top:2px;right:0;bottom:2px;width:1px;background:var(--border)}.exam-session-card strong,.exam-session-card span{color:var(--ink);font-size:.8rem;font-weight:800}.exam-session-card span{overflow-wrap:anywhere}.exam-session-card small,.exam-session-card em{color:var(--muted);font-size:.72rem;line-height:1.35}.exam-student-count{font-size:.82rem;font-weight:700;color:var(--ink)}.exam-study-pill{display:inline-flex;width:max-content;align-items:center;border:1px solid rgba(67,146,241,.24);border-radius:999px;padding:2px 8px;background:#4392f114;color:var(--blue-dark, #2b74d4);font-size:.66rem;font-weight:800}.exam-placement{display:grid;grid-template-columns:minmax(170px,1.1fr) minmax(120px,.7fr) minmax(190px,1fr) minmax(110px,.55fr);gap:12px;align-items:center;border:1px solid var(--border);border-radius:var(--r-md, 8px);padding:10px 12px;background:#fff}.exam-placement div{min-width:0;display:flex;flex-direction:column;gap:3px}.exam-placement strong,.exam-placement span{color:var(--ink);font-size:.82rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exam-placement small,.exam-placement div:first-child span{color:var(--muted);font-size:.72rem;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.exam-more{color:var(--muted);font-size:.76rem;margin:2px 0 0}.exam-conflicts{display:flex;flex-direction:column;gap:5px;border:1px solid rgba(220,73,58,.24);background:#dc493a0f;border-radius:var(--r-md, 8px);padding:10px 12px}.exam-conflicts span{color:#991b1b;font-size:.76rem;font-weight:700}.exam-conflict-head-actions{display:inline-flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.exam-conflict-head-actions .exam-btn{min-height:32px;padding:0 11px;font-size:.72rem}.exam-conflict-resolver-modal{width:min(1120px,94vw);max-height:92vh;display:flex;flex-direction:column;overflow:hidden}.exam-conflict-resolver-body{flex:1;min-height:0;overflow-y:auto;padding:16px 20px 18px;display:flex;flex-direction:column;gap:14px;background:#f7f9fb}.exam-conflict-resolver-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:15px;border:1px solid #d7e2ec;border-radius:8px;background:#fff}.exam-conflict-resolver-hero strong,.exam-conflict-resolver-hero span{display:block}.exam-conflict-resolver-hero>div:first-child strong{color:var(--ink, #0f1f38);font-size:.98rem}.exam-conflict-resolver-hero>div:first-child span{margin-top:3px;color:var(--muted, #6a7a96);font-size:.8rem}.exam-conflict-resolver-hero>div:last-child{min-width:92px;padding:10px 12px;border-radius:8px;text-align:center;border:1px solid #dce5ec}.exam-conflict-resolver-hero>div:last-child strong{font-family:var(--font-mono);font-size:1.2rem}.exam-conflict-resolver-hero>div:last-child span{margin-top:2px;font-size:.68rem;font-weight:800;text-transform:uppercase}.exam-conflict-resolver-hero .is-ready{color:#166534;background:#f0fdf4;border-color:#bbf7d0}.exam-conflict-resolver-hero .is-blocked{color:#991b1b;background:#fef2f2;border-color:#fecaca}.exam-conflict-resolver-section{border:1px solid #d7e2ec;border-radius:8px;overflow:hidden;background:#fff}.exam-conflict-resolver-section-head{display:flex;justify-content:space-between;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid #e0e7ee}.exam-conflict-resolver-section-head strong{color:var(--ink, #0f1f38);font-size:.84rem}.exam-conflict-resolver-section-head span{color:var(--muted, #6a7a96);font-size:.72rem;font-weight:700}.exam-conflict-collapsible-section>.exam-conflict-resolver-section-head{position:relative;padding-right:38px;cursor:pointer;list-style:none;-webkit-user-select:none;user-select:none}.exam-conflict-collapsible-section>.exam-conflict-resolver-section-head::-webkit-details-marker{display:none}.exam-conflict-collapsible-section>.exam-conflict-resolver-section-head:after{content:"";position:absolute;right:14px;top:50%;width:8px;height:8px;border-right:2px solid #315fbe;border-bottom:2px solid #315fbe;transform:translateY(-65%) rotate(45deg);transition:transform .16s ease}.exam-conflict-collapsible-section:not([open])>.exam-conflict-resolver-section-head{border-bottom-color:transparent}.exam-conflict-collapsible-section:not([open])>.exam-conflict-resolver-section-head:after{transform:translateY(-50%) rotate(-45deg)}.exam-conflict-collapsible-section>.exam-conflict-resolver-section-head:focus-visible{outline:3px solid rgba(49,95,190,.22);outline-offset:-3px}.exam-conflict-group-list,.exam-conflict-change-list,.exam-conflict-blocker-list{display:grid;gap:9px;padding:12px}.exam-conflict-group-card,.exam-conflict-change-card{min-width:0;border:1px solid #dce5ec;border-radius:8px;background:#fbfdff;overflow:hidden}.exam-conflict-group-card header,.exam-conflict-change-card header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:11px 12px;border-bottom:1px solid #e4ebf2}.exam-conflict-group-card header strong,.exam-conflict-change-card header strong{display:block;color:var(--ink, #0f1f38);font-size:.8rem}.exam-conflict-group-card header span,.exam-conflict-change-card header span{display:block;margin-top:2px;color:var(--muted, #6a7a96);font-size:.7rem;overflow-wrap:anywhere}.exam-conflict-group-card header em,.exam-conflict-change-card header em,.exam-conflict-change-card header>span{flex-shrink:0;padding:3px 7px;border-radius:999px;background:#eef4ff;color:#315fbe;font-size:.64rem;font-style:normal;font-weight:800}.exam-conflict-group-card p{margin:0;padding:10px 12px;color:#7f1d1d;font-size:.78rem}.exam-conflict-group-card.is-source{background:#fffffb}.exam-conflict-chip-grid{display:flex;flex-wrap:wrap;gap:7px;padding:10px 12px}.exam-conflict-chip-grid span{max-width:100%;padding:5px 8px;border-radius:999px;font-size:.68rem;font-weight:800;overflow-wrap:anywhere}.exam-conflict-chip-grid .is-programme{background:#fee2e2;color:#991b1b}.exam-conflict-chip-grid .is-venue{background:#fff7ed;color:#9a3412}.exam-conflict-chip-grid .is-invigilator{background:#eff6ff;color:#1d4ed8}.exam-conflict-change-row{display:grid;grid-template-columns:120px minmax(0,1fr);gap:10px;align-items:stretch;padding:10px 12px;border-top:1px solid #edf2f7}.exam-conflict-change-row:first-of-type{border-top:0}.exam-conflict-change-row>span{align-self:start;padding:4px 7px;border-radius:6px;color:#334155;background:#e2e8f0;font-size:.65rem;font-weight:800;text-transform:uppercase}.exam-conflict-change-row p{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:8px;margin:0}.exam-conflict-change-row em,.exam-conflict-change-row strong{min-width:0;padding:8px 9px;border-left:3px solid #cbd5e1;border-radius:7px;background:#f8fafc;color:#475569;font-size:.73rem;font-style:normal;overflow-wrap:anywhere}.exam-conflict-change-row strong{border-left-color:#16a34a;background:#f0fdf4;color:#166534}.exam-conflict-blocker-list span{display:flex;gap:8px;align-items:baseline;padding:9px 11px;border-radius:7px;background:#fef2f2;color:#991b1b;font-size:.76rem;overflow-wrap:anywhere}.exam-conflict-blocker-list strong{color:inherit;min-width:90px}.exam-conflict-tool-row{display:flex;align-items:end;gap:8px;flex-wrap:wrap;padding:12px}.exam-conflict-tool-row label{display:flex;flex-direction:column;gap:5px;color:var(--muted, #6a7a96);font-size:.7rem;font-weight:800;text-transform:uppercase}.exam-conflict-tool-row select{min-height:36px;min-width:220px;border:1px solid #cbd7e2;border-radius:7px;background:#fff;color:var(--ink, #0f1f38);font:inherit;font-size:.78rem;text-transform:none}.exam-card-list{display:flex;flex-direction:column;gap:8px}.exam-publish-panel{display:flex;flex-direction:column;gap:14px}.exam-saved-card .tt-saved-actions{flex-wrap:wrap;justify-content:flex-end}.exam-saved-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}.exam-saved-title-row .tt-list-rename-input{max-width:min(420px,100%)}.tt-status-pill.tt-status-rejected{color:#991b1b;background:#fee2e2;border-color:#fecaca}.exam-card{display:flex;overflow:hidden;border:1px solid var(--border);border-radius:var(--r-lg, 12px);background:#fff}.exam-card.source{cursor:default}.exam-card.source.active{border-color:#4392f16b;box-shadow:0 0 0 3px #4392f11a}.exam-card-accent{width:4px;flex-shrink:0}.exam-card-accent.amber{background:#f59e0b}.exam-card-accent.blue{background:var(--blue)}.exam-card-accent.green{background:#22c55e}.exam-card-accent.red{background:var(--cinnabar)}.exam-card-main{flex:1;min-width:0;padding:13px 15px;display:flex;align-items:center;justify-content:space-between;gap:12px}.exam-card-body{min-width:0;display:flex;flex-direction:column;gap:5px}.exam-card-title-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.exam-card-title-row strong{color:var(--ink);font-size:.88rem}.exam-card-meta,.exam-card-note{color:var(--muted);font-size:.72rem}.exam-card-note.danger{color:#991b1b}.exam-card-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end}.exam-badge{display:inline-flex;align-items:center;border-radius:999px;padding:3px 8px;font-family:var(--font-mono);font-size:.62rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.exam-badge.amber{background:#f59e0b1f;color:#92400e}.exam-badge.blue{background:var(--alice);color:var(--blue-dark)}.exam-badge.green{background:#22c55e1c;color:#166534}.exam-badge.red{background:#dc493a1a;color:#991b1b}.exam-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;background:#0a14288c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center}.exam-preview-page{padding-bottom:22px}.exam-day-section{gap:12px}.exam-day-table-wrap{width:100%;overflow-x:auto}.exam-day-table{width:100%;min-width:880px;border-collapse:separate;border-spacing:0;table-layout:fixed;border:1px solid var(--border);border-radius:var(--r-md, 8px);overflow:hidden}.exam-day-table th,.exam-day-table td{border-right:1px solid var(--border);border-bottom:1px solid var(--border);vertical-align:top}.exam-day-table th:last-child,.exam-day-table td:last-child{border-right:0}.exam-day-table tr:last-child td{border-bottom:0}.exam-day-table th{background:#111827;color:#fff;padding:11px 12px;font-size:.74rem;font-weight:900;text-align:center}.exam-day-table th:first-child{width:150px}.exam-day-table td{min-height:120px;padding:10px;background:#fff}.exam-day-table td.has-exam{background:#f8fbff}.exam-programme-label{color:var(--ink);font-size:.78rem;font-weight:900;text-align:center;background:var(--surface-app)!important}.exam-free-slot{min-height:96px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.74rem;font-weight:800}.exam-slot-stack{display:flex;flex-direction:column;gap:8px}.exam-slot-card{border:1px solid rgba(67,146,241,.18);border-left:4px solid var(--blue);border-radius:var(--r-md, 8px);background:#fff;padding:9px 10px;display:flex;flex-direction:column;gap:4px}.exam-slot-card strong{color:var(--ink);font-size:.76rem;line-height:1.35}.exam-slot-card span,.exam-slot-card small,.exam-slot-card em{color:var(--muted);font-size:.7rem;line-height:1.35}.exam-slot-card em{color:var(--blue-dark);font-style:normal;font-weight:800}.expv-page{display:flex;flex-direction:column;gap:14px}.expv-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.expv-workspace-notice{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 14px;border:1px solid #b8d6c8;border-left:4px solid #17845f;border-radius:8px;background:#f1faf6}.expv-workspace-notice>div:first-child{display:flex;flex-direction:column;gap:2px}.expv-workspace-notice strong{color:#075e44;font-size:.78rem}.expv-workspace-notice span{color:#47685b;font-size:.72rem}.expv-workspace-notice-actions{display:flex;gap:8px;flex-shrink:0}.expv-session-actions{flex-wrap:wrap;justify-content:flex-end}@media (max-width: 980px){.expv-day-session-nav{align-items:stretch!important;flex-direction:column}.expv-session-actions{justify-content:flex-start}}.exam-merge-blockers{display:flex;flex-direction:column;gap:5px;margin-top:12px;padding:11px 12px;border:1px solid #f2b9be;border-radius:8px;background:#fff3f4;color:#9b2530;font-size:.78rem}.exam-session-split-body,.exam-exit-review-body{display:flex;flex-direction:column;gap:14px;padding:18px 20px}.exam-session-split-body>p,.exam-exit-review-body>p{margin:0;color:var(--ink-soft);font-size:.84rem;line-height:1.55}.exam-exit-review-body>strong{padding:10px 12px;border:1px solid #f2cf85;border-radius:7px;color:#85540b;background:#fff8e7;font-size:.76rem}.exam-session-split-count{display:flex;gap:8px}.exam-session-split-options{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.exam-session-split-options label{display:grid!important;grid-template-columns:auto 1fr;gap:2px 8px;align-items:center;min-width:0;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--surface-app);cursor:pointer}.exam-session-split-options input{grid-row:1 / 3;accent-color:var(--blue)}.exam-session-split-options span{overflow-wrap:anywhere;color:var(--ink);font-size:.76rem;font-weight:800}.exam-session-split-options small,.exam-resolved-box>small{color:var(--muted);font-size:.68rem}.expv-stat{background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);padding:13px 16px;display:flex;flex-direction:column;gap:3px;box-shadow:var(--shadow-xs)}.expv-stat strong{font-family:var(--font-mono);font-size:1.5rem;font-weight:800;color:var(--ink);line-height:1}.expv-stat strong.danger{color:var(--cinnabar, #dc493a)}.expv-stat span{font-size:.72rem;color:var(--muted);font-weight:600}.expv-legend-strip{background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);padding:11px 16px;display:flex;align-items:flex-start;gap:14px;box-shadow:var(--shadow-xs)}.expv-legend-label{font-size:.67rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);white-space:nowrap;padding-top:4px;flex-shrink:0}.expv-legend-items{display:flex;flex-wrap:wrap;gap:6px}.expv-legend-item{display:inline-flex;align-items:center;gap:6px;border:1px solid;border-radius:999px;padding:3px 10px 3px 6px;font-size:.71rem;font-weight:700}.expv-legend-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.expv-panel{background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);overflow:hidden;box-shadow:var(--shadow-xs)}.expv-day-tabs-row{display:flex;flex-wrap:nowrap;gap:6px;overflow-x:auto;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface-app);scrollbar-width:thin}.expv-day-tab{display:inline-flex;align-items:center;gap:7px;padding:7px 12px;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-card, #fff);cursor:pointer;white-space:nowrap;flex-shrink:0}.expv-day-tab:hover{border-color:#4392f166;background:var(--alice)}.expv-day-tab.active{background:var(--blue);border-color:var(--blue);color:#fff}.expv-day-name{font-size:.75rem;font-weight:800;color:var(--ink-soft)}.expv-day-date{font-size:.68rem;font-family:var(--font-mono);color:var(--muted)}.expv-day-tab.active .expv-day-name,.expv-day-tab.active .expv-day-date{color:#fff}.expv-day-count{min-width:20px;height:20px;border-radius:999px;padding:0 5px;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--alice);color:var(--blue-dark);font-family:var(--font-mono);font-size:.62rem;font-weight:800}.expv-day-tab.active .expv-day-count{background:#ffffff40;color:#fff}.expv-session-block{border-bottom:1px solid var(--border)}.expv-session-block:last-child{border-bottom:0}.expv-session-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 16px;color:#fff}.expv-session-bar-left{display:flex;align-items:center;gap:12px}.expv-session-bar strong{font-size:.8rem;font-weight:900;color:inherit}.expv-session-time{font-family:var(--font-mono);font-size:.75rem;color:inherit;opacity:.7}.expv-session-count{font-size:.72rem;opacity:.65;font-family:var(--font-mono)}.expv-free-slot{padding:22px 16px;color:var(--muted);font-size:.77rem;font-weight:700;text-align:center}@media (max-width: 1100px){.exam-grid,.exam-summary{grid-template-columns:1fr}}@media (max-width: 760px){.exam-form-grid,.exam-session-card,.exam-session-columns,.exam-placement{grid-template-columns:1fr}.exam-session-row{grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto}.exam-session-label{grid-column:1 / -1;font-size:.8rem;color:var(--ink);border-bottom:1px solid var(--border);padding-bottom:8px;margin-bottom:2px}.exam-session-ends{grid-column:1}.exam-session-remove{grid-column:2;justify-self:end;align-self:end}.exam-config-dates{flex-wrap:wrap}.exam-config-arrow,.exam-session-columns{display:none}.exam-session-card>div{padding-right:0;padding-bottom:10px;border-bottom:1px solid var(--border)}.exam-session-card>div:last-child{padding-bottom:0;border-bottom:0}.exam-session-card>div:not(:last-child):after{display:none}.exam-card-main{align-items:flex-start;flex-direction:column}.exam-card-actions,.exam-preview-actions{justify-content:flex-start}}@media (max-width: 760px){.expv-stats{grid-template-columns:repeat(2,1fr)}.expv-day-tabs-row{padding:8px}.expv-workspace-notice,.expv-workspace-notice-actions{align-items:stretch;flex-direction:column}.exam-session-split-options{grid-template-columns:1fr}.exam-exit-review-actions{align-items:stretch;flex-direction:column}}@media print{.sidebar,.app-topbar,.exam-day-tabs,.expv-day-tabs-row,.exam-preview-header-actions{display:none!important}.app-shell,.app-main,.page-content{display:block!important;overflow:visible!important}.expv-session-bar{position:static;-webkit-print-color-adjust:exact;print-color-adjust:exact}.exam-session-scroll{max-height:none;overflow:visible}.exam-panel,.expv-panel{box-shadow:none;break-inside:avoid}}.exam-config-arrow{display:none}.exam-config-helper{margin:0;color:var(--muted);font-size:.82rem;line-height:1.5}.exam-session-card--cr{cursor:pointer;transition:background-color .15s,box-shadow .15s}.exam-session-card--cr:hover{background-color:#f8faff;box-shadow:inset 0 0 0 1px #4392f133}.ef-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.expv-unsaved-label{display:inline-flex;align-items:center;min-height:30px;padding:0 9px;border:1px solid #f2cf85;border-radius:6px;color:#85540b;background:#fff8e7;font-size:.7rem;font-weight:800}.ef-bar.has-practical-actions{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}.ef-bar.has-practical-actions .ef-pills{flex:0 0 auto;flex-wrap:nowrap}.ef-bar.has-practical-actions .ef-result-count{margin-left:0}.ef-practical-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin-left:auto}.ef-practical-actions .exam-btn{min-height:32px;padding:6px 10px;white-space:nowrap}.ef-search-wrap{position:relative;display:flex;align-items:center;flex:1;min-width:180px;max-width:320px}.ef-search-icon{position:absolute;left:9px;pointer-events:none;display:flex;align-items:center;color:var(--muted)}.ef-search-input{width:100%;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-app);color:var(--ink);font:600 .8rem var(--font-sans);padding:7px 28px 7px 30px;transition:border-color .12s,box-shadow .12s}.ef-search-input::placeholder{color:var(--muted)}.ef-search-input:focus{outline:none;border-color:var(--blue);background:#fff;box-shadow:0 0 0 3px #4392f11a}.ef-search-clear{position:absolute;right:7px;width:17px;height:17px;border-radius:50%;border:none;background:var(--border);color:var(--ink-soft);font-size:.8rem;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}.ef-search-clear:hover{background:#d1d5db}.ef-pills{display:flex;align-items:center;gap:5px;flex-wrap:wrap}.ef-pill{border:1px solid var(--border);background:var(--surface-card, #fff);color:var(--ink-soft);border-radius:999px;padding:5px 12px;font-size:.71rem;font-weight:800;cursor:pointer;white-space:nowrap;transition:all .1s}.ef-pill:hover{border-color:#4392f166;background:var(--alice);color:var(--blue-dark)}.ef-pill.active{background:var(--blue);border-color:var(--blue);color:#fff}.ef-dept-select{border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-app);color:var(--ink);font:600 .78rem var(--font-sans);padding:7px 10px;cursor:pointer}.ef-dept-select:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px #4392f11a}.ef-clear-btn{border:1px solid rgba(220,73,58,.28);background:transparent;color:var(--cinnabar, #dc493a);border-radius:var(--r-md, 8px);padding:6px 11px;font-size:.71rem;font-weight:800;cursor:pointer;white-space:nowrap}.ef-clear-btn:hover{background:#dc493a12}.ef-result-count{font-size:.71rem;color:var(--muted);font-family:var(--font-mono);margin-left:auto;white-space:nowrap}.exam-day-tabs button{flex-direction:column;align-items:flex-start;gap:2px;min-width:68px}.exam-day-tab-name{font-size:.74rem;font-weight:800;color:inherit}.exam-day-tab-meta{display:flex;align-items:center;gap:4px}.exam-day-tab-date{font-size:.61rem;font-family:var(--font-mono);color:var(--muted);font-weight:600}.exam-day-tab-count{min-width:17px;height:17px;border-radius:999px;padding:0 4px;display:inline-flex;align-items:center;justify-content:center;background:var(--alice);color:var(--blue-dark);font-family:var(--font-mono);font-size:.58rem;font-weight:800}.exam-day-tabs button.active .exam-day-tab-date{color:#ffffffb3}.exam-day-tabs button.active .exam-day-tab-count{background:#ffffff38;color:#fff}.expv-sem-chip{display:inline-flex;align-items:center;gap:7px;padding:0 14px;height:36px;border-radius:8px;background:#4392f11a;border:1px solid rgba(67,146,241,.25);color:var(--blue-dark, #1e40af);font-size:.82rem;font-weight:700;white-space:nowrap}.expv-sem-dot{width:7px;height:7px;border-radius:50%;background:var(--blue, #4392f1)}.exam-preference-gate{display:flex;flex-direction:column;gap:16px}.exam-pref-card{background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .1));border-radius:10px;box-shadow:var(--shadow-xs, 0 1px 2px rgba(15, 31, 56, .05));padding:18px 20px}.exam-pref-card h3{margin:0 0 8px;font-size:.98rem;font-weight:800;color:var(--ink, #0f1f38)}.exam-pref-deadline-row{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;margin-top:14px}.exam-pref-deadline-row .exam-field{min-width:260px}.exam-pref-status-card{padding:0;overflow:hidden}.exam-pref-status-card>h3,.exam-pref-status-card>.exam-config-helper{padding-left:20px;padding-right:20px}.exam-pref-status-card>h3{padding-top:18px}.exam-pref-status-list{margin-top:14px;border-top:1px solid var(--border, rgba(15, 31, 56, .1));max-height:360px;overflow:auto}.exam-pref-status-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 20px;border-bottom:1px solid var(--border-light, #edf1f7)}.exam-pref-status-row:last-child{border-bottom:0}.exam-pref-dept-name{min-width:0;font-size:.84rem;font-weight:700;color:var(--ink, #0f1f38)}.exam-pref-status{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;border-radius:999px;padding:4px 10px;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.07em}.exam-pref-status.pending{color:#92400e;background:#f59e0b1f;border:1px solid rgba(245,158,11,.28)}.exam-pref-status.submitted{color:#166534;background:#22c55e1a;border:1px solid rgba(34,197,94,.24)}.exam-pref-status.none{color:#1d4ed8;background:#4392f11a;border:1px solid rgba(67,146,241,.24)}.exam-pref-status.missed{color:#991b1b;background:#dc493a17;border:1px solid rgba(220,73,58,.24)}.exam-pref-status-empty{padding:22px 20px;color:var(--muted, #6a7a96);font-size:.84rem;text-align:center}.exam-invigil-upload{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 14px;border:1px solid var(--border);border-radius:10px;background:var(--surface-app);margin-bottom:12px;flex-wrap:wrap}.exam-invigil-upload-label{display:flex;flex-direction:column;gap:2px}.exam-invigil-upload-label strong{font-size:.82rem}.exam-invigil-upload-label small{font-size:.73rem;color:var(--muted)}.exam-invigil-upload-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.exam-invigil-file-btn{cursor:pointer}.exam-invigil-count{font-size:.78rem;font-weight:700;color:#15803d}.exam-invigil-hint{font-size:.75rem;color:var(--muted)}.exam-edit-session-btn{all:unset;cursor:pointer;font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:999px;border:1px solid var(--blue, #4392f1);color:var(--blue, #4392f1);margin-left:8px;white-space:nowrap;transition:background .15s,color .15s}.exam-edit-session-btn:hover{background:var(--blue, #4392f1);color:#fff}.exam-clash-card{border:1px solid var(--border, rgba(15, 31, 56, .12));border-radius:10px;padding:12px 14px;margin-bottom:10px;background:#fff}.exam-clash-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}.exam-clash-head strong{font-size:.9rem;color:var(--ink, #0f1f38)}.exam-clash-sub{font-size:.76rem;color:var(--text-muted, #6a7a96)}.exam-clash-row{display:flex;align-items:center;gap:10px;padding:5px 0}.exam-clash-course{font-family:var(--font-mono);font-weight:700;font-size:.78rem;color:var(--ink, #0f1f38);min-width:88px}.exam-clash-arrow{color:var(--text-muted, #9aa7bd)}.exam-clash-row .ax-type-filter{flex:1;max-width:none}.exam-clash-empty{font-size:.76rem;color:#b45309;margin:4px 0 0}.exam-merge-modal .modal-body{max-height:72vh;overflow-y:auto}.exam-session-merge-body{display:flex;flex-direction:column;gap:18px}.exam-session-merge-intro{max-width:820px;margin:0;color:#506278;font-size:.84rem;line-height:1.6}.exam-session-merge-intro strong{color:#1d354e}.exam-merge-controls{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.exam-merge-control-group{min-width:0;padding:14px;border:1px solid #dbe4ec;border-radius:8px;background:#f8fafc}.exam-merge-control-heading{display:flex;align-items:center;gap:8px;margin-bottom:10px;color:#243d57;font-size:.77rem}.exam-merge-control-heading>span{display:inline-grid;width:22px;height:22px;place-items:center;border-radius:50%;color:#fff;background:#315fbe;font-size:.68rem;font-weight:800}.exam-merge-source-list,.exam-merge-target-options{display:flex;flex-wrap:wrap;gap:8px}.exam-merge-source-list label{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1px 8px;min-width:min(100%,180px);padding:9px 10px;border:1px solid #d4dee8;border-radius:7px;color:#203a55;background:#fff;cursor:pointer}.exam-merge-source-list input{grid-row:1 / 3;align-self:center;accent-color:#315fbe}.exam-merge-source-list span{min-width:0;font-size:.76rem;font-weight:800;overflow-wrap:anywhere}.exam-merge-source-list small{color:#6f8093;font-size:.66rem}.exam-merge-target-options .exam-btn{display:flex;min-height:52px;flex:1 1 145px;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;padding:8px 11px;text-align:left}.exam-merge-target-options .exam-btn span{font-size:.75rem}.exam-merge-target-options .exam-btn small{font-size:.64rem;opacity:.78}.exam-merge-review{overflow:hidden;border:1px solid #b9dccc;border-radius:8px;background:#fff}.exam-merge-review-head{display:flex;align-items:flex-start;gap:11px;padding:14px 16px;color:#174c3b;background:#edf8f3;border-bottom:1px solid #cbe6da}.exam-merge-review-status{display:inline-grid;width:30px;height:30px;flex:0 0 30px;place-items:center;border-radius:50%;color:#fff;background:#13805d}.exam-merge-review-head strong{display:block;margin-bottom:2px;font-size:.86rem}.exam-merge-review-head p{margin:0;color:#4d7064;font-size:.72rem}.exam-merge-target{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 16px;border-bottom:1px solid #e2e9ef;background:#fbfcfd}.exam-merge-target>div{display:flex;min-width:0;flex-direction:column;gap:2px}.exam-merge-target span,.exam-merge-change-value span,.exam-merge-course-heading>span{color:#708195;font-size:.62rem;font-weight:800;text-transform:uppercase}.exam-merge-target strong{color:#1d354e;font-size:.84rem}.exam-merge-target time{flex:0 0 auto;padding:6px 9px;border:1px solid #b8cbed;border-radius:6px;color:#244f9f;background:#eef4ff;font-family:var(--font-mono);font-size:.72rem;font-weight:800}.exam-merge-summary{display:flex;flex-wrap:wrap;gap:8px;padding:11px 16px;border-bottom:1px solid #e2e9ef;background:#f7f9fb}.exam-merge-summary>span{display:inline-flex;align-items:baseline;gap:4px;padding:4px 8px;border:1px solid #dbe3eb;border-radius:6px;color:#5b6d81;background:#fff;font-size:.66rem;font-weight:700}.exam-merge-summary strong{color:#213b56;font-size:.76rem}.exam-merge-course-list{display:flex;flex-direction:column;max-height:min(420px,48vh);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.exam-merge-course-list::-webkit-scrollbar{width:8px}.exam-merge-course-list::-webkit-scrollbar-track{background:#f4f7f9}.exam-merge-course-list::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px;background:#aebed0}.exam-merge-course{display:grid;grid-template-columns:112px minmax(0,1fr);min-width:0;padding:16px;background:#fff}.exam-merge-course+.exam-merge-course{border-top:1px solid #dfe7ee}.exam-merge-course-heading{display:flex;min-width:0;flex-direction:column;align-items:flex-start;gap:3px;padding-right:15px}.exam-merge-course-heading strong{max-width:100%;color:#17324d;font-family:var(--font-mono);font-size:.86rem;overflow-wrap:anywhere}.exam-merge-course-heading small{color:#75869a;font-size:.64rem}.exam-merge-course-changes{min-width:0;border-left:1px solid #e0e7ee;padding-left:16px}.exam-merge-change{display:grid;grid-template-columns:94px minmax(0,1fr);gap:12px;align-items:start;min-width:0}.exam-merge-change+.exam-merge-change{margin-top:13px;padding-top:13px;border-top:1px dashed #dce4eb}.exam-merge-change-type{display:inline-flex;width:fit-content;min-height:24px;align-items:center;padding:3px 7px;border:1px solid #cbd8e5;border-radius:5px;color:#38526d;background:#f3f6f9;font-size:.64rem;font-weight:800}.exam-merge-change--session .exam-merge-change-type{color:#704710;background:#fff8e8;border-color:#edd29b}.exam-merge-change--venue .exam-merge-change-type{color:#294f96;background:#eef4ff;border-color:#c2d3ef}.exam-merge-change-route{display:grid;grid-template-columns:minmax(0,1fr) 24px minmax(0,1fr);gap:8px;align-items:stretch;min-width:0}.exam-merge-change-value{display:flex;min-width:0;min-height:50px;flex-direction:column;justify-content:center;gap:3px;padding:8px 10px;border-left:3px solid #aebbc8;color:#43566b;background:#f6f8fa}.exam-merge-change-value.is-proposed{border-left-color:#17815f;color:#174c3b;background:#eef8f4}.exam-merge-change-value strong{min-width:0;font-size:.75rem;line-height:1.45;overflow-wrap:anywhere}.exam-merge-change-arrow{display:inline-grid;place-items:center;color:#718196}.exam-merge-staff-change{min-width:0}.exam-merge-staff-counts{display:flex;align-items:center;gap:9px;color:#64758a;font-size:.7rem}.exam-merge-staff-counts span{padding:7px 9px;border-left:3px solid #aebbc8;background:#f6f8fa}.exam-merge-staff-counts span.is-proposed{border-left-color:#17815f;color:#174c3b;background:#eef8f4}.exam-merge-staff-counts strong{color:inherit;font-size:.78rem}.exam-merge-staff-delta{display:flex;flex-wrap:wrap;gap:6px;margin-top:7px}.exam-merge-staff-delta span{padding:3px 7px;border:1px solid #d8e1e9;border-radius:5px;color:#64758a;background:#f7f9fb;font-size:.62rem;font-weight:800}.exam-merge-staff-delta .is-removed{color:#9a3540;background:#fff2f3;border-color:#f0c4c8}.exam-merge-staff-delta .is-added{color:#126548;background:#edf9f4;border-color:#b8dfcf}.exam-merge-staff-details{margin-top:8px}.exam-merge-staff-details summary{width:fit-content;color:#315fbe;font-size:.7rem;font-weight:800;cursor:pointer}.exam-merge-staff-details[open] summary{margin-bottom:10px}.exam-merge-staff-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);border:1px solid #dce5ec;border-radius:7px;overflow:hidden}.exam-merge-staff-columns section{min-width:0;padding:11px;background:#f8fafb}.exam-merge-staff-columns section+section{border-left:1px solid #dce5ec}.exam-merge-staff-columns section.is-proposed{background:#f0f9f5}.exam-merge-staff-column-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:7px;color:#334b64;font-size:.69rem}.exam-merge-staff-column-head span{display:inline-grid;min-width:21px;height:21px;place-items:center;border-radius:50%;color:#fff;background:#718196;font-size:.61rem;font-weight:800}.exam-merge-staff-columns .is-proposed .exam-merge-staff-column-head span{background:#17815f}.exam-merge-staff-columns ul{display:grid;gap:5px;margin:0;padding:0;list-style:none}.exam-merge-staff-columns li{position:relative;display:flex;min-width:0;align-items:baseline;justify-content:space-between;gap:8px;padding-left:10px;color:#52667b;font-size:.68rem;line-height:1.4;overflow-wrap:anywhere}.exam-merge-staff-columns li.is-removed{color:#923642}.exam-merge-staff-columns li.is-added{color:#126548}.exam-merge-staff-columns li small{flex:0 0 auto;padding:1px 4px;border-radius:4px;color:inherit;background:#ffffffb8;font-size:.56rem;font-weight:800;text-transform:uppercase}.exam-merge-staff-columns li:before{position:absolute;top:.55em;left:0;width:4px;height:4px;border-radius:50%;background:#91a0af;content:""}.exam-merge-staff-columns section.is-proposed li:before{background:#17815f}.exam-merge-staff-columns li.is-removed:before{background:#c34b57}.exam-merge-staff-columns li.is-added:before{background:#17815f}.exam-merge-staff-columns p{margin:0;color:#77879a;font-size:.68rem}@media (max-width: 720px){body.app-body .exam-session-merge-dialog{width:100%!important}.exam-merge-controls{grid-template-columns:minmax(0,1fr)}.exam-merge-course{grid-template-columns:minmax(0,1fr);gap:11px;padding:14px}.exam-merge-course-heading{display:grid;grid-template-columns:auto 1fr auto;align-items:baseline;gap:7px;padding-right:0}.exam-merge-course-heading small{justify-self:end}.exam-merge-course-changes{padding-top:11px;padding-left:0;border-top:1px solid #e0e7ee;border-left:0}.exam-merge-change{grid-template-columns:minmax(0,1fr);gap:8px}.exam-merge-change-route{grid-template-columns:minmax(0,1fr);gap:5px}.exam-merge-change-arrow{min-height:18px;transform:rotate(90deg)}.exam-merge-staff-columns{grid-template-columns:minmax(0,1fr)}.exam-merge-staff-columns section+section{border-top:1px solid #dce5ec;border-left:0}}.exam-clash-need{font-size:.68rem;font-weight:700;color:#475569;background:#e2e8f0;padding:1px 7px;border-radius:999px}.exam-merge-modal .modal-body{max-height:78vh}body.exam-dragging,body.exam-dragging *{cursor:grabbing!important;-webkit-user-select:none!important;user-select:none!important}.exam-room-invigilator.is-draggable{cursor:grab}.exam-room-invigilator.is-draggable:hover{background:#4392f114;box-shadow:inset 0 0 0 1px #4392f159}.exam-room-invigilator.is-dragging{opacity:.35}.exam-room-assignment.is-invig-droppable{outline:1px dashed rgba(67,146,241,.45);outline-offset:-3px;transition:outline-color .12s,box-shadow .12s}.exam-room-assignment.is-invig-drop{outline:2px solid var(--blue, #4392f1);outline-offset:-3px;box-shadow:inset 0 0 0 9999px #4392f112}.exam-drag-ghost{position:fixed;z-index:9999;pointer-events:none;background:#1e293b;color:#fff;border-radius:8px;padding:8px 12px;max-width:240px;box-shadow:0 12px 32px #0f1f3859;display:flex;flex-direction:column;gap:2px}.exam-drag-ghost strong{font-size:.84rem}.exam-drag-ghost span{font-size:.72rem;opacity:.85;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.exam-drag-ghost em{font-size:.66rem;opacity:.7;font-style:normal;margin-top:2px}.exam-day-rail{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:8px 10px;margin-bottom:8px;background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.3);border-radius:8px}.exam-day-rail-label{font-size:.74rem;font-weight:700;color:var(--blue-dark, #2b74d4);margin-right:4px}.exam-day-chip{display:flex;flex-direction:column;align-items:center;gap:1px;min-width:58px;border:1px solid rgba(67,146,241,.35);background:#fff;color:var(--ink, #0f1f38);padding:5px 12px;border-radius:10px;cursor:pointer;line-height:1.15;transition:background .12s,border-color .12s,transform .1s}.exam-day-chip:hover{border-color:var(--blue, #4392f1);transform:translateY(-1px)}.exam-day-chip-name{font-size:.76rem;font-weight:700}.exam-day-chip-date{font-size:.66rem;font-weight:600;opacity:.65;font-variant-numeric:tabular-nums}.exam-day-chip.is-active{background:var(--blue, #4392f1);color:#fff;border-color:var(--blue, #4392f1);box-shadow:0 4px 12px #4392f14d}.exam-day-chip.is-active .exam-day-chip-date{opacity:.9}.danger-btn{border:1px solid #dc2626;background:#dc2626;color:#fff;font-weight:700;font-size:.85rem;padding:8px 16px;border-radius:8px;cursor:pointer;transition:background .13s,border-color .13s}.danger-btn:hover{background:#b91c1c;border-color:#b91c1c}.app-body.app-examination .page-content,.app-body.app-examination .exam-page,.app-body.app-examination .exam-source-layout,.app-body.app-examination .exam-setup-panel,.app-body.app-examination .exam-setup-table-wrap{width:100%;min-width:0;max-width:100%;box-sizing:border-box}.exam-setup-workspace{gap:16px}.exam-fixed-sessions{display:grid;grid-template-columns:130px minmax(0,1fr);align-items:center;gap:14px;padding:14px}.exam-fixed-sessions-label{color:var(--ink-soft);font-size:.72rem;font-weight:800;text-transform:uppercase}.exam-fixed-session-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.exam-fixed-session{min-width:0;padding:9px 11px;border:1px solid var(--border);border-radius:7px;background:var(--surface-card, #fff)}.exam-fixed-session strong,.exam-fixed-session span{display:block}.exam-fixed-session strong{color:var(--ink);font-size:.76rem}.exam-fixed-session span{margin-top:2px;color:var(--muted);font-family:var(--font-mono);font-size:.7rem}.exam-setup-panel{padding:0;gap:0;overflow:hidden;border-radius:8px}.exam-setup-panel>.exam-section-head{padding:15px 17px 12px}.exam-setup-panel>.exam-section-head>div{min-width:0}.exam-setup-panel>.exam-section-head p{margin:4px 0 0;color:var(--muted);font-size:.78rem}.exam-setup-tabs{display:flex;align-items:center;gap:2px;min-width:0;padding:0 16px;border-bottom:1px solid var(--border);overflow-x:auto}.exam-setup-tabs button{min-height:43px;padding:8px 12px;border:0;border-bottom:2px solid transparent;background:transparent;color:var(--muted);font:inherit;font-size:.78rem;font-weight:700;cursor:pointer;white-space:nowrap}.exam-setup-tabs button span{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;margin-left:7px;padding:0 6px;border-radius:7px;background:#edf2f6;color:#52657a;font-family:var(--font-mono);font-size:.66rem}.exam-setup-tabs button.active{border-bottom-color:#173f75;color:#173f75}.exam-setup-tabs button.active span{background:#e9f0fb;color:#173f75}.exam-setup-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;min-width:0;padding:12px 16px;background:#f7f9fb;border-bottom:1px solid var(--border)}.exam-setup-source{min-width:0}.exam-setup-source strong,.exam-setup-source small{display:block}.exam-setup-source strong{color:var(--ink);font-size:.82rem}.exam-setup-source small{margin-top:2px;color:var(--muted);font-size:.7rem;overflow-wrap:anywhere}.exam-setup-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.exam-setup-search{width:min(190px,100%);min-height:36px;border:1px solid #ccd8e3;border-radius:6px;background:#fff;color:var(--ink);padding:7px 10px;font:inherit;font-size:.76rem;outline:none}.exam-setup-search:focus{border-color:#315fbe;box-shadow:0 0 0 3px #315fbe1a}.exam-setup-table-wrap{overflow:hidden}.exam-data-panel .exam-setup-table-wrap{min-height:240px;max-height:min(62vh,660px);overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.exam-data-panel .exam-setup-table-wrap::-webkit-scrollbar{width:9px}.exam-data-panel .exam-setup-table-wrap::-webkit-scrollbar-track{background:#f4f7f9}.exam-data-panel .exam-setup-table-wrap::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px!important;background:#aebed0}.exam-data-panel .exam-simple-review-head{position:sticky;top:0;z-index:2;box-shadow:0 1px 0 var(--border)!important}.exam-course-review,.exam-simple-review{display:flex;flex-direction:column}.exam-course-review-row{min-width:0;padding:14px 16px;border-bottom:1px solid var(--border)}.exam-course-fields{display:grid;grid-template-columns:minmax(110px,.65fr) minmax(190px,1.5fr) minmax(135px,.8fr) minmax(150px,.9fr) auto;align-items:end;gap:9px;min-width:0}.exam-course-fields label,.exam-simple-review-row>label:not(.exam-accessible-check){display:flex;flex-direction:column;gap:5px;min-width:0;color:var(--muted);font-size:.67rem;font-weight:700;text-transform:uppercase}.exam-course-fields :is(input,select),.exam-programme-row :is(input,select),.exam-simple-review-row>:is(input,select){width:100%;min-width:0;min-height:37px;box-sizing:border-box;border:1px solid #ccd8e3;border-radius:6px;background:#fff;color:var(--ink);padding:7px 9px;font:inherit;font-size:.77rem;outline:none}.exam-course-fields :is(input,select):focus,.exam-programme-row :is(input,select):focus,.exam-simple-review-row>:is(input,select):focus{border-color:#315fbe;box-shadow:0 0 0 3px #315fbe1a}.exam-row-remove{min-height:36px;padding:7px 9px;border:1px solid #e6c5c5;border-radius:6px;background:#fff;color:#a33b3b;font:inherit;font-size:.7rem;font-weight:700;cursor:pointer}.exam-row-remove:hover{border-color:#d89c9c;background:#fff6f6}.exam-programme-review{margin-top:11px;padding:10px 0 0 18px;border-top:1px dashed #d8e1e8}.exam-programme-review-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:7px}.exam-programme-review-head span{color:#52657a;font-size:.68rem;font-weight:800;text-transform:uppercase}.exam-programme-review-head button{border:0;background:transparent;color:#173f75;font:inherit;font-size:.7rem;font-weight:750;cursor:pointer}.exam-programme-row{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(180px,1.35fr) 100px 110px auto;gap:8px;min-width:0;margin-top:7px}.exam-simple-review-head,.exam-simple-review-row{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(260px,1.2fr) auto;align-items:center;gap:10px;min-width:0;padding:10px 16px;border-bottom:1px solid var(--border)}.exam-simple-review-head{background:#fbfcfd;color:var(--muted);font-size:.67rem;font-weight:800;text-transform:uppercase}.exam-room-review .exam-simple-review-head,.exam-room-review .exam-simple-review-row{grid-template-columns:minmax(160px,1fr) minmax(145px,.8fr) 105px 90px auto}.exam-accessible-check{display:inline-flex;align-items:center;justify-content:center;gap:7px;color:var(--ink-soft);font-size:.75rem}.exam-accessible-check input{width:16px;height:16px;accent-color:#20a779}.exam-setup-empty{padding:42px 20px;color:var(--muted);text-align:center;font-size:.82rem}.exam-setup-footer{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:13px 16px;background:#f7f9fb;border-top:1px solid var(--border)}.exam-setup-footer>div{display:flex;align-items:center;gap:13px;flex-wrap:wrap;color:var(--muted);font-size:.72rem}.exam-setup-footer>div strong{color:var(--ink)}.exam-setup-footer .exam-setup-pagination{display:inline-flex;align-items:center;gap:6px;flex-wrap:nowrap}.exam-setup-pagination button{min-height:31px;padding:5px 9px;border:1px solid #ccd8e3;border-radius:6px;background:#fff;color:#173f75;font:inherit;font-size:.69rem;font-weight:700;cursor:pointer}.exam-setup-pagination button:disabled{opacity:.45;cursor:not-allowed}.exam-setup-pagination span{min-width:42px;text-align:center;font-family:var(--font-mono)}.exam-generate-reviewed{min-height:40px;background:#173f75!important;border-color:#173f75!important}.exam-generate-reviewed:hover:not(:disabled){background:#102e55!important}.exam-generation-summary{overflow:hidden;padding:0}.exam-generation-summary-head,.exam-generation-summary-footer,.exam-data-statusbar{display:flex;align-items:center;justify-content:space-between;gap:16px}.exam-generation-summary-head{padding:17px 18px}.exam-generation-summary-head>div{min-width:0}.exam-generation-summary-head span{color:var(--ink);font-size:.9rem;font-weight:800}.exam-generation-summary-head p{margin:4px 0 0;color:var(--muted);font-size:.76rem}.exam-generation-summary-head small{display:block;margin-top:5px;color:var(--muted);font-size:.68rem}.exam-manage-data-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:38px;padding:8px 13px;border:1px solid #b9cceb;border-radius:6px;background:#edf3fc;color:#244c9d;font:inherit;font-size:.76rem;font-weight:800;white-space:nowrap;cursor:pointer;transition:background .15s ease,border-color .15s ease,color .15s ease}.exam-manage-data-btn:hover{border-color:#8ca9d8;background:#e2ebfa;color:#173f75}.exam-manage-data-btn:focus-visible{outline:2px solid rgba(49,95,190,.35);outline-offset:2px}.exam-generation-counts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid var(--border);border-bottom:1px solid var(--border);background:#f7f9fb}.exam-generation-counts>div{min-width:0;padding:18px}.exam-generation-counts>div+div{border-left:1px solid var(--border)}.exam-generation-counts strong,.exam-generation-counts span{display:block}.exam-generation-counts strong{color:#173f75;font-family:var(--font-mono);font-size:1.35rem}.exam-generation-counts span{margin-top:3px;color:var(--muted);font-size:.72rem;font-weight:700}.exam-generation-summary-footer{padding:13px 18px}.exam-generation-summary-footer>span{color:var(--muted);font-size:.75rem}.exam-data-page{width:100%;min-width:0;max-width:100%;box-sizing:border-box;padding-bottom:24px}.exam-data-statusbar{margin-bottom:14px;padding:13px 16px;border:1px solid var(--border);border-radius:8px;background:#fff}.exam-data-statusbar>div{min-width:0}.exam-data-statusbar small{display:block;margin-top:4px;color:var(--muted);font-size:.72rem}.exam-data-state{color:#52657a;font-size:.78rem;font-weight:800}.exam-data-state.saved{color:#147a55}.exam-data-state.dirty{color:#a15c00}.exam-data-save{min-height:39px}.exam-data-panel{width:100%;min-width:0;max-width:100%;box-sizing:border-box}.exam-course-simple-review .exam-simple-review-head,.exam-course-simple-review .exam-simple-review-row{grid-template-columns:minmax(130px,.42fr) minmax(240px,1.58fr) auto}.exam-invigilator-simple-review .exam-simple-review-head,.exam-invigilator-simple-review .exam-simple-review-row{grid-template-columns:minmax(240px,1fr) auto}.exam-upload-intro{margin:0;color:var(--ink-soft);font-size:.86rem;line-height:1.55}.exam-upload-steps{margin:12px 0 16px;padding-left:21px;color:var(--muted);font-size:.8rem;line-height:1.55}.exam-upload-steps li+li{margin-top:4px}.exam-template-btn{display:inline-flex;align-items:center;gap:8px;min-height:38px;padding:8px 12px;border:1px solid #b9cceb;border-radius:6px;background:#edf4ff;color:#173f75;font:inherit;font-size:.78rem;font-weight:800;cursor:pointer}.exam-template-btn:hover:not(:disabled){background:#e2edfd}.exam-template-btn:disabled{opacity:.55;cursor:not-allowed}.exam-upload-drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:122px;margin-top:14px;padding:16px;border:1px dashed #aebed0;border-radius:8px;background:#fafbfd;color:var(--ink);text-align:center;cursor:pointer}.exam-upload-drop:hover,.exam-upload-drop.has-file{border-color:#315fbe;background:#f4f8ff}.exam-upload-drop strong{max-width:100%;overflow-wrap:anywhere;font-size:.82rem}.exam-upload-drop small{color:var(--muted);font-size:.72rem}.exam-upload-note{margin:10px 0 0;color:var(--muted);font-size:.72rem;line-height:1.45}@media (max-width: 1100px){.exam-course-fields{grid-template-columns:minmax(110px,.65fr) minmax(180px,1.35fr) minmax(135px,.8fr) auto}.exam-course-fields label:nth-child(4){grid-column:1 / 4}.exam-programme-row{grid-template-columns:minmax(110px,.8fr) minmax(150px,1.2fr) 90px 105px auto}}@media (max-width: 760px){.exam-config-dates{align-items:stretch;flex-direction:column}.exam-config-dates .exam-field{max-width:none}.exam-config-arrow{display:none}.exam-fixed-sessions,.exam-fixed-session-list{grid-template-columns:1fr}.exam-setup-toolbar,.exam-setup-footer{align-items:stretch;flex-direction:column}.exam-setup-actions{justify-content:flex-start}.exam-course-fields{grid-template-columns:1fr}.exam-course-fields label:nth-child(4){grid-column:auto}.exam-programme-review{padding-left:0}.exam-programme-row,.exam-simple-review-head,.exam-simple-review-row,.exam-room-review .exam-simple-review-head,.exam-room-review .exam-simple-review-row{grid-template-columns:1fr}.exam-simple-review-head{display:none}.exam-accessible-check{justify-content:flex-start;min-height:32px}.exam-generate-reviewed{width:100%;justify-content:center}.exam-generation-summary-head,.exam-generation-summary-footer,.exam-data-statusbar{align-items:stretch;flex-direction:column}.exam-generation-summary-head .exam-btn,.exam-generation-summary-footer .exam-btn,.exam-data-save{width:100%;justify-content:center}.exam-manage-data-btn{width:100%}.exam-generation-counts{grid-template-columns:1fr}.exam-generation-counts>div+div{border-top:1px solid var(--border);border-left:0}}.exam-rest-advisory{background:#fffbeb;border:1px solid #fde68a;border-left:4px solid #f59e0b;padding:12px 16px;margin:0 0 14px}.exam-rest-advisory strong{color:#b45309}.exam-rest-advisory>strong{display:block;font-size:.86rem;margin-bottom:4px}.exam-rest-advisory p+p{margin-top:6px}.exam-rest-advisory p{margin:0;font-size:.82rem;line-height:1.55;color:#92400e}.exam-data-source{border:1px solid rgba(67,146,241,.3);background:var(--alice, #e7f0ff);padding:16px 18px;margin-bottom:14px}.exam-data-source-head strong{display:block;font-size:.95rem;color:var(--ink, #0f1f38);margin-bottom:4px}.exam-data-source-head p{margin:0 0 14px;font-size:.84rem;line-height:1.55;color:var(--ink-soft, #2d3f5a);max-width:78ch}.exam-data-source-options{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}.exam-data-source-card{background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .1));padding:14px 16px;display:flex;flex-direction:column;gap:6px}.exam-data-source-card>strong{font-size:.88rem;color:var(--ink, #0f1f38)}.exam-data-source-card>p{margin:0;font-size:.8rem;line-height:1.55;color:var(--muted, #6a7a96);flex:1}.exam-data-source-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.exam-data-gate{background:#fffbeb;border:1px solid #fde68a;border-left:4px solid #f59e0b;padding:11px 14px;margin:12px 0 0}.exam-data-gate strong{display:block;font-size:.84rem;color:#b45309;margin-bottom:3px}.exam-data-gate p{margin:0;font-size:.8rem;line-height:1.55;color:#92400e}.exam-data-gate-link{border:none;background:none;padding:0;font:inherit;font-weight:700;color:#b45309;text-decoration:underline;cursor:pointer}.exam-data-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px 18px;margin-bottom:14px;background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .1));border-left:4px solid var(--blue, #4392f1)}.exam-data-head.is-ready{border-left-color:#16a37c}.exam-data-head.is-dirty{border-left-color:#f59e0b;background:#fffdf7}.exam-data-head-text{min-width:0}.exam-data-head-text>strong{display:block;font-size:.98rem;color:var(--ink, #0f1f38);margin-bottom:3px}.exam-data-head-text>p{margin:0 0 10px;font-size:.85rem;line-height:1.55;color:var(--muted, #6a7a96);max-width:68ch}.exam-data-head-counts{display:flex;align-items:center;gap:16px;flex-wrap:wrap;font-size:.8rem;color:var(--muted, #6a7a96)}.exam-data-head-counts strong{color:var(--ink, #0f1f38);font-family:var(--font-mono);margin-right:3px}.exam-data-head-time{color:var(--muted, #9aa7bd);font-size:.76rem}.exam-data-head-actions{display:flex;gap:8px;flex-shrink:0;flex-wrap:wrap}.exam-setup-toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.exam-setup-toolbar .exam-setup-search{flex:1;min-width:180px}.exam-setup-toolbar .exam-setup-actions{margin-left:auto;display:flex;gap:8px;flex-wrap:wrap}.exam-setup-origin{margin:0;padding:9px 2px 0;font-size:.78rem;color:var(--muted, #6a7a96)}.exam-data-head-time{color:var(--muted, #9aa7bd)}.exam-data-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.exam-data-card{background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .1));padding:16px 18px;display:flex;flex-direction:column;gap:4px}.exam-data-card.is-uploaded{border-color:#4392f180;background:#4392f10a}.exam-data-card>header{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.exam-data-card-label{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted, #6a7a96)}.exam-data-card-count{font-family:var(--font-mono);font-size:1.6rem;line-height:1;color:var(--ink, #0f1f38)}.exam-data-card-origin{margin:0;font-size:.76rem;line-height:1.5;color:var(--muted, #6a7a96);flex:1}.exam-data-card-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}.exam-data-card-actions .exam-btn{flex:1;justify-content:center;white-space:nowrap}.exam-data-inspect{display:inline-flex;align-items:center;gap:7px;margin:14px 0 0;padding:9px 14px;border:1px solid var(--border, rgba(15, 31, 56, .14));background:var(--surface-card, #fff);color:var(--ink-soft, #2d3f5a);font:inherit;font-size:.84rem;font-weight:600;cursor:pointer;transition:border-color .14s,background .14s}.exam-data-inspect:hover{border-color:var(--blue, #4392f1);background:var(--alice, #e7f0ff)}.exam-data-panel{margin-top:12px}.exam-config-dates{display:flex;align-items:flex-end;gap:10px;padding:10px 0 0;border:none}.exam-config-dates .exam-field{flex:1;min-width:0}.exam-config-dates .exam-config-arrow{padding-bottom:9px;color:var(--muted, #6a7a96);font-size:.8rem}.exam-config-times{display:flex;flex-direction:column;gap:6px;margin-top:10px}.exam-config-time{display:flex;align-items:center;gap:10px;min-height:42px;padding:7px 10px;background:var(--surface-app, #f2f4f8);border:1px solid transparent;border-radius:6px;cursor:pointer;transition:border-color .14s,background .14s}.exam-config-time.is-selected{background:var(--alice, #e7f0ff);border-color:#4392f159}.exam-config-time input{width:16px;height:16px;margin:0;accent-color:var(--blue, #4392f1)}.exam-config-time-copy{display:flex;align-items:baseline;justify-content:space-between;gap:10px;width:100%}.exam-config-time-copy strong{font-size:.8rem;color:var(--ink, #0f1f38)}.exam-config-time-copy>span{font-size:.76rem;font-family:var(--font-mono);color:var(--muted, #6a7a96)}.exam-data-card.is-blocked{border-color:#fde68a;background:#fffdf7}.exam-generate-bar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-top:14px;padding:14px 18px;background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .1))}.exam-generate-bar>span{font-size:.85rem;color:var(--muted, #6a7a96)}.exam-step-next{position:sticky;bottom:18px;float:right;z-index:6;display:inline-flex;align-items:center;gap:9px;margin-top:16px;padding:12px 22px;border:none;background:var(--blue, #4392f1);color:#fff;font:inherit;font-size:.88rem;font-weight:700;cursor:pointer;box-shadow:0 10px 26px #1a5abf5c!important;transition:background .14s,transform .14s}.exam-step-next:hover{background:var(--blue-dark, #2b74d4);transform:translateY(-1px)}.exam-continue-counts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.exam-continue-counts>div{background:var(--surface-app, #f2f4f8);padding:12px;text-align:center}.exam-continue-counts strong{display:block;font-family:var(--font-mono);font-size:1.4rem;color:var(--ink, #0f1f38);line-height:1.1}.exam-continue-counts span{font-size:.74rem;color:var(--muted, #6a7a96)}.exam-course-simple-review .exam-simple-review-head,.exam-course-simple-review .exam-simple-review-row{grid-template-columns:minmax(120px,.38fr) minmax(220px,1.42fr) 92px auto!important}.exam-student-count{text-align:center}.exam-student-count.is-unset{border-color:#f59e0b!important;background:#fffbeb;color:#b45309;font-weight:700}.exam-classsize-review .exam-simple-review-head,.exam-classsize-review .exam-simple-review-row{grid-template-columns:minmax(120px,.42fr) minmax(200px,1.3fr) 76px 128px!important}.exam-readonly-cell{background:var(--surface-app, #f2f4f8)!important;color:var(--ink-soft, #2d3f5a)}.exam-classsize-courses{display:flex;align-items:center;justify-content:center;font-size:.78rem;color:var(--muted, #6a7a96);font-family:var(--font-mono)}.expv-import-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1500;display:grid;place-items:center;padding:24px;background:#0f1c2a94;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.expv-import-modal{width:min(1480px,calc(100vw - 48px));height:min(860px,calc(100dvh - 48px));min-height:420px;overflow:hidden;border:1px solid #cbd8e4;border-radius:8px;background:#fff;box-shadow:0 24px 70px #091e314d}.expv-import-modal .expv-practical-review{display:flex;height:100%;min-height:0;flex-direction:column}.expv-practical-review-head,.expv-practical-review-actions{display:flex;align-items:center;justify-content:space-between;gap:14px}.expv-practical-summary{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.expv-practical-summary span{display:inline-flex;align-items:center;gap:5px;min-height:28px;padding:4px 9px;color:#40516a;background:#f4f7fa;border:1px solid #dde5ed;border-radius:6px;font-size:.73rem;font-weight:750;white-space:nowrap}.expv-practical-summary span strong{font-size:.88rem}.expv-practical-summary .ready{color:#076143;background:#ecf9f4;border-color:#b7e8d6}.expv-practical-summary .warning{color:#8a4b08;background:#fff8e8;border-color:#f5d597}.expv-practical-summary .error{color:#a02e36;background:#fff1f2;border-color:#fecdd3}.expv-practical-review{margin-top:18px}.expv-practical-review--standalone{margin:0;padding:0;overflow:hidden;border:1px solid #d7e1ea;border-radius:8px;background:#fff;box-shadow:0 4px 14px #1831490d}.expv-practical-review-head{padding:16px 18px;border:0;border-bottom:1px solid #d7e1ea;border-radius:0;background:#fff;box-shadow:none}.expv-practical-review-tools{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}.expv-practical-toolbar-actions{display:flex;align-items:center;gap:7px;padding-left:12px;border-left:1px solid #d7e1ea}.expv-practical-toolbar-actions .exam-btn{min-height:34px;padding:7px 11px;border-radius:6px;white-space:nowrap}.expv-import-resource-confirm{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:12px 18px;border-bottom:1px solid #efd89f;background:#fffbeb}.expv-import-resource-copy{display:flex;align-items:flex-start;min-width:0;gap:10px;color:#713f12}.expv-import-resource-copy strong{display:block;font-size:.82rem}.expv-import-resource-copy p{margin:3px 0 7px;color:#80571c;font-size:.72rem;line-height:1.45}.expv-import-resource-icon{display:grid;width:32px;height:32px;flex:0 0 32px;place-items:center;border:1px solid #efd089;border-radius:6px;background:#fff7db}.expv-import-resource-list{display:flex;max-height:54px;overflow:auto;gap:5px;flex-wrap:wrap;overscroll-behavior:contain}.expv-import-resource-list span{max-width:230px;overflow:hidden;padding:3px 7px;border:1px solid #ead49d;border-radius:5px;color:#714812;background:#fff;font-size:.67rem;font-weight:700;text-overflow:ellipsis;white-space:nowrap}.expv-import-resource-check{display:inline-flex;min-height:38px;flex:0 0 auto;align-items:center;gap:8px;padding:8px 11px;border:1px solid #d8b968;border-radius:6px;color:#613d0d;background:#fff;cursor:pointer;font-size:.73rem;font-weight:800}.expv-import-resource-check input{width:16px;height:16px;accent-color:#146a51}.expv-practical-file{display:flex;align-items:center;min-width:0;gap:11px}.expv-practical-file-icon{display:inline-grid;width:38px;height:38px;flex:0 0 38px;place-items:center;border:1px solid #bdd0ed;border-radius:7px;color:#315f9f;background:#eef4fd}.expv-practical-file>div{display:flex;flex-direction:column;min-width:0;gap:2px}.expv-practical-file small{color:#60738a;font-size:.62rem;font-weight:850;text-transform:uppercase}.expv-practical-file strong{overflow:hidden;color:var(--ink, #0f1f38);font-size:.9rem;text-overflow:ellipsis;white-space:nowrap}.expv-practical-file>div>span{color:var(--muted, #6a7a96);font-size:.72rem}.expv-import-list{display:flex;max-height:560px;margin-top:14px;padding:2px 8px 14px 2px;flex-direction:column;gap:11px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.expv-import-row{overflow:hidden;flex:0 0 auto;border:1px solid #d9e2ea;border-left:4px solid #91a3b6;border-radius:8px;color:#263d54;background:#fff;box-shadow:0 3px 12px #1831490d}.expv-import-row--ready{border-left-color:#16825f}.expv-import-row--warning{border-left-color:#c28216}.expv-import-row--error{border-left-color:#c44751}.expv-import-row-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;min-height:54px;padding:10px 14px;border-bottom:1px solid #e0e7ed;background:#f8fafc}.expv-import-course{display:flex;min-width:0;align-items:baseline;gap:8px}.expv-import-course strong{flex:0 0 auto;color:#17334d;font-family:var(--font-mono);font-size:.86rem;font-weight:900}.expv-import-course span{overflow:hidden;color:#62748a;font-size:.76rem;text-overflow:ellipsis;white-space:nowrap}.expv-import-row-number{color:#78889a;font-size:.68rem;font-weight:750}.expv-import-row-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr))}.expv-import-row-grid>section{display:flex;min-width:0;min-height:105px;padding:14px;flex-direction:column;justify-content:center;gap:6px;border-right:1px solid #e2e8ee}.expv-import-row-grid>section:last-child{border-right:0}.expv-import-field-label{color:#687b90;font-size:.62rem;font-weight:850;text-transform:uppercase}.expv-import-row-grid section>strong,.expv-import-staff>div strong{overflow:hidden;color:#223c54;font-size:.79rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.expv-import-row-grid section>small,.expv-import-staff>div small{color:#73859a;font-size:.68rem}.expv-import-chip-list{display:flex;flex-wrap:wrap;gap:5px}.expv-import-chip{display:inline-flex;min-height:23px;align-items:center;padding:3px 7px;border:1px solid #bfd0e6;border-radius:5px;color:#315475;background:#f1f6fb;font-size:.67rem;font-weight:800}.expv-import-missing{color:#a02e36;font-size:.73rem;font-weight:800}.expv-import-staff>div{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:baseline;gap:7px}.expv-import-status{display:inline-flex;align-items:center;min-height:24px;padding:3px 8px;border:1px solid;border-radius:6px;font-size:.67rem;font-weight:800}.expv-import-status.ready{color:#076143;background:#ecf9f4;border-color:#a8dfca}.expv-import-status.warning{color:#8a4b08;background:#fff8e8;border-color:#efcf8e}.expv-import-status.error{color:#a02e36;background:#fff1f2;border-color:#f8b8bf}.expv-import-review-notes{display:flex;padding:10px 14px;flex-wrap:wrap;gap:7px;border-top:1px solid #e3e9ef;background:#fbfcfd}.expv-import-review-notes>span{display:inline-flex;min-width:0;align-items:flex-start;gap:6px;padding:5px 8px;border:1px solid;border-radius:5px;font-size:.69rem;font-weight:700;line-height:1.35}.expv-import-review-notes svg{flex:0 0 auto;margin-top:1px}.expv-import-review-notes .error{color:#982f38;border-color:#f2c0c5;background:#fff4f5}.expv-import-review-notes .warning{color:#86530b;border-color:#ecd19c;background:#fff9ec}.expv-import-review-notes .ready{color:#0b6d50;border-color:#b9dfd2;background:#f0faf6}.expv-import-table-wrap{width:100%;max-height:580px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.expv-import-modal .expv-import-table-wrap{min-height:0;max-height:none;flex:1}.expv-import-table{width:100%;min-width:1140px;table-layout:fixed;border-collapse:separate;border-spacing:0}.expv-import-table col{width:16.6667%}.expv-import-table thead th{position:sticky;top:0;z-index:2;padding:10px 12px;border-right:1px solid #dbe3ea;border-bottom:1px solid #cfd9e2;color:#5d7187;background:#f3f6f9;font-size:.67rem;font-weight:850;text-align:left;text-transform:uppercase}.expv-import-table thead th:last-child,.expv-import-table tbody td:last-child{border-right:0}.expv-import-table tbody td{min-width:0;padding:12px;border-right:1px solid #e1e7ed;border-bottom:1px solid #e1e7ed;color:#2d4358;background:#fff;font-size:.75rem;line-height:1.4;vertical-align:top}.expv-import-table tbody tr:last-child td{border-bottom:0}.expv-import-table tbody tr:hover td{background:#fafcfd}.expv-import-table-row--ready td:first-child{box-shadow:inset 3px 0 #16825f}.expv-import-table-row--warning td:first-child{box-shadow:inset 3px 0 #c28216}.expv-import-table-row--error td:first-child{box-shadow:inset 3px 0 #c44751}.expv-import-table-row--warning td:last-child{background:#fffdf7}.expv-import-table-row--error td:last-child{background:#fff8f8}.expv-import-table-primary{display:flex;min-width:0;flex-direction:column;gap:3px}.expv-import-table-primary strong,.expv-import-invigilators strong{overflow:hidden;color:#18344e;font-size:.78rem;font-weight:820;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.expv-import-table-primary>span{overflow:hidden;color:#61758a;font-size:.7rem;overflow-wrap:anywhere;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}.expv-import-table-primary small,.expv-import-table-muted{display:block;margin-top:3px;color:#8492a2;font-size:.64rem}.expv-import-invigilators{display:flex;min-width:0;flex-direction:column;gap:8px}.expv-import-invigilators>div{min-width:0}.expv-import-invigilators span{display:block;margin-bottom:2px;color:#75879a;font-size:.61rem;font-weight:800;text-transform:uppercase}.expv-import-invigilators strong{font-size:.7rem}.expv-import-table-status{display:flex;min-width:0;flex-direction:column;gap:7px}.expv-import-table-status .expv-import-status{width:fit-content}.expv-import-status-details{display:flex;max-height:126px;padding-right:3px;flex-direction:column;gap:5px;overflow-y:auto;overscroll-behavior:contain}.expv-import-status-details p{margin:0;padding-left:7px;border-left:2px solid;font-size:.67rem;font-weight:650;line-height:1.4;overflow-wrap:anywhere}.expv-import-status-details .error{border-color:#dc6670;color:#982f38}.expv-import-status-details .warning{border-color:#d5a13c;color:#86530b}.expv-import-status-details .ready{border-color:#45a987;color:#0b6d50}.expv-import-table-message{padding:9px 16px;border-top:1px solid #d7e1ea;color:#52677d;background:#f8fafc;font-size:.7rem;text-align:right}.expv-import-table-message.is-error{color:#982f38;background:#fff8f8}.expv-practical-review-actions{margin-top:2px;padding:14px 0 0;border-top:1px solid #dfe6ed}.expv-practical-review-actions>span{flex:1;color:var(--muted, #6a7a96);font-size:.72rem;text-align:right}.exam-practical-pill{display:inline-flex!important;width:fit-content;margin-top:5px!important;padding:2px 6px;color:#076143!important;background:#e7f7f0;border:1px solid #b7e6d3;border-radius:5px;font-size:.61rem!important;font-weight:800}@media (max-width: 820px){.expv-import-modal-backdrop{padding:8px}.expv-import-modal{width:calc(100vw - 16px);height:calc(100dvh - 16px);min-height:0}.expv-practical-review-head,.expv-practical-review-actions{align-items:stretch;flex-direction:column}.expv-practical-review-actions>span{text-align:left}.expv-practical-review-actions .exam-btn{justify-content:center;width:100%}.expv-import-row-grid{grid-template-columns:1fr}.expv-import-row-grid>section{min-height:0;border-right:0;border-bottom:1px solid #e2e8ee}.expv-import-row-grid>section:last-child{border-bottom:0}.expv-import-course{align-items:flex-start;flex-direction:column;gap:2px}.expv-practical-review-tools{width:100%;justify-content:space-between}.expv-practical-toolbar-actions{padding-left:0;border-left:0}.expv-practical-toolbar-actions .exam-btn{width:auto}.expv-import-resource-confirm{align-items:stretch;flex-direction:column}.expv-import-resource-check{justify-content:center}.expv-import-table-message{text-align:left}}@media (min-width: 821px) and (max-width: 1120px){.expv-import-row-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.expv-import-row-grid>section:nth-child(2){border-right:0}.expv-import-row-grid>section:nth-child(-n+2){border-bottom:1px solid #e2e8ee}}.expv-panel{padding:18px;border-radius:8px}.expv-day-session-nav{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px;padding:2px 4px 18px;border-bottom:1px solid var(--border)}.expv-day-session-nav>div{min-width:0;flex-wrap:wrap}.expv-table-scroll{min-height:360px;max-height:min(68vh,760px);padding:14px 14px 24px;overflow:auto;overscroll-behavior:contain;border:1px solid #d7e0e8;border-radius:8px;background:#f4f7f9;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#9eb0c1 #e7edf2}.expv-table-scroll::-webkit-scrollbar{width:10px;height:10px}.expv-table-scroll::-webkit-scrollbar-track{background:#e7edf2}.expv-table-scroll::-webkit-scrollbar-thumb{border:2px solid #e7edf2;border-radius:8px;background:#9eb0c1}.expv-table-scroll .expv-session-block{min-width:960px;margin-bottom:16px;overflow:clip;border:1px solid #d7e0e8;border-radius:8px;background:#fff;box-shadow:0 3px 12px #1630480f}.expv-table-scroll .expv-session-block:last-child{margin-bottom:0}.expv-table-scroll .expv-session-bar{position:sticky;top:-14px;z-index:6;min-height:46px;box-sizing:border-box;padding:10px 15px;border-bottom:1px solid rgba(22,50,77,.1)}.expv-table-scroll .exam-session-cards{min-width:960px;background:#fff}.expv-table-scroll .exam-session-columns{display:grid;position:sticky;top:32px;z-index:5;grid-template-columns:220px repeat(3,minmax(240px,1fr));gap:0;min-width:960px;padding:0;background:#f8fafc;border-bottom:1px solid #d7e0e8}.expv-table-scroll .exam-session-columns>span{min-width:0;padding:10px 12px;overflow:hidden;border-right:1px solid #dfe6ed;color:#617287;font-size:.72rem;letter-spacing:0;text-overflow:ellipsis;white-space:nowrap}.expv-table-scroll .exam-session-columns>span:first-child{position:sticky;left:0;z-index:2;background:#f8fafc}.expv-table-scroll .exam-session-columns>span:last-child{border-right:0}.exam-session-card--allocation{display:grid;grid-template-columns:220px minmax(720px,1fr);gap:0;min-width:960px;padding:0;border:0;border-bottom:1px solid #dbe3ea;border-left:4px solid var(--exam-dept-accent);background:#fff}.exam-session-card--allocation:last-child{border-bottom:0}.exam-session-card--allocation>div{min-width:0;padding:0;border-bottom:0}.exam-session-card--allocation>div:not(:last-child):after{display:none}.exam-session-card--allocation.exam-session-card--clickable:hover{background:#fff;box-shadow:inset 3px 0 0 var(--exam-dept-accent)}.exam-allocation-course{position:sticky!important;left:0;z-index:3;align-self:stretch;justify-content:flex-start;gap:7px!important;padding:15px 14px!important;overflow:hidden;border-right:1px solid #dbe3ea;background:var(--exam-dept-tint)}.exam-allocation-course-code{overflow:hidden;color:#18334d!important;font-family:var(--font-mono);font-size:1rem!important;font-weight:900!important;text-overflow:ellipsis;white-space:nowrap}.exam-allocation-course-title{display:-webkit-box;overflow:hidden;color:#344b62!important;font-size:.79rem!important;font-weight:650!important;line-height:1.4;-webkit-box-orient:vertical;-webkit-line-clamp:2}.exam-allocation-badges{display:flex!important;flex-direction:row!important;flex-wrap:wrap;gap:5px!important;padding:0!important}.exam-allocation-badges :where(.exam-study-pill,.exam-practical-pill){margin:0!important}.exam-allocation-badge{display:inline-flex;width:fit-content;align-items:center;min-height:21px;padding:2px 6px;border:1px solid #cbd7e2;border-radius:5px;color:#415a73!important;background:#ffffffbd;font-size:.65rem!important;font-weight:800}.exam-allocation-badge.shared{color:#264f96!important;border-color:#b9cdec;background:#eef4ff}.exam-allocation-badge.rooms{color:#17634b!important;border-color:#b8dfcf;background:#edf9f4}.exam-allocation-badge.spillover{color:#8a5708!important;border-color:#e9ce94;background:#fff8e8}.exam-allocation-size{color:#39536d!important;font-size:.74rem!important;font-weight:800!important}.exam-allocation-department{overflow:hidden;color:#60758a!important;font-size:.7rem!important;font-weight:650!important;text-overflow:ellipsis;white-space:nowrap}.exam-room-assignment-stack{display:flex!important;min-width:0;flex-direction:column;gap:0!important}.exam-room-assignment{display:grid;grid-template-columns:repeat(3,minmax(240px,1fr));min-height:96px;min-width:0;background:#fff}.exam-room-assignment+.exam-room-assignment{border-top:1px solid #dbe3ea}.exam-room-assignment.is-pending{background:#fff9ed}.exam-room-assignment>div{min-width:0;padding:14px;border-right:1px solid #e1e7ed}.exam-room-assignment>div:last-child{border-right:0}.exam-room-venue{display:flex;flex-direction:row;align-items:center;background:#fbfcfd}.exam-room-venue>div{display:flex;min-width:0;flex-direction:column;gap:3px;padding:0}.exam-room-venue strong{overflow:hidden;color:#1c3853;font-size:.84rem;text-overflow:ellipsis;white-space:nowrap}.exam-room-venue small{color:#718297;font-size:.69rem}.exam-room-programmes,.exam-room-invigilators{display:flex;flex-direction:column;justify-content:center;gap:6px}.exam-room-shared-label{display:inline-flex;width:fit-content;padding:2px 5px;border:1px solid #bfd0eb;border-radius:4px;color:#315f91!important;background:#f0f5fd;font-size:.62rem!important;font-weight:850!important;text-transform:uppercase}.exam-room-programme{display:flex;min-width:0;align-items:center;justify-content:space-between;gap:8px;padding-bottom:5px;border-bottom:1px dashed #dce4eb}.exam-room-programme:last-child{padding-bottom:0;border-bottom:0}.exam-room-programme-copy,.exam-room-invigilator-copy{display:flex;min-width:0;flex:1;flex-direction:column;gap:2px}.exam-room-programme-copy strong,.exam-room-invigilator-copy strong{overflow:hidden;color:#203950;font-size:.79rem;text-overflow:ellipsis;white-space:nowrap}.exam-room-programme-copy small,.exam-room-invigilator-copy small{color:#718297;font-size:.68rem;font-weight:650}.exam-room-programme>em{flex:0 0 auto;padding:2px 5px;border:1px solid #e8cc8f;border-radius:4px;color:#8a5708;background:#fff8e8;font-size:.61rem;font-style:normal;font-weight:850}.exam-room-invigilator{display:grid;grid-template-columns:27px minmax(0,1fr);gap:8px;align-items:center;min-width:0}.exam-room-invigilator-avatar{display:inline-grid;width:27px;height:27px;place-items:center;border-radius:50%;color:#53677d!important;background:#e7ecf1;font-size:.59rem!important;font-weight:900!important}.exam-room-invigilator.is-lead .exam-room-invigilator-avatar{color:#fff!important;background:#17815f}.exam-room-invigilator.is-lead .exam-room-invigilator-copy small{color:#147153}.app-body.app-examination-preview .exam-invig-editor-panel{width:min(780px,82vw)}.app-body.app-examination-preview .exam-invig-editor-body{gap:12px}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);align-content:stretch;gap:14px 16px;min-height:0}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column>.exam-invig-search{grid-column:1 / -1}.app-body.app-examination-preview .exam-invig-column{display:flex;min-width:0;flex-direction:column;gap:12px}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column .exam-invig-editor-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column .exam-invig-add-grid{grid-template-columns:150px minmax(0,1fr)}@media (max-width: 1180px){.app-body.app-examination-preview .exam-invig-editor-body.is-two-column{grid-template-columns:minmax(0,1fr)}}.app-body.app-examination-preview .exam-invig-editor-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.app-body.app-examination-preview .exam-invig-editor-summary>div,.app-body.app-examination-preview .exam-invig-editor-section{min-width:0;border:1px solid #dce6ef;border-radius:8px;background:#fff}.app-body.app-examination-preview .exam-invig-editor-summary>div{padding:10px 12px}.app-body.app-examination-preview .exam-invig-editor-summary span,.app-body.app-examination-preview .exam-invig-editor-section-head span,.app-body.app-examination-preview .exam-invig-person-row span,.app-body.app-examination-preview .exam-invig-note{color:#6a7a8d;font-size:.72rem;font-weight:700}.app-body.app-examination-preview .exam-invig-editor-summary strong{display:block;overflow:hidden;margin-top:3px;color:#17324d;font-size:.82rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-invig-editor-section{overflow:hidden}.app-body.app-examination-preview .exam-invig-editor-section-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid #e4ebf2;background:#f8fafc}.app-body.app-examination-preview .exam-invig-editor-section-head strong{color:#17324d;font-size:.82rem}.app-body.app-examination-preview .exam-invig-current-list,.app-body.app-examination-preview .exam-invig-swap-list{display:grid;gap:8px;max-height:240px;overflow:auto;padding:10px;scrollbar-gutter:stable}.app-body.app-examination-preview .exam-invig-person-row{display:grid;grid-template-columns:30px minmax(0,1fr) auto;align-items:center;gap:9px;padding:8px;border:1px solid #e4ebf2;border-radius:7px;background:#fbfdff}.app-body.app-examination-preview .exam-invig-person-row>div{min-width:0}.app-body.app-examination-preview .exam-invig-person-row strong{display:block;overflow:hidden;color:#17324d;font-size:.82rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-invig-person-row .exam-btn{min-height:27px;padding:0 10px;font-size:.68rem}.app-body.app-examination-preview .exam-invig-person-row>.exam-room-invigilator-avatar{grid-column:1;grid-row:1}.app-body.app-examination-preview .exam-invig-person-row>div:not(.exam-invig-person-venue){grid-column:2;grid-row:1}.app-body.app-examination-preview .exam-invig-person-row>.exam-btn{grid-column:3;grid-row:1}.app-body.app-examination-preview .exam-invig-person-venue{grid-column:2 / -1;grid-row:2}.app-body.app-examination-preview .exam-invig-person-venue select{width:100%;min-height:29px;padding:0 8px;border:1px solid #d5e1eb;border-radius:6px;background:#fff;color:#17324d;font-size:.72rem;font-weight:700}.app-body.app-examination-preview .exam-invig-person-venue select:disabled{background:#f2f6fa;color:#93a3b5}.app-body.app-examination-preview .exam-invig-empty,.app-body.app-examination-preview .exam-invig-note{margin:0;padding:10px 12px}.app-body.app-examination-preview .exam-invig-add-grid{display:grid;grid-template-columns:130px minmax(0,1fr);gap:10px;align-items:end;padding:10px}.app-body.app-examination-preview .exam-invig-add-grid>label:nth-of-type(3),.app-body.app-examination-preview .exam-invig-add-grid>.exam-btn{grid-column:1 / -1}.app-body.app-examination-preview .exam-invig-add-grid.is-force{grid-template-columns:1fr}.app-body.app-examination-preview .exam-invig-add-grid label{min-width:0;display:flex;flex-direction:column;gap:5px}.app-body.app-examination-preview .exam-invig-add-grid label>span{color:#6a7a8d;font-size:.67rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .exam-invig-add-grid select{width:100%;min-height:34px;border:1px solid #d5e1eb;border-radius:7px;background:#fff;color:#17324d;font-size:.78rem;font-weight:750}.app-body.app-examination-preview .exam-invig-add-grid .exam-btn{min-height:34px;white-space:nowrap}.app-body.app-examination-preview .exam-invig-swap-plan{margin:0 10px 10px;border:1px solid #cfe0f5;border-radius:8px;background:#f7fbff;overflow:hidden}.app-body.app-examination-preview .exam-invig-swap-plan.is-blocked{border-color:#f2c4c4;background:#fff8f8}.app-body.app-examination-preview .exam-invig-swap-plan header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid rgba(49,95,190,.14)}.app-body.app-examination-preview .exam-invig-swap-plan header strong{color:#17324d;font-size:.82rem}.app-body.app-examination-preview .exam-invig-swap-plan header span{color:#64748b;font-size:.7rem;font-weight:800}.app-body.app-examination-preview .exam-invig-swap-list article{display:grid;grid-template-columns:minmax(120px,1.2fr) minmax(90px,1fr) 22px minmax(90px,1fr);align-items:center;gap:8px;padding:8px;border:1px solid #dfe9f3;border-radius:7px;background:#fff}.app-body.app-examination-preview .exam-invig-swap-list article>div,.app-body.app-examination-preview .exam-invig-swap-list em,.app-body.app-examination-preview .exam-invig-swap-list b{min-width:0}.app-body.app-examination-preview .exam-invig-swap-list strong,.app-body.app-examination-preview .exam-invig-swap-list b,.app-body.app-examination-preview .exam-invig-swap-list em{overflow:hidden;color:#17324d;font-size:.75rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-invig-swap-list em{color:#b45309;font-style:normal}.app-body.app-examination-preview .exam-invig-swap-list span{display:block;overflow:hidden;color:#64748b;font-size:.68rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-invig-swap-plan>.exam-btn{margin:0 10px 10px auto;min-height:32px;display:flex}.app-body.app-examination-preview .exam-programme-merge-panel{width:min(860px,84vw)}.app-body.app-examination-preview .exam-programme-merge-body{display:flex;flex-direction:column;gap:12px}.app-body.app-examination-preview .exam-programme-merge-target{order:3;display:grid;grid-template-columns:minmax(190px,.95fr) minmax(0,.78fr) minmax(0,.78fr) auto;gap:10px;align-items:end;padding:10px;border:1px solid #dce6ef;border-radius:8px;background:#f8fafc}.app-body.app-examination-preview .exam-programme-merge-target-copy{min-width:0}.app-body.app-examination-preview .exam-programme-merge-target-copy strong{display:block;color:#17324d;font-size:.82rem}.app-body.app-examination-preview .exam-programme-merge-target-copy span{display:block;margin-top:3px;color:#64748b;font-size:.7rem;font-weight:700;line-height:1.35}.app-body.app-examination-preview .exam-programme-merge-target label,.app-body.app-examination-preview .exam-programme-merge-picker-head{min-width:0}.app-body.app-examination-preview .exam-programme-merge-target label{display:flex;flex-direction:column;gap:5px}.app-body.app-examination-preview .exam-programme-merge-target label>span{color:#64748b;font-size:.67rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .exam-programme-merge-target select,.app-body.app-examination-preview .exam-programme-merge-picker-head input{width:100%;min-height:34px;border:1px solid #d5e1eb;border-radius:7px;background:#fff;color:#17324d;font-size:.78rem;font-weight:750}.app-body.app-examination-preview .exam-programme-merge-target .exam-btn{min-height:34px;white-space:nowrap}.app-body.app-examination-preview .exam-programme-merge-picker,.app-body.app-examination-preview .exam-programme-merge-proposal,.app-body.app-examination-preview .exam-programme-merge-blockers{overflow:hidden;border:1px solid #dce6ef;border-radius:8px;background:#fff}.app-body.app-examination-preview .exam-programme-merge-picker{order:1}.app-body.app-examination-preview .exam-programme-merge-modebar{order:2;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center;padding:10px 12px;border:1px solid #cbd9ec;border-radius:8px;background:linear-gradient(135deg,#f4f8ff,#fff)}.app-body.app-examination-preview .exam-programme-merge-modebar div{min-width:0;display:flex;align-items:baseline;gap:8px}.app-body.app-examination-preview .exam-programme-merge-modebar strong{color:#0f2d5c;font-size:1rem;font-weight:900}.app-body.app-examination-preview .exam-programme-merge-modebar span{overflow:hidden;color:#64748b;font-size:.74rem;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-programme-merge-modebar .exam-btn{min-height:34px}.app-body.app-examination-preview .exam-programme-merge-proposal{order:4}.app-body.app-examination-preview .exam-programme-merge-blockers{order:5}.app-body.app-examination-preview .exam-programme-merge-error{order:4}.app-body.app-examination-preview .exam-programme-merge-picker-head{display:grid;grid-template-columns:minmax(0,1fr) 240px;gap:12px;align-items:center;padding:10px 12px;border-bottom:1px solid #e4ebf2;background:#f8fafc}.app-body.app-examination-preview .exam-programme-merge-picker-head strong,.app-body.app-examination-preview .exam-programme-merge-proposal header strong,.app-body.app-examination-preview .exam-programme-merge-blockers>strong{display:block;color:#17324d;font-size:.84rem}.app-body.app-examination-preview .exam-programme-merge-picker-head span,.app-body.app-examination-preview .exam-programme-merge-proposal header span,.app-body.app-examination-preview .exam-programme-merge-blockers small{display:block;margin-top:2px;color:#64748b;font-size:.72rem;font-weight:700}.app-body.app-examination-preview .exam-programme-merge-list,.app-body.app-examination-preview .exam-programme-merge-change-list,.app-body.app-examination-preview .exam-programme-merge-blockers>div{display:grid;gap:8px;max-height:300px;overflow:auto;padding:10px;scrollbar-gutter:stable}.app-body.app-examination-preview .exam-programme-merge-row{display:grid;grid-template-columns:22px minmax(140px,1fr) minmax(120px,.85fr) minmax(120px,.8fr) minmax(150px,.95fr);gap:10px;align-items:center;min-width:0;padding:8px 10px;border:1px solid #e1e9f1;border-radius:7px;background:#fbfdff;cursor:pointer}.app-body.app-examination-preview .exam-merge-row-why{color:#8a6d3b;font-size:.68rem;font-weight:700}.app-body.app-examination-preview .exam-merge-row-lecturer{color:#315fbe}.app-body.app-examination-preview .exam-programme-merge-row.is-selected .exam-merge-row-lecturer{color:#21408a}.app-body.app-examination-preview .exam-programme-merge-row.is-selected{border-color:#315fbe;background:#eef4ff}.app-body.app-examination-preview .exam-programme-merge-row>span,.app-body.app-examination-preview .exam-programme-merge-row em{min-width:0;overflow:hidden;color:#64748b;font-size:.74rem;font-style:normal;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-programme-merge-row strong,.app-body.app-examination-preview .exam-programme-merge-row small{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-programme-merge-row strong{color:#17324d;font-size:.81rem}.app-body.app-examination-preview .exam-programme-merge-row small{margin-top:2px;color:#64748b;font-size:.68rem}.app-body.app-examination-preview .exam-programme-merge-empty,.app-body.app-examination-preview .exam-programme-merge-error{margin:0;padding:11px 12px;color:#64748b;font-size:.76rem;font-weight:750}.app-body.app-examination-preview .exam-programme-merge-error{border:1px solid #f2c4c4;border-radius:8px;color:#991b1b;background:#fff8f8}.app-body.app-examination-preview .exam-programme-merge-proposal header,.app-body.app-examination-preview .exam-programme-merge-blockers{padding:10px 12px}.app-body.app-examination-preview .exam-programme-merge-proposal header{display:flex;align-items:center;justify-content:space-between;gap:12px;border-bottom:1px solid #dce6ef;background:#f7fbff}.app-body.app-examination-preview .exam-programme-merge-proposal header b{flex:0 0 auto;padding:5px 8px;border-radius:999px;color:#fff;background:#315fbe;font-size:.7rem}.app-body.app-examination-preview .exam-programme-merge-change{display:grid;grid-template-columns:90px minmax(80px,.45fr) minmax(0,1fr);gap:9px;align-items:center;padding:9px;border:1px solid #e1e9f1;border-radius:7px;background:#fbfdff}.app-body.app-examination-preview .exam-programme-merge-change>span{width:fit-content;padding:3px 6px;border-radius:999px;color:#315fbe;background:#eef4ff;font-size:.64rem;font-weight:900;text-transform:uppercase}.app-body.app-examination-preview .exam-programme-merge-change>strong{overflow:hidden;color:#17324d;font-size:.8rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-programme-merge-change p{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);align-items:center;gap:8px;margin:0}.app-body.app-examination-preview .exam-programme-merge-change em,.app-body.app-examination-preview .exam-programme-merge-change b{min-width:0;overflow:hidden;padding:6px 8px;border-radius:6px;font-size:.72rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-programme-merge-change em{color:#6b7280;background:#f1f5f9;font-style:normal}.app-body.app-examination-preview .exam-programme-merge-change b{color:#166534;background:#ecfdf3}.app-body.app-examination-preview .exam-programme-merge-blockers{display:grid;gap:8px;border-color:#f2c4c4;background:#fff8f8}.app-body.app-examination-preview .exam-programme-merge-blockers>div{max-height:170px;padding:0}.app-body.app-examination-preview .exam-programme-merge-blockers span{padding:7px 9px;border:1px solid #f4cdcd;border-radius:7px;color:#991b1b;background:#fff;font-size:.72rem;font-weight:750}.app-body.app-examination-preview .exam-programme-merge-actions{display:grid;grid-template-columns:minmax(0,1fr) auto auto}.app-body.app-examination-preview .exam-programme-merge-actions>div{min-width:0;display:flex;flex-direction:column;gap:2px}.app-body.app-examination-preview .exam-programme-merge-actions>div strong{color:#17324d;font-size:.86rem}.app-body.app-examination-preview .exam-programme-merge-actions>div span{overflow:hidden;color:#64748b;font-size:.7rem;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.exam-room-empty{color:#8795a5!important;font-size:.71rem!important;font-weight:650!important}@media (max-width: 820px){.expv-panel{padding:14px}.expv-day-session-nav{align-items:stretch;flex-direction:column;padding-bottom:14px}.expv-session-actions{overflow-x:auto;flex-wrap:nowrap!important;padding-bottom:3px}.expv-table-scroll{max-height:66vh;padding:10px 10px 18px}}@media print{.expv-panel{padding:0;border:0}.expv-table-scroll{max-height:none;padding:0;overflow:visible;border:0}.expv-table-scroll .expv-session-bar,.expv-table-scroll .exam-session-columns,.exam-allocation-course{position:static!important}}.app-body.app-examination-preview .page-content{padding:10px 12px 12px;gap:8px;overflow:hidden}.app-body.app-examination-preview .page-fade{flex:1;min-height:0;display:flex;flex-direction:column}.app-body.app-examination-preview .expv-page{flex:1;min-height:0;width:100%;max-width:none;display:flex;flex-direction:column;gap:8px}.app-body.app-examination-preview .expv-window{flex:1;min-height:0;width:100%;max-width:none;display:flex;flex-direction:column;gap:0;padding:0;border:1px solid #cdd9e4;border-radius:8px;overflow:hidden;background:#eef3f7;box-shadow:0 10px 24px #0f1f3814}.app-body.app-examination .expv-window-toolbar{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;min-height:40px;padding:7px 10px 7px 12px;border-bottom:1px solid #d7e1eb;background:#fff;gap:10px;flex-shrink:0}.app-body.app-examination .expv-window-title{min-width:0;display:flex;align-items:baseline;gap:10px}.app-body.app-examination .expv-window-title strong{min-width:0;overflow:hidden;color:#102845;font-size:.88rem;font-weight:760;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination .expv-window-title span{flex-shrink:0;color:#6a7a96;font-size:.69rem;font-family:var(--font-mono)}.app-body.app-examination .expv-inline-stats{display:flex;align-items:center;justify-content:flex-end;gap:6px;min-width:0}.app-body.app-examination .expv-inline-stats span{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 9px;border:1px solid #d8e2eb;border-radius:999px;background:#f8fafc;color:#586a82;font-size:.68rem;font-weight:800;white-space:nowrap}.app-body.app-examination .expv-inline-stats strong{color:#102845;font-family:var(--font-mono);font-size:.76rem}.app-body.app-examination .expv-inline-stats .danger{border-color:#f1b6bc;background:#fff3f4;color:#a52633}.app-body.app-examination .expv-inline-stats .danger strong{color:#a52633}.app-body.app-examination-preview .expv-stats{display:none}.app-body.app-examination-preview .expv-workspace-notice{margin:0;border-width:0 0 1px 0;border-radius:0;flex-shrink:0}.app-body.app-examination-preview .expv-compact-controls{display:grid;grid-template-columns:minmax(420px,1fr) minmax(420px,.86fr);align-items:stretch;gap:1px;border-bottom:1px solid #d7e1eb;background:#d7e1eb;flex-shrink:0}.app-body.app-examination-preview .ef-bar{min-width:0;padding:7px 10px;border-bottom:0;background:#f8fafc;gap:6px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.app-body.app-examination-preview .ef-search-wrap{flex:0 0 clamp(190px,20vw,280px);max-width:none;min-width:180px}.app-body.app-examination-preview .ef-search-input{height:28px;border-radius:7px;font-size:.72rem;padding-top:0;padding-bottom:0}.app-body.app-examination-preview .ef-pills{flex:0 0 auto;flex-wrap:nowrap;gap:5px}.app-body.app-examination-preview .ef-pill,.app-body.app-examination-preview .ef-dept-select,.app-body.app-examination-preview .ef-clear-btn{flex:0 0 auto;height:28px;border-radius:7px;font-size:.72rem;white-space:nowrap}.app-body.app-examination-preview .ef-pill{padding:0 10px}.app-body.app-examination-preview .ef-dept-select{width:clamp(112px,11vw,150px);padding:0 26px 0 10px}.app-body.app-examination-preview .ef-result-count{flex:0 0 auto;margin-left:0;font-size:.69rem;white-space:nowrap}.app-body.app-examination-preview .ef-practical-actions{gap:6px;margin-left:0}.app-body.app-examination-preview .ef-practical-actions .exam-btn,.app-body.app-examination-preview .expv-day-controls .exam-btn,.app-body.app-examination-preview .expv-session-actions .exam-btn{min-height:28px!important;height:28px;padding:0 10px!important;border-radius:7px;font-size:.72rem!important;white-space:nowrap}.app-body.app-examination-preview .ef-filter-drawer-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;flex:0 0 auto;height:28px;padding:0 12px;border:1px solid #102845;border-radius:7px;background:#102845;color:#fff;font:800 .72rem var(--font-sans);cursor:pointer;white-space:nowrap;box-shadow:0 5px 12px #10284524}.app-body.app-examination-preview .ef-filter-drawer-btn svg{width:13px;height:13px}.app-body.app-examination-preview .ef-filter-drawer-btn span{min-width:17px;height:17px;display:inline-flex;align-items:center;justify-content:center;padding:0 5px;border-radius:999px;background:#fff;color:#102845;font-size:.66rem;font-family:var(--font-mono)}.app-body.app-examination-preview .ef-filter-drawer-shell{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1100;display:flex;justify-content:flex-end;background:#00000047}.app-body.app-examination-preview .ef-filter-drawer{max-width:100vw;height:100%;display:flex;flex-direction:column;border-left:1px solid #dce4ec;background:#fff;box-shadow:-18px 0 48px #19304829}.app-body.app-examination-preview .ef-filter-drawer-head div{min-width:0;display:flex;flex-direction:column;gap:3px}.app-body.app-examination-preview .ef-filter-drawer-head strong{color:#102845;font-size:.98rem;font-weight:850}.app-body.app-examination-preview .ef-filter-drawer-head span{color:#6a7a96;font-size:.72rem;font-family:var(--font-mono)}.app-body.app-examination-preview .ef-filter-drawer-close{width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:6px;background:transparent;color:#6b7280;font-size:1.15rem;line-height:1;cursor:pointer}.app-body.app-examination-preview .ef-filter-drawer-close:hover{background:#eef3f6;color:#102845}.app-body.app-examination-preview .ef-filter-drawer-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:14px;padding:16px 20px;overflow-y:auto;overscroll-behavior:contain}.app-body.app-examination-preview .ef-filter-field{display:flex;flex-direction:column;gap:8px}.app-body.app-examination-preview .ef-filter-field>span{color:#586a82;font-size:.68rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .ef-filter-choice-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.app-body.app-examination-preview .ef-filter-choice{min-width:0;height:34px;padding:0 10px;overflow:hidden;border:1px solid #d8e2eb;border-radius:7px;background:#fff;color:#2d3f5a;font:750 .76rem var(--font-sans);text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.app-body.app-examination-preview .ef-filter-choice.active{border-color:#102845;background:#102845;color:#fff}.app-body.app-examination-preview .ef-filter-drawer .ef-dept-select{width:100%;max-width:none;height:34px;flex:0 0 auto;border-radius:7px;font-size:.78rem}.app-body.app-examination-preview .ef-filter-drawer-actions .exam-btn{min-height:30px;height:30px;padding:0 12px;border-radius:7px;font-size:.74rem}.app-body.app-examination-preview .ef-filter-drawer-actions .exam-btn.danger{margin-right:auto;border-color:#dc493a;background:#dc493a;color:#fff}.app-body.app-examination-preview .ef-filter-drawer-actions .exam-btn:disabled{opacity:.45;cursor:not-allowed}.app-body.app-examination-preview .expv-day-session-nav{position:relative;z-index:30;min-width:0;display:flex;align-items:center!important;justify-content:space-between;gap:8px;margin:0;padding:7px 10px;border:0;background:#f8fafc;overflow:visible;flex-direction:row!important;flex-wrap:nowrap;scrollbar-width:thin}.app-body.app-examination-preview .expv-day-session-nav>div{min-width:0;flex-wrap:nowrap}.app-body.app-examination-preview .expv-day-controls{display:flex;align-items:center;gap:6px;flex:0 0 auto}.app-body.app-examination-preview .expv-selected-day{min-width:132px;max-width:180px;overflow:hidden;color:#102845;font-size:.76rem;font-weight:800;text-align:center;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .expv-day-controls .exam-btn:first-child,.app-body.app-examination-preview .expv-day-controls .exam-btn:last-child{font-size:0!important}.app-body.app-examination-preview .expv-day-controls .exam-btn:first-child:after{content:"Previous";font-size:.72rem}.app-body.app-examination-preview .expv-day-controls .exam-btn:last-child:after{content:"Next";font-size:.72rem}.app-body.app-examination-preview .expv-session-actions{display:flex;align-items:center;justify-content:flex-end;gap:5px;flex:0 0 auto;flex-wrap:nowrap}.app-body.app-examination-preview .exam-tools-menu{position:relative;flex:0 0 auto}.app-body.app-examination-preview .exam-tools-menu-trigger{display:inline-grid;place-items:center;width:34px;height:30px;border:1px solid #d8e2eb;border-radius:8px;color:#17324d;background:#fff;box-shadow:0 8px 18px #17324d0f;cursor:pointer}.app-body.app-examination-preview .exam-tools-menu-trigger:hover,.app-body.app-examination-preview .exam-tools-menu-trigger[aria-expanded=true]{border-color:#315fbe;color:#315fbe;background:#eef4ff}.app-body.app-examination-preview .exam-tools-menu-pop{position:absolute;top:calc(100% + 7px);right:0;z-index:120;min-width:220px;display:flex;flex-direction:column;gap:2px;padding:6px;border:1px solid #d8e2eb;border-radius:10px;background:#fff;box-shadow:0 18px 42px #17324d2e}.app-body.app-examination-preview .exam-tools-menu-item{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:8px 10px;border:0;border-radius:7px;color:#17324d;background:transparent;font:800 .8rem var(--font-sans);text-align:left;cursor:pointer}.app-body.app-examination-preview .exam-tools-menu-item:hover:not(:disabled){color:#315fbe;background:#eef4ff}.app-body.app-examination-preview .exam-tools-menu-item:disabled{opacity:.52;cursor:default}.app-body.app-examination-preview .exam-tools-menu-item svg{flex:0 0 auto}.app-body.app-examination-preview .expv-panel{flex:1;min-height:0;display:flex;flex-direction:column;padding:8px;border:0;border-radius:0;background:#eef3f7;box-shadow:none;overflow:hidden}.app-body.app-examination-preview .expv-table-scroll{flex:1;min-height:0;max-height:none;padding:8px;border-color:#cdd9e4;border-radius:8px;background:#f4f7f9}.app-body.app-examination-preview .expv-table-scroll .expv-session-block,.app-body.app-examination-preview .expv-table-scroll .exam-session-cards,.app-body.app-examination-preview .expv-table-scroll .exam-session-columns,.app-body.app-examination-preview .exam-session-card--allocation{min-width:1180px}.app-body.app-examination-preview .expv-table-scroll .expv-session-block{margin-bottom:12px}.app-body.app-examination-preview .expv-table-scroll .expv-session-bar{top:-8px;min-height:40px;padding:8px 12px}.app-body.app-examination-preview .expv-table-scroll .exam-session-columns{top:32px;grid-template-columns:240px repeat(3,minmax(300px,1fr))}.app-body.app-examination-preview .exam-session-card--allocation{grid-template-columns:240px minmax(900px,1fr)}.app-body.app-examination-preview .expv-search-result-block .expv-session-bar-left strong{max-width:420px}.app-body.app-examination-preview .expv-search-summary-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:42px;padding:8px 10px 8px 12px;border:1px solid #d8e2eb;border-radius:8px;background:#f8fafc}.app-body.app-examination-preview .expv-search-summary-bar>div{min-width:0;display:flex;flex-direction:column;gap:2px}.app-body.app-examination-preview .expv-search-summary-bar strong{color:#17324d;font-size:.82rem}.app-body.app-examination-preview .expv-search-summary-bar span{overflow:hidden;color:#64748b;font-size:.72rem;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .expv-search-empty{min-height:280px;display:grid;place-items:center;align-content:center;gap:10px;padding:28px;color:#5c6f86;text-align:center;background:#fff;border:1px dashed #c7d5e3;border-radius:8px}.app-body.app-examination-preview .expv-search-empty-icon{display:grid;place-items:center;width:46px;height:46px;color:#315fbe;background:#eef4ff;border:1px solid #d6e3fb;border-radius:8px}.app-body.app-examination-preview .expv-search-empty strong{color:#17324d;font-size:.96rem}.app-body.app-examination-preview .expv-search-empty p{max-width:520px;margin:0;font-size:.82rem;line-height:1.5}.app-body.app-examination-preview .exam-room-assignment{grid-template-columns:repeat(3,minmax(300px,1fr));min-height:104px}.app-body.app-examination-preview .exam-allocation-course{padding:13px 14px!important}.app-body.app-examination-preview .exam-allocation-course-code{font-size:.98rem}.app-body.app-examination-preview .exam-allocation-course-title,.app-body.app-examination-preview .exam-room-venue strong,.app-body.app-examination-preview .exam-room-programme-copy strong,.app-body.app-examination-preview .exam-room-invigilator-copy strong{font-size:.84rem}.app-body.app-examination-preview .expv-page>.exam-panel{flex:0 0 auto;max-height:96px;overflow:auto;padding:10px 12px;border-radius:8px}@media (max-width: 1180px){.app-body.app-examination-preview .expv-compact-controls{grid-template-columns:1fr}}@media (max-width: 760px){.app-body.app-examination .expv-window-toolbar{grid-template-columns:1fr}.app-body.app-examination .expv-inline-stats{justify-content:flex-start;overflow-x:auto}.app-body.app-examination-preview .ef-search-wrap{flex-basis:210px}}.app-body.app-examination .expv-inline-stats .expv-inline-stat-action{display:inline-flex;align-items:center;gap:5px;height:26px;padding:0 10px;border:1px solid #d8e2eb;border-radius:999px;background:#f8fafc;color:#586a82;font:800 .68rem var(--font-sans);white-space:nowrap;cursor:pointer}.app-body.app-examination .expv-inline-stats .expv-inline-stat-action.danger{border-color:#dc493a;background:#dc493a;color:#fff;box-shadow:0 8px 18px #dc493a2e}.app-body.app-examination .expv-inline-stats .expv-inline-stat-action.danger strong{color:#fff}.app-body.app-examination .expv-inline-stats .expv-inline-stat-action.danger:hover{border-color:#b91c1c;background:#b91c1c}.app-body.app-examination-preview .exam-side-panel-shell,.app-body.app-examination-preview .ef-filter-drawer-shell.exam-side-panel-shell{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1200;display:flex;justify-content:flex-end;padding:12px;background:#13263a7a;-webkit-backdrop-filter:blur(7px) saturate(.85);backdrop-filter:blur(7px) saturate(.85);animation:exam-side-panel-backdrop-in .18s ease-out both}.app-body.app-examination-preview .exam-side-panel,.app-body.app-examination-preview .ef-filter-drawer.exam-side-panel{max-width:none;height:auto;max-height:calc(100vh - 24px);min-height:0;display:flex;flex-direction:column;overflow:hidden;border:1px solid #d8e2eb;border-radius:8px!important;background:#fff;box-shadow:inset 0 3px #315fbe,-18px 0 48px #1930482e!important;animation:exam-side-panel-slide-in .22s cubic-bezier(.2,.85,.25,1) both;will-change:transform,opacity}@keyframes exam-side-panel-slide-in{0%{opacity:0;transform:translate(calc(100% + 18px))}to{opacity:1;transform:translate(0)}}@keyframes exam-side-panel-backdrop-in{0%{opacity:0}to{opacity:1}}.app-body.app-examination-preview .exam-side-panel-head,.app-body.app-examination-preview .ef-filter-drawer-head.exam-side-panel-head{min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 14px 13px 16px;border-bottom:1px solid #e2e9ef;background:#f7f9fb;flex-shrink:0}.app-body.app-examination-preview .exam-side-panel-title,.app-body.app-examination-preview .ef-filter-drawer-head .exam-side-panel-title{min-width:0;display:flex;align-items:center;flex-direction:row;gap:10px;color:#17324d}.app-body.app-examination-preview .exam-side-panel-title>div,.app-body.app-examination-preview .ef-filter-drawer-head .exam-side-panel-title>div{min-width:0;display:flex;flex-direction:column;gap:2px}.app-body.app-examination-preview .exam-side-panel-icon{display:inline-grid;place-items:center;width:36px;height:36px;flex:0 0 36px;border-radius:7px!important;background:#e5edf8;color:#315f8e}.app-body.app-examination-preview .exam-side-panel-icon.danger{background:#fee2e2;color:#b91c1c}.app-body.app-examination-preview .exam-side-panel-icon svg{width:17px;height:17px}.app-body.app-examination-preview .exam-side-panel-title strong,.app-body.app-examination-preview .ef-filter-drawer-head .exam-side-panel-title strong{color:#17324d;font-size:.9rem;font-weight:800}.app-body.app-examination-preview .exam-side-panel-title span,.app-body.app-examination-preview .ef-filter-drawer-head .exam-side-panel-title span{color:#78899a;font-size:.69rem;font-weight:600}.app-body.app-examination-preview .exam-side-panel .ef-filter-drawer-close{width:32px;height:32px;border:1px solid #d3dde6;border-radius:6px!important;background:#fff;color:#637489}.app-body.app-examination-preview .exam-side-panel .ef-filter-drawer-close:hover{border-color:#bdcad6;background:#edf2f6;color:#17324d}.app-body.app-examination-preview .exam-side-panel-body,.app-body.app-examination-preview .ef-filter-drawer-body.exam-side-panel-body{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;background:#fff;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.app-body.app-examination-preview .exam-side-panel-body::-webkit-scrollbar,.app-body.app-examination-preview .ef-filter-drawer-body.exam-side-panel-body::-webkit-scrollbar{width:9px}.app-body.app-examination-preview .exam-side-panel-body::-webkit-scrollbar-track,.app-body.app-examination-preview .ef-filter-drawer-body.exam-side-panel-body::-webkit-scrollbar-track{background:#f4f7f9}.app-body.app-examination-preview .exam-side-panel-body::-webkit-scrollbar-thumb,.app-body.app-examination-preview .ef-filter-drawer-body.exam-side-panel-body::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px!important;background:#aebed0}.app-body.app-examination-preview .exam-side-panel-actions,.app-body.app-examination-preview .exam-conflict-resolver-body{padding:14px;background:#fff}.app-body.app-examination-preview .exam-conflict-resolver-actions .exam-btn{min-height:32px;padding:0 13px;border-radius:7px;font-size:.74rem}@media (max-width: 720px){.app-body.app-examination-preview .exam-side-panel-shell,.app-body.app-examination-preview .ef-filter-drawer-shell.exam-side-panel-shell{padding:8px}.app-body.app-examination-preview .exam-side-panel,.app-body.app-examination-preview .ef-filter-drawer.exam-side-panel,.app-body.app-examination-preview .exam-conflict-resolver-panel{width:calc(100vw - 16px);max-height:calc(100vh - 16px)}}.app-body.app-examination-preview .exam-conflict-resolver-body.exam-side-panel-body{flex:1 1 auto;min-height:0;max-height:none;gap:10px;padding:10px 12px 12px;overflow-y:auto;background:#fff}.app-body.app-examination-preview .exam-conflict-resolver-body.has-proposal{overflow:hidden}.app-body.app-examination-preview .exam-conflict-resolver-body.has-proposal .exam-conflict-proposed-section{flex:1 1 auto;min-height:0;display:flex;flex-direction:column}.app-body.app-examination-preview .exam-conflict-resolver-hero{grid-template-columns:minmax(0,1fr) 58px;gap:8px;padding:10px 11px;border-radius:7px}.app-body.app-examination-preview .exam-conflict-resolver-hero>div:first-child strong{font-size:.82rem;line-height:1.25}.app-body.app-examination-preview .exam-conflict-resolver-hero>div:first-child span{margin-top:2px;font-size:.68rem;line-height:1.35}.app-body.app-examination-preview .exam-conflict-resolver-hero>div:last-child{min-width:0;padding:7px 6px;border-radius:7px}.app-body.app-examination-preview .exam-conflict-resolver-hero>div:last-child strong{font-size:.92rem}.app-body.app-examination-preview .exam-conflict-resolver-hero>div:last-child span{font-size:.56rem}.app-body.app-examination-preview .exam-conflict-resolver-section{border-radius:7px}.app-body.app-examination-preview .exam-conflict-resolver-section-head{min-height:38px;padding:8px 10px}.app-body.app-examination-preview .exam-conflict-resolver-section-head strong{font-size:.74rem}.app-body.app-examination-preview .exam-conflict-resolver-section-head span{font-size:.64rem}.app-body.app-examination-preview .exam-conflict-group-list,.app-body.app-examination-preview .exam-conflict-change-list,.app-body.app-examination-preview .exam-conflict-blocker-list{gap:7px;padding:8px}.app-body.app-examination-preview .exam-conflict-detected-section .exam-conflict-group-list,.app-body.app-examination-preview .exam-conflict-proposed-section .exam-conflict-change-list,.app-body.app-examination-preview .exam-conflict-blocker-section .exam-conflict-blocker-list{max-height:min(330px,44vh);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.app-body.app-examination-preview .exam-conflict-resolver-body.has-proposal .exam-conflict-proposed-section .exam-conflict-change-list{flex:1 1 auto;min-height:0;max-height:none;padding:12px}.app-body.app-examination-preview .exam-conflict-detected-section .exam-conflict-group-list::-webkit-scrollbar,.app-body.app-examination-preview .exam-conflict-proposed-section .exam-conflict-change-list::-webkit-scrollbar,.app-body.app-examination-preview .exam-conflict-blocker-section .exam-conflict-blocker-list::-webkit-scrollbar{width:8px}.app-body.app-examination-preview .exam-conflict-detected-section .exam-conflict-group-list::-webkit-scrollbar-track,.app-body.app-examination-preview .exam-conflict-proposed-section .exam-conflict-change-list::-webkit-scrollbar-track,.app-body.app-examination-preview .exam-conflict-blocker-section .exam-conflict-blocker-list::-webkit-scrollbar-track{background:#f4f7f9}.app-body.app-examination-preview .exam-conflict-detected-section .exam-conflict-group-list::-webkit-scrollbar-thumb,.app-body.app-examination-preview .exam-conflict-proposed-section .exam-conflict-change-list::-webkit-scrollbar-thumb,.app-body.app-examination-preview .exam-conflict-blocker-section .exam-conflict-blocker-list::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px;background:#aebed0}.app-body.app-examination-preview .exam-conflict-group-card,.app-body.app-examination-preview .exam-conflict-change-card{border-radius:7px}.app-body.app-examination-preview .exam-conflict-group-card header,.app-body.app-examination-preview .exam-conflict-change-card header{gap:8px;padding:8px 9px}.app-body.app-examination-preview .exam-conflict-group-card header strong,.app-body.app-examination-preview .exam-conflict-change-card header strong{font-size:.72rem}.app-body.app-examination-preview .exam-conflict-group-card header span,.app-body.app-examination-preview .exam-conflict-change-card header span{font-size:.62rem}.app-body.app-examination-preview .exam-conflict-group-card header em,.app-body.app-examination-preview .exam-conflict-change-card header em,.app-body.app-examination-preview .exam-conflict-change-card header>span{padding:2px 6px;font-size:.56rem}.app-body.app-examination-preview .exam-conflict-group-card p{padding:7px 9px;font-size:.68rem;line-height:1.35}.app-body.app-examination-preview .exam-conflict-chip-grid{gap:5px;padding:7px 9px}.app-body.app-examination-preview .exam-conflict-chip-grid span{padding:4px 6px;font-size:.6rem}.app-body.app-examination-preview .exam-conflict-source-table{display:grid;max-height:min(260px,34vh);overflow-y:auto;overscroll-behavior:contain;border:1px solid #dce5ec;border-radius:7px;background:#fff;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.app-body.app-examination-preview .exam-conflict-source-table::-webkit-scrollbar{width:8px}.app-body.app-examination-preview .exam-conflict-source-table::-webkit-scrollbar-track{background:#f4f7f9}.app-body.app-examination-preview .exam-conflict-source-table::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px;background:#aebed0}.app-body.app-examination-preview .exam-conflict-source-row{display:grid;grid-template-columns:minmax(76px,.55fr) minmax(0,1.75fr) 92px;min-height:34px;border-top:1px solid #e7edf3}.app-body.app-examination-preview .exam-conflict-source-row:first-child{border-top:0}.app-body.app-examination-preview .exam-conflict-source-row.is-head{position:sticky;top:0;z-index:1;min-height:28px;background:#f6f9fb}.app-body.app-examination-preview .exam-conflict-source-row>*{min-width:0;margin:0;padding:7px 8px;border-left:1px solid #e7edf3;color:#263a50;font-size:.66rem;line-height:1.35;overflow:hidden;text-overflow:ellipsis}.app-body.app-examination-preview .exam-conflict-source-row.is-head span{color:#627389;font-size:.58rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .exam-conflict-source-row strong{color:#102845;font-family:var(--font-mono);font-weight:850;white-space:nowrap}.app-body.app-examination-preview .exam-conflict-source-row p{color:#7f1d1d}.app-body.app-examination-preview .exam-conflict-source-action{display:inline-flex;align-items:center;justify-content:center}.app-body.app-examination-preview .exam-conflict-source-action button{width:72px;height:24px;border:1px solid #102845;border-radius:6px;background:#102845;color:#fff;font:800 .62rem var(--font-sans);cursor:pointer}.app-body.app-examination-preview .exam-conflict-source-action button:hover:not(:disabled){background:#315f8e;border-color:#315f8e}.app-body.app-examination-preview .exam-conflict-source-action button:disabled{border-color:#d9e2eb;background:#eef3f7;color:#7d8ea1;cursor:not-allowed}.app-body.app-examination-preview .exam-conflict-blocker-list span{padding:7px 9px;border-radius:7px;font-size:.68rem;line-height:1.35}.app-body.app-examination-preview .exam-conflict-blocker-list strong{min-width:72px}.app-body.app-examination-preview .exam-conflict-added-session-callout{display:grid;grid-template-columns:minmax(0,1fr);gap:8px;align-items:center;margin:0 8px 8px;padding:8px;border:1px solid #d8e2eb;border-radius:7px;background:#f7f9fb}.app-body.app-examination-preview .exam-added-session-config{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.app-body.app-examination-preview .exam-added-session-config label,.app-body.app-examination-preview .exam-duration-editor-body label{display:flex;min-width:0;flex-direction:column;gap:4px;color:#637489;font-size:.62rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .exam-added-session-config input,.app-body.app-examination-preview .exam-added-session-config select,.app-body.app-examination-preview .exam-duration-editor-body input,.app-body.app-examination-preview .exam-duration-editor-body select{min-width:0;min-height:30px;border:1px solid #ccd8e3;border-radius:6px;background:#fff;color:#102845;font:750 .72rem var(--font-sans)}.app-body.app-examination-preview .exam-conflict-added-session-callout strong,.app-body.app-examination-preview .exam-conflict-added-session-callout span{display:block}.app-body.app-examination-preview .exam-conflict-added-session-callout strong{color:#102845;font-size:.72rem;font-weight:850}.app-body.app-examination-preview .exam-conflict-added-session-callout span{margin-top:2px;color:#637489;font-size:.62rem;line-height:1.35}.app-body.app-examination-preview .exam-conflict-added-session-callout .exam-btn{min-height:28px;padding:0 9px;border-radius:6px;font-size:.64rem;white-space:nowrap}.app-body.app-examination-preview .exam-allocation-duration{display:inline-flex;align-items:center;gap:6px;width:fit-content;max-width:100%;margin-top:5px;padding:4px 7px;border:1px solid #d8e2eb;border-radius:6px;background:#f8fafc;color:#506278;font-size:.68rem;font-weight:800}.app-body.app-examination-preview .exam-allocation-duration.is-custom{border-color:#315f8e4d;background:#eef4ff;color:#315f8e}.app-body.app-examination-preview .exam-allocation-duration b,.app-body.app-examination-preview .exam-allocation-duration em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-allocation-duration b{color:#102845;font-family:var(--font-mono)}.app-body.app-examination-preview .exam-allocation-duration em{font-style:normal}.app-body.app-examination-preview .exam-allocation-course-head{display:flex;align-items:center;gap:7px;min-width:0}.app-body.app-examination-preview .exam-allocation-course-action{width:fit-content;max-width:100%;border:0;background:transparent;padding:0;text-align:left;cursor:pointer}.app-body.app-examination-preview .exam-allocation-course-action:hover{color:#315f8e;text-decoration:underline}.app-body.app-examination-preview .exam-duration-editor-body{gap:12px;padding:14px}.app-body.app-examination-preview .exam-duration-editor-body p{margin:0;color:#506278;font-size:.74rem;line-height:1.45}.app-body.app-examination-preview .exam-duration-mode-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:4px;border:1px solid #d8e2eb;border-radius:8px;background:#eef3f8}.app-body.app-examination-preview .exam-duration-mode-tabs button{min-height:32px;border:0;border-radius:6px;background:transparent;color:#506278;font:850 .7rem var(--font-sans);cursor:pointer}.app-body.app-examination-preview .exam-duration-mode-tabs button.active{background:#102845;color:#fff;box-shadow:0 8px 18px #10284524}.app-body.app-examination-preview .exam-duration-session-picker{display:grid;gap:8px}.app-body.app-examination-preview .exam-duration-session-picker label,.app-body.app-examination-preview .exam-duration-session-picker button{display:flex;align-items:center;gap:9px;width:100%;min-height:48px;padding:8px 10px;border:1px solid #d8e2eb;border-radius:8px;background:#fff;text-align:left;cursor:pointer}.app-body.app-examination-preview .exam-duration-session-picker label.selected,.app-body.app-examination-preview .exam-duration-session-picker button.selected{border-color:#315f8e80;background:#eef4ff}.app-body.app-examination-preview .exam-duration-quick-picks{display:grid;gap:8px;padding:10px;border:1px solid #d8e2eb;border-radius:8px;background:#f8fafc}.app-body.app-examination-preview .exam-duration-quick-picks>strong{color:#102845;font-size:.74rem}.app-body.app-examination-preview .exam-duration-session-picker input{width:16px;height:16px;accent-color:#102845}.app-body.app-examination-preview .exam-duration-session-picker span{display:grid;gap:2px;min-width:0}.app-body.app-examination-preview .exam-duration-session-picker strong{color:#102845;font-size:.74rem;font-weight:850}.app-body.app-examination-preview .exam-duration-session-picker small{color:#637489;font-size:.66rem;font-weight:700}.app-body.app-examination-preview .exam-duration-custom-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.app-body.app-examination-preview .exam-duration-custom-grid label{display:grid;gap:6px;color:#506278;font-size:.66rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .exam-duration-custom-grid input{min-height:38px;width:100%;border:1px solid #d8e2eb;border-radius:7px;background:#fff;color:#102845;font:850 .82rem var(--font-sans);padding:0 10px}.app-body.app-examination-preview .exam-duration-custom-grid input:focus{outline:none;border-color:#315f8e;box-shadow:0 0 0 3px #315f8e1f}.app-body.app-examination-preview .exam-duration-editor-preview{display:grid;gap:4px;padding:10px;border:1px solid #d8e2eb;border-radius:7px;background:#f7f9fb}.app-body.app-examination-preview .exam-duration-editor-preview strong{color:#102845;font-size:.72rem}.app-body.app-examination-preview .exam-duration-editor-preview span{color:#637489;font-size:.7rem;line-height:1.4}.app-body.app-examination-preview .exam-duration-editor-preview em{color:#315f8e;font-size:.66rem;font-style:normal;font-weight:800;line-height:1.35}.app-body.app-examination-preview .exam-duration-warning{border:1px solid rgba(220,73,58,.22);border-radius:8px;background:#dc493a14;color:#9f2f27;font-size:.7rem;font-weight:750;line-height:1.45;padding:9px 10px}.app-body.app-examination-preview .expv-custom-duration-block{border-color:#b9cde3;background:#f7fbff}.app-body.app-examination-preview .expv-custom-duration-bar{background:#102845!important;color:#fff!important}.app-body.app-examination-preview .expv-custom-duration-bar .expv-session-time{color:#ffffffc7}.app-body.app-examination-preview .expv-custom-duration-bar .expv-session-count{border-color:#fff3;background:#ffffff1f;color:#fff}.app-body.app-examination-preview .exam-session-card--custom-duration{border-left-color:#102845}.app-body.app-examination-preview .exam-session-card--custom-duration .exam-allocation-course{background:#eef4ff}.app-body.app-examination-preview .exam-allocation-badge.custom-duration{border-color:#315f8e;background:#102845;color:#fff}.app-body.app-examination-preview .exam-allocation-duration{width:fit-content;max-width:100%;display:inline-flex;align-items:center;min-height:24px;padding:0 8px;border:1px solid #b9cde3;border-radius:6px;background:#fff;color:#102845;font:850 .66rem var(--font-sans);line-height:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-move-planner-body{gap:12px;padding:14px;background:#f7f9fb}.app-body.app-examination-preview .exam-move-planner-intro{display:grid;gap:3px;padding:11px 12px;border:1px solid #d8e2eb;border-radius:8px;background:#fff;box-shadow:0 8px 18px #1930480f}.app-body.app-examination-preview .exam-move-planner-intro strong{min-width:0;overflow:hidden;color:#102845;font-size:.82rem;font-weight:850;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-move-planner-intro span{margin:0;color:#506278;font-size:.68rem;line-height:1.45}.app-body.app-examination-preview .exam-move-planner-field{display:flex;min-width:0;flex-direction:column;gap:6px;padding:10px 11px;border:1px solid #d8e2eb;border-radius:8px;background:#fff}.app-body.app-examination-preview .exam-move-planner-field>span{color:#637489;font-size:.62rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .exam-move-planner-body select{min-width:0;min-height:32px;border:1px solid #ccd8e3;border-radius:6px;background:#fff;color:#102845;font:750 .72rem var(--font-sans)}.app-body.app-examination-preview .exam-move-suggestion-card{overflow:hidden;border:1px solid #bfdacf;border-radius:8px;background:#fff;box-shadow:0 12px 24px #16653414}.app-body.app-examination-preview .exam-move-suggestion-head{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:11px 12px;border-bottom:1px solid #cbe6da;background:linear-gradient(180deg,#edf8f3,#f7fcfa)}.app-body.app-examination-preview .exam-move-suggestion-head strong,.app-body.app-examination-preview .exam-move-suggestion-head span{display:block}.app-body.app-examination-preview .exam-move-suggestion-head strong{color:#174c3b;font-size:.8rem}.app-body.app-examination-preview .exam-move-suggestion-head span{margin-top:2px;color:#4d7064;font-size:.63rem;font-weight:750}.app-body.app-examination-preview .exam-move-suggestion-head em{flex:0 0 auto;padding:3px 7px;border-radius:999px;background:#dff3ea;color:#176448;font-size:.6rem;font-style:normal;font-weight:850}.app-body.app-examination-preview .exam-move-suggestion-grid{display:grid;grid-template-columns:1fr}.app-body.app-examination-preview .exam-move-suggestion-grid span{display:grid;position:relative;gap:4px;min-width:0;padding:10px 12px 10px 38px;border-top:1px solid #e2e9ef;color:#263a50;font-size:.72rem;line-height:1.35;overflow-wrap:anywhere}.app-body.app-examination-preview .exam-move-suggestion-grid span:first-child{border-top:0}.app-body.app-examination-preview .exam-move-suggestion-grid span:before{content:"";position:absolute;left:12px;top:12px;width:16px;height:16px;border-radius:5px;background:#e5edf8}.app-body.app-examination-preview .exam-move-suggestion-grid .is-session:before{background:#e5edf8}.app-body.app-examination-preview .exam-move-suggestion-grid .is-venue:before{background:#e7f7ef}.app-body.app-examination-preview .exam-move-suggestion-grid .is-staff:before{background:#fff1d6}.app-body.app-examination-preview .exam-move-suggestion-grid strong{color:#637489;font-size:.58rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .exam-conflict-tool-row{gap:6px;padding:8px}.app-body.app-examination-preview .exam-conflict-tool-row label{font-size:.62rem}.app-body.app-examination-preview .exam-conflict-tool-row select{min-height:31px;min-width:180px;font-size:.7rem}.app-body.app-examination-preview .exam-conflict-change-row{grid-template-columns:92px minmax(0,1fr);gap:7px;padding:7px 8px}.app-body.app-examination-preview .exam-conflict-change-row>span{font-size:.56rem}.app-body.app-examination-preview .exam-conflict-change-row em,.app-body.app-examination-preview .exam-conflict-change-row strong{padding:6px 7px;font-size:.64rem}.app-body.app-examination-preview .exam-session-tools-panel,.app-body.app-examination-preview .exam-session-tools-panel.exam-session-merge-dialog{width:min(648px,calc(100vw - 24px))!important;max-width:none!important}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body,.app-body.app-examination-preview .exam-session-tools-panel .exam-session-split-body{flex:1 1 auto;min-height:0;gap:12px;padding:12px 14px;overflow-y:auto;background:#fff}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-intro,.app-body.app-examination-preview .exam-session-tools-panel .exam-session-split-body>p{max-width:none;font-size:.74rem;line-height:1.45}.app-body.app-examination-preview .exam-session-tools-panel .exam-merge-controls{grid-template-columns:1fr;gap:10px}.app-body.app-examination-preview .exam-session-tools-panel .exam-merge-control-group{padding:10px;border-radius:7px}.app-body.app-examination-preview .exam-session-tools-panel .exam-merge-source-list,.app-body.app-examination-preview .exam-session-tools-panel .exam-merge-target-options{gap:7px}.app-body.app-examination-preview .exam-session-tools-panel .exam-merge-review{min-height:0;display:flex;flex-direction:column}.app-body.app-examination-preview .exam-session-tools-panel .exam-merge-course-list{max-height:min(300px,36vh);flex:1 1 auto}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode{gap:0;padding:0 8px 8px;overflow:hidden}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-review{flex:1 1 auto;min-height:0;border-radius:7px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-review-head{padding:10px 12px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-review-status{width:26px;height:26px;flex-basis:26px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-target{padding:9px 12px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding:8px 12px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-summary>span{justify-content:center;min-width:0;padding:5px 6px;text-align:center}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-course-list{flex:1 1 auto;max-height:none;border-top:1px solid #e2e9ef}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-course{grid-template-columns:92px minmax(0,1fr);padding:0}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-course-heading{justify-content:flex-start;gap:4px;padding:10px 9px;border-right:1px solid #e2e9ef;background:#f7f9fb}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-course-heading strong{font-size:.74rem}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-course-changes{border-left:0;padding:9px 10px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-change{grid-template-columns:82px minmax(0,1fr);gap:8px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-change+.exam-merge-change{margin-top:9px;padding-top:9px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-change-route{grid-template-columns:minmax(0,1fr) 20px minmax(0,1fr);gap:6px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-change-value{min-height:38px;padding:6px 8px}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-merge-body.is-review-mode .exam-merge-staff-columns{max-height:220px;overflow-y:auto}.app-body.app-examination-preview .exam-side-panel table,.app-body.app-examination-preview .exam-side-panel [role=table],.app-body.app-examination-preview .exam-side-panel .exam-merge-course-list,.app-body.app-examination-preview .exam-side-panel .exam-conflict-change-list,.app-body.app-examination-preview .exam-side-panel .exam-conflict-group-list{min-height:0}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-split-options{grid-template-columns:repeat(2,minmax(0,1fr))}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-split-body.is-review-mode{gap:0;padding:0 8px 8px;overflow:hidden}.app-body.app-examination-preview .exam-free-session-panel{width:min(720px,74vw)}.app-body.app-examination-preview .exam-free-session-body{gap:12px;overflow-y:auto;padding:12px 14px}.app-body.app-examination-preview .exam-free-session-day,.app-body.app-examination-preview .exam-free-session-section{min-width:0;border:1px solid #dce6ef;border-radius:8px;background:#fff}.app-body.app-examination-preview .exam-free-session-day{display:grid;grid-template-columns:72px minmax(0,1fr);align-items:center;gap:10px;padding:10px}.app-body.app-examination-preview .exam-free-session-section{overflow:hidden}.app-body.app-examination-preview .exam-free-session-section header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid #e4ebf2;background:#f8fafc}.app-body.app-examination-preview .exam-free-session-day>span,.app-body.app-examination-preview .exam-free-session-field>span,.app-body.app-examination-preview .exam-free-session-section header span{color:#64748b;font-size:.68rem;font-weight:850;text-transform:uppercase}.app-body.app-examination-preview .exam-free-session-section header strong{color:#17324d;font-size:.84rem}.app-body.app-examination-preview .exam-free-session-day select,.app-body.app-examination-preview .exam-free-session-field select,.app-body.app-examination-preview .exam-free-session-field input{width:100%;min-height:34px;border:1px solid #d5e1eb;border-radius:7px;background:#fff;color:#17324d;font-size:.78rem;font-weight:750}.app-body.app-examination-preview .exam-free-session-list{display:grid;gap:8px;max-height:190px;overflow:auto;padding:10px;scrollbar-gutter:stable}.app-body.app-examination-preview .exam-free-session-list article{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 10px;border:1px solid #e1e9f1;border-radius:7px;background:#fbfdff}.app-body.app-examination-preview .exam-free-session-list article.is-free{border-color:#b9d9c7;background:#f2fbf5}.app-body.app-examination-preview .exam-free-session-list article div{min-width:0}.app-body.app-examination-preview .exam-free-session-list article strong,.app-body.app-examination-preview .exam-free-session-list article span{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-free-session-list article strong{color:#17324d;font-size:.82rem}.app-body.app-examination-preview .exam-free-session-list article span{margin-top:2px;color:#64748b;font-size:.71rem;font-weight:750}.app-body.app-examination-preview .exam-free-session-list article b{padding:4px 8px;border-radius:999px;color:#166534;background:#dcfce7;font-size:.68rem;white-space:nowrap}.app-body.app-examination-preview .exam-free-session-list article.is-busy b{color:#475569;background:#e2e8f0}.app-body.app-examination-preview .exam-free-session-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:10px 10px 0}.app-body.app-examination-preview .exam-free-session-tabs button{min-height:32px;border:1px solid #d7e2ed;border-radius:7px;color:#17324d;background:#fff;font:850 .74rem var(--font-sans);cursor:pointer}.app-body.app-examination-preview .exam-free-session-tabs button.active{border-color:#315fbe;color:#fff;background:#0f2d5c}.app-body.app-examination-preview .exam-free-session-tabs button:disabled{opacity:.48;cursor:default}.app-body.app-examination-preview .exam-free-session-field{min-width:0;display:flex;flex-direction:column;gap:5px;padding:10px}.app-body.app-examination-preview .exam-free-session-custom-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.app-body.app-examination-preview .exam-free-session-section>.exam-btn{margin:0 10px 10px auto;min-height:32px}.app-body.app-examination-preview .exam-free-session-error{padding:10px 12px;border:1px solid #f2c4c4;border-radius:8px;color:#991b1b;background:#fff8f8;font-size:.76rem;font-weight:750}.app-body.app-examination-preview .exam-split-course-pill strong{color:#102845;font-family:var(--font-mono);font-size:.66rem}.app-body.app-examination-preview .exam-split-course-pill small{min-width:0;overflow:hidden;color:#637489;font-size:.62rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-split-course-pill em{padding:2px 5px;border-radius:5px;background:#e5edf8;color:#315f8e;font-size:.58rem;font-style:normal;font-weight:850}.app-body.app-examination-preview .exam-session-tools-actions .exam-btn{min-height:32px;padding:0 13px;border-radius:7px;font-size:.72rem}@media (max-width: 720px){.app-body.app-examination-preview .exam-session-tools-panel,.app-body.app-examination-preview .exam-session-tools-panel.exam-session-merge-dialog{width:calc(100vw - 16px)!important}.app-body.app-examination-preview .exam-session-tools-panel .exam-session-split-options{grid-template-columns:1fr}}.app-body.app-examination-preview .exam-conflict-resolver-panel{background:#f6f8fb}.app-body.app-examination-preview .exam-conflict-resolver-body.exam-side-panel-body,.app-body.app-examination-preview .exam-conflict-resolver-body.has-proposal{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:12px;padding:14px;overflow-y:auto;overscroll-behavior:contain;background:#f6f8fb}.app-body.app-examination-preview .exam-conflict-resolver-hero{display:grid;grid-template-columns:minmax(0,1fr) 86px;gap:12px;align-items:stretch;padding:0;border:1px solid #d8e2eb;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 12px 26px #10284514}.app-body.app-examination-preview .exam-conflict-hero-copy{min-width:0;padding:14px 15px}.app-body.app-examination-preview .exam-conflict-hero-copy strong{display:block;color:#102845;font-size:.92rem;font-weight:900;line-height:1.22}.app-body.app-examination-preview .exam-conflict-hero-copy span{display:block;margin-top:5px;color:#52677e;font-size:.74rem;line-height:1.45}.app-body.app-examination-preview .exam-conflict-hero-metric{min-width:0;display:grid;place-items:center;align-content:center;gap:3px;padding:10px 8px;border-left:1px solid #e1e8ef;border-radius:0}.app-body.app-examination-preview .exam-conflict-hero-metric strong{color:inherit;font:900 1.35rem var(--font-mono)}.app-body.app-examination-preview .exam-conflict-hero-metric span{color:inherit;font-size:.58rem;font-weight:900;text-transform:uppercase}.app-body.app-examination-preview .exam-conflict-hero-metric.is-ready{background:#ecfdf5;color:#166534}.app-body.app-examination-preview .exam-conflict-hero-metric.is-blocked{background:#fff3f2;color:#b42318}.app-body.app-examination-preview .exam-conflict-summary-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}.app-body.app-examination-preview .exam-conflict-summary-strip span{min-width:0;display:grid;gap:2px;padding:8px 9px;border:1px solid #dce6ef;border-radius:7px;background:#fff;color:#637489;font-size:.62rem;font-weight:800;line-height:1.2}.app-body.app-examination-preview .exam-conflict-summary-strip strong{color:#102845;font:900 .9rem var(--font-mono)}.app-body.app-examination-preview .exam-conflict-resolver-section{flex:0 0 auto;min-height:0;border:1px solid #d8e2eb;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 8px 18px #1028450d}.app-body.app-examination-preview .exam-conflict-resolver-section-head{min-height:42px;padding:10px 13px;border-bottom:1px solid #e4ecf3;background:#fbfdff}.app-body.app-examination-preview .exam-conflict-resolver-section-head strong{color:#102845;font-size:.8rem;font-weight:900}.app-body.app-examination-preview .exam-conflict-resolver-section-head span{color:#637489;font-size:.66rem;font-weight:800}.app-body.app-examination-preview .exam-conflict-collapsible-section>.exam-conflict-resolver-section-head:after{border-color:#102845}.app-body.app-examination-preview .exam-conflict-detected-section .exam-conflict-group-list,.app-body.app-examination-preview .exam-conflict-proposed-section .exam-conflict-change-list,.app-body.app-examination-preview .exam-conflict-blocker-section .exam-conflict-blocker-list{display:grid;gap:9px;max-height:min(440px,52vh);padding:12px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.app-body.app-examination-preview .exam-conflict-resolver-body.has-proposal .exam-conflict-proposed-section{flex:0 0 auto;min-height:0}.app-body.app-examination-preview .exam-conflict-resolver-body.has-proposal .exam-conflict-proposed-section .exam-conflict-change-list{max-height:min(560px,62vh);padding:12px}.app-body.app-examination-preview .exam-conflict-group-card,.app-body.app-examination-preview .exam-conflict-change-card{border:1px solid #dfe8f0;border-radius:8px;overflow:hidden;background:#fff}.app-body.app-examination-preview .exam-conflict-group-card header,.app-body.app-examination-preview .exam-conflict-change-card header{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start;padding:10px 12px;border-bottom:1px solid #edf2f7;background:#fbfdff}.app-body.app-examination-preview .exam-conflict-kind-pill{width:fit-content;display:inline-flex!important;margin:0 0 5px;padding:3px 7px;border-radius:999px;background:#eef4ff;color:#315f8e;font-size:.56rem!important;font-weight:900;text-transform:uppercase}.app-body.app-examination-preview .exam-conflict-kind-pill.is-capacity{background:#fff3df;color:#9a5a00}.app-body.app-examination-preview .exam-conflict-group-card header strong,.app-body.app-examination-preview .exam-conflict-change-card header strong{display:block;min-width:0;overflow:hidden;color:#102845;font-size:.78rem;font-weight:900;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-conflict-group-card header span:not(.exam-conflict-kind-pill),.app-body.app-examination-preview .exam-conflict-change-card header span{margin-top:2px;color:#637489;font-size:.66rem;font-weight:750;line-height:1.35}.app-body.app-examination-preview .exam-conflict-group-card header em,.app-body.app-examination-preview .exam-conflict-change-card header>span{align-self:start;padding:4px 8px;border-radius:999px;background:#eef4ff;color:#315f8e;font-size:.6rem;font-style:normal;font-weight:900;white-space:nowrap}.app-body.app-examination-preview .exam-conflict-group-card p{padding:10px 12px;color:#9f2f27;font-size:.72rem;line-height:1.45}.app-body.app-examination-preview .exam-conflict-chip-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;padding:10px 12px}.app-body.app-examination-preview .exam-conflict-chip-grid span{min-width:0;padding:8px 9px;border-radius:7px;font-size:.66rem;font-weight:800;line-height:1.35;overflow-wrap:anywhere}.app-body.app-examination-preview .exam-conflict-source-table{display:grid;max-height:min(360px,46vh);margin-top:2px;border:1px solid #dfe8f0;border-radius:8px;overflow-y:auto;background:#fff}.app-body.app-examination-preview .exam-conflict-source-row{display:grid;grid-template-columns:92px minmax(0,1fr) 90px;min-height:42px;border-top:1px solid #edf2f7}.app-body.app-examination-preview .exam-conflict-source-row.is-head{min-height:34px;background:#f7f9fb}.app-body.app-examination-preview .exam-conflict-source-row>*{min-width:0;display:flex;align-items:center;margin:0;padding:8px 10px;border-left:1px solid #edf2f7;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-conflict-source-row>*:first-child{border-left:0}.app-body.app-examination-preview .exam-conflict-source-row p{color:#6b2f2a;font-size:.68rem}.app-body.app-examination-preview .exam-conflict-source-action{justify-content:center}.app-body.app-examination-preview .exam-conflict-source-action button{width:70px;height:26px;border-radius:6px}.app-body.app-examination-preview .exam-conflict-change-row{display:grid;grid-template-columns:98px minmax(0,1fr);gap:0;padding:0;border-top:1px solid #edf2f7}.app-body.app-examination-preview .exam-conflict-change-row>span{display:flex;align-items:center;align-self:stretch;padding:9px 10px;border-radius:0;background:#f7f9fb;color:#506278;font-size:.58rem;font-weight:900;text-transform:uppercase}.app-body.app-examination-preview .exam-conflict-change-row p{display:grid;grid-template-columns:minmax(0,1fr) 26px minmax(0,1fr);gap:7px;align-items:stretch;margin:0;padding:8px}.app-body.app-examination-preview .exam-conflict-change-row b{display:inline-flex;align-items:center;justify-content:center;color:#7d8ea1;font-size:.58rem;font-weight:900;text-transform:uppercase}.app-body.app-examination-preview .exam-conflict-change-row em,.app-body.app-examination-preview .exam-conflict-change-row strong{min-width:0;min-height:34px;display:block;padding:8px 9px;border:1px solid #dfe8f0;border-left-width:3px;border-radius:7px;overflow:hidden;color:#506278;background:#f8fafc;font-size:.66rem;font-style:normal;line-height:1.35;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-conflict-change-row strong{border-color:#bbf7d0;border-left-color:#16a34a;background:#f0fdf4;color:#166534}.app-body.app-examination-preview .exam-conflict-blocker-list span{display:grid;grid-template-columns:90px minmax(0,1fr);gap:8px;align-items:start;padding:10px 11px;border:1px solid #ffd1cc;border-radius:8px;background:#fff7f6;color:#9f2f27}.app-body.app-examination-preview .exam-conflict-blocker-list strong{min-width:0;color:#102845;font:900 .68rem var(--font-mono)}.app-body.app-examination-preview .exam-conflict-blocker-list em{color:#9f2f27;font-size:.68rem;font-style:normal;font-weight:750;line-height:1.4}.app-body.app-examination-preview .exam-conflict-added-session-callout{margin:0 12px 12px;padding:12px;border-radius:8px;background:#fbfdff}.app-body.app-examination-preview .exam-conflict-tool-row{display:grid;grid-template-columns:minmax(0,1fr);gap:10px;padding:12px}.app-body.app-examination-preview .exam-conflict-tool-row label{display:grid;gap:6px;color:#637489;font-size:.62rem;font-weight:900;text-transform:uppercase}.app-body.app-examination-preview .exam-conflict-tool-row select{width:100%;min-width:0;min-height:34px;border:1px solid #ccd8e3;border-radius:7px;background:#fff;color:#102845;font:800 .74rem var(--font-sans)}.app-body.app-examination-preview .exam-conflict-tool-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.app-body.app-examination-preview .exam-conflict-tool-actions .exam-btn{width:100%;justify-content:center}@media (max-width: 720px){.app-body.app-examination-preview .exam-conflict-resolver-panel{width:calc(100vw - 16px)}.app-body.app-examination-preview .exam-conflict-summary-strip,.app-body.app-examination-preview .exam-conflict-chip-grid,.app-body.app-examination-preview .exam-conflict-tool-actions{grid-template-columns:1fr}.app-body.app-examination-preview .exam-conflict-source-row{grid-template-columns:78px minmax(0,1fr) 82px}.app-body.app-examination-preview .exam-conflict-change-row,.app-body.app-examination-preview .exam-conflict-change-row p{grid-template-columns:1fr}.app-body.app-examination-preview .exam-conflict-change-row b{justify-content:flex-start;padding-left:2px}}.exam-allocation-continued{display:inline-flex;align-items:center;padding:1px 7px;border:1px solid #c9b8e8;border-radius:10px;background:#f3edff;color:#5b3fa8;font-size:.62rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;white-space:nowrap}.expv-save-prompt{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:9000;display:flex;align-items:center;gap:22px;max-width:min(760px,calc(100vw - 32px));padding:13px 16px 13px 20px;border:1px solid #d8c48a;border-left:4px solid #d9a400;border-radius:10px!important;background:#fffdf5;box-shadow:0 10px 30px #0f1f3829!important;animation:expv-save-prompt-in .28s cubic-bezier(.22,1,.36,1)}@keyframes expv-save-prompt-in{0%{opacity:0;transform:translate(-50%,14px)}to{opacity:1;transform:translate(-50%)}}.expv-save-prompt-body{display:flex;flex-direction:column;gap:2px;min-width:0}.expv-save-prompt-body strong{font-size:.86rem;color:#6b4e00}.expv-save-prompt-body span{font-size:.76rem;color:#7a6a45;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.expv-save-prompt-actions{display:flex;align-items:center;gap:8px;flex-shrink:0}.expv-save-prompt-hide{border:none;background:none;color:#8a7745;font-size:.76rem;font-weight:600;cursor:pointer;padding:6px 4px}.expv-save-prompt-hide:hover{color:#6b4e00;text-decoration:underline}.expv-save-prompt-pill{position:fixed;left:50%;bottom:24px;transform:translate(-50%);z-index:9000;padding:8px 16px;border:1px solid #d8c48a;border-radius:999px!important;background:#fffdf5;color:#6b4e00;font-size:.78rem;font-weight:700;cursor:pointer;box-shadow:0 6px 18px #0f1f3824!important}.expv-save-prompt-pill:hover{background:#fff8e4}.expv-save-prompt.is-blocked{border-color:#e7bcb6;border-left-color:#dc493a;background:#fff7f6}.expv-save-prompt.is-blocked .expv-save-prompt-body strong{color:#97291c}.expv-save-prompt.is-blocked .expv-save-prompt-body span{color:#8a5a53}.expv-save-prompt.is-blocked .expv-save-prompt-hide{color:#a06a62}.expv-save-prompt.is-blocked .expv-save-prompt-hide:hover{color:#97291c}.expv-save-prompt-pill.is-blocked{border-color:#e7bcb6;background:#fff7f6;color:#97291c}.expv-save-prompt-pill.is-blocked:hover{background:#ffeeec}@media (prefers-reduced-motion: reduce){.expv-save-prompt{animation:none}}@media (max-width: 760px){.expv-save-prompt{flex-direction:column;align-items:stretch;gap:12px;left:16px;right:16px;transform:none;max-width:none}.expv-save-prompt-body span{white-space:normal}}.app-body.app-examination-preview .exam-split-review{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;gap:12px}.app-body.app-examination-preview .exam-split-review-head{display:flex;align-items:flex-start;gap:11px;padding:13px 15px;border:1px solid #bfe0c8;border-radius:9px;background:#f2fbf5;flex-shrink:0}.app-body.app-examination-preview .exam-split-review-tick{display:grid;place-items:center;width:26px;height:26px;flex-shrink:0;border-radius:999px!important;background:#d6f0de;color:#15803d}.app-body.app-examination-preview .exam-split-review-head>div{display:flex;flex-direction:column;gap:2px;min-width:0}.app-body.app-examination-preview .exam-split-review-head strong{font-size:.88rem;color:#14532d}.app-body.app-examination-preview .exam-split-review-head span{font-size:.76rem;color:#3f6b4d;line-height:1.4}.app-body.app-examination-preview .exam-split-review-list{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;display:flex;flex-direction:column;gap:12px;padding-right:4px;scrollbar-width:thin;scrollbar-color:#aebed0 transparent}.app-body.app-examination-preview .exam-split-session-card{border:1px solid #d8e2eb;border-radius:9px;background:#fff;overflow:hidden}.app-body.app-examination-preview .exam-split-session-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px;border-bottom:1px solid #e6edf3;background:#f7f9fc}.app-body.app-examination-preview .exam-split-session-name{display:flex;align-items:baseline;gap:9px;min-width:0}.app-body.app-examination-preview .exam-split-session-name strong{font-size:.86rem;color:#17324d;white-space:nowrap}.app-body.app-examination-preview .exam-split-session-name span{font-family:var(--font-mono, monospace);font-size:.74rem;color:#6a7b8e;white-space:nowrap}.app-body.app-examination-preview .exam-split-session-count{flex-shrink:0;padding:3px 10px;border-radius:999px!important;background:#e7f0ff;color:#24538b;font-size:.72rem;font-weight:700;white-space:nowrap}.app-body.app-examination-preview .exam-split-course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:7px;padding:12px 14px}.app-body.app-examination-preview .exam-split-course-grid .exam-split-course-pill{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;align-items:center!important;gap:7px;max-width:100%;padding:7px 9px!important;border:1px solid #e2e9ef;border-radius:7px;background:#fbfcfe}.app-body.app-examination-preview .exam-split-course-pill strong{font-family:var(--font-mono, monospace);font-size:.75rem;color:#17324d;white-space:nowrap}.app-body.app-examination-preview .exam-split-course-pill small{font-size:.72rem;color:#6a7b8e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-split-course-pill em{font-style:normal;font-size:.68rem;font-weight:700;color:#24538b;background:#e7f0ff;padding:1px 7px;border-radius:999px!important;white-space:nowrap}.app-body.app-examination-preview .exam-split-session-empty{margin:0;padding:14px;font-size:.76rem;color:#8a97a6}.app-body.app-examination-preview .ef-filter-drawer.exam-side-panel,.app-body.app-examination-preview .exam-conflict-resolver-panel,.app-body.app-examination-preview .exam-session-tools-panel,.app-body.app-examination-preview .exam-session-tools-panel.exam-session-merge-dialog{width:min(648px,calc(100vw - 24px))!important;max-width:none!important}.app-body.app-examination-preview .exam-side-panel-head{min-height:74px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 18px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));background:#f7f9fc;flex-shrink:0}.app-body.app-examination-preview .exam-side-panel-title{display:flex;align-items:center;gap:12px;min-width:0}.app-body.app-examination-preview .exam-side-panel-title>div{display:flex;flex-direction:column;gap:2px;min-width:0}.app-body.app-examination-preview .exam-side-panel-title strong{font-size:.95rem;color:#17324d;line-height:1.2}.app-body.app-examination-preview .exam-side-panel-title>div>span{font-size:.76rem;color:#6a7b8e;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-side-panel-icon{display:grid;place-items:center;width:38px;height:38px;flex-shrink:0;border-radius:9px!important;background:#e7f0ff;color:#24538b}.app-body.app-examination-preview .exam-side-panel-icon.danger{background:#fdecea;color:#c0392b}.app-body.app-examination-preview .ef-filter-drawer-close{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:999px!important;background:#fff;color:#6a7b8e;cursor:pointer;transition:background .15s,color .15s,border-color .15s}.app-body.app-examination-preview .ef-filter-drawer-close:hover{background:#fdecea;border-color:#f0c4bd;color:#c0392b}.app-body.app-examination-preview .exam-side-panel-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;padding:14px 18px;border-top:1px solid var(--border, rgba(15, 31, 56, .09));background:#f7f9fc;flex-shrink:0}.app-body.app-examination-preview .exam-side-panel-body{padding:16px 18px}@media (max-width: 760px){.app-body.app-examination-preview .ef-filter-drawer.exam-side-panel,.app-body.app-examination-preview .exam-conflict-resolver-panel,.app-body.app-examination-preview .exam-session-tools-panel,.app-body.app-examination-preview .exam-session-tools-panel.exam-session-merge-dialog{width:calc(100vw - 16px)!important}}.ef-scope-toggle{display:inline-flex;align-items:stretch;flex-shrink:0;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:7px!important;background:#f2f5f9;padding:3px;gap:3px}.ef-scope-toggle button{display:inline-flex;align-items:center;gap:7px;padding:6px 12px;border:none;border-radius:5px!important;background:transparent;color:#6a7b8e;font-size:.78rem;font-weight:650;white-space:nowrap;cursor:pointer;transition:background .15s,color .15s}.ef-scope-toggle button:hover:not(.is-active){color:#17324d}.ef-scope-toggle button.is-active{background:#fff;color:#17324d;box-shadow:0 1px 3px #0f1f381f!important}.ef-scope-toggle button span{padding:1px 7px;border-radius:999px!important;background:#e2e8f0;color:#52657a;font-size:.68rem;font-weight:700}.ef-scope-toggle button.is-active span{background:#e7f0ff;color:#24538b}@media (max-width: 760px){.ef-scope-toggle{width:100%}.ef-scope-toggle button{flex:1;justify-content:center}}.exam-review-window{display:inline-flex;align-items:center;padding:4px 10px;border:1px solid #cfe0f5;border-radius:999px!important;background:#eef5ff;color:#24538b;font-size:.72rem;font-weight:650;white-space:nowrap}.exam-review-window.is-closed{border-color:#e3d5b8;background:#fdf6e6;color:#8a6d1f}.expv-review-banner{display:flex;flex-direction:column;gap:3px;padding:12px 16px;margin-bottom:12px;border:1px solid #e3d5b8;border-left:4px solid #d9a400;border-radius:8px!important;background:#fffdf5}.expv-review-banner strong{font-size:.85rem;color:#6b4e00}.expv-review-banner span{font-size:.78rem;color:#7a6a45;line-height:1.45}.app-body.app-examination-preview .exam-editor-body{display:flex;flex-direction:column;gap:14px}.app-body.app-examination-preview .exam-editor-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;overflow:hidden;border:1px solid #dfe7f0;border-radius:8px;background:#dfe7f0}.app-body.app-examination-preview .exam-editor-summary>div{padding:10px 12px;background:#fff}.app-body.app-examination-preview .exam-editor-summary span{color:#6a7a8d;font-size:.68rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.app-body.app-examination-preview .exam-editor-summary strong{display:block;overflow:hidden;margin-top:3px;color:#17324d;font-size:.82rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-editor-actions{display:grid;gap:8px}.app-body.app-examination-preview .exam-editor-action{display:grid;grid-template-columns:34px minmax(0,1fr) 14px;align-items:center;gap:11px;width:100%;padding:11px 12px;border:1px solid #dfe7f0;border-radius:8px;background:#fff;color:#17324d;text-align:left;cursor:pointer}.app-body.app-examination-preview .exam-editor-action:hover{border-color:#315fbe;background:#f5f9ff}.app-body.app-examination-preview .exam-editor-action-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:8px;background:#eef4ff;color:#315fbe}.app-body.app-examination-preview .exam-editor-action-copy{display:flex;min-width:0;flex-direction:column;gap:2px}.app-body.app-examination-preview .exam-editor-action-copy strong{font-size:.83rem;font-weight:800}.app-body.app-examination-preview .exam-editor-action-copy small{overflow:hidden;color:#6a7a8d;font-size:.71rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-move-venue-picker{overflow:hidden;border:1px solid #dfe7f0;border-radius:8px;background:#fff}.app-body.app-examination-preview .exam-move-venue-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid #e6edf4;background:#f8fafc}.app-body.app-examination-preview .exam-move-venue-head strong{color:#17324d;font-size:.82rem}.app-body.app-examination-preview .exam-move-venue-head span{display:block;margin-top:2px;color:#6a7a8d;font-size:.71rem;font-weight:700}.app-body.app-examination-preview .exam-move-venue-reset{flex:0 0 auto;min-height:27px;padding:0 10px;border:1px solid #cad7e5;border-radius:6px;background:#fff;color:#17324d;font:800 .68rem var(--font-sans);cursor:pointer}.app-body.app-examination-preview .exam-move-venue-reset:hover{border-color:#315fbe;color:#315fbe}.app-body.app-examination-preview .exam-move-venue-list{display:grid;gap:6px;max-height:210px;overflow:auto;padding:10px;scrollbar-gutter:stable}.app-body.app-examination-preview .exam-move-venue-option{display:grid;grid-template-columns:16px minmax(0,1fr);align-items:center;gap:9px;padding:8px 9px;border:1px solid #e4ebf2;border-radius:7px;background:#fbfdff;cursor:pointer}.app-body.app-examination-preview .exam-move-venue-option.is-selected{border-color:#315fbe;background:#eef4ff}.app-body.app-examination-preview .exam-move-venue-option.is-busy{opacity:.55;cursor:not-allowed}.app-body.app-examination-preview .exam-move-venue-copy{display:flex;min-width:0;flex-direction:column;gap:1px}.app-body.app-examination-preview .exam-move-venue-copy strong{overflow:hidden;color:#17324d;font-size:.8rem;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-move-venue-copy small{color:#6a7a8d;font-size:.7rem;font-weight:700}.app-body.app-examination-preview .exam-move-venue-empty,.app-body.app-examination-preview .exam-move-venue-warning{margin:0;padding:10px 12px;color:#6a7a8d;font-size:.74rem;font-weight:700}.app-body.app-examination-preview .exam-move-venue-warning{border-top:1px solid #f2e2c4;background:#fff8e9;color:#8a5a08}.app-body.app-examination-preview .exam-merge-blockers ul{margin:6px 0 0;padding-left:18px}.app-body.app-examination-preview .exam-merge-blockers li{font-size:.74rem;line-height:1.5}@media (max-width: 640px){.app-body.app-examination-preview .exam-editor-summary{grid-template-columns:minmax(0,1fr)}}.app-body.app-examination-preview .exam-allocation-course-action{display:inline-flex;align-items:center;gap:5px}.app-body.app-examination-preview .exam-allocation-course-code-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .exam-allocation-course-action svg{flex:0 0 auto;opacity:.55}.app-body.app-examination-preview .exam-allocation-course-action:hover svg{opacity:1}.app-body.app-examination-preview .exam-side-panel-shell.is-leaving{pointer-events:none}.app-body.app-examination-preview .exam-side-panel-shell.is-leaving:not(.is-swapping){animation:exam-side-panel-backdrop-out .15s ease-in both}.app-body.app-examination-preview .exam-side-panel-shell.is-swapping{animation:none!important;opacity:1}.app-body.app-examination-preview .exam-side-panel-shell.is-leaving .exam-side-panel{animation:exam-side-panel-slide-out .15s cubic-bezier(.4,.05,.75,.2) both}@keyframes exam-side-panel-slide-out{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(calc(100% + 18px))}}@keyframes exam-side-panel-backdrop-out{0%{opacity:1}to{opacity:0}}@media (prefers-reduced-motion: reduce){.app-body.app-examination-preview .exam-side-panel,.app-body.app-examination-preview .ef-filter-drawer.exam-side-panel,.app-body.app-examination-preview .exam-side-panel-shell,.app-body.app-examination-preview .exam-side-panel-shell.is-leaving,.app-body.app-examination-preview .exam-side-panel-shell.is-leaving .exam-side-panel{animation-duration:1ms!important}}.app-body.app-examination-preview .exam-panel-back{display:grid;place-items:center;flex:0 0 auto;width:28px;height:28px;border:1px solid #d5e1eb;border-radius:7px!important;background:#fff;color:#52657a;cursor:pointer}.app-body.app-examination-preview .exam-panel-back:hover{border-color:#315fbe;background:#eef4ff;color:#315fbe}.app-body.app-examination-preview .exam-conflict-group-actions{display:flex;align-items:center;flex-wrap:wrap;gap:6px;padding:9px 12px;border-top:1px solid #e4ebf2;background:#f6f9fc}.app-body.app-examination-preview .exam-conflict-group-actions>span{margin-right:2px;color:#6a7a8d;font-size:.66rem;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.app-body.app-examination-preview .exam-conflict-find-btn{display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:0 9px;border:1px solid #102845;border-radius:6px!important;background:#102845;color:#fff;font:800 .66rem var(--font-sans);cursor:pointer}.app-body.app-examination-preview .exam-conflict-find-btn:hover{border-color:#315f8e;background:#315f8e}.app-body.app-examination-preview .exam-invig-search{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1px solid #d5e1eb;border-radius:8px;background:#fff}.app-body.app-examination-preview .exam-invig-search:focus-within{border-color:#315fbe;box-shadow:0 0 0 3px #315fbe1c!important}.app-body.app-examination-preview .exam-invig-search-icon{display:grid;place-items:center;flex:0 0 auto;color:#7d8ea1}.app-body.app-examination-preview .exam-invig-search input{min-width:0;flex:1;min-height:22px;padding:0;border:0!important;background:transparent;color:#17324d;font:700 .8rem var(--font-sans);box-shadow:none!important}.app-body.app-examination-preview .exam-invig-search input:focus{border:0!important;outline:none;box-shadow:none!important}.app-body.app-examination-preview .exam-invig-search input::-webkit-search-cancel-button{display:none}.app-body.app-examination-preview .exam-invig-search-clear{display:grid;place-items:center;flex:0 0 auto;width:20px;height:20px;border:0;border-radius:999px!important;background:#e8eef4;color:#52657a;cursor:pointer}.app-body.app-examination-preview .exam-invig-search-clear:hover{background:#d8e2ec;color:#17324d}.app-body.app-examination-preview .exam-invig-search-count{flex:0 0 auto;padding:2px 8px;border-radius:999px;background:#eef4ff;color:#315fbe;font-size:.66rem;font-weight:850;white-space:nowrap}.app-body.app-examination-preview .exam-conflict-change-row em,.app-body.app-examination-preview .exam-conflict-change-row strong{display:flex;flex-wrap:wrap;align-content:flex-start;gap:4px;overflow:visible;white-space:normal;text-overflow:clip}.app-body.app-examination-preview .exam-conflict-change-row em>span,.app-body.app-examination-preview .exam-conflict-change-row strong>span{display:inline-block;max-width:100%;padding:2px 7px;border-radius:5px;background:#50627817;font-size:.65rem;font-weight:700;line-height:1.4;overflow-wrap:anywhere}.app-body.app-examination-preview .exam-conflict-change-row strong>span{background:#1665341a}.app-body.app-examination-preview .exam-conflict-change-row span.is-empty{background:transparent;font-style:italic;font-weight:600;opacity:.7}.app-body.app-examination-preview .exam-conflict-change-row.is-stacked p{grid-template-columns:minmax(0,1fr);gap:4px}.app-body.app-examination-preview .exam-conflict-change-row.is-stacked b{justify-content:flex-start;padding-left:3px}.app-body.app-examination-preview .exam-conflict-resolver-body .exam-conflict-group-list,.app-body.app-examination-preview .exam-conflict-resolver-body .exam-conflict-change-list,.app-body.app-examination-preview .exam-conflict-resolver-body .exam-conflict-blocker-list,.app-body.app-examination-preview .exam-conflict-resolver-body.has-proposal .exam-conflict-proposed-section .exam-conflict-change-list{max-height:none;overflow:visible}.app-body.app-examination-preview .exam-conflict-resolver-body .exam-conflict-resolver-section-head{position:sticky;top:0;z-index:2;background:#f7f9fb}.app-body.app-examination-preview .exam-conflict-resolver-body .exam-conflict-resolver-section{overflow:visible}.app-body.app-examination-preview .exam-conflict-collapsible-section>summary{position:relative;padding-right:30px;list-style:none}.app-body.app-examination-preview .exam-conflict-collapsible-section>summary::-webkit-details-marker{display:none}.app-body.app-examination-preview .exam-conflict-collapsible-section>summary:after{content:"";position:absolute;right:12px;top:50%;width:8px;height:8px;border-right:2px solid #7d8ea1;border-bottom:2px solid #7d8ea1;transform:translateY(-70%) rotate(45deg);transition:transform .15s ease}.app-body.app-examination-preview .exam-conflict-collapsible-section[open]>summary:after{transform:translateY(-30%) rotate(-135deg)}.app-body.app-examination-preview .exam-conflict-quickfix-btn{display:inline-flex;align-items:center;gap:5px;min-height:24px;padding:0 9px;border:1px solid #b9862a;border-radius:6px!important;background:#fbf1dd;color:#8a5a08;font:800 .66rem var(--font-sans);cursor:pointer}.app-body.app-examination-preview .exam-conflict-quickfix-btn:hover{border-color:#8a5a08;background:#f6e6c4}.app-body.app-examination-preview .exam-conflict-quickfix-panel{display:grid;gap:8px;padding:11px 12px;border-top:1px solid #f0e2c4;background:#fffdf7}.app-body.app-examination-preview .exam-conflict-group-card p.exam-conflict-quickfix-lead{margin:0;padding:0;color:#4a5a6d;font-size:.74rem;line-height:1.45}.app-body.app-examination-preview .exam-conflict-group-card p.exam-conflict-quickfix-lead strong{color:#17324d}.app-body.app-examination-preview .exam-conflict-quickfix-choices{display:flex;flex-wrap:wrap;gap:7px}.app-body.app-examination-preview .exam-conflict-quickfix-choice{display:flex;flex-direction:column;align-items:flex-start;gap:1px;min-width:0;padding:7px 10px;border:1px solid #dfe8f0;border-radius:7px!important;background:#fff;text-align:left;cursor:pointer}.app-body.app-examination-preview .exam-conflict-quickfix-choice.is-selected{border-color:#315fbe;background:#eef4ff}.app-body.app-examination-preview .exam-conflict-quickfix-choice strong{color:#17324d;font-size:.74rem;font-weight:850}.app-body.app-examination-preview .exam-conflict-quickfix-choice small{color:#6a7a8d;font-size:.66rem;font-weight:700}.app-body.app-examination-preview .exam-conflict-group-card p.exam-conflict-quickfix-impact{margin:0;padding:0;color:#52657a;font-size:.7rem;font-weight:700;line-height:1.45}.app-body.app-examination-preview .exam-conflict-group-card p.exam-conflict-quickfix-impact.is-warning{padding:7px 9px;border-radius:6px;background:#fff5e2;color:#8a5a08}.app-body.app-examination-preview .exam-conflict-quickfix-actions{display:flex;justify-content:flex-end;gap:7px}.app-body.app-examination-preview .exam-conflict-quickfix-actions .exam-btn{min-height:30px;padding:0 12px;font-size:.7rem}.app-body.app-examination-preview .exam-search-reason{display:inline-flex;align-items:center;max-width:100%;padding:1px 7px;border:1px solid #d9c9a8;border-radius:10px;background:#fdf6e7;color:#7d5a12;font-size:.6rem;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-body.app-examination-preview .ef-search-wrap.is-pending .ef-search-icon{opacity:.45;animation:ef-search-pending .9s ease-in-out infinite}@keyframes ef-search-pending{0%,to{opacity:.35}50%{opacity:.8}}.app-body.app-examination-preview .exam-programme-merge-body>*{flex-shrink:0}.app-body.app-examination-preview .exam-programme-merge-body .exam-programme-merge-list,.app-body.app-examination-preview .exam-programme-merge-body .exam-programme-merge-change-list,.app-body.app-examination-preview .exam-programme-merge-body .exam-programme-merge-blockers>div{max-height:none;overflow:visible}.app-body.app-examination-preview .exam-programme-merge-body .exam-programme-merge-list{max-height:min(340px,42vh);overflow-y:auto}.app-body.app-examination-preview .exam-notif-width-panel,.app-body.app-examination-preview .exam-conflict-resolver-panel.exam-notif-width-panel,.app-body.app-examination-preview .exam-session-tools-panel.exam-notif-width-panel,.app-body.app-examination-preview .exam-invig-editor-panel.exam-notif-width-panel{width:min(420px,calc(100vw - 24px))!important;max-width:none!important;border:1px solid #d8e2eb;border-radius:8px!important;background:#fff;box-shadow:inset 0 3px #315fbe,-18px 0 48px #1930482e!important;color:#17324d;font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-head{min-height:74px;padding:14px 14px 13px 16px;border-bottom:1px solid #e2e9ef;background:#f7f9fb}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-title{gap:10px}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-title>div{gap:2px}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-title strong{color:#17324d;font-size:.9rem;font-weight:800;line-height:1.25}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-title>div>span{color:#78899a;font-size:.69rem;font-weight:600;line-height:1.35}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-icon{width:36px;height:36px;border-radius:7px!important;background:#e5edf8;color:#315f8e}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-icon.danger{background:#fdebea;color:#b42318}.app-body.app-examination-preview .exam-notif-width-panel .exam-panel-back,.app-body.app-examination-preview .exam-notif-width-panel .ef-filter-drawer-close{width:32px;height:32px;border:1px solid #d3dde6;border-radius:6px!important;background:#fff;color:#637489}.app-body.app-examination-preview .exam-notif-width-panel .exam-panel-back:hover,.app-body.app-examination-preview .exam-notif-width-panel .ef-filter-drawer-close:hover{border-color:#bdcad6;background:#edf2f6;color:#17324d}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-body{flex:1 1 auto;min-height:0;gap:0;padding:0;overflow-y:auto;background:#fff;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-body::-webkit-scrollbar{width:9px}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-body::-webkit-scrollbar-track{background:#f4f7f9}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-body::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px!important;background:#aebed0}.app-body.app-examination-preview .exam-notif-width-panel .exam-side-panel-actions{padding:12px 14px;border-top:1px solid #e2e9ef;background:#f7f9fb}.app-body.app-examination-preview .exam-notif-width-panel p,.app-body.app-examination-preview .exam-notif-width-panel small,.app-body.app-examination-preview .exam-notif-width-panel span,.app-body.app-examination-preview .exam-notif-width-panel label,.app-body.app-examination-preview .exam-notif-width-panel li{color:#5f7185;font-size:.73rem;font-weight:500;line-height:1.45}.app-body.app-examination-preview .exam-notif-width-panel strong{color:#263a50;font-size:.78rem;font-weight:750;line-height:1.35}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-body,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-editor-body,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-planner-body,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-body,.app-body.app-examination-preview .exam-notif-width-panel.exam-conflict-resolver-panel .exam-conflict-resolver-body{gap:0;padding:0;background:#fff}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-summary,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-summary{grid-template-columns:1fr;gap:0;border:0;border-radius:0;background:#fff}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-summary>div,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-summary>div,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-planner-intro,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-planner-field,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-custom-grid,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-quick-picks,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-editor-preview,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-section,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-picker,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-suggestion-card,.app-body.app-examination-preview .exam-notif-width-panel .exam-merge-blockers,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-warning,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-hero,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-summary-strip,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-section,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-tool-row,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-added-session-callout{margin:0;border:0;border-bottom:1px solid #e7edf2;border-radius:0!important;background:#fff;box-shadow:none!important}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-summary>div,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-summary>div,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-planner-intro,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-planner-field,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-custom-grid,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-quick-picks,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-editor-preview{padding:13px 15px}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-summary span,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-summary span,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-planner-field>span,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-custom-grid label,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-add-grid label>span,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-tool-row label{color:#728297;font-size:.64rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-summary strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-summary strong{margin-top:3px;color:#263a50;font-size:.78rem;font-weight:750;white-space:normal}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-actions{gap:0}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-action,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-person-row,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-option,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-group-card,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-card,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-blocker-list span{min-height:0;margin:0;border:0;border-bottom:1px solid #e7edf2;border-radius:0!important;background:#fff;box-shadow:none!important}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-action{grid-template-columns:34px minmax(0,1fr) 14px;gap:11px;padding:13px 7px 13px 15px}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-action:hover,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-person-row:hover,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-option:hover,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-group-card:hover,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-card:hover{background:#eef3f7}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-action-icon,.app-body.app-examination-preview .exam-notif-width-panel .exam-room-invigilator-avatar{width:34px;height:34px;border-radius:7px!important;background:#e5edf8;color:#315f8e}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-action-copy strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-person-row strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-copy strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-group-card header strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-card header strong{color:#263a50;font-size:.78rem;font-weight:750;line-height:1.35}.app-body.app-examination-preview .exam-notif-width-panel .exam-editor-action-copy small,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-person-row span,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-copy small,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-group-card p,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-card header span,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-blocker-list em{color:#5f7185;font-size:.73rem;font-weight:500;line-height:1.45;white-space:normal}.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-current-list,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-swap-list,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-list,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-group-list,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-list,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-blocker-list{gap:0;max-height:min(380px,48vh);padding:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-body .exam-conflict-group-list,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-body .exam-conflict-change-list,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-body .exam-conflict-blocker-list,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-body.has-proposal .exam-conflict-proposed-section .exam-conflict-change-list{max-height:min(380px,48vh);overflow-y:auto}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-section-head,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-section-head,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-head{min-height:0;padding:9px 15px 7px;border-bottom:1px solid #e5ebf0;background:#f8fafb}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-section-head strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-section-head strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-head strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-quick-picks>strong{color:#263a50;font-size:.78rem;font-weight:750}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-section-head span,.app-body.app-examination-preview .exam-notif-width-panel .exam-invig-editor-section-head span,.app-body.app-examination-preview .exam-notif-width-panel .exam-move-venue-head span{color:#728297;font-size:.64rem;font-weight:800}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-resolver-hero{grid-template-columns:minmax(0,1fr) 72px}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-hero-copy{padding:13px 15px}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-hero-copy strong{color:#263a50;font-size:.78rem;font-weight:750}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-hero-copy span{color:#5f7185;font-size:.73rem;font-weight:500}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-summary-strip{grid-template-columns:repeat(2,minmax(0,1fr));gap:0}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-summary-strip span{padding:10px 15px;border:0;border-right:1px solid #e7edf2;border-bottom:1px solid #e7edf2;border-radius:0}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-summary-strip strong,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-hero-metric strong{font-family:var(--font-sans);font-size:.9rem;font-weight:800}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-group-card header,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-card header{padding:11px 15px;border-bottom:1px solid #edf2f7;background:#fff}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-chip-grid,.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-row p{grid-template-columns:1fr}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-chip-grid{padding:0 15px 12px}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-row{grid-template-columns:1fr}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-change-row>span{padding:8px 15px 0;background:transparent;color:#728297}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-tool-row{padding:13px 15px}.app-body.app-examination-preview .exam-notif-width-panel .exam-conflict-tool-actions{grid-template-columns:1fr}.app-body.app-examination-preview .exam-notif-width-panel .exam-duration-session-picker button,.app-body.app-examination-preview .exam-notif-width-panel input,.app-body.app-examination-preview .exam-notif-width-panel select{color:#17324d;font-size:.78rem;font-weight:650}@media (max-width: 760px){.app-body.app-examination-preview .exam-notif-width-panel,.app-body.app-examination-preview .exam-conflict-resolver-panel.exam-notif-width-panel,.app-body.app-examination-preview .exam-session-tools-panel.exam-notif-width-panel,.app-body.app-examination-preview .exam-invig-editor-panel.exam-notif-width-panel{width:calc(100vw - 16px)!important}}.app-body.app-examination-preview .exam-conflict-kind-pill.is-staffing{border-color:#e2c893;background:#fdf4e3;color:#8a5a08}.app-body.app-examination-preview .exam-conflict-chip-grid span.is-staffing{border:1px solid #ecdcb8;background:#fdf8ee;color:#8a5a08}.app-body.app-examination-preview .exam-conflict-understaffed-section>summary{background:#fffdf7}.app-body.app-examination-preview .exam-allocation-badge.understaffed{border-color:#e2c893;background:#fdf4e3;color:#8a5a08}.app-body.app-examination-preview .exam-room-assignment.is-understaffed{border:2px solid #c9362b!important;background:#fff7f6}.app-body.app-examination-preview .exam-room-assignment.is-understaffed .exam-room-venue strong{color:#a3271e;font-weight:900}.app-body.app-examination-preview .exam-room-assignment.is-understaffed .exam-room-venue small{color:#b4483c;font-weight:700}.app-body.app-examination-preview .exam-room-assignment.is-understaffed .exam-room-empty{color:#a3271e!important;font-weight:800!important}.app-body.app-examination-preview .exam-room-shortfall{display:inline-flex;align-items:center;align-self:flex-start;padding:2px 8px;border:1px solid #c9362b;border-radius:999px!important;background:#ffe9e6;color:#a3271e;font-size:.62rem;font-weight:900;letter-spacing:.02em;white-space:nowrap}.app-body.app-examination-preview .exam-invig-editor-panel.exam-notif-width-panel{width:min(1080px,calc(100vw - 24px))!important}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column .exam-invig-current-list{max-height:none;flex:1;min-height:0;overflow-y:auto}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column .exam-invig-column>.exam-invig-editor-section{display:flex;min-height:0;flex-direction:column}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column>.exam-invig-column:first-of-type{min-height:0}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column>.exam-invig-column:first-of-type>.exam-invig-editor-section:last-child{flex:1}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column>.exam-invig-column:last-of-type{align-content:start}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column>.exam-invig-column:last-of-type{padding-left:16px;border-left:1px solid #e7edf3}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column .exam-invig-add-grid.is-force{grid-template-columns:minmax(0,1fr)}.app-body.app-examination-preview .exam-invig-editor-body.is-two-column .exam-invig-add-grid.is-force select{width:100%}.app-body.app-examination-preview .exam-invig-current-list,.app-body.app-examination-preview .exam-invig-swap-list{align-content:start;grid-auto-rows:max-content}.app-body.app-examination-preview .exam-move-panel--wide.exam-notif-width-panel{width:min(980px,calc(100vw - 24px))!important}.app-body.app-examination-preview .exam-move-panel--wide .exam-move-planner-body{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-content:stretch;gap:0 16px;min-height:0}.app-body.app-examination-preview .exam-move-column{display:flex;min-width:0;min-height:0;flex-direction:column;gap:12px}.app-body.app-examination-preview .exam-move-panel--wide .exam-move-column:last-of-type{padding-left:16px;border-left:1px solid #e7edf3;align-content:start}.app-body.app-examination-preview .exam-move-panel--wide .exam-move-column:first-of-type{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:12px}.app-body.app-examination-preview .exam-move-panel--wide .exam-move-planner-intro,.app-body.app-examination-preview .exam-move-panel--wide .exam-move-venue-picker{grid-column:1 / -1}.app-body.app-examination-preview .exam-move-panel--wide .exam-move-venue-picker{display:flex;min-height:0;flex-direction:column}.app-body.app-examination-preview .exam-move-panel--wide .exam-move-venue-list{max-height:none;flex:1;min-height:0;overflow-y:auto;align-content:start;grid-auto-rows:max-content}@media (max-width: 1080px){.app-body.app-examination-preview .exam-move-panel--wide .exam-move-planner-body{grid-template-columns:minmax(0,1fr)}.app-body.app-examination-preview .exam-move-panel--wide .exam-move-column:last-of-type{padding-left:0;border-left:0}}.app-body.app-examination-preview .exam-venue-editor-body{display:flex;flex-direction:column;gap:14px}.app-body.app-examination-preview .exam-venue-mode{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:4px;border:1px solid #e1e9f1;border-radius:9px;background:#f4f8fc}.app-body.app-examination-preview .exam-venue-mode button{padding:8px 10px;border:0;border-radius:6px;background:transparent;color:#4a5f78;font-size:.78rem;font-weight:750;cursor:pointer}.app-body.app-examination-preview .exam-venue-mode button.is-active{background:#fff;box-shadow:0 1px 3px #17324d24;color:#17324d}.app-body.app-examination-preview .exam-move-venue-head span.is-short{color:#b4232a;font-weight:800}.app-body.app-examination-preview .exam-venue-swap{display:flex;flex-direction:column;gap:12px}.app-body.app-examination-preview .exam-venue-swap-preview{display:grid;gap:10px}.app-body.app-examination-preview .exam-venue-swap-preview>div{display:grid;gap:3px;padding:10px 12px;border:1px solid #e1e9f1;border-radius:8px;background:#fbfdff}.app-body.app-examination-preview .exam-venue-swap-preview span{color:#17324d;font-size:.78rem;font-weight:800}.app-body.app-examination-preview .exam-venue-swap-preview strong{color:#64748b;font-size:.76rem;font-weight:650;text-decoration:line-through}.app-body.app-examination-preview .exam-venue-swap-preview em{color:#8a97a8;font-size:.68rem;font-style:normal;font-weight:700;text-transform:uppercase;letter-spacing:.04em}.app-body.app-examination-preview .exam-venue-swap-preview strong.is-proposed{color:#1f6f43;font-weight:800;text-decoration:none}.app-body.app-examination-preview .exam-venue-floor-warning{margin:0;padding:8px 10px;border:1px solid #f0dcb4;border-radius:7px;background:#fdf7ea;color:#8a6d3b;font-size:.72rem;font-weight:650;line-height:1.45}.app-body.app-examination-preview .exam-venue-tighten{display:grid;gap:2px;width:100%;padding:9px 11px;border:1px solid #bcd5f2;border-radius:8px;background:#eef4ff;text-align:left;cursor:pointer}.app-body.app-examination-preview .exam-venue-tighten:hover{border-color:#8fb6e6;background:#e4eeff}.app-body.app-examination-preview .exam-venue-tighten strong{color:#21408a;font-size:.78rem;font-weight:800}.app-body.app-examination-preview .exam-venue-tighten span{color:#4a6899;font-size:.7rem;font-weight:650}.app-body.app-examination-preview .exam-venue-group{display:grid;gap:5px}.app-body.app-examination-preview .exam-venue-group+.exam-venue-group{margin-top:10px}.app-body.app-examination-preview .exam-venue-group-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:0;padding:0 2px;color:#5b6b7d;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em}.app-body.app-examination-preview .exam-venue-group-head em{color:#8a97a8;font-style:normal;font-weight:700;letter-spacing:0;text-transform:none}.app-body.app-examination-preview .exam-venue-swap-preview small{color:#5b6b7d;font-size:.68rem;font-weight:650}.app-body.app-examination-preview .exam-venue-editor-body{min-height:0;overflow:hidden}.app-body.app-examination-preview .exam-venue-editor-body .exam-move-venue-picker{display:flex;flex:1 1 auto;flex-direction:column;min-height:0;gap:8px}.app-body.app-examination-preview .exam-notif-width-panel .exam-venue-editor-body .exam-move-venue-list{flex:1 1 auto;max-height:none;align-content:start}.app-body.app-examination-preview .exam-venue-editor-body .exam-venue-swap{flex:1 1 auto;min-height:0;overflow-y:auto}.app-body:not(.app-examination-preview) .expv-panel .exam-session-columns,.app-body:not(.app-examination-preview) .expv-panel .exam-session-card{grid-template-columns:minmax(150px,.85fr) minmax(230px,1.5fr) minmax(150px,.85fr) minmax(150px,.9fr)}.app-body:not(.app-examination-preview) .expv-panel--student .exam-session-columns,.app-body:not(.app-examination-preview) .expv-panel--student .exam-session-card{grid-template-columns:minmax(160px,.9fr) minmax(260px,1.7fr) minmax(160px,.9fr)}.app-body:not(.app-examination-preview) .expv-panel .exam-session-card--simple{border-bottom:1px solid var(--border);border-left:4px solid var(--blue);padding:10px 14px 10px 12px;background:#fff}.app-body:not(.app-examination-preview) .expv-panel .exam-session-card--simple:last-child{border-bottom:0}.app-body:not(.app-examination-preview) .expv-panel .exam-session-card--simple:nth-child(2n){background:var(--surface-app, #f7f9fb)}.app-body:not(.app-examination-preview) .expv-panel .exam-session-card>div:not(:last-child):after{top:0;bottom:0;background:var(--border)}.app-body:not(.app-examination-preview) .expv-panel .exam-session-columns{border-bottom:1px solid var(--border);background:var(--surface-app, #f7f9fb)}.app-body:not(.app-examination-preview) .expv-seating{gap:7px}.app-body:not(.app-examination-preview) .expv-seating-room{display:grid;gap:2px;padding:5px 8px;border-left:3px solid var(--border);border-radius:0 5px 5px 0;background:#94a3b817}.app-body:not(.app-examination-preview) .expv-seating-room>b{color:var(--ink);font-size:.78rem;font-weight:850}.app-body:not(.app-examination-preview) .expv-seating-room>i{display:flex;flex-wrap:wrap;gap:4px 10px;font-style:normal}.app-body:not(.app-examination-preview) .expv-seating-room em{display:inline-flex;align-items:baseline;gap:3px;color:var(--muted);font-size:.73rem;font-style:normal;font-weight:700}.app-body:not(.app-examination-preview) .expv-seating-room em small{color:var(--muted);font-size:.68rem;font-weight:600;opacity:.85}.app-body:not(.app-examination-preview) .expv-seating-room em s{padding:0 4px;border-radius:3px;background:#fdf0d8;color:#8a6d3b;font-size:.6rem;font-weight:800;text-decoration:none;text-transform:uppercase}.app-body:not(.app-examination-preview) .expv-seating-room em.is-empty{font-style:italic;opacity:.7}.week-agenda{display:none;margin:0;padding:0;list-style:none}@media (max-width: 640px){.week-agenda{display:grid;gap:18px;padding-bottom:12px}.week-agenda-desktop{display:none!important}}.week-agenda-day-head{display:flex;align-items:baseline;gap:8px;margin:0 0 8px;padding:0 2px;font-size:.95rem;font-weight:800;color:var(--ink, #0f1f38)}.week-agenda-day-head small{font-size:.76rem;font-weight:600;color:var(--muted, #64748b)}.week-agenda-list{display:grid;gap:8px;margin:0;padding:0;list-style:none}.week-agenda-session{--agenda-tint: #315fbe;display:grid;grid-template-columns:74px minmax(0,1fr);gap:12px;width:100%;padding:12px 14px 12px 12px;border:1px solid var(--border, #dbe3ee);border-left:4px solid var(--agenda-tint);border-radius:12px;background:var(--surface-card, #fff);color:var(--ink, #0f1f38);font:inherit;text-align:left}.week-agenda-session.is-action{cursor:pointer}.week-agenda-session.is-action:active{transform:scale(.99);background:var(--surface-hover, #f4f7fa)}.week-agenda-time{font-family:var(--font-mono, "JetBrains Mono", monospace);font-size:.74rem;font-weight:700;line-height:1.35;color:var(--muted, #475569);white-space:pre-line}.week-agenda-body{display:grid;gap:3px;min-width:0}.week-agenda-code{display:flex;flex-wrap:wrap;align-items:center;gap:6px;font-size:.95rem;font-weight:800}.week-agenda-badge{padding:2px 7px;border:1px dashed currentColor;border-radius:999px;font-size:.58rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted, #475569)}.week-agenda-title{font-size:.84rem;line-height:1.3;color:var(--ink-soft, #334155)}.week-agenda-meta{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:2px;font-size:.78rem;color:var(--muted, #64748b)}.week-agenda-room{font-weight:700;color:var(--ink, #0f1f38)}.week-agenda-note{margin:0;padding:14px;border:1px dashed var(--border, #dbe3ee);border-radius:12px;font-size:.84rem;color:var(--muted, #64748b);text-align:center}.tv-edit-tag{display:inline-flex;align-items:center;gap:3px;align-self:flex-start;max-width:100%;margin-bottom:3px;padding:1px 6px;border:1px solid #d5dde7;border-radius:999px!important;background:#fff;color:#334155;font-size:.58rem;font-weight:700;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:help}.tv-edit-tag i{font-style:normal;font-weight:600;color:#94a3b8}.tv-edit-tag i:before{content:"· "}.tv-edit-tag--swapped{border-color:#c7d3e8;color:#183b7a}.eh-list{display:grid;gap:14px;padding:16px}.eh-tools{display:flex;align-items:center;justify-content:space-between;gap:8px}.eh-tools>span{font-size:.74rem;color:#64748b}.eh-filter{display:flex;gap:2px;padding:3px;border-radius:7px!important;background:#f1f5f9}.eh-filter button{padding:4px 10px;border:none;background:none;font-size:.74rem;font-weight:600;color:#64748b;cursor:pointer}.eh-filter button.on{background:#fff;color:#0f172a}.eh-group h4{margin:0 0 6px;font-size:.7rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}.eh-group ul{margin:0;padding:0;list-style:none;border:1px solid #e2e8f0;border-radius:8px!important;overflow:hidden;background:#fff}.eh-group li+li{border-top:1px solid #edf1f5}.eh-item{display:grid;grid-template-columns:auto minmax(0,1fr);gap:3px 10px;width:100%;padding:10px 12px;border:none;background:none;text-align:left;font:inherit;cursor:pointer}.eh-item:hover:not(:disabled){background:#f8fafc}.eh-item:disabled{cursor:default}.eh-kind{grid-row:span 2;align-self:start;min-width:68px;padding:2px 8px;border-radius:999px!important;background:#f1f5f9;color:#475569;font-size:.66rem;font-weight:700;text-align:center}.eh-kind--swapped,.eh-kind--moved{background:#e9eef7;color:#183b7a}.eh-kind--removed{background:#fef2f2;color:#b91c1c}.eh-text{font-size:.8rem;line-height:1.4;color:#0f172a}.eh-meta{font-size:.7rem;color:#94a3b8}.eh-clear{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:8px;padding-top:4px;font-size:.78rem;color:#475569}.eh-clear>span{margin-right:auto}.tv-hunt-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:8px 0 4px;padding:10px 14px;border:1px solid #dfe6ed;border-radius:8px!important;background:#fff;font-size:.8rem}.tv-hunt-title{font-size:.82rem;color:#0f172a}.tv-hunt-help{flex:1 1 260px;color:#64748b;line-height:1.45}.tv-hunt-help b{color:#15803d}.tv-hunt-chip{display:inline-flex;align-items:center;gap:8px;padding:4px 6px 4px 12px;border:1px solid #cfd9e6;border-radius:999px!important;background:#f8fafc;font-weight:700;color:#0f172a}.tv-hunt-chip small{font-weight:500;color:#64748b}.tv-hunt-chip button{display:grid;place-items:center;width:22px;height:22px;min-height:0!important;padding:0!important;border:none;border-radius:50%!important;background:#e9eef3;color:#475569;font-size:.9rem;line-height:1;cursor:pointer}.tv-hunt-search{position:relative;flex:0 1 340px;min-width:220px}.tv-hunt-search input{width:100%;padding:7px 11px;border:1px solid #ccd7e2;font-size:.8rem}.tv-hunt-search ul{position:absolute;z-index:30;top:calc(100% + 4px);left:0;right:0;max-height:320px;overflow:auto;margin:0;padding:4px;list-style:none;border:1px solid #d7e0e9;border-radius:8px!important;background:#fff;box-shadow:0 10px 24px #0f172a1f!important}.tv-hunt-search li button{display:grid;gap:1px;width:100%;padding:7px 9px;border:none;background:none;text-align:left;font:inherit;cursor:pointer}.tv-hunt-search li button:hover{background:#f1f5f9}.tv-hunt-search li strong{font-size:.8rem;color:#0f172a}.tv-hunt-search li small{font-size:.72rem;color:#64748b}.tv-hunt-head{display:block;margin-top:2px;font-family:inherit;font-size:.64rem;font-weight:600;color:#15803d;letter-spacing:0}.schedule-empty-cell.tv-hunt-open,.schedule-session-cell.tv-hunt-open{box-shadow:inset 0 0 0 1px #bbe5cc!important;background:#f6fcf8!important}.tv-hunt-fit{background:#ecfdf3!important;box-shadow:inset 0 0 0 2px #86d7a6!important}.tv-hunt-blocked{background:#f4f6f8!important}.tv-hunt-cell{display:grid;place-content:center;gap:1px;width:100%;height:100%;min-height:56px;padding:6px;border:none;background:none;color:#15803d;font:inherit;text-align:center;cursor:pointer}.tv-hunt-cell strong{font-size:.74rem}.tv-hunt-cell span{font-size:.66rem;color:#16a34a}.tv-hunt-cell:hover{background:#dcfce7}.tv-hunt-why{display:block;padding:6px;text-align:center;font-size:.64rem;font-weight:600;color:#94a3b8;cursor:help}.more-menu{position:relative;flex:0 0 auto;align-self:center}.more-menu-btn{display:grid;place-items:center;width:32px;height:32px;min-height:0!important;padding:0!important;border:0!important;border-radius:7px!important;background:transparent;color:#475569;cursor:pointer}.more-menu-btn:hover,.more-menu.is-open .more-menu-btn{background:#f1f5f9;color:#0f172a}.more-menu-pop{position:absolute;z-index:80;top:calc(100% + 6px);right:0;min-width:230px;padding:6px;border:1px solid #d7e0e9;border-radius:8px!important;background:#fff;box-shadow:0 12px 28px #0f172a24!important}.more-menu-section{padding:6px 10px 4px;font-size:.66rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#94a3b8}.more-menu-section.has-rule{margin-top:4px;padding-top:10px;border-top:1px solid #edf1f5}.more-menu-item{display:grid;grid-template-columns:18px minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;min-height:0!important;padding:8px 10px!important;border:none!important;background:none;color:#0f172a;font:inherit;font-size:.82rem;text-align:left;cursor:pointer}.more-menu-item:hover{background:#f1f5f9}.more-menu-icon{display:grid;place-items:center;color:#64748b}.more-menu-item:hover .more-menu-icon{color:#0f172a}.more-menu-check,.more-menu-item.is-checked .more-menu-icon{color:#183b7a}.more-menu-item.is-checked .more-menu-label{font-weight:700;color:#183b7a}.more-menu-badge{padding:0 7px;border-radius:999px!important;background:#e9eef3;color:#475569;font-size:.7rem;font-weight:700}.app-body.app-timetable-view .tv-compact-controls{grid-template-columns:max-content minmax(0,1fr) auto}.app-body.app-timetable-view .tv-compact-controls>.more-menu{display:flex;align-items:center;align-self:stretch;margin-left:-1px;padding:0 10px 0 4px;background:#f8fafc}.app-body.app-timetable-view .tv-compact-controls>.tv-hunt-bar{grid-column:1 / -1;order:1;margin:0;border:0;border-radius:0!important}.dlb-root{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:12px;border-left:5px solid transparent;margin-bottom:20px;animation:dlb-enter .5s cubic-bezier(.16,1,.3,1) both}.dlb-icon-ring{width:52px;height:52px;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-shrink:0}.dlb-icon{width:26px;height:26px}.dlb-body{flex:1;min-width:0}.dlb-label{font-size:.68rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase;opacity:.65;margin-bottom:4px}.dlb-countdown{font-size:1.55rem;font-weight:800;letter-spacing:-.02em;line-height:1;font-family:JetBrains Mono,Courier New,monospace}.dlb-date{font-size:.73rem;font-weight:500;opacity:.65;text-align:right;flex-shrink:0;max-width:160px;line-height:1.5}.dlb-safe{background:linear-gradient(135deg,#f0fdf9,#ecfdf5);border-left-color:#10b981;color:#064e3b}.dlb-safe .dlb-icon-ring{background:#10b98121;color:#10b981}.dlb-warn{background:linear-gradient(135deg,#fffbeb,#fef3c7);border-left-color:#f59e0b;color:#78350f}.dlb-warn .dlb-icon-ring{background:#f59e0b21;color:#d97706}.dlb-urgent{background:linear-gradient(135deg,#fff1f2,#fee2e2);border-left-color:#ef4444;color:#7f1d1d;animation:dlb-enter .5s cubic-bezier(.16,1,.3,1) both,dlb-glow 2.4s ease-in-out .5s infinite}.dlb-urgent .dlb-icon-ring{background:#ef444421;color:#ef4444}.dlb-urgent .dlb-countdown{animation:dlb-tick 1s ease-in-out infinite alternate}.dlb-expired{background:#f9fafb;border-left-color:#d1d5db;color:#6b7280}.dlb-expired .dlb-icon-ring{background:#f3f4f6;color:#9ca3af}@keyframes dlb-enter{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes dlb-glow{0%,to{box-shadow:0 0 #ef444433}50%{box-shadow:0 0 0 8px #ef444400}}@keyframes dlb-tick{0%{opacity:1}to{opacity:.7}}.dlc-root{display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 7px;border-radius:20px;font-size:.72rem;font-weight:600;letter-spacing:.01em;margin-top:7px;width:fit-content;transition:box-shadow .3s}.dlc-icon{width:12px;height:12px;flex-shrink:0}.dlc-safe{background:#f0fdf4;color:#15803d;border:1px solid #86efac}.dlc-warn{background:#fffbeb;color:#b45309;border:1px solid #fcd34d}.dlc-urgent{background:#fef2f2;color:#b91c1c;border:1px solid #fca5a5;animation:dlc-pulse 1.8s ease-in-out infinite}.dlc-expired{background:#f3f4f6;color:#9ca3af;border:1px solid #e5e7eb}.dlc-published{background:#ecfdf5;color:#047857;border:1px solid #6ee7b7;font-weight:700}@keyframes dlc-pulse{0%,to{box-shadow:0 0 #b91c1c4d}50%{box-shadow:0 0 0 5px #b91c1c00}}.apr-page{display:flex;flex-direction:column;gap:28px}.apr-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.apr-stat{display:flex;align-items:center;gap:14px;background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);padding:14px 18px;box-shadow:var(--shadow-xs)}.apr-stat-icon{width:40px;height:40px;border-radius:var(--r-md, 8px);display:flex;align-items:center;justify-content:center;flex-shrink:0}.apr-stat-icon.amber{background:#eab3081a;color:#b45309}.apr-stat-icon.green{background:#22c55e1a;color:#166534}.apr-stat-icon.blue{background:var(--alice, #e7f0ff);color:var(--blue, #4392f1)}.apr-stat-body{display:flex;flex-direction:column;gap:2px}.apr-stat-value{font-size:1.5rem;font-weight:800;font-family:var(--font-mono);color:var(--ink, #0f1f38);line-height:1}.apr-stat-label{font-size:.72rem;color:var(--muted, #6a7a96)}.apr-section{display:flex;flex-direction:column;gap:10px}.apr-section-header{display:flex;align-items:center;gap:10px;padding-bottom:2px;border-bottom:1.5px solid var(--border)}.apr-section-title{font-size:.68rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted, #6a7a96)}.apr-section-count{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 7px;border-radius:99px;font-size:.68rem;font-weight:700;font-family:var(--font-mono);background:#0f1f3812;color:var(--muted)}.apr-card{display:flex;align-items:stretch;background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);overflow:hidden;box-shadow:var(--shadow-xs);transition:box-shadow .18s}.apr-card:hover{box-shadow:0 3px 14px #0f1f3817}.apr-card-accent{width:4px;flex-shrink:0}.apr-card-accent.amber{background:#f59e0b}.apr-card-accent.green{background:#22c55e}.apr-card-accent.blue{background:var(--blue, #4392f1)}.apr-card-accent.teal{background:#0d9488}.apr-card-inner{flex:1;display:flex;align-items:center;gap:16px;padding:14px 18px;min-width:0}.apr-card-body{flex:1;display:flex;flex-direction:column;gap:5px;min-width:0}.apr-card-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.apr-card-name{font-size:.9rem;font-weight:700;color:var(--ink, #0f1f38);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.apr-card-meta{font-size:.71rem;color:var(--muted);font-family:var(--font-mono)}.apr-card-desc{font-size:.78rem;color:var(--muted)}.apr-card-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}.apr-badge{display:inline-flex;align-items:center;padding:3px 9px;border-radius:99px;font-size:.62rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;font-family:var(--font-mono);flex-shrink:0}.apr-badge.pending{background:#eab3081f;color:#b45309;border:1px solid rgba(234,179,8,.3)}.apr-badge.approved{background:#22c55e1a;color:#166534;border:1px solid rgba(34,197,94,.25)}.apr-badge.request{background:var(--alice);color:var(--blue-dark, #2b74d4);border:1px solid rgba(67,146,241,.22)}.apr-btn{display:inline-flex;align-items:center;gap:6px;border-radius:var(--r-md, 8px);padding:7px 13px;font-size:.78rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s,color .15s;white-space:nowrap;border:1px solid transparent}.apr-btn.ghost{background:transparent;color:var(--ink-soft, #3a4f70);border-color:var(--border)}.apr-btn.ghost:hover{background:var(--alice);border-color:#4392f147}.apr-btn.approve{background:var(--blue, #4392f1);color:#fff;border-color:var(--blue)}.apr-btn.approve:hover{background:var(--blue-dark, #2b74d4);border-color:var(--blue-dark)}.apr-btn.approve.green{background:#16a34a;border-color:#16a34a}.apr-btn.approve.green:hover{background:#15803d;border-color:#15803d}.apr-btn.danger{background:transparent;color:var(--cinnabar, #dc493a);border-color:#dc493a59}.apr-btn.danger:hover{background:#dc493a12;border-color:var(--cinnabar)}.apr-btn.danger.pref-no-btn{background:var(--cinnabar, #dc493a);color:#fff;border-color:var(--cinnabar, #dc493a)}.apr-btn.danger.pref-no-btn:hover:not(:disabled){background:#b83226;border-color:#b83226}.apr-btn.muted{background:transparent;color:var(--muted);border-color:var(--border);font-size:.75rem;padding:6px 11px}.apr-btn.muted:hover{color:var(--ink-soft);border-color:#0f1f3833}.apr-req-who{display:flex;align-items:center;gap:10px}.apr-req-avatar{width:34px;height:34px;border-radius:50%;background:var(--alice);border:1.5px solid rgba(67,146,241,.22);display:flex;align-items:center;justify-content:center;font-size:.72rem;font-weight:800;color:var(--blue-dark, #2b74d4);flex-shrink:0;font-family:var(--font-mono)}.apr-req-name{font-size:.9rem;font-weight:700;color:var(--ink)}.apr-req-detail{font-size:.78rem;color:var(--ink-soft, #4b5563);margin:4px 0;line-height:1.5}.apr-req-was{color:var(--muted, #9ca3af)}.apr-req-now{color:var(--ink-soft, #374151)}.apr-req-note{font-size:.78rem;color:var(--muted);font-style:italic;padding:8px 12px;background:var(--surface-app, #f2f4f8);border-radius:var(--r-sm, 6px);margin-top:2px;border-left:3px solid var(--border)}.apr-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:28px 20px;text-align:center;background:var(--surface-app, #f2f4f8);border:1px dashed var(--border);border-radius:var(--r-lg, 12px);color:var(--muted)}.apr-empty svg{opacity:.3}.apr-empty p{margin:0;font-size:.82rem}.apr-tabs{display:flex;gap:4px;border-bottom:1.5px solid var(--border);padding-bottom:0;margin-bottom:-2px}.apr-tab{display:inline-flex;align-items:center;gap:7px;padding:8px 16px;font-size:.8rem;font-weight:600;color:var(--muted);background:transparent;border:none;border-bottom:2.5px solid transparent;cursor:pointer;transition:color .15s,border-color .15s;margin-bottom:-1.5px}.apr-tab:hover{color:var(--ink-soft)}.apr-tab.active{color:var(--blue, #4392f1);border-bottom-color:var(--blue, #4392f1)}.apr-tab-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:99px;font-size:.62rem;font-weight:700;font-family:var(--font-mono);background:#4392f11f;color:var(--blue, #4392f1)}.apr-stat-icon.red{background:#dc493a1a;color:var(--cinnabar, #dc493a)}.apr-card-accent.red{background:#dc493a}.apr-badge.rejected{background:#dc493a1a;color:#991b1b;border:1px solid rgba(220,73,58,.28)}.apr-badge.submitted{background:#4392f11a;color:#1d4ed8;border:1px solid rgba(67,146,241,.25)}.apr-rejection-reason{font-size:.76rem;color:#991b1b;background:#dc493a0f;border:1px solid rgba(220,73,58,.18);border-radius:var(--r-sm, 6px);padding:6px 10px}.apr-review-note{font-size:.76rem;color:var(--muted);font-style:italic;padding:5px 10px;background:var(--surface-app, #f2f4f8);border-radius:var(--r-sm, 6px);border-left:3px solid #22c55e}.apr-deadline-row{display:flex;align-items:center;gap:5px;margin-top:6px;font-size:.74rem}.apr-deadline-label{font-weight:600;color:var(--blue, #4392f1)}.apr-deadline-open{color:var(--muted);font-style:italic}.apr-cr-section-label{font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);padding:0 2px 6px;border-bottom:1px solid var(--border);margin-bottom:8px}.danger-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 18px;border-radius:var(--r-md, 8px);font-size:.82rem;font-weight:600;cursor:pointer;transition:background .15s,border-color .15s;background:var(--cinnabar, #dc493a);color:#fff;border:1.5px solid var(--cinnabar, #dc493a)}.danger-btn:hover{background:#b83226;border-color:#b83226}.danger-btn:disabled{opacity:.55;cursor:not-allowed}.apr-comment-thread{margin-top:6px;padding:8px 10px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border);border-radius:var(--r-sm, 6px);display:flex;flex-direction:column;gap:5px}.apr-comment-thread-header{display:flex;align-items:center;gap:5px;font-size:.67rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:2px}.apr-comment-entry{display:flex;align-items:baseline;flex-wrap:wrap;gap:6px;font-size:.75rem;line-height:1.4}.apr-comment-role{display:inline-flex;align-items:center;padding:1px 7px;border-radius:99px;font-size:.59rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;flex-shrink:0;font-family:var(--font-mono)}.apr-comment-text{color:var(--ink-soft, #3a4f70);flex:1;min-width:0}.apr-comment-date{color:var(--muted);font-size:.65rem;font-family:var(--font-mono);flex-shrink:0}.apr-pipeline{display:flex;align-items:center;gap:4px;background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);padding:10px 14px;box-shadow:var(--shadow-xs)}.apr-pipe-stage{display:flex;align-items:center;gap:10px;flex:1;padding:8px 12px;border-radius:var(--r-md, 8px);border:1.5px solid transparent;cursor:pointer;background:transparent;transition:background .15s,border-color .15s;text-align:left;font-family:var(--font-sans);min-width:0}.apr-pipe-stage:hover{background:var(--alice, #e7f0ff);border-color:#4392f12e}.apr-pipe-stage.active{background:var(--alice, #e7f0ff);border-color:#4392f14d}.apr-pipe-stage.is-red:hover{background:#dc493a0d;border-color:#dc493a2e}.apr-pipe-stage.is-red.active{background:#dc493a0f;border-color:#dc493a47}.apr-pipe-icon{width:36px;height:36px;border-radius:var(--r-md, 8px);display:flex;align-items:center;justify-content:center;flex-shrink:0;background:var(--surface-app, #f2f4f8);color:var(--muted, #6a7a96)}.apr-pipe-icon.amber{background:#eab3081a;color:#b45309}.apr-pipe-icon.green{background:#22c55e1a;color:#166534}.apr-pipe-icon.blue{background:var(--alice, #e7f0ff);color:var(--blue, #4392f1)}.apr-pipe-icon.teal{background:#0d94881a;color:#0d9488}.apr-pipe-icon.red{background:#dc493a1a;color:var(--cinnabar, #dc493a)}.apr-pipe-info{display:flex;flex-direction:column;gap:1px;min-width:0}.apr-pipe-val{font-size:1.35rem;font-weight:800;font-family:var(--font-mono);color:var(--ink);line-height:1}.apr-pipe-lbl{font-size:.68rem;color:var(--muted);white-space:nowrap}.apr-pipe-connector{color:var(--border);flex-shrink:0;display:flex;align-items:center;padding:0 2px}.apr-pipe-sep{width:1px;height:36px;background:var(--border);flex-shrink:0;margin:0 6px}.apr-content-grid{position:relative;display:block;min-width:0}.apr-workflow-panel{width:100%;min-width:0;background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);overflow:hidden;box-shadow:var(--shadow-xs)}.apr-workflow-panel>:where(.apr-tabs,.seg-tabs){margin-bottom:0;padding:4px 372px 4px 8px;background:var(--surface-app, #f2f4f8);border-bottom:1.5px solid var(--border)}.apr-tab-body{padding:16px;display:flex;flex-direction:column;gap:8px;min-height:160px;max-height:calc(100dvh - 250px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.apr-tab-body::-webkit-scrollbar{width:4px}.apr-tab-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.apr-card-list{display:flex;flex-direction:column;gap:8px}.apr-scroll-list{display:flex;flex-direction:column;gap:8px;max-height:68vh;overflow-y:auto;padding-right:4px}.apr-scroll-list::-webkit-scrollbar{width:4px}.apr-scroll-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.apr-request-groups{display:flex;min-height:0;flex-direction:column;gap:14px}.apr-request-group{min-width:0}.apr-request-group-toggle{display:flex;width:100%;min-height:60px;align-items:center;gap:11px;padding:10px 12px;border:1px solid #d9e2ea;border-left:3px solid var(--blue, #4392f1);border-radius:7px;background:#fff;color:#20364c;cursor:pointer;text-align:left;box-shadow:0 1px 3px #0f1f380a;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.apr-request-group--green .apr-request-group-toggle{border-left-color:#18835f}.apr-request-group--amber .apr-request-group-toggle{border-left-color:#c47a14}.apr-request-group-toggle:hover,.apr-request-group.is-open .apr-request-group-toggle{border-color:#b8c8d8;background:#f8fafc;box-shadow:0 3px 10px #0f1f380f}.apr-request-group-icon{display:grid;width:34px;height:34px;flex:0 0 34px;place-items:center;border-radius:6px;color:#276fae;background:#eaf3fb}.apr-request-group--green .apr-request-group-icon{color:#17694f;background:#e9f6f0}.apr-request-group--amber .apr-request-group-icon{color:#9a5b0c;background:#fff4df}.apr-request-group-copy{min-width:0;flex:1}.apr-request-group-copy strong,.apr-request-group-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.apr-request-group-copy strong{color:var(--ink, #0f1f38);font-size:.8rem;font-weight:800}.apr-request-group-copy small{margin-top:3px;color:var(--muted, #6a7a96);font-size:.68rem}.apr-request-group-count{display:grid;min-width:28px;height:26px;place-items:center;padding:0 7px;border:1px solid #d3dde6;border-radius:5px;color:#52677b;background:#fff;font-size:.7rem;font-weight:800}.apr-request-group-chevron{display:grid;width:28px;height:28px;flex:0 0 28px;place-items:center;color:#667b8f}.apr-request-group-chevron svg{transition:transform .18s ease}.apr-request-group.is-open .apr-request-group-chevron svg{transform:rotate(90deg)}.apr-request-group-list{display:flex;max-height:min(400px,calc(100dvh - 360px));min-height:0;overflow-y:auto;flex-direction:column;gap:8px;padding:10px 2px 0;overscroll-behavior:contain;scrollbar-gutter:stable}.apr-tab.active.is-danger{color:var(--cinnabar, #dc493a);border-bottom-color:var(--cinnabar, #dc493a)}.apr-tab-count.is-danger{background:#dc493a1f;color:var(--cinnabar, #dc493a)}.apr-cr-panel{position:absolute;top:8px;right:12px;z-index:12;width:min(350px,calc(100% - 24px));max-height:46px;background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:8px;overflow:hidden;box-shadow:0 4px 14px #0f1f381c;display:flex;flex-direction:column;outline:none;transition:max-height .22s ease,box-shadow .22s ease,border-color .22s ease}.apr-cr-panel:hover,.apr-cr-panel:focus,.apr-cr-panel:focus-within{max-height:min(72vh,680px);border-color:#aebed0;box-shadow:0 18px 42px #0f1f382e}.apr-cr-header{display:flex;align-items:center;justify-content:space-between;min-height:44px;padding:10px 14px;border-bottom:1px solid var(--border);background:var(--surface-app, #f2f4f8);flex-shrink:0}.apr-cr-title{display:flex;align-items:center;gap:7px;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--muted, #6a7a96)}.apr-cr-body{flex:1;overflow-y:auto;padding:12px;display:flex;flex-direction:column;gap:8px;max-height:72vh;opacity:0;pointer-events:none;transition:opacity .14s ease}.apr-cr-panel:hover .apr-cr-body,.apr-cr-panel:focus .apr-cr-body,.apr-cr-panel:focus-within .apr-cr-body{opacity:1;pointer-events:auto}.apr-cr-body::-webkit-scrollbar{width:3px}.apr-cr-body::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.apr-cr-card{display:flex;flex-direction:column;gap:7px;padding:12px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border);border-radius:var(--r-md, 8px);transition:background .15s,border-color .15s,box-shadow .15s}.apr-cr-card:hover{background:#fff;border-color:#4392f140;box-shadow:0 2px 8px #0f1f380f}.apr-cr-who{display:flex;align-items:flex-start;gap:9px}.apr-cr-who-info{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.apr-cr-name{font-size:.865rem;font-weight:700;color:var(--ink, #0f1f38);display:flex;align-items:center;gap:5px;flex-wrap:wrap}.apr-cr-deo-tag{font-size:.62rem;font-weight:700;padding:1px 6px;background:#fef3c7;color:#92400e;border-radius:4px;border:1px solid #fde68a;flex-shrink:0}.apr-btn:disabled,.apr-btn[disabled]{opacity:.55;cursor:not-allowed}.pref-workspace{display:flex;flex-direction:column;gap:16px}.pref-card{background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);box-shadow:var(--shadow-xs);overflow:hidden}.pref-card-header{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:16px 18px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,rgba(67,146,241,.045),transparent)}.pref-card-title{margin:0;font-size:.94rem;font-weight:800;color:var(--ink, #0f1f38)}.pref-card-subtitle{margin:3px 0 0;font-size:.8rem;color:var(--muted, #6a7a96)}.pref-card-body{padding:16px 18px}.pref-status-grid{display:grid;grid-template-columns:repeat(2,minmax(160px,1fr));gap:10px;margin-top:12px}.pref-status-item{border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-app, #f2f4f8);padding:10px 12px}.pref-status-label{display:block;margin-bottom:3px;font-size:.66rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted, #6a7a96)}.pref-status-value{font-size:.84rem;font-weight:700;color:var(--ink, #0f1f38)}.pref-status-pill{display:inline-flex;align-items:center;padding:3px 9px;border-radius:999px;font-size:.68rem;font-weight:800;text-transform:uppercase;letter-spacing:.08em;border:1px solid rgba(234,179,8,.3);background:#eab3081f;color:#b45309}.pref-status-pill.wait{border-color:#eab3084d;background:#eab3081f;color:#b45309}.pref-status-pill.done{border-color:#22c55e40;background:#22c55e1a;color:#166534}.pref-note{margin:12px 0 0;padding:9px 12px;border-radius:var(--r-md, 8px);background:var(--alice, #e7f0ff);border:1px solid rgba(67,146,241,.18);font-size:.8rem;color:var(--ink-soft, #3a4f70)}.pref-steps{margin:0 0 16px;padding-left:20px;display:flex;flex-direction:column;gap:6px;font-size:.83rem;color:var(--muted, #6a7a96)}.pref-steps li{padding-left:2px}.pref-steps strong{color:var(--ink, #0f1f38);font-weight:700}.pref-upload-row,.pref-actions-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.pref-upload-drop{flex:1;min-width:220px;border:1.5px dashed var(--border);border-radius:var(--r-md, 8px);padding:16px;cursor:pointer;text-align:center;background:var(--surface-app, #f2f4f8);color:var(--muted, #6a7a96);font-size:.83rem;transition:border-color .15s,background .15s,color .15s}.pref-upload-drop:hover,.pref-upload-drop.has-file{border-color:#4392f18c;background:var(--alice, #e7f0ff);color:var(--ink, #0f1f38)}.pref-chip-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.pref-chip{display:inline-flex;align-items:center;border-radius:999px;padding:4px 10px;font-size:.74rem;font-weight:800}.pref-chip.good{background:#22c55e1a;color:#166534;border:1px solid rgba(34,197,94,.22)}.pref-chip.warn{background:#f59e0b1f;color:#92400e;border:1px solid rgba(245,158,11,.25)}.pref-chip.bad{background:#dc493a17;color:#991b1b;border:1px solid rgba(220,73,58,.22)}.pref-preview-table-wrap{max-height:300px;overflow:auto;border:1px solid var(--border);border-radius:var(--r-md, 8px);margin-bottom:12px}.pref-preview-table{width:100%;border-collapse:collapse;font-size:.79rem}.pref-preview-table th{position:sticky;top:0;z-index:1;background:var(--surface-app, #f2f4f8);color:var(--muted, #6a7a96);border-bottom:1px solid var(--border);padding:8px 10px;text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.06em}.pref-preview-table td{padding:7px 10px;border-bottom:1px solid var(--border-light, #edf1f7);color:var(--ink-soft, #3a4f70);vertical-align:top}.pref-preview-table tr.error{background:#dc493a0d}.pref-preview-table tr.duplicate{background:#f59e0b0f}.pref-saved-header{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:10px}.pref-lecturer-card{background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-md, 8px);overflow:hidden;margin-bottom:10px;box-shadow:var(--shadow-xs)}.pref-lecturer-name{padding:9px 14px;background:var(--surface-app, #f2f4f8);border-bottom:1px solid var(--border);font-size:.84rem;font-weight:800;color:var(--ink, #0f1f38)}.pref-row{display:flex;align-items:flex-start;gap:12px;padding:10px 14px;border-bottom:1px solid var(--border-light, #edf1f7);font-size:.8rem}.pref-row:last-child{border-bottom:0}.pref-row-body{flex:1;display:flex;flex-wrap:wrap;gap:6px 14px;color:var(--muted, #6a7a96)}.pref-row-actions{display:flex;gap:5px;flex-shrink:0}.pref-mini-btn{padding:3px 8px;font-size:.72rem}@media (max-width: 1100px){.apr-cr-panel{width:min(320px,calc(100% - 24px))}}@media (max-width: 860px){.apr-summary{grid-template-columns:1fr 1fr}.apr-card-inner{flex-wrap:wrap}.apr-card-actions{width:100%;justify-content:flex-end}.apr-pipeline{flex-wrap:wrap;gap:6px}.apr-pipe-sep,.apr-pipe-connector{display:none}.apr-pipe-stage{flex:1 1 calc(50% - 6px);min-width:130px}.apr-cr-panel{position:static;width:100%;max-height:none;margin-top:12px;box-shadow:var(--shadow-xs)}.apr-workflow-panel>:where(.apr-tabs,.seg-tabs){padding-right:8px}.apr-workflow-panel>.seg-tabs{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}.apr-workflow-panel>.seg-tabs>.seg-tab{flex:0 0 auto}.apr-cr-body{max-height:48vh;opacity:1;pointer-events:auto}.apr-tab-body{max-height:calc(100dvh - 280px)}}@media (max-width: 560px){.apr-summary{grid-template-columns:1fr}.apr-pipe-stage{flex:1 1 100%}}.apr-cr-count{margin-left:8px;padding:1px 7px;border-radius:999px;background:#0f1f3814;color:var(--muted, #6b7a90);font-size:.66rem;font-weight:700}.apr-cr-tools{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}.apr-cr-search{width:100%;padding:6px 10px;border:1px solid var(--border, rgba(15, 31, 56, .16));border-radius:6px;font:inherit;font-size:.8rem}.apr-cr-chips{display:flex;gap:4px;flex-wrap:wrap}.apr-cr-chips button{border:1px solid var(--border, rgba(15, 31, 56, .16));background:#fff;border-radius:999px;padding:3px 10px;font:inherit;font-size:.72rem;font-weight:600;color:#4a5b73;cursor:pointer}.apr-cr-chips button.active{background:#173a61;border-color:#173a61;color:#fff}.apr-cr-bulk{width:100%;justify-content:center}.apr-cr-group{margin-bottom:10px}.apr-cr-group-head{display:flex;justify-content:space-between;align-items:center;padding:4px 2px;font-size:.68rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted, #6b7a90);border-bottom:1px solid var(--border, rgba(15, 31, 56, .12));margin-bottom:6px}.apr-cr-standing{margin:6px 0;padding:4px 8px;border-radius:5px;background:#fff7e6;color:#92400e;font-size:.72rem;font-weight:600}.apr-cr-standing.fits{background:#e8f6ee;color:#166534}.apr-cr-actions{display:flex;gap:6px}.apr-cr-actions .apr-btn{flex:1;justify-content:center}.apr-cr-empty{padding:14px 4px;text-align:center;color:var(--muted, #6b7a90);font-size:.8rem}.apr-cr-more{display:flex;align-items:center;gap:11px;margin-top:10px;padding:11px 13px;border:1px solid #c7d6ea;border-radius:8px;background:linear-gradient(180deg,#f6f9fd,#eef3fa);color:var(--ink, #172b3f);text-decoration:none;transition:border-color .15s ease,background .15s ease,transform .15s ease}.apr-cr-more:hover{border-color:var(--blue, #315fbe);background:#eaf1fb;transform:translateY(-1px)}.apr-cr-more svg{color:var(--blue, #315fbe);flex-shrink:0}.apr-cr-more-count{display:inline-flex;align-items:center;justify-content:center;min-width:34px;height:34px;padding:0 7px;border-radius:999px;background:var(--blue, #315fbe);color:#fff;font-size:.78rem;font-weight:800;font-variant-numeric:tabular-nums;flex-shrink:0}.apr-cr-more-text{display:flex;flex-direction:column;gap:2px;min-width:0;font-size:.71rem;line-height:1.45;color:var(--muted, #718096)}.apr-cr-more-text strong{font-size:.78rem;font-weight:700;color:var(--ink, #172b3f)}.apr-cr-rest{margin:8px 0 0;padding:8px 11px;border-left:2px solid #d8e2ee;border-radius:0 6px 6px 0;background:#f8fafc;font-size:.71rem;line-height:1.5;color:var(--muted, #718096)}.apr-empty-hint{display:block;margin-top:5px;max-width:28ch;font-size:.7rem;line-height:1.5;color:var(--muted, #718096);opacity:.85}@media (max-width: 600px){.apr-card-actions{flex-wrap:wrap;justify-content:stretch;gap:8px}.apr-card-actions .apr-btn{flex:1 1 calc(50% - 8px);justify-content:center;min-height:38px}}.apr-override-ask{display:inline-flex;flex-wrap:wrap;align-items:center;gap:8px;font-size:.78rem;color:#92400e}.dpref-page{display:flex;flex-direction:column;gap:14px;max-width:none;margin:0;width:100%;min-width:0}.dpref-status-bar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));background:var(--surface-card, #fff);border:1px solid #d9e2ea;border-radius:8px;box-shadow:0 1px 2px #0f1f380a}.dpref-status-item{display:flex;min-width:0;flex-direction:column;gap:4px;padding:13px 18px;border-right:1px solid #e2e8ee}.dpref-status-item:last-child{border-right:0}.dpref-status-divider{width:1px;align-self:stretch;min-height:34px;background:var(--border, rgba(15, 31, 56, .09))}.dpref-status-label{font-size:.64rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted, #6a7a96)}.dpref-status-val{font-size:.9rem;font-weight:700;color:var(--ink, #0f1f38)}.dpref-status-pill{display:inline-flex;align-items:center;padding:3px 11px;border-radius:999px;font-size:.74rem;font-weight:700;width:fit-content}.dpref-status-pill.done{background:#22c55e24;color:#166534}.dpref-status-pill.wait{background:#f59e0b29;color:#92400e}.dpref-window-note{margin-left:auto;font-size:.78rem;font-style:italic;color:var(--muted, #6a7a96)}.dpref-card{background:var(--surface-card, #fff);border:1px solid #d6e0e8;border-radius:8px;box-shadow:0 4px 14px #0f1f380d;overflow:hidden}.dpref-card-head{display:flex;align-items:center;gap:12px;padding:15px 18px;border-bottom:1px solid #dde5ec;flex-wrap:wrap}.dpref-card-head-icon{flex-shrink:0;width:34px;height:34px;border-radius:7px;display:grid;place-items:center;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4)}.dpref-card-head-text{flex:1;min-width:180px}.dpref-card-head h3{margin:0 0 2px;font-size:.95rem;font-weight:800;color:var(--ink, #0f1f38)}.dpref-card-head p{margin:0;font-size:.76rem;color:var(--muted, #6a7a96);line-height:1.4}.dpref-card-head-actions{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.dpref-card-body{padding:20px 22px}.dpref-card-foot{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:16px 22px;background:var(--surface-app, #f8fafc);border-top:1px solid var(--border, rgba(15, 31, 56, .06))}.dpref-primary-btn{display:inline-flex;align-items:center;gap:7px;padding:10px 22px;border-radius:10px;font-size:.86rem;font-weight:700;color:#fff;background:var(--blue, #4392f1);border:none;cursor:pointer;transition:background .14s ease,transform .06s ease}.dpref-primary-btn:hover:not(:disabled){background:var(--blue-dark, #2b74d4)}.dpref-primary-btn:active:not(:disabled){transform:translateY(1px)}.dpref-primary-btn:disabled{opacity:.45;cursor:default}.dpref-submit-admin-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--navy, #0f2f57);border-radius:6px;background:var(--navy, #0f2f57);color:#fff;font-size:.8rem;font-weight:750;cursor:pointer}.dpref-submit-admin-btn:hover:not(:disabled){background:var(--blue-dark, #1f5fa8)}.dpref-submit-admin-btn:disabled{border-color:#cbd5e1;background:#e2e8f0;color:#64748b;cursor:default}.dpref-ghost-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:7px;font-size:.8rem;font-weight:700;color:var(--ink-soft, #2d3f5a);background:var(--surface-card, #fff);border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));cursor:pointer;transition:background .14s ease,border-color .14s ease,color .14s ease}.dpref-ghost-btn:hover:not(:disabled){background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);border-color:var(--blue, #4392f1)}.dpref-ghost-btn:disabled{opacity:.5;cursor:default}.dpref-nopref-btn{display:inline-flex;align-items:center;padding:10px 18px;border-radius:7px;font-size:.84rem;font-weight:700;color:var(--ink-soft, #2d3f5a);background:var(--surface-card, #fff);border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));cursor:pointer;transition:background .14s ease}.dpref-nopref-btn:hover:not(:disabled){background:var(--surface-app, #f2f4f8)}.dpref-nopref-btn:disabled{opacity:.5;cursor:default}.dpref-danger-btn{padding:7px 14px;border-radius:7px;font-size:.8rem;font-weight:700;color:var(--cinnabar, #dc493a);background:#dc493a12;border:1px solid rgba(220,73,58,.22);cursor:pointer;transition:background .14s ease,color .14s ease}.dpref-danger-btn:hover:not(:disabled){background:var(--cinnabar, #dc493a);color:#fff}.dpref-danger-btn:disabled{opacity:.5;cursor:default}.dpref-drop-zone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;padding:32px 20px;border:2px dashed var(--border-strong, rgba(15, 31, 56, .18));border-radius:var(--r-lg, 12px);background:var(--surface-app, #f8fafc);cursor:pointer;position:relative;transition:border-color .14s ease,background .14s ease}.dpref-drop-zone:hover{border-color:var(--blue, #4392f1);background:var(--alice, #e7f0ff)}.dpref-drop-zone.has-file{border-style:solid;border-color:#86efac;background:#f0fdf4}.dpref-drop-icon{color:var(--muted, #6a7a96)}.dpref-drop-icon.success{color:#16a34a}.dpref-drop-prompt{font-size:.88rem;font-weight:600;color:var(--ink-soft, #2d3f5a)}.dpref-drop-prompt u{color:var(--blue, #4392f1);text-decoration:none;font-weight:700}.dpref-drop-hint{font-size:.74rem;color:var(--muted, #6a7a96)}.dpref-drop-filename{font-size:.9rem;font-weight:700;color:var(--ink, #0f1f38)}.dpref-drop-size{font-size:.74rem;color:#15803d}.dpref-drop-clear{position:absolute;top:10px;right:12px;width:26px;height:26px;border-radius:7px;border:none;background:#0f1f380f;color:var(--muted, #6a7a96);font-size:1.2rem;line-height:1;cursor:pointer;transition:background .14s ease,color .14s ease}.dpref-drop-clear:hover{background:#fee2e2;color:var(--cinnabar, #dc493a)}.dpref-workspace-card{min-width:0}.dpref-table-toolbar{display:flex;align-items:center;gap:8px;min-height:52px;padding:9px 12px;border-bottom:1px solid #dce5ec;background:#f7f9fb;flex-wrap:wrap}.dpref-import-actions{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.dpref-upload-btn,.dpref-toolbar-btn,.dpref-review-file-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;padding:0 11px;border:1px solid #c9d5df;border-radius:6px;background:#fff;color:#334b63;font:inherit;font-size:.74rem;font-weight:750;white-space:nowrap;cursor:pointer;transition:border-color .14s ease,background .14s ease,color .14s ease}.dpref-upload-btn{border-color:var(--navy, #0f2f57);background:var(--navy, #0f2f57);color:#fff}.dpref-upload-btn:hover:not(:disabled){border-color:var(--blue-dark, #1f5fa8);background:var(--blue-dark, #1f5fa8)}.dpref-toolbar-btn:hover{border-color:#78a9db;background:#edf5fc;color:#205fa8}.dpref-upload-btn:disabled{border-color:#cbd5df;background:#dce3e9;color:#718096;cursor:not-allowed}.dpref-selected-file{display:flex;align-items:center;gap:7px;min-width:0;max-width:min(100%,430px);min-height:34px;padding:3px 4px 3px 9px;border:1px solid #add8c8;border-radius:6px;background:#f1faf6;color:#246b53}.dpref-selected-file>span{min-width:70px;overflow:hidden;color:#1d4f40;font-size:.73rem;font-weight:750;text-overflow:ellipsis;white-space:nowrap}.dpref-selected-file>small{flex:0 0 auto;color:#638477;font-size:.66rem}.dpref-selected-file>button:not(.dpref-review-file-btn){display:grid;width:25px;height:25px;flex:0 0 auto;place-items:center;border:0;border-radius:5px;background:transparent;color:#567267;font-size:1rem;line-height:1;cursor:pointer}.dpref-selected-file>button:not(.dpref-review-file-btn):hover{background:#fee2e2;color:#b4232f}.dpref-review-file-btn{flex:0 0 auto;min-height:26px;border-color:#16805d;background:#16805d;color:#fff}.dpref-review-file-btn:hover:not(:disabled){border-color:#0d6749;background:#0d6749}.dpref-review-file-btn:disabled{opacity:.55;cursor:wait}.dpref-nopref-btn--compact{min-height:34px;margin-left:auto;padding:0 11px;font-size:.73rem;background:#fff}.dpref-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.dpref-table-wrap{width:100%;max-height:590px;overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.dpref-table{width:100%;min-width:900px;table-layout:fixed;border-collapse:separate;border-spacing:0}.dpref-table col:nth-child(1){width:23%}.dpref-table col:nth-child(2){width:49%}.dpref-table col:nth-child(3){width:20%}.dpref-table col:nth-child(4){width:8%}.dpref-table thead th{position:sticky;top:0;z-index:2;padding:9px 13px;border-right:1px solid #dfe6ec;border-bottom:1px solid #d4dee6;background:#eef3f7;color:#587087;font-size:.65rem;font-weight:850;text-align:left;text-transform:uppercase}.dpref-table thead th:last-child,.dpref-table tbody td:last-child{border-right:0}.dpref-table tbody td{height:76px;min-width:0;padding:11px 13px;border-right:1px solid #e5eaef;border-bottom:1px solid #e3e9ee;background:#fff;color:#30485f;font-size:.76rem;line-height:1.4;text-align:left;vertical-align:middle}.dpref-table tbody tr:last-child td{border-bottom:0}.dpref-table tbody tr:hover td{background:#fafcfd}.dpref-table .dpref-row-name{margin:0;font-size:.82rem}.dpref-table .dpref-row-actions{justify-content:center}.dpref-table thead th:last-child,.dpref-table tbody td:last-child{text-align:center}.dpref-placement-list{max-height:54px;padding-right:3px;overflow-y:auto;overscroll-behavior:contain}.dpref-assignment-review--table{margin:0}.dpref-assignment-review--table .dpref-assignment-tag{margin:0 5px 5px 0}.dpref-table .dpref-row-note{display:-webkit-box;max-height:58px;margin:0;overflow:hidden;color:#5d7185;font-size:.73rem;line-height:1.45;-webkit-box-orient:vertical;-webkit-line-clamp:3}.dpref-no-note{color:#9aa8b5}.dpref-empty.dpref-empty--inline{min-height:210px;padding:42px 24px;border:0;border-radius:0;background:#fbfcfd}.dpref-list{display:flex;flex-direction:column}.dpref-row{display:flex;align-items:flex-start;gap:12px;padding:14px 22px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .05))}.dpref-row:last-child{border-bottom:none}.dpref-row:hover{background:var(--surface-app, #f8fafc)}.dpref-row-main{flex:1;min-width:0}.dpref-row-name{display:flex;align-items:center;gap:8px;font-size:.9rem;font-weight:700;color:var(--ink, #0f1f38);margin-bottom:7px}.dpref-by-lecturer{font-size:.66rem;font-weight:700;padding:1px 8px;border-radius:999px;background:#ede9fe;color:#6d28d9;border:1px solid #ddd6fe}.dpref-row-tags{display:flex;flex-wrap:wrap;gap:6px}.dpref-tag{font-size:.73rem;font-weight:700;padding:3px 9px;border-radius:7px;font-variant-numeric:tabular-nums}.dpref-tag.day{background:var(--alice, #e7f0ff);color:var(--blue-deep, #1a5abf)}.dpref-tag.slot{background:var(--surface-app, #eef1f6);color:var(--ink-soft, #2d3f5a);border:1px solid var(--border, rgba(15,31,56,.08));font-family:var(--font-mono, monospace)}.dpref-tag.muted{background:transparent;color:var(--muted, #6a7a96);font-style:italic;font-weight:600;padding-left:0}.dpref-row-note{font-size:.8rem;font-style:italic;color:var(--muted, #6a7a96);margin-top:8px}.dpref-assignment-review{margin-top:10px}.dpref-assignment-review-label{display:block;margin-bottom:6px;color:#64748b;font-size:.66rem;font-weight:800;text-transform:uppercase}.dpref-assignment-review>div,.dpref-modal-assignment-review>div:last-child{display:flex;flex-wrap:wrap;gap:6px}.dpref-assignment-tag{display:inline-flex;align-items:center;gap:5px;padding:5px 7px;border:1px solid #bbf7d0;border-radius:6px;background:#f0fdf4;color:#166534;font-size:.7rem;font-weight:700}.dpref-assignment-tag strong{color:#14532d}.dpref-assignment-tag>span{padding-right:5px;border-right:1px solid #86efac;color:#475569}.dpref-row-actions{display:flex;gap:6px;flex-shrink:0}.dpref-icon-btn{width:30px;height:30px;border-radius:8px;border:1px solid var(--border, rgba(15, 31, 56, .1));background:var(--surface-card, #fff);color:var(--muted, #6a7a96);display:grid;place-items:center;cursor:pointer;transition:all .14s ease}.dpref-icon-btn:hover{background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);border-color:var(--blue, #4392f1)}.dpref-icon-btn.danger:hover{background:#fee2e2;color:var(--cinnabar, #dc493a);border-color:var(--cinnabar, #dc493a)}.dpref-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:44px 24px;text-align:center;background:var(--surface-card, #fff);border:1px dashed var(--border-strong, rgba(15, 31, 56, .16));border-radius:var(--r-xl, 16px);color:var(--muted, #6a7a96)}.dpref-empty svg{opacity:.3}.dpref-empty p{margin:4px 0 0;font-size:.9rem;font-weight:700;color:var(--ink-soft, #2d3f5a)}.dpref-empty span{font-size:.8rem}.dpref-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;min-height:100vh;min-height:100dvh;background:#0f1f3873;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;z-index:1000;padding:20px;overflow-y:auto}.dpref-modal{width:min(540px,100%);max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);display:flex;flex-direction:column;overflow-y:auto;background:var(--surface-card, #fff);border-radius:var(--r-xl, 16px);box-shadow:var(--shadow-lg);padding:22px}.dpref-modal--wide{width:min(1040px,96vw)}.dpref-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}.dpref-modal-head h3{margin:0;font-size:1.06rem;font-weight:800;color:var(--ink, #0f1f38)}.dpref-modal-x{width:30px;height:30px;border-radius:8px;border:none;background:var(--surface-app, #f2f4f8);color:var(--muted, #6a7a96);font-size:1.3rem;line-height:1;cursor:pointer;transition:background .14s ease,color .14s ease}.dpref-modal-x:hover{background:#fee2e2;color:var(--cinnabar, #dc493a)}.dpref-modal-sub{font-size:.84rem;color:var(--ink-soft, #2d3f5a);margin:0 0 12px}.dpref-modal-field-label{font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft, #2d3f5a);margin:4px 0 10px}.dpref-modal-field-label:not(:first-of-type){margin-top:20px}.dpref-chip-row{display:flex;flex-wrap:wrap;gap:8px}.dpref-day-chip{min-width:52px;padding:8px 14px;border-radius:9px;font-size:.82rem;font-weight:700;border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));background:var(--surface-card, #fff);color:var(--ink-soft, #2d3f5a);cursor:pointer;transition:all .14s ease}.dpref-day-chip:hover{border-color:var(--blue, #4392f1);color:var(--blue, #4392f1)}.dpref-day-chip.selected{border-color:var(--blue, #4392f1);background:var(--blue, #4392f1);color:#fff;box-shadow:0 2px 8px #4392f14d}.dpref-slot-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:9px}.dpref-period-grid{display:flex;flex-direction:column;gap:8px}.dpref-period-row{display:grid;grid-template-columns:42px minmax(0,1fr);gap:8px;align-items:stretch}.dpref-period-row>span{display:grid;place-items:center;border-radius:7px;background:var(--surface-app, #f8fafc);font-size:.72rem;font-weight:800;color:var(--ink-soft, #2d3f5a)}.dpref-period-row>div{display:grid;grid-template-columns:repeat(7,minmax(78px,1fr));gap:5px;overflow-x:auto;padding-bottom:2px}.dpref-slot-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:10px 13px;border-radius:10px;border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));background:var(--surface-card, #fff);cursor:pointer;text-align:left;transition:all .14s ease}.dpref-slot-chip:hover{border-color:var(--blue, #4392f1)}.dpref-slot-chip.selected{border-color:var(--blue, #4392f1);background:var(--alice, #e7f0ff);box-shadow:0 2px 8px #4392f12e}.dpref-slot-chip-name{font-size:.67rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted, #6a7a96)}.dpref-slot-chip.selected .dpref-slot-chip-name{color:var(--blue-dark, #2b74d4)}.dpref-slot-chip-time{font-size:.88rem;font-weight:700;color:var(--ink, #0f1f38);font-variant-numeric:tabular-nums}.dpref-slot-chip.selected .dpref-slot-chip-time{color:var(--blue-deep, #1a5abf)}.dpref-modal-note-label{display:flex;flex-direction:column;gap:6px;font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft, #2d3f5a);margin:20px 0 18px}.dpref-modal-assignment-review{margin-top:18px;padding:12px;border:1px solid #dce5ec;border-radius:8px;background:#f8fafc}.dpref-modal-assignment-review .dpref-modal-field-label{margin:0 0 4px}.dpref-modal-assignment-review>p{margin:0 0 10px;color:#64748b;font-size:.75rem;line-height:1.4}.dpref-modal-note-label span{font-weight:500;letter-spacing:0;text-transform:none;color:var(--muted, #6a7a96)}.dpref-modal-textarea{width:100%;box-sizing:border-box;padding:11px 13px;border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));border-radius:10px;font-size:.86rem;font-family:inherit;background:var(--surface-card, #fff);color:var(--ink, #0f1f38);resize:vertical}.dpref-modal-textarea:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f124}.dpref-modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:auto;padding-top:4px}.dpref-preview-stats{display:flex;gap:8px;flex-shrink:0;margin-bottom:12px}.dpref-stat{display:inline-flex;align-items:center;padding:3px 11px;border-radius:999px;font-size:.74rem;font-weight:700}.dpref-stat.good{background:#d1fae5;color:#065f46}.dpref-stat.warn{background:#fef3c7;color:#92400e}.dpref-stat.bad{background:#fee2e2;color:#991b1b}.dpref-preview-table-wrap{flex:1;min-height:200px;overflow:auto;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:var(--r-md, 8px);margin-bottom:14px}.dpref-preview-table{width:100%;border-collapse:collapse;font-size:.82rem}.dpref-preview-table thead th{position:sticky;top:0;background:var(--surface-app, #f2f4f8);text-align:left;padding:9px 12px;font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted, #6a7a96);border-bottom:1px solid var(--border, rgba(15, 31, 56, .09))}.dpref-preview-table tbody td{padding:9px 12px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .05));color:var(--ink-soft, #2d3f5a)}.dpref-preview-table tbody tr.error{background:#fef2f2}.dpref-preview-table tbody tr.duplicate{background:#fffbeb}.dpref-preview-err{color:#991b1b;font-size:.72rem;margin-top:3px}.dpref-modal-search{width:100%;box-sizing:border-box;padding:9px 12px;border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));border-radius:9px;font-size:.86rem;background:var(--surface-app, #f8fafc);color:var(--ink, #0f1f38);margin-bottom:12px}.dpref-modal-search:focus{outline:none;border-color:var(--blue, #4392f1);background:#fff}.dpref-lec-list{flex:1;min-height:120px;overflow-y:auto;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:var(--r-md, 8px)}.dpref-lec-empty{padding:24px;text-align:center;color:var(--muted, #6a7a96);font-size:.85rem}.dpref-lec-item{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:10px 14px;border:none;border-bottom:1px solid var(--border, rgba(15, 31, 56, .05));background:transparent;cursor:pointer;text-align:left;transition:background .14s ease}.dpref-lec-item:last-child{border-bottom:none}.dpref-lec-item:hover{background:var(--surface-app, #f8fafc)}.dpref-lec-item.copied{background:#d1fae5}.dpref-lec-item-name{font-size:.85rem;font-weight:600;color:var(--ink, #0f1f38)}.dpref-lec-item.copied .dpref-lec-item-name{color:#065f46}.dpref-lec-item-copy{font-size:.72rem;color:var(--muted, #6a7a96);flex-shrink:0}.dpref-lec-item.copied .dpref-lec-item-copy{color:#059669;font-weight:700}.dpref-lec-count{margin-top:12px;font-size:.78rem;color:var(--muted, #6a7a96);text-align:right}@media (max-width: 640px){.dpref-status-bar{grid-template-columns:1fr}.dpref-status-item{padding:10px 13px;border-right:0;border-bottom:1px solid #e2e8ee}.dpref-status-item:last-child{border-bottom:0}.dpref-status-divider{display:none}.dpref-window-note{margin-left:0}.dpref-card-head-actions{width:100%}.dpref-table-toolbar{align-items:stretch}.dpref-import-actions{width:100%}.dpref-selected-file{width:100%;max-width:none}.dpref-nopref-btn--compact{margin-left:0}.dpref-slot-row{grid-template-columns:repeat(2,1fr)}}.hod-split{display:grid;grid-template-columns:300px 1fr;gap:16px;align-items:start}.hod-list{display:flex;flex-direction:column;gap:6px;min-width:0}.hod-list-item{cursor:pointer;transition:border-color .15s}.hod-list-item--active{border-color:var(--blue, #4392f1)!important;box-shadow:0 0 0 2px #4392f126}.hod-detail{flex:1;min-width:0;background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:14px;padding:20px 22px;box-shadow:0 2px 8px #0f1f380a;display:flex;flex-direction:column;gap:16px}.hod-detail-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.hod-detail-name{font-size:.9rem;font-weight:700;color:var(--ink, #0f1f38);margin:0 0 4px;word-break:break-word;overflow-wrap:anywhere;line-height:1.4}.hod-section-label{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted, #6a7a96);margin:0}.hod-empty-msg{font-size:.85rem;color:var(--muted, #6a7a96);font-style:italic;margin:0}.hod-comments{display:flex;flex-direction:column;gap:10px;max-height:320px;overflow-y:auto}.hod-comment{background:var(--surface-app, #f2f4f8);border-radius:10px;padding:10px 14px}.hod-comment-meta{display:flex;align-items:center;gap:8px;margin-bottom:5px}.hod-comment-role{font-size:.75rem;font-weight:700;color:var(--ink, #0f1f38);background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);padding:1px 7px;border-radius:10px}.hod-comment-time{font-size:.72rem;color:var(--muted, #6a7a96);font-family:var(--font-mono)}.hod-comment-body{font-size:.875rem;color:var(--ink, #0f1f38);margin:0;line-height:1.5}.hod-compose{border-top:1px solid var(--border, rgba(15, 31, 56, .08));padding-top:14px}.hod-compose-input{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--border, rgba(15, 31, 56, .12));border-radius:10px;font-size:.875rem;font-family:inherit;resize:vertical;outline:none;color:var(--ink, #0f1f38);background:var(--surface-app, #f2f4f8);transition:border-color .15s}.hod-compose-input:focus{border-color:var(--blue, #4392f1);background:#fff}@media (min-width: 961px){.hod-list{max-height:calc(100vh - 200px);overflow-y:auto;padding-right:4px}}@media (max-width: 960px){.hod-split{grid-template-columns:1fr}}.hod-empty{margin:0;padding:28px 16px;text-align:center;color:var(--muted, #6b7a90);font-size:.86rem}.sd-page{display:grid;gap:14px}.sd-card{padding:18px 20px;border:1px solid var(--border, #e2e8f0);border-radius:8px!important;background:var(--surface-card, #fff)}.sd-card h3{margin:0 0 12px;font-size:.92rem;font-weight:700;color:var(--ink, #0f172a)}.sd-card code{font-family:JetBrains Mono,monospace;background:#f1f5f9;padding:1px 5px;border-radius:4px!important}.sd-summary{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;gap:14px 0;align-items:center}.sd-summary>div{padding:0 20px;border-left:1px solid #edf1f5}.sd-summary>div:first-child{padding-left:0;border-left:0}.sd-summary strong{display:block;font-size:1.35rem;font-weight:700;color:var(--ink, #0f172a);line-height:1.2}.sd-summary span{font-size:.78rem;color:var(--muted, #64748b)}.sd-how{grid-column:1 / -1;margin:0;padding-top:14px;border-top:1px solid #edf1f5;font-size:.8rem;line-height:1.6;color:var(--muted, #64748b)}.sd-how b{color:#334155;font-weight:600}.sd-lookup{display:flex;gap:8px;max-width:520px}.sd-lookup input,.sd-tools input,.sd-edit input{padding:8px 11px;border:1px solid var(--border, #e2e8f0);font-size:.84rem}.sd-lookup input{flex:1}.sd-result{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:6px 18px;margin:14px 0 0;font-size:.82rem}.sd-result dt{color:var(--muted, #64748b)}.sd-result dd{margin:0;color:var(--ink, #0f172a)}.sd-result dd.ok{color:var(--ink, #0f172a);font-weight:600}.sd-result dd.bad{color:#b91c1c;font-weight:600}.sd-miss{margin:10px 0 0;font-size:.82rem;color:var(--muted, #64748b)}.sd-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px}.sd-tools h3{margin:0 auto 0 0}.sd-filters{display:flex;gap:2px;padding:3px;border-radius:7px!important;background:#f1f5f9}.sd-filters button{padding:5px 12px;border:none;background:none;font-size:.78rem;font-weight:600;color:#64748b;cursor:pointer}.sd-filters button.on{background:#fff;color:var(--ink, #0f172a)}.sd-table{display:grid}.sd-row{display:grid;grid-template-columns:210px minmax(0,1fr);gap:8px 18px;padding:14px 0;border-top:1px solid #edf1f5}.sd-row header{display:grid;gap:3px;align-content:start}.sd-row header strong{font-family:JetBrains Mono,monospace;font-size:.88rem;color:var(--ink, #0f172a)}.sd-row header span{font-size:.74rem;color:var(--muted, #64748b)}.sd-status{display:inline-flex;align-items:center;gap:6px;font-size:.72rem;font-style:normal;font-weight:600;color:#64748b}.sd-status:before{content:"";width:6px;height:6px;border-radius:50%!important;background:#cbd5e1}.sd-row.is-linked .sd-status{color:#334155}.sd-row.is-linked .sd-status:before{background:#10b981}.sd-edit{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.sd-edit input{flex:1 1 220px;min-width:0}html .sd-save{background:#183b7a!important;border-color:#183b7a!important;color:#fff!important}html .sd-unlink{color:#b91c1c!important}.sd-levels{grid-column:2;display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none}.sd-levels li{padding:2px 9px;border-radius:999px!important;font-size:.72rem;background:#f1f5f9;color:#475569}.sd-levels li.bad{background:#fef2f2;color:#b91c1c}.sd-levels em{font-style:normal;opacity:.7}.sd-card .pagination{margin-top:4px;padding-top:12px;border-top:1px solid #edf1f5}.sd-page>.seg-tabs{justify-self:start}.sd-count{margin-left:6px;font-weight:500;color:#94a3b8}.sd-filters button.on .sd-count{color:#64748b}.sd-subtools{margin:4px 0 0}.sd-note{margin:8px 0 4px;font-size:.78rem;line-height:1.55;color:var(--muted, #64748b)}.sd-check-head{display:flex;align-items:center;gap:16px}.sd-check-head .btn-toolbar{flex:none}.sd-menu{display:flex;align-items:center;flex:none;min-height:34px;margin-left:auto}.sd-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:8px 0 2px;padding:8px 12px;border-radius:6px!important;background:#eef3fb;font-size:.8rem;font-weight:600;color:#183b7a}.sd-bulk>span{margin-right:auto;display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}.sd-link{padding:0;border:0;background:none;font:inherit;font-weight:600;color:#183b7a;text-decoration:underline;text-underline-offset:2px;cursor:pointer}html .btn-toolbar.sd-danger{color:#b91c1c!important;border-color:#f3c4c4!important}html .btn-toolbar.sd-danger:hover:not(:disabled){background:#fdf2f2!important}.sd-list{display:grid;margin-top:6px;transition:opacity .15s}.sd-list.is-loading{opacity:.55}.sd-list-head,.sd-list-row{display:grid;grid-template-columns:20px minmax(160px,1.3fr) minmax(120px,1fr) minmax(130px,1fr) minmax(170px,1.5fr) auto;gap:12px;align-items:center;padding:10px 0;border-top:1px solid #edf1f5}.sd-list--placed .sd-list-head,.sd-list--placed .sd-list-row{grid-template-columns:20px minmax(160px,1.3fr) minmax(120px,1fr) minmax(130px,1fr) minmax(170px,1.5fr) minmax(84px,.5fr) auto}.sd-list--unplaced .sd-list-head,.sd-list--unplaced .sd-list-row{grid-template-columns:20px minmax(160px,1.2fr) minmax(130px,1fr) minmax(200px,1.8fr) minmax(70px,.5fr) auto}.sd-list-head{padding:6px 0;border-top:0;font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#94a3b8}.sd-list-row{font-size:.8rem;color:var(--ink, #0f172a)}.sd-list-row.is-ready{opacity:.75}.sd-list-row.is-off .sd-who b,.sd-list-row.is-off .sd-class{color:#94a3b8}.sd-seen{font-size:.74rem;color:#475569;white-space:nowrap}.sd-seen .muted{color:#94a3b8}.sd-who{display:grid;gap:2px;min-width:0}.sd-who b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-who span,.sd-tried{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--muted, #64748b)}.sd-class{font-weight:600}.sd-record{font-family:JetBrains Mono,monospace;font-size:.74rem;color:#475569}.sd-why{display:grid;gap:2px;font-size:.76rem;line-height:1.45}.sd-why .bad,.sd-list .bad{color:#b45309}.sd-why .ok{color:#047857}.sd-why .muted{color:#94a3b8}.sd-why em{font-style:normal;color:var(--muted, #64748b)}.sd-actions{display:flex;gap:6px;justify-content:flex-end}.sd-actions .btn-toolbar{padding:4px 10px;font-size:.74rem;white-space:nowrap}.sd-place{display:grid;gap:16px}.sd-place-who{display:grid;gap:4px;margin:0;padding:10px 12px;list-style:none;border-radius:6px!important;background:#f8fafc;font-size:.8rem}.sd-place-who span{font-family:JetBrains Mono,monospace;font-size:.72rem;color:var(--muted, #64748b)}.sd-place-who em{margin-left:6px;font-style:normal;font-size:.72rem;color:var(--muted, #64748b)}.sd-more{color:var(--muted, #64748b)}.sd-field{display:grid;gap:6px;font-size:.8rem}.sd-field>span{font-weight:600;color:#334155}.sd-field .sd-filters{justify-self:start}.sd-field input{padding:8px 11px;border:1px solid var(--border, #e2e8f0);font-size:.84rem}.sd-field small{font-size:.74rem;color:var(--muted, #64748b)}.sd-field small.bad{color:#b91c1c}.sd-classes{max-height:360px;overflow-y:auto;border:1px solid var(--border, #e2e8f0);border-radius:6px!important}.sd-classes-empty{margin:0;padding:12px}.sd-class-group h4{position:sticky;top:0;margin:0;padding:6px 12px;background:#f8fafc;border-bottom:1px solid #edf1f5;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#64748b}.sd-class-option{display:flex;align-items:baseline;gap:10px;width:100%;padding:8px 12px;border:0;border-bottom:1px solid #f1f5f9;background:none;text-align:left;font-size:.8rem;color:var(--ink, #0f172a);cursor:pointer}.sd-class-option:hover{background:#f8fafc}.sd-class-option.on{background:#eef3fb}.sd-class-option b{flex:none;font-weight:600}.sd-class-option.on b{color:#183b7a}.sd-class-option span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted, #64748b);font-size:.76rem}.sd-class-option em{flex:none;padding:1px 7px;border-radius:999px!important;background:#f1f5f9;font-style:normal;font-size:.68rem;color:#475569}.sd-chosen{margin-right:auto;align-self:center;font-size:.8rem;font-weight:600;color:#183b7a}.sd-failed{margin:0;padding:10px 12px 10px 28px;border-radius:6px!important;background:#fef2f2;font-size:.78rem;color:#991b1b}.sd-place-actions{display:flex;justify-content:flex-end;gap:8px}.sd-place-actions .sd-save:disabled{opacity:.45;cursor:not-allowed}.sd-tools input[type=search]{width:210px;max-width:100%}@media (max-width: 1100px){.sd-list-head{display:none}.sd-list-row,.sd-list--unplaced .sd-list-row{grid-template-columns:20px minmax(0,1fr) auto;gap:4px 12px}.sd-list-row>:nth-child(n+3):not(.sd-actions){grid-column:2}.sd-list-row .sd-actions{grid-column:3;grid-row:1}}@media (max-width: 760px){.sd-summary{grid-template-columns:1fr 1fr}.sd-summary>div{padding:0;border-left:0}.sd-row{grid-template-columns:1fr}.sd-levels{grid-column:1}}.nc-page{display:grid;gap:14px}.nc-card{padding:18px 20px;border:1px solid var(--border, #e2e8f0);border-radius:8px!important;background:var(--surface-card, #fff);min-width:0}.nc-card h3{margin:0 0 10px;font-size:.92rem;font-weight:700;color:var(--ink, #0f172a)}.nc-card h3.nc-sub{margin-top:18px}.nc-note{margin:0 0 12px;font-size:.78rem;line-height:1.55;color:var(--muted, #64748b)}.nc-small{margin:8px 0 0;font-size:.74rem;line-height:1.5;color:var(--muted, #64748b)}.nc-miss{margin:10px 0;font-size:.8rem;color:var(--muted, #64748b)}.nc-muted{color:#94a3b8}.nc-page .ok{color:#047857}.nc-page .bad{color:#b45309}html .nc-primary{background:#183b7a!important;border-color:#183b7a!important;color:#fff!important}html .nc-primary:disabled{opacity:.45}.nc-link{padding:0;border:0;background:none;font:inherit;font-size:.78rem;font-weight:600;color:#183b7a;text-decoration:underline;text-underline-offset:2px;cursor:pointer}.nc-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.nc-health{display:grid;gap:14px}.nc-banner{padding:14px 18px;border-radius:8px!important;border:1px solid;font-size:.84rem}.nc-banner.is-ok{background:#ecfdf5;border-color:#a7f3d0;color:#065f46}.nc-banner.is-bad{background:#fff7ed;border-color:#fed7aa;color:#9a3412}.nc-banner ul{margin:8px 0 0;padding-left:18px;display:grid;gap:4px;font-size:.8rem;line-height:1.5}.nc-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.nc-stats{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px}.nc-stat{display:grid;gap:2px;padding:10px 12px;border-radius:6px!important;background:#f8fafc}.nc-stat b{font-size:1.1rem;font-weight:700;color:var(--ink, #0f172a)}.nc-stat span{font-size:.7rem;color:var(--muted, #64748b)}.nc-stat.is-bad{background:#fff7ed}.nc-stat.is-bad b{color:#c2410c}.nc-stat.is-ok b{color:#047857}.nc-cron{margin-top:14px;font-size:.78rem}.nc-cron summary{cursor:pointer;font-weight:600;color:#183b7a}.nc-copy{display:flex;gap:8px;align-items:center;margin-top:4px}.nc-copy code{flex:1;min-width:0;padding:7px 9px;overflow-x:auto;white-space:nowrap;font-family:JetBrains Mono,monospace;font-size:.7rem;background:#f1f5f9;border-radius:6px!important}.nc-tools{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:10px}.nc-tools input[type=search],.nc-tools select,.nc-pick input,.nc-field input,.nc-field textarea,.nc-table select{padding:7px 10px;border:1px solid var(--border, #e2e8f0);border-radius:6px!important;background:#fff;font:inherit;font-size:.8rem;color:var(--ink, #0f172a)}.nc-tools input[type=search]{width:240px;max-width:100%}.nc-chips{display:flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:7px!important;background:#f1f5f9}.nc-chips button{padding:5px 11px;border:0;background:none;font:inherit;font-size:.76rem;font-weight:600;color:#64748b;cursor:pointer;border-radius:5px!important}.nc-chips button.on{background:#fff;color:var(--ink, #0f172a)}.nc-chips button span{margin-left:5px;font-weight:500;color:#94a3b8}.nc-filter-note{margin:0 0 8px;font-size:.78rem;color:#183b7a}.nc-table{display:grid;transition:opacity .15s}.nc-table.is-loading{opacity:.55}.nc-head,.nc-row{display:grid;gap:12px;align-items:center;padding:9px 0;border-top:1px solid #edf1f5;font-size:.78rem;color:var(--ink, #0f172a)}.nc-head{padding:6px 0;border-top:0;font-size:.68rem;font-weight:600;text-transform:uppercase;letter-spacing:.04em;color:#94a3b8}.nc-row--button{width:100%;border-left:0;border-right:0;border-bottom:0;background:none;font:inherit;text-align:left;cursor:pointer}.nc-row--button:hover{background:#f8fafc}.nc-table--log .nc-head,.nc-table--log .nc-row{grid-template-columns:110px minmax(150px,1fr) 160px minmax(220px,2.2fr) 130px}.nc-table--deliveries .nc-head,.nc-table--deliveries .nc-row{grid-template-columns:110px minmax(150px,1fr) minmax(170px,1.3fr) 120px minmax(160px,1.4fr) 90px}.nc-table--kinds .nc-head,.nc-table--kinds .nc-row{grid-template-columns:minmax(180px,1.6fr) 90px 70px 70px 110px 180px 190px}.nc-table--runs .nc-head,.nc-table--runs .nc-row{grid-template-columns:130px 80px 80px minmax(0,1fr)}.nc-when{font-family:JetBrains Mono,monospace;font-size:.7rem;color:#475569}.nc-person{display:grid;gap:1px;min-width:0}.nc-person b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nc-person span{font-size:.7rem;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nc-text{display:grid;gap:2px;min-width:0}.nc-text b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nc-text span{font-size:.72rem;color:var(--muted, #64748b);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.nc-wrap{overflow-wrap:anywhere;line-height:1.45}.nc-error{font-size:.72rem;color:#9a3412}.nc-kind{display:inline-block;padding:2px 8px;border-radius:999px!important;background:#eef2f6;font-size:.68rem;font-weight:600;color:#475569;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.nc-status{display:grid;gap:1px;font-size:.72rem;font-weight:600;color:#475569}.nc-status small{font-weight:400;color:#94a3b8}.nc-status.is-bell{color:#183b7a}.nc-status.is-bell.is-read{color:#94a3b8;font-weight:500}.nc-status.is-waiting{color:#855700}.nc-status.is-muted,.nc-status.is-summarised{color:#94a3b8}.nc-status.is-sent{color:#047857}.nc-status.is-skipped{color:#64748b}.nc-status.is-failed,.nc-status.is-gave-up{color:#b91c1c}.nc-status.is-pending{color:#855700}.nc-row-actions{display:flex;gap:6px;justify-content:flex-end;flex-wrap:wrap}.nc-row-actions .btn-toolbar{padding:4px 10px;font-size:.72rem;white-space:nowrap;min-height:0!important;height:auto}.nc-rate{display:flex;align-items:center;gap:6px}.nc-rate i{width:44px;height:6px;border-radius:999px!important;background:linear-gradient(to right,#34a853 var(--rate),#e5e7eb var(--rate))}.nc-rate i.is-low{background:linear-gradient(to right,#f59e0b var(--rate),#e5e7eb var(--rate))}.nc-recipients{display:grid;gap:10px}.nc-recipients-head{display:grid;gap:4px;padding-bottom:10px;border-bottom:1px solid #edf1f5}.nc-recipients-head p{margin:0;font-size:.82rem;color:#334155}.nc-recipients-head .nc-kind{justify-self:start}.nc-recipients ul{margin:0;padding:0;list-style:none;max-height:50vh;overflow-y:auto}.nc-recipients li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:7px 0;border-top:1px solid #edf1f5;font-size:.78rem}.nc-announce{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:14px;align-items:start}.nc-field{display:grid;gap:5px;margin-bottom:12px}.nc-field>span{font-size:.74rem;font-weight:600;color:#475569;display:flex;justify-content:space-between}.nc-field>span em{font-style:normal;font-weight:400;color:#94a3b8}.nc-field textarea{resize:vertical;line-height:1.5}.nc-pick{display:grid;gap:6px;margin-top:6px}.nc-pick-list{max-height:260px;overflow-y:auto;padding:4px 8px;border:1px solid var(--border, #e2e8f0);border-radius:6px!important}.nc-pick-list h4{margin:8px 0 2px;font-size:.66rem;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:#94a3b8}.nc-pick-list label{display:flex;align-items:center;gap:8px;padding:4px 2px;font-size:.78rem;cursor:pointer}.nc-pick-list label.on span{font-weight:600;color:#183b7a}.nc-check{display:flex;align-items:center;gap:8px;margin:4px 0 14px;font-size:.8rem;color:#334155}.nc-send{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:12px;border-top:1px solid #edf1f5}.nc-reach{font-size:.78rem;color:#475569}.nc-history{margin:0;padding:0;list-style:none}.nc-history li{display:grid;gap:6px;padding:12px 0;border-top:1px solid #edf1f5;font-size:.8rem}.nc-history li:first-child{border-top:0;padding-top:0}.nc-history p{margin:3px 0;color:#334155;font-size:.78rem}.nc-history-stats{display:flex;flex-wrap:wrap;gap:6px 14px;align-items:baseline;font-size:.74rem;color:#475569}@media (max-width: 1100px){.nc-grid,.nc-announce{grid-template-columns:1fr}}@media (max-width: 760px){.nc-card{padding:14px}.nc-head{display:none}.nc-row,.nc-table--log .nc-row,.nc-table--deliveries .nc-row,.nc-table--kinds .nc-row,.nc-table--runs .nc-row{grid-template-columns:1fr;gap:4px}.nc-row-actions{justify-content:flex-start}.nc-tools input[type=search]{width:100%}}.sch-layout{flex:1;min-height:0;display:grid;grid-template-columns:270px 1fr;gap:16px;overflow:hidden}.sch-side{display:flex;flex-direction:column;min-height:0;overflow:hidden;background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px)}.sch-prog{display:flex;align-items:center;gap:10px;padding:14px;border-bottom:1px solid var(--border);flex-shrink:0}.sch-prog-icon{width:34px;height:34px;border-radius:9px;background:#4392f11f;color:var(--blue, #4392f1);display:grid;place-items:center;flex-shrink:0}.sch-prog-info{display:flex;flex-direction:column;gap:3px;min-width:0}.sch-prog-name{font-size:.84rem;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sch-prog-code{font-size:.68rem;font-family:var(--font-mono);color:var(--blue, #4392f1);background:#4392f11a;padding:1px 7px;border-radius:99px;width:fit-content}.sch-courses-head{display:flex;justify-content:space-between;align-items:center;padding:13px 14px 7px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);flex-shrink:0}.sch-count{background:var(--surface-app, #f2f4f8);color:var(--muted);font-size:.68rem;padding:1px 7px;border-radius:99px;font-weight:700}.sch-search{position:relative;padding:0 12px 8px;flex-shrink:0}.sch-search svg{position:absolute;left:22px;top:8px;color:var(--muted);pointer-events:none}.sch-search input{width:100%;box-sizing:border-box;padding:7px 10px 7px 30px;border:1px solid var(--border);border-radius:7px;font-size:.8rem;font-family:var(--font-sans);color:var(--ink);background:#fff;outline:none}.sch-search input:focus{border-color:var(--blue);box-shadow:0 0 0 3px #4392f11f}.sch-course-list{flex:1;overflow-y:auto;padding:0 8px 12px}.sch-course-list::-webkit-scrollbar{width:4px}.sch-course-list::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}.sch-course{display:flex;align-items:flex-start;gap:8px;padding:8px;border-radius:8px;transition:background .15s}.sch-course:hover{background:#4392f10f}.sch-course-code{font-family:var(--font-mono);font-size:.72rem;font-weight:700;color:var(--blue, #4392f1);background:#4392f11a;padding:2px 6px;border-radius:5px;flex-shrink:0;margin-top:1px}.sch-course-text{display:flex;flex-direction:column;min-width:0}.sch-course-title{font-size:.8rem;font-weight:500;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sch-course-lec{font-size:.72rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sch-empty-sm{padding:16px 6px;color:var(--muted);font-size:.8rem;text-align:center}.sch-main{min-height:0;display:flex;flex-direction:column;background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);overflow:hidden}.sch-main--full{flex:1;width:100%}.sch-days{display:flex;gap:0;padding:0 14px;border-bottom:1.5px solid var(--border);overflow-x:auto;flex-shrink:0}.sch-days::-webkit-scrollbar{height:0}.sch-day{display:inline-flex;align-items:center;gap:7px;padding:11px 16px;margin-bottom:-1.5px;border:none;background:transparent;border-bottom:2px solid transparent;font-family:var(--font-sans);font-size:.845rem;font-weight:500;color:var(--muted);cursor:pointer;white-space:nowrap;transition:color .15s,border-color .15s}.sch-day:hover{color:var(--ink-soft)}.sch-day.active{color:var(--blue, #4392f1);border-bottom-color:var(--blue, #4392f1);font-weight:600}.sch-day-badge{font-size:.66rem;font-weight:700;min-width:17px;text-align:center;padding:0 5px;border-radius:99px;background:var(--surface-app, #f2f4f8);color:var(--muted)}.sch-day.active .sch-day-badge{background:#4392f11f;color:var(--blue, #4392f1)}.sch-agenda-wrap{flex:1;min-height:0;overflow-y:auto;padding:16px 18px}.sch-timeline{display:flex;flex-direction:column}.sch-row{display:grid;grid-template-columns:58px 22px 1fr}.sch-time{text-align:right;padding:4px 12px 0 0;font-family:var(--font-mono)}.sch-time strong{display:block;font-size:.8rem;font-weight:700;color:var(--ink)}.sch-time span{font-size:.66rem;color:var(--muted)}.sch-rail{position:relative;display:flex;justify-content:center}.sch-rail:before{content:"";position:absolute;top:0;bottom:0;width:2px;background:var(--border)}.sch-row:first-child .sch-rail:before{top:9px}.sch-row:last-child .sch-rail:before{height:9px;bottom:auto}.sch-rail-dot{position:relative;z-index:1;width:11px;height:11px;border-radius:50%;margin-top:6px;background:var(--blue, #4392f1);box-shadow:0 0 0 3px var(--surface-card, #fff),0 0 0 4px var(--blue, #4392f1)}.sch-card{margin:0 0 14px 10px;padding:12px 14px;background:var(--surface-card, #fff);border:1px solid var(--border);border-left:3px solid var(--blue, #4392f1);border-radius:10px;transition:transform .15s ease,box-shadow .15s ease}.sch-card:hover{transform:translate(3px);box-shadow:0 8px 22px #0f1f3817}.sch-card-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.sch-card-code{font-family:var(--font-mono);font-size:.82rem;font-weight:700;color:var(--blue, #4392f1)}.sch-card-room{font-size:.72rem;color:var(--muted);white-space:nowrap}.sch-card-title{display:block;font-size:.84rem;font-weight:500;color:var(--ink);line-height:1.3;margin-top:5px}.sch-card-lec{display:block;font-size:.73rem;color:var(--muted);margin-top:4px}.sch-empty,.sch-day-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--muted);padding:48px 24px;text-align:center}.sch-empty svg,.sch-day-empty svg{color:var(--muted);opacity:.7;margin-bottom:2px}.sch-empty p,.sch-day-empty p{margin:0;font-size:.92rem;font-weight:600;color:var(--ink-soft)}.sch-empty span,.sch-day-empty span{font-size:.8rem}@media (max-width: 860px){.sch-layout{grid-template-columns:1fr;overflow:auto}.sch-side{overflow:visible}.sch-course-list{max-height:280px}.sch-main{min-height:420px}}.sch-main--full{display:flex;flex-direction:column;min-height:0;border:1px solid var(--border, rgba(15, 31, 56, .12));border-bottom-width:2px}.sch-week-scroll{flex:1;min-height:0;overflow:auto}.sch-week{display:grid;min-width:640px;min-height:100%;border:1px solid var(--border, rgba(15, 31, 56, .1));background:var(--border, rgba(15, 31, 56, .1));gap:1px}.sch-wk-cell{background:var(--surface-card, #fff);padding:8px 10px}.sch-wk-corner{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);position:sticky;top:0;left:0;z-index:3}.sch-wk-timehead{display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--alice, #e7f0ff);position:sticky;top:0;z-index:2}.sch-wk-timehead strong{font-size:.74rem;color:var(--ink, #0f1f38);font-family:var(--font-mono)}.sch-wk-timehead span{font-size:.64rem;color:var(--blue-dark, #2b74d4);font-family:var(--font-mono)}.sch-wk-day{position:sticky;left:0;z-index:1;display:flex;align-items:center;gap:8px;background:var(--surface-app, #f2f4f8);font-size:.82rem;font-weight:700;color:var(--ink, #0f1f38)}.sch-wk-daybadge{font-size:.66rem;font-weight:700;font-family:var(--font-mono);background:var(--blue, #4392f1);color:#fff;padding:1px 7px;border-radius:999px}.sch-wk-slot{display:flex;flex-direction:column;gap:6px;min-height:56px}.sch-wk-card{background:#4392f114;border-left:3px solid var(--blue, #4392f1);padding:6px 8px;display:flex;flex-direction:column;gap:2px;cursor:default;transition:transform .15s ease,box-shadow .15s ease,background .15s ease,border-left-width .15s ease}.sch-wk-card:hover{background:#4392f12b;border-left-width:5px;transform:translateY(-2px);box-shadow:0 8px 20px #0f1f3824!important}.sch-wk-card-top{display:flex;align-items:center;justify-content:space-between;gap:6px}.sch-wk-code{font-size:.76rem;font-weight:800;color:var(--blue-dark, #2b74d4);font-family:var(--font-mono)}.sch-wk-room{font-size:.66rem;font-weight:600;color:var(--muted, #6a7a96);white-space:nowrap}.sch-wk-title{font-size:.72rem;color:var(--ink-soft, #2d3f5a);line-height:1.25}.sch-wk-lec{font-size:.66rem;color:var(--muted, #6a7a96)}.app-body.app-student .sch-day{font-size:.81rem}.app-body.app-student .sch-time strong{font-size:.77rem}.app-body.app-student .sch-card-title{font-size:.81rem}.app-body.app-student .sch-wk-day{font-size:.79rem}.app-body.app-student .sch-wk-code{font-size:.73rem}.app-body.app-student .sch-wk-title{font-size:.69rem}.sch-deo-view{border-color:#cdd9e4;border-radius:8px;box-shadow:0 3px 14px #142a4012}.sch-deo-view .sch-week{min-width:100%;background:#d6e0e9;border:0;gap:1px}.sch-deo-view .sch-wk-cell{padding:9px 12px}.sch-deo-view .sch-wk-corner,.sch-deo-view .sch-wk-timehead{background:var(--ink, #0f1f38);color:#fffc;border-bottom:2px solid rgba(67,146,241,.5)}.sch-deo-view .sch-wk-corner{font-family:var(--font-mono);letter-spacing:.07em}.sch-deo-view .sch-wk-timehead strong{color:#fff;font-size:.72rem;letter-spacing:.04em}.sch-deo-view .sch-wk-timehead span{color:#ffffffa8}.sch-deo-view .sch-wk-day{background:#0f2d54;color:#ffffffeb;font-family:var(--font-mono);font-size:.75rem;letter-spacing:.03em;box-shadow:3px 0 8px #142a4014}.sch-deo-view .sch-wk-slot{min-height:82px;padding:7px;background:#f5f7fa}.sch-deo-view .sch-wk-card{min-height:64px;box-sizing:border-box;justify-content:center;padding:8px 10px;background:#e7f0ff;border:0;border-left:3px solid var(--blue, #4392f1);border-radius:2px;box-shadow:none}.sch-deo-view .sch-wk-card:hover{border-left-width:3px;transform:none;background:#dceafe;box-shadow:inset 0 0 0 2px #4392f173!important}.sch-deo-view .sch-wk-code{color:inherit}.sch-deo-view .sch-wk-room,.sch-deo-view .sch-wk-title,.sch-deo-view .sch-wk-lec{color:inherit;opacity:.78}.sch-wk-recess{min-height:82px;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:10px;background:#fff7ed;color:#9a3412;border-left:3px solid #fb923c;text-align:center}.sch-wk-recess strong{font-size:.76rem;letter-spacing:.1em}.sch-wk-recess span{font-size:.72rem;color:#9a3412}@media (max-width: 560px){.sch-week-scroll{max-height:none}}.sch-courses-page{display:flex;flex-direction:column;gap:14px;max-width:920px}.sch-courses-page .sch-prog,.sch-courses-page .sch-courses-head,.sch-courses-page .sch-search{flex-shrink:0}.sch-course-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:10px}.sch-course-grid .sch-course{border:1px solid var(--border, rgba(15, 31, 56, .1));background:var(--surface-card, #fff);padding:12px 14px}.requests-change-table-wrap{width:100%;max-height:min(520px,calc(100dvh - 330px));overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable}.requests-change-table{min-width:980px;table-layout:fixed;border-collapse:separate;border-spacing:0}.requests-change-table col:nth-child(1){width:13%}.requests-change-table col:nth-child(2){width:17%}.requests-change-table col:nth-child(3){width:20%}.requests-change-table col:nth-child(4){width:25%}.requests-change-table col:nth-child(5){width:12%}.requests-change-table col:nth-child(6){width:13%}.requests-change-table thead th{position:sticky;top:0;z-index:2;height:42px;border-right:1px solid #dce5ec;background:#eef3f7}.requests-change-table td{height:64px;min-width:0;border-right:1px solid #e4eaf0;vertical-align:middle}.requests-change-table th:last-child,.requests-change-table td:last-child{border-right:0}.requests-cell-ellipsis{display:block;min-width:0;overflow:hidden;font-size:.78rem;text-overflow:ellipsis;white-space:nowrap}.requests-cell-note{margin:3px 0 0;overflow:hidden;color:var(--muted, #6a7a96);font-size:.7rem;text-overflow:ellipsis;white-space:nowrap}.requests-submitted-cell{color:var(--muted, #6a7a96);font-size:.76rem;white-space:nowrap}.rq-counts{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.rq-counts>div{display:grid;gap:2px;padding:12px 14px;border:1px solid #e2e8f0;border-radius:14px!important;background:#fff}.rq-counts strong{font-size:1.35rem;line-height:1.1;color:#0f172a}.rq-counts span{font-size:.74rem;font-weight:600;color:#64748b}.rq-cards{display:grid;margin:0;padding:0 12px 12px;list-style:none}.rq-card{display:grid;gap:6px;padding:14px 4px;border-top:1px solid #edf1f5}.rq-card:first-child{border-top:0}.rq-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px}.rq-card-head strong{font-family:JetBrains Mono,monospace;font-size:.9rem;color:#0f172a}.rq-prog{font-size:.78rem;color:#64748b}.rq-status{margin-left:auto;padding:2px 9px;border-radius:999px!important;font-size:.68rem;font-weight:700}.rq-move{display:flex;flex-wrap:wrap;align-items:center;gap:4px 8px;margin:0;font-size:.8rem;color:#475569}.rq-move b{color:#94a3b8}.rq-move strong{color:#0f172a}.rq-reason{margin:0;font-size:.8rem;color:#334155;line-height:1.4}.rq-reason span{color:#64748b}.rq-note{margin:0;font-size:.76rem;color:#64748b}.rq-foot{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin-top:2px}.rq-when{font-size:.72rem;color:#94a3b8;margin-right:auto}.rq-link,.rq-withdraw{min-height:0!important;padding:5px 10px!important;border:1px solid #e2e8f0!important;border-radius:999px!important;background:#fff;font:inherit;font-size:.74rem;font-weight:600;color:#334155;cursor:pointer}.rq-link.has-issues{border-color:#fecaca!important;color:#b91c1c}.rq-withdraw{color:#b91c1c}.rq-detail{margin-top:4px}.sem-active-banner{display:flex;align-items:center;gap:10px;padding:12px 16px;background:#4392f112;border:1px solid rgba(67,146,241,.18);border-radius:10px;font-size:.875rem;color:var(--ink-soft, #2d3f5a);margin-bottom:20px}.sem-active-dot{width:8px;height:8px;border-radius:50%;background:#22c55e;flex-shrink:0;box-shadow:0 0 0 3px #22c55e33}.sem-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:16px;gap:12px}.sem-count{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);margin:0}.sem-table-wrap{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;overflow:hidden;box-shadow:0 2px 8px #0f1f380a}.sem-table{width:100%;border-collapse:collapse;min-width:600px}.sem-table th{text-align:left;padding:9px 14px;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);background:var(--surface-app, #f2f4f8);border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));white-space:nowrap}.sem-table td{padding:11px 14px;font-size:.875rem;color:var(--ink, #0f1f38);border-bottom:1px solid rgba(15,31,56,.05);vertical-align:middle}.sem-table tbody tr:last-child td{border-bottom:none}.sem-table tbody tr:hover{background:var(--alice, #e7f0ff)}.sem-table .sem-row--active{background:#4392f10a}.sem-table .sem-row--active:hover{background:#4392f114}.sem-name{font-weight:600;color:var(--ink, #0f1f38)}.sem-actions{display:flex;align-items:center;gap:6px;justify-content:flex-end;white-space:nowrap}.sem-badge{display:inline-block;padding:3px 9px;border-radius:6px;font-size:.72rem;font-weight:700;letter-spacing:.03em;white-space:nowrap}.sem-badge--active{background:#22c55e1f;color:#16a34a}.sem-badge--inactive{background:var(--surface-app, #f2f4f8);color:var(--muted, #6a7a96)}.sem-form{display:flex;flex-direction:column;gap:14px}.sem-form-hint{margin:0;padding:10px 12px;border-radius:9px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09));font-size:.78rem;line-height:1.45;color:var(--ink-soft, #2d3f5a)}.sem-form label{display:flex;flex-direction:column;gap:6px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted, #6a7a96)}.sem-form input,.sem-form select{height:40px;padding:0 12px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:8px;font-size:.875rem;font-family:var(--font-sans);background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38);transition:border-color .18s ease,box-shadow .18s ease}.sem-form input:focus,.sem-form select:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f11a;background:#fff}.sem-form input::placeholder{color:var(--muted, #6a7a96)}.sem-form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}@media (max-width: 480px){.sem-form-row{grid-template-columns:1fr}}.form-optional{font-size:.7rem;font-weight:500;text-transform:none;letter-spacing:0;color:var(--muted, #6a7a96);opacity:.8}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:8px;font-size:.875rem;font-weight:600;cursor:pointer;transition:all .18s ease;font-family:var(--font-sans);white-space:nowrap;border:none;padding:10px 18px;line-height:1}.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn-ghost{background:var(--alice, #e7f0ff);color:var(--ink-soft, #2d3f5a);border:1px solid var(--border, rgba(15, 31, 56, .09))}.btn-ghost:hover:not(:disabled){background:#dce8ff;border-color:#4392f140}.btn-outline{background:transparent;color:var(--blue, #4392f1);border:1px solid rgba(67,146,241,.35)}.btn-outline:hover:not(:disabled){background:#4392f10f;border-color:var(--blue, #4392f1)}.btn-danger-outline{background:transparent;color:var(--cinnabar, #dc493a);border:1px solid rgba(220,73,58,.3)}.btn-danger-outline:hover:not(:disabled){background:#dc493a0f;border-color:#dc493a80}.app-semesters .page-fade{width:100%;min-width:0}.sem-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.sem-filter-group{display:inline-flex;min-width:0;gap:3px;padding:4px;border:1px solid #d8e1ea;border-radius:8px;background:#e8edf2}.sem-filter-btn{display:inline-flex;min-height:32px;align-items:center;gap:7px;padding:0 11px;border:0;border-radius:6px;background:transparent;color:#607286;font:700 .75rem var(--font-sans);cursor:pointer}.sem-filter-btn span{display:grid;min-width:20px;height:20px;place-items:center;padding:0 5px;border-radius:5px;background:#6072861a;color:inherit;font-size:.66rem}.sem-filter-btn.active{background:#fff;color:#183b7a;box-shadow:0 1px 4px #19304821}.sem-filter-btn.active span{background:#e9effb}.sem-toolbar-actions{display:flex;min-width:0;align-items:center;justify-content:flex-end;gap:8px}.sem-search{display:flex;width:min(280px,32vw);min-height:38px;align-items:center;gap:8px;padding:0 11px;border:1px solid #ccd7e2;border-radius:7px;background:#fff;color:#6b7d90}.sem-search:focus-within{border-color:#315fbe;box-shadow:0 0 0 3px #315fbe1c}.sem-search input{width:100%;min-width:0;border:0!important;outline:0!important;background:transparent!important;box-shadow:none!important;color:#172b3f;font:500 .8rem var(--font-sans)}.sem-create-btn{min-height:38px;padding:0 14px}.sem-table-wrap{width:100%;max-height:calc(100dvh - 230px);overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;border-color:#dce4ec;border-radius:8px;box-shadow:0 3px 12px #1930480f}.sem-table{min-width:850px;table-layout:fixed}.sem-table th{position:sticky;top:0;z-index:2;height:42px;padding:0 14px;background:#f2f5f7;color:#607286;letter-spacing:0}.sem-table th:nth-child(1){width:20%}.sem-table th:nth-child(2){width:16%}.sem-table th:nth-child(3){width:13%}.sem-table th:nth-child(4),.sem-table th:nth-child(5){width:14%}.sem-table th:nth-child(6){width:10%}.sem-table th:nth-child(7){width:22%}.sem-table td{height:58px;padding:8px 14px;border-bottom-color:#e7ecf1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sem-table tbody tr:hover{background:#f7f9fb}.sem-table .sem-row--active,.sem-table .sem-row--active:hover{background:#f1f6fd}.sem-table .sem-row--active td:first-child{box-shadow:inset 3px 0 #183b7a}.sem-name{color:#18324d;font-weight:750}.sem-actions{min-height:58px;padding-block:6px!important}.sem-actions .btn{min-height:32px;padding:0 10px;border-radius:6px;font-size:.72rem}.sem-table-empty{display:grid;min-height:170px;place-items:center;padding:28px;color:#738497;font-size:.82rem}.sem-badge{border-radius:5px;letter-spacing:0}.sem-badge--active{border:1px solid #b9dccb;background:#e8f5ee;color:#17694f}.sem-badge--inactive{border:1px solid #dce4ec;background:#f5f7f9;color:#66798c}.sem-form{gap:16px}.sem-form label{color:#52657a;letter-spacing:0;text-transform:none}.sem-form input,.sem-form select{border-radius:6px;background:#fff}.sem-copy-section{overflow:hidden;border:1px solid #dce4ec;border-radius:8px;background:#f7f9fb}.sem-copy-section.enabled{border-color:#b8cae4;background:#f4f7fc}.sem-copy-toggle{display:grid!important;min-height:58px;grid-template-columns:36px minmax(0,1fr);align-items:center;gap:11px!important;padding:10px 13px;cursor:pointer}.sem-copy-toggle input,.sem-copy-option input{position:absolute;opacity:0;pointer-events:none}.sem-copy-toggle-control{position:relative;width:36px;height:20px;border-radius:999px;background:#b9c5d1;transition:background .16s ease}.sem-copy-toggle-control:after{position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;box-shadow:0 1px 3px #0f1f3840;content:"";transition:transform .16s ease}.sem-copy-toggle input:checked+.sem-copy-toggle-control{background:#183b7a}.sem-copy-toggle input:checked+.sem-copy-toggle-control:after{transform:translate(16px)}.sem-copy-toggle strong,.sem-copy-toggle small,.sem-copy-option strong,.sem-copy-option small{display:block}.sem-copy-toggle strong,.sem-copy-option strong{color:#20364c;font-size:.79rem}.sem-copy-toggle small,.sem-copy-option small{margin-top:3px;color:#738497;font-size:.7rem;font-weight:500;line-height:1.35}.sem-copy-fields{display:grid;gap:13px;padding:14px;border-top:1px solid #dce4ec;background:#fff}.sem-shared-data{display:grid;gap:3px;padding:10px 12px;border-left:3px solid #183b7a;background:#edf3fc}.sem-shared-data strong{color:#183b7a;font-size:.72rem}.sem-shared-data span{color:#52657a;font-size:.72rem;line-height:1.4}.sem-copy-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.sem-copy-option{display:grid!important;min-height:76px;grid-template-columns:22px minmax(0,1fr);align-items:start;gap:8px!important;padding:10px;border:1px solid #dce4ec;border-radius:7px;background:#fff;cursor:pointer}.sem-copy-option:hover{border-color:#b8cae4;background:#f8fafc}.sem-copy-check{display:grid;width:18px;height:18px;place-items:center;border:1px solid #b9c5d1;border-radius:4px;background:#fff}.sem-copy-option input:checked+.sem-copy-check{border-color:#183b7a;background:#183b7a}.sem-copy-option input:checked+.sem-copy-check:after{color:#fff;content:"✓";font-size:.72rem;font-weight:900}@media (max-width: 820px){.sem-toolbar{align-items:stretch;flex-direction:column}.sem-toolbar-actions{justify-content:stretch}.sem-search{width:auto;flex:1}.sem-copy-options{grid-template-columns:1fr}.sem-table-wrap{max-height:calc(100dvh - 290px)}}@media (max-width: 520px){.sem-filter-group{width:100%;overflow-x:auto}.sem-filter-btn{flex:1;justify-content:center}.sem-toolbar-actions{align-items:stretch;flex-direction:column}.sem-create-btn{width:100%}}.semcopy-picker,.semcopy-modal{display:grid;gap:12px}.semcopy-source{display:flex!important;flex-direction:column;gap:5px;color:#20364c;font-size:.78rem;font-weight:700}.semcopy-source select{padding:9px 12px;border:1px solid #dce4ec;border-radius:7px;font-size:.84rem;background:#fff}.semcopy-warn{margin:0;padding:9px 12px;border-left:3px solid #d97706;border-radius:6px;background:#fffbeb;color:#78350f;font-size:.76rem;line-height:1.5}.semcopy-shared{display:grid;gap:3px;padding:10px 12px;border-left:3px solid #183b7a;background:#edf3fc}.semcopy-shared strong{color:#183b7a;font-size:.72rem}.semcopy-shared span{color:#52657a;font-size:.72rem;line-height:1.4}.semcopy-items{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.semcopy-item{display:grid!important;grid-template-columns:18px minmax(0,1fr) auto;align-items:start;gap:4px 9px!important;padding:10px;border:1px solid #dce4ec;border-radius:7px;background:#fff;cursor:pointer;font-weight:400!important}.semcopy-item.on{border-color:#183b7a;background:#f4f7fc}.semcopy-item input{margin:2px 0 0}.semcopy-item strong,.semcopy-item small,.semcopy-item em{display:block}.semcopy-item strong{color:#20364c;font-size:.79rem}.semcopy-item small{margin-top:2px;color:#738497;font-size:.7rem;line-height:1.35}.semcopy-item em{margin-top:4px;color:#b45309;font-size:.7rem;font-style:normal;font-weight:600}.semcopy-item b{color:#183b7a;font-size:.78rem;font-family:JetBrains Mono,monospace}.semcopy-item i{grid-column:2 / 4;color:#738497;font-size:.68rem;font-style:normal}.semcopy-link{padding:0;border:none;background:none;color:#183b7a;font-weight:700;text-decoration:underline;cursor:pointer;font-size:inherit}.semcopy-mode{display:grid;gap:8px;padding:12px;border:1px solid #dce4ec;border-radius:8px;background:#f8fafc}.semcopy-mode-title{color:#20364c;font-size:.78rem;font-weight:700}.semcopy-mode>label{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;padding:9px 10px;border:1px solid #dce4ec;border-radius:7px;background:#fff;cursor:pointer}.semcopy-mode>label.on{border-color:#183b7a}.semcopy-mode strong,.semcopy-mode small{display:block}.semcopy-mode strong{color:#20364c;font-size:.78rem}.semcopy-mode small{color:#738497;font-size:.7rem;margin-top:2px}.semcopy-mode .semcopy-confirm{border-color:#fca5a5;background:#fef2f2;color:#7f1d1d;font-size:.74rem;line-height:1.45}.semcopy-heading{margin:4px 0 0;color:#20364c;font-size:.82rem}.semcopy-report{overflow-x:auto;border:1px solid #dce4ec;border-radius:8px}.semcopy-report table{width:100%;border-collapse:collapse;font-size:.78rem}.semcopy-report th,.semcopy-report td{padding:8px 10px;border-bottom:1px solid #edf1f5;text-align:left}.semcopy-report th{background:#f4f7fa;color:#52657a;font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}.semcopy-report tr:last-child td{border-bottom:none}.semcopy-skips td{background:#fffbeb}.semcopy-skips ul{margin:0;padding-left:18px;display:grid;gap:3px;color:#78350f;font-size:.74rem}@media (max-width: 820px){.semcopy-items{grid-template-columns:1fr}}.fac-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(340px,1fr));gap:16px}.fac-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:14px;box-shadow:0 2px 8px #0f1f380a;transition:box-shadow .18s ease,border-color .18s ease}.fac-card:hover{border-color:#4392f138;box-shadow:0 4px 16px #0f1f3814}.fac-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.fac-card-name{font-size:.95rem;font-weight:700;color:var(--ink, #0f1f38);margin:0 0 4px}.fac-card-code{display:inline-block;padding:2px 8px;border-radius:6px;font-size:.72rem;font-weight:700;font-family:var(--font-mono);background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);letter-spacing:.04em}.fac-card-actions{display:flex;gap:6px;flex-shrink:0}.fac-dept-section{border-top:1px solid var(--border, rgba(15, 31, 56, .08));padding-top:12px;display:flex;flex-direction:column;gap:8px}.fac-dept-header{display:flex;align-items:center;justify-content:space-between}.fac-dept-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted, #6a7a96)}.fac-dept-count{font-size:.72rem;font-weight:700;font-family:var(--font-mono);background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);padding:1px 7px;border-radius:10px}.fac-dept-list{display:flex;flex-wrap:wrap;gap:6px;min-height:24px}.fac-dept-empty{font-size:.78rem;color:var(--muted, #6a7a96);font-style:italic}.fac-dept-chip{display:inline-flex;align-items:center;gap:4px;padding:3px 8px 3px 10px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:20px;font-size:.78rem;font-weight:500;color:var(--ink-soft, #2d3f5a)}.fac-dept-remove{background:none;border:none;cursor:pointer;color:var(--muted, #6a7a96);font-size:.9rem;line-height:1;padding:0 1px;display:flex;align-items:center;border-radius:50%;transition:color .14s,background .14s}.fac-dept-remove:hover{color:var(--cinnabar, #dc493a);background:#dc493a14}.fac-dept-remove:disabled{opacity:.4;cursor:not-allowed}.fac-dept-add-btn{align-self:flex-start;background:none;border:1px dashed rgba(67,146,241,.35);border-radius:20px;padding:3px 12px;font-size:.78rem;font-weight:600;color:var(--blue, #4392f1);cursor:pointer;transition:background .14s,border-color .14s}.fac-dept-add-btn:hover{background:#4392f10f;border-color:var(--blue, #4392f1)}.fac-assign-list{display:flex;flex-direction:column;gap:6px;max-height:360px;overflow-y:auto}.fac-assign-empty{font-size:.875rem;color:var(--muted, #6a7a96);padding:12px 0;text-align:center}.fac-assign-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:8px;background:var(--surface-app, #f2f4f8)}.fac-assign-row--check{justify-content:flex-start;cursor:pointer;transition:background .14s}.fac-assign-row--check:hover{background:#4392f112}.fac-assign-checkbox{flex-shrink:0;width:16px;height:16px;accent-color:var(--blue, #4392f1);cursor:pointer}.fac-assign-info{display:flex;flex-direction:column;gap:2px;min-width:0}.fac-assign-name{font-size:.875rem;font-weight:600;color:var(--ink, #0f1f38);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.fac-assign-current{font-size:.72rem;color:var(--muted, #6a7a96)}@media (max-width: 640px){.fac-grid{grid-template-columns:1fr}}.fac-timeline{display:flex;flex-direction:column;padding:6px 2px 8px}.fac-tl-node{display:flex;gap:14px;position:relative}.fac-tl-rail{position:relative;flex-shrink:0;width:34px;display:flex;justify-content:center}.fac-tl-icon{width:34px;height:34px;border-radius:50%;border:3px solid #fff;display:grid;place-items:center;margin-top:1px;z-index:1}.fac-tl-icon{margin-top:6px}.fac-tl-rail:before{content:"";position:absolute;top:44px;bottom:-12px;left:50%;transform:translate(-50%);width:2px;background:var(--border, rgba(15, 31, 56, .12))}.fac-tl-node:last-child .fac-tl-rail:before{display:none}.fac-tl-body{flex:1;min-width:0;margin-bottom:16px;background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .1));border-radius:12px;box-shadow:0 1px 4px #0f1f380d;padding:15px 18px;transition:box-shadow .18s}.fac-tl-body:hover{box-shadow:0 6px 20px #0f1f3817}.fac-tl-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.fac-tl-title{display:flex;align-items:center;gap:10px;flex-wrap:wrap;min-width:0}.fac-tl-title strong{font-size:.98rem;font-weight:700;color:var(--ink, #0f1f38)}.fac-tl-code{font-size:.7rem;font-weight:700;letter-spacing:.04em;color:var(--blue, #4392f1);background:#4392f11a;padding:2px 8px;border-radius:999px}.fac-tl-count{font-size:.74rem;color:var(--muted, #6a7a96)}.fac-tl-actions{display:flex;gap:4px}.fac-tl-depts{display:flex;flex-direction:column;gap:1px;margin-top:11px;padding-top:11px;padding-left:10px;border-top:1px dashed var(--border, rgba(15, 31, 56, .12))}.fac-tl-dept{display:flex;align-items:center;gap:9px;padding:4px 0;font-size:.85rem;color:var(--ink-soft, #2d3f5a)}.fac-tl-dept-dot{width:5px;height:5px;border-radius:50%;background:var(--muted, #94a3b8);flex-shrink:0}.fac-tl-dept-remove{opacity:0;transition:opacity .12s}.fac-tl-dept:hover .fac-tl-dept-remove{opacity:1}.fac-tl-dept-remove{border:none;background:transparent;color:var(--muted, #94a3b8);cursor:pointer;font-size:1rem;line-height:1;padding:0 2px;border-radius:4px}.fac-tl-dept-remove:hover{color:var(--cinnabar, #dc493a);background:#dc493a14}.fac-tl-empty{font-size:.8rem;color:var(--muted, #6a7a96);font-style:italic}.dean-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:4px}.dean-summary-item{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:12px;border-top:3px solid var(--blue, #4392f1);padding:14px 18px;display:flex;flex-direction:column;gap:4px;box-shadow:0 1px 4px #0f1f380a}.dean-summary-item:nth-child(2){border-top-color:#8b5cf6}.dean-summary-item:nth-child(3){border-top-color:#f59e0b}.dean-summary-item:nth-child(4){border-top-color:#22c55e}.dean-summary-value{font-size:1.6rem;font-weight:800;font-family:var(--font-mono);color:var(--ink, #0f1f38);line-height:1}.dean-summary-label{font-size:.72rem;color:var(--muted, #6a7a96);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.dean-dept-group{margin-bottom:14px}.dean-dept-group-header{display:flex;align-items:center;justify-content:space-between;padding:6px 4px 8px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .08));margin-bottom:8px}.dean-dept-group-name{font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft, #2d3f5a)}.dean-dept-group-count{font-size:.72rem;font-weight:700;font-family:var(--font-mono);background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);padding:1px 7px;border-radius:10px}.dean-draft-toggle{display:flex;align-items:center;gap:7px;width:100%;margin-top:6px;padding:7px 10px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .08));border-radius:8px;cursor:pointer;font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);transition:background .15s,color .15s}.dean-draft-toggle:hover{background:#eaeef5;color:var(--ink-soft, #2d3f5a)}.dean-draft-count{margin-left:auto;font-size:.7rem;font-weight:700;font-family:var(--font-mono);background:#fff;color:var(--muted, #6a7a96);padding:1px 7px;border-radius:10px;border:1px solid var(--border, rgba(15, 31, 56, .08))}.dean-draft-list{display:flex;flex-direction:column;gap:6px;margin-top:6px;padding-left:8px;border-left:2px solid var(--border, rgba(15, 31, 56, .1))}.dean-draft-empty{margin:4px 0 0;padding:6px 4px;font-size:.76rem;color:var(--muted, #6a7a96);font-style:italic}.dean-tt-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:8px 0;border-bottom:1px solid var(--border, rgba(15, 31, 56, .08))}.dean-dept-badge{font-size:.72rem;font-weight:600;background:var(--surface-app, #f2f4f8);color:var(--ink-soft, #2d3f5a);padding:2px 8px;border-radius:10px;border:1px solid var(--border, rgba(15, 31, 56, .09))}.dean-prog-code{font-family:var(--font-mono);font-size:.78rem;font-weight:700;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);padding:2px 7px;border-radius:6px;letter-spacing:.04em}.dean-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}.dean-overview-card{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:8px;text-align:left;cursor:pointer;transition:border-color .15s,box-shadow .15s;box-shadow:0 1px 4px #0f1f380a}.dean-overview-card:hover{border-color:#4392f159;box-shadow:0 4px 16px #4392f11a}.dean-overview-card-name{font-size:.92rem;font-weight:700;color:var(--ink, #0f1f38);line-height:1.3}.dean-overview-card-badges{display:flex;gap:6px;flex-wrap:wrap}.dean-overview-card-cta{margin-top:4px;font-size:.75rem;font-weight:600;color:var(--blue, #4392f1)}.dean-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;min-height:100vh;min-height:100dvh;background:#0a142873;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px;overflow-y:auto}.dean-modal{background:#fff;border-radius:16px;box-shadow:0 24px 64px #0a142838;display:flex;flex-direction:column;overflow:hidden;max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);width:100%}.dean-modal--xl{max-width:1100px}.dean-modal-header{display:flex;align-items:flex-start;justify-content:space-between;padding:20px 24px 16px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09));gap:12px;flex-shrink:0}.dean-modal-title{font-size:1rem;font-weight:700;color:var(--ink, #0f1f38);margin:0}.dean-modal-close{background:none;border:none;font-size:1rem;color:var(--muted, #6a7a96);cursor:pointer;padding:2px 6px;border-radius:6px;line-height:1;flex-shrink:0}.dean-modal-close:hover{background:var(--surface-app, #f2f4f8);color:var(--ink, #0f1f38)}.dean-two-panel{display:flex;flex:1;overflow:hidden;min-height:0}.dean-two-panel-sidebar{width:220px;min-width:180px;flex-shrink:0;border-right:1px solid var(--border, rgba(15, 31, 56, .09));overflow-y:auto;padding:8px 0 12px;display:flex;flex-direction:column;gap:1px}.dean-two-panel-search{display:flex;align-items:center;gap:8px;margin:4px 10px 8px;background:var(--surface-app, #f2f4f8);border:1px solid var(--border, rgba(15, 31, 56, .1));border-radius:8px;padding:6px 10px;color:var(--muted, #6a7a96);flex-shrink:0}.dean-two-panel-search input{border:none;background:none;outline:none;font-size:.82rem;color:var(--ink, #0f1f38);width:100%}.dean-two-panel-section{font-size:.67rem;font-weight:700;text-transform:uppercase;letter-spacing:.09em;color:var(--muted, #6a7a96);padding:10px 14px 4px;margin:0;flex-shrink:0}.dean-two-panel-item{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 14px;background:none;border:none;text-align:left;cursor:pointer;font-size:.83rem;color:var(--ink-soft, #2d3f5a);transition:background .12s;width:100%;flex-shrink:0}.dean-two-panel-item:hover{background:var(--surface-app, #f2f4f8)}.dean-two-panel-item.active{background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);font-weight:600;border-right:2px solid var(--blue, #4392f1)}.dean-two-panel-badge{font-size:.7rem;font-weight:700;font-family:var(--font-mono);background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);padding:1px 6px;border-radius:10px;flex-shrink:0}.dean-two-panel-mono{font-family:var(--font-mono);font-size:.8rem;font-weight:700}.dean-two-panel-content{flex:1;overflow-y:auto;padding:20px 24px}.dean-two-panel-content-title{font-size:.95rem;font-weight:700;color:var(--ink, #0f1f38);margin:0 0 14px}.dean-two-panel-content-sub{font-weight:400;color:var(--muted, #6a7a96);font-size:.85rem}.dean-view-table-wrap{overflow:auto}.dean-view-table{width:100%;border-collapse:collapse;font-size:.84rem}.dean-view-cohort-col{width:140px;min-width:120px;position:sticky;left:0;z-index:2;background:#fff}.dean-view-slot-col{min-width:130px}.dean-view-table thead th{padding:10px 14px;text-align:left;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);background:var(--surface-app, #f2f4f8);border-bottom:1px solid var(--border, rgba(15, 31, 56, .1));position:sticky;top:0;z-index:3}.dean-view-table thead th.dean-view-cohort-col{z-index:4}.dean-view-cohort-cell{font-size:.78rem;font-weight:700;padding:8px 12px;border-bottom:1px solid rgba(255,255,255,.15);position:sticky;left:0;z-index:1}.dean-view-empty-cell{border-bottom:1px solid var(--border, rgba(15, 31, 56, .06));background:var(--surface-app, #f2f4f8)}.dean-view-session-cell{padding:4px 6px;border-bottom:1px solid rgba(255,255,255,.15);vertical-align:top}.dean-view-session-block{display:flex;flex-direction:column;gap:2px;padding:4px 6px;border-radius:6px;font-size:.78rem}.dean-view-course{font-weight:700;font-family:var(--font-mono);font-size:.75rem}.dean-view-room{font-size:.73rem;opacity:.8}.dean-view-lecturer{font-size:.72rem;opacity:.7;font-style:italic}.dean-prog-table{width:100%;border-collapse:collapse;font-size:.84rem}.dean-prog-table thead tr{background:#0f1f3808}.dean-prog-table th{padding:9px 16px;text-align:left;font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--muted, #6a7a96);border-bottom:1px solid var(--border, rgba(15, 31, 56, .08))}.dean-prog-table td{padding:10px 16px;color:var(--ink-soft, #2d3f5a);border-bottom:1px solid var(--border, rgba(15, 31, 56, .06))}.dean-prog-table tbody tr:last-child td{border-bottom:none}.dean-prog-table tbody tr:hover td{background:#4392f10a}.dean-loading{display:flex;align-items:center;justify-content:center;gap:12px;padding:60px 0;color:var(--muted, #6a7a96);font-size:.9rem}.dean-loading-spinner{display:inline-block;width:18px;height:18px;border:2px solid var(--border, rgba(15, 31, 56, .15));border-top-color:var(--blue, #4392f1);border-radius:50%;animation:dean-spin .7s linear infinite;flex-shrink:0}@keyframes dean-spin{to{transform:rotate(360deg)}}.dean-error-box{background:#fef2f2;border:1px solid #fca5a5;border-radius:10px;padding:18px 20px;color:#991b1b;font-size:.88rem}.dean-error-box p{margin:6px 0 0;color:#b91c1c;font-size:.84rem}.dean-no-faculty{display:flex;flex-direction:column;align-items:center;gap:12px;padding:60px 0 40px;text-align:center}.dean-no-faculty-icon{color:var(--muted, #6a7a96);opacity:.45}.dean-no-faculty-msg{font-size:1rem;font-weight:600;color:var(--ink-soft, #2d3f5a);margin:0}.dean-no-faculty-sub{font-size:.84rem;color:var(--muted, #6a7a96);margin:0;max-width:360px}.dean-inline-sections{background:#fff;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:14px;overflow:hidden;box-shadow:0 1px 4px #0f1f380a}.dean-single-panel{flex:1;overflow-y:auto;padding:0 0 24px}.dean-sp-section{border-bottom:1px solid var(--border, rgba(15, 31, 56, .08))}.dean-sp-section:last-child{border-bottom:none}.dean-sp-dept-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 20px;flex-wrap:wrap;width:100%;background:none;border:none;cursor:pointer;text-align:left;transition:background .13s}.dean-sp-dept-header:hover{background:var(--surface-app, #f2f4f8)}.dean-sp-dept-name{font-size:.82rem;font-weight:700;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-soft, #2d3f5a)}.dean-sp-empty{padding:10px 24px 16px;color:var(--muted, #6a7a96);font-size:.84rem;margin:0}@media (max-width: 860px){.dean-summary{grid-template-columns:repeat(2,1fr)}.dean-two-panel-sidebar{width:180px;min-width:160px}}@media (max-width: 640px){.dean-two-panel{flex-direction:column}.dean-two-panel-sidebar{width:100%;max-height:200px;border-right:none;border-bottom:1px solid var(--border, rgba(15, 31, 56, .09))}.dean-card-grid{grid-template-columns:1fr 1fr}}@media (max-width: 480px){.dean-summary{grid-template-columns:1fr 1fr}.dean-card-grid{grid-template-columns:1fr}.dean-modal{max-height:98vh;border-radius:12px}}.asn-page{display:flex;flex-direction:column;gap:16px}.asn-sem-bar{background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);padding:12px 18px;display:flex;align-items:center;gap:14px;flex-shrink:0;box-shadow:var(--shadow-xs)}.asn-no-sem{display:flex;align-items:center;gap:10px;color:#b45309;font-size:.83rem}.asn-sem-select-wrap{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.asn-sem-label{font-size:.69rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--muted);flex-shrink:0}.asn-sem-select{padding:6px 12px;border:1px solid var(--border);border-radius:var(--r-md, 8px);background:var(--surface-app, #f2f4f8);font-size:.83rem;color:var(--ink);font-family:inherit;cursor:pointer;min-width:230px;outline:none;transition:border-color .15s}.asn-sem-select:focus{border-color:var(--accent, #6366f1)}.asn-sem-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;background:var(--surface-app);border:1px solid var(--border);border-radius:99px;font-size:.72rem;color:var(--muted)}.asn-sem-dot{width:7px;height:7px;border-radius:50%;background:var(--border);flex-shrink:0}.asn-sem-dot.active{background:#22c55e}.asn-template-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:34px;margin-bottom:16px;padding:7px 12px;border-radius:8px;border:1px solid rgba(67,146,241,.22);background:#fff;color:var(--accent, #4392f1);font-size:.8rem;font-weight:700;font-family:inherit;cursor:pointer;text-decoration:none;transition:background .15s ease,border-color .15s ease,transform .15s ease}.asn-template-btn:hover{background:var(--alice, #eef6ff);border-color:#4392f159}.asn-bulk-conflicts{border:1px solid rgba(217,119,6,.28);background:#fffbebc7;border-radius:10px;padding:12px;margin-bottom:16px}.asn-bulk-conflicts-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:10px}.asn-bulk-conflicts-head strong{display:block;font-size:.86rem;color:#78350f}.asn-bulk-conflicts-head span{display:block;margin-top:3px;font-size:.76rem;color:#92400e;line-height:1.35}.asn-bulk-all{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;font-size:.78rem;font-weight:700;color:#78350f}.asn-bulk-conflict-list{display:grid;gap:8px;max-height:180px;overflow:auto}.asn-bulk-conflict-row{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:10px;align-items:center;padding:8px 10px;border:1px solid rgba(217,119,6,.2);border-radius:8px;background:#fff}.asn-bulk-conflict-row span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.82rem;font-weight:700;color:var(--ink)}.asn-bulk-conflict-row select{width:100%;border:1px solid var(--border);border-radius:7px;padding:6px 8px;background:var(--surface-card, #fff);color:var(--ink);font:inherit;font-size:.78rem}.asn-body{display:flex;background:var(--surface-card, #fff);border:1px solid var(--border);border-radius:var(--r-lg, 12px);overflow:hidden;box-shadow:var(--shadow-xs);height:calc(100vh - 210px);min-height:520px}.asn-left{width:256px;flex-shrink:0;display:flex;flex-direction:column;border-right:1px solid var(--border);overflow:hidden}.asn-left-header{padding:14px 12px 10px;border-bottom:1px solid var(--border);flex-shrink:0;display:flex;flex-direction:column;gap:8px}.asn-panel-title{font-size:.67rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.asn-search-wrap{position:relative;display:flex;align-items:center}.asn-search-icon{position:absolute;left:8px;color:var(--muted);pointer-events:none;flex-shrink:0}.asn-search{width:100%;padding:6px 10px 6px 28px;border:1px solid var(--border);border-radius:var(--r-sm, 6px);background:var(--surface-app);font-size:.8rem;color:var(--ink);font-family:inherit;outline:none;transition:border-color .15s}.asn-search:focus{border-color:var(--accent, #6366f1)}.asn-lec-list{flex:1;overflow-y:auto;padding:6px}.asn-lec-item{width:100%;display:flex;align-items:center;gap:10px;padding:8px 10px;border:none;border-radius:var(--r-md, 8px);background:transparent;cursor:pointer;text-align:left;transition:background .13s;margin-bottom:1px}.asn-lec-item:hover{background:var(--surface-app, #f2f4f8)}.asn-lec-item.active{background:#6366f114;box-shadow:inset 2.5px 0 0 var(--accent, #6366f1)}.asn-lec-avatar{width:30px;height:30px;border-radius:50%;background:var(--alice, #e7f0ff);color:var(--blue, #4392f1);font-size:.78rem;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-mono)}.asn-lec-item.active .asn-lec-avatar{background:#6366f124;color:var(--accent, #6366f1)}.asn-lec-avatar--prog{background:#0d94881f;color:#0d9488;border-radius:8px;font-size:.72rem}.asn-lec-item.active .asn-lec-avatar--prog{background:#0d948833;color:#0f766e}.asn-lec-info{display:flex;flex-direction:column;gap:1px;min-width:0}.asn-lec-name{font-size:.82rem;font-weight:600;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asn-lec-item.active .asn-lec-name{color:var(--accent, #6366f1)}.asn-lec-count{font-size:.66rem;color:var(--muted)}.asn-lec-empty{padding:20px 12px;font-size:.8rem;color:var(--muted);text-align:center}.asn-right{flex:1;display:flex;flex-direction:column;min-width:0;overflow:hidden}.asn-empty-state{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:var(--muted);padding:40px}.asn-empty-state svg{opacity:.2}.asn-empty-state p{font-size:.85rem;text-align:center;margin:0;max-width:280px;line-height:1.5}.asn-right-header{padding:14px 18px 12px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;gap:14px;flex-shrink:0}.asn-right-lec-info{display:flex;flex-direction:column;gap:2px;min-width:0}.asn-right-lec-name{font-size:.95rem;font-weight:700;color:var(--ink)}.asn-right-lec-sem{font-size:.71rem;color:var(--muted);font-family:var(--font-mono)}.asn-right-actions{display:flex;align-items:center;gap:10px;flex-shrink:0}.asn-right-pagination{display:flex;justify-content:flex-end;align-items:center;gap:16px;flex-wrap:wrap;border-top:1px solid var(--border);background:var(--surface-card, #fff);padding:8px 12px;flex-shrink:0}.asn-right-pagination:empty{display:none}.asn-page-group{display:flex;align-items:center;gap:8px;min-width:0}.asn-page-group-label{color:var(--muted);font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}.asn-page-group .pagination{border-top:none;padding:0;background:transparent;gap:8px}.asn-page-group .pagination-info{font-size:.68rem}.asn-changes-pill{font-size:.7rem;font-weight:600;color:#b45309;background:#fef3c7;border:1px solid #f59e0b;border-radius:99px;padding:2px 9px}.asn-save-btn{padding:7px 18px;border-radius:var(--r-md, 8px);border:none;background:var(--accent, #6366f1);color:#fff;font-size:.8rem;font-weight:600;cursor:pointer;transition:background .15s,opacity .15s;white-space:nowrap}.asn-save-btn:hover:not(:disabled){background:#4f46e5}.asn-save-btn:disabled{opacity:.45;cursor:not-allowed}.asn-course-filter{padding:10px 14px;border-bottom:1px solid var(--border);display:flex;align-items:center;gap:10px;flex-shrink:0}.asn-course-search-wrap{position:relative;flex:1;display:flex;align-items:center}.asn-course-search-icon{position:absolute;left:8px;color:var(--muted);pointer-events:none}.asn-course-search{width:100%;padding:6px 10px 6px 28px;border:1px solid var(--border);border-radius:var(--r-sm, 6px);background:var(--surface-app);font-size:.8rem;color:var(--ink);font-family:inherit;outline:none;transition:border-color .15s}.asn-course-search:focus{border-color:var(--accent, #6366f1)}.asn-total-selected{padding:3px 10px;background:#6366f11a;color:var(--accent, #6366f1);font-size:.68rem;font-weight:700;border-radius:99px;white-space:nowrap;font-family:var(--font-mono);flex-shrink:0}.asn-prog-groups{flex:1;overflow-y:auto;padding:8px;display:flex;flex-direction:column;gap:4px}.asn-prog-group{border:1px solid var(--border);border-radius:var(--r-md, 8px);overflow:hidden}.asn-prog-header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:var(--surface-app, #f2f4f8);border:none;cursor:pointer;text-align:left;gap:10px;transition:background .13s}.asn-prog-header:hover{background:var(--alice, #e7f0ff)}.asn-prog-header-left{display:flex;align-items:center;gap:8px;min-width:0}.asn-prog-chevron{flex-shrink:0;transition:transform .18s;color:var(--muted)}.asn-prog-chevron.open{transform:rotate(90deg)}.asn-prog-code{font-size:.73rem;font-weight:700;font-family:var(--font-mono);color:var(--blue, #4392f1);background:var(--alice, #e7f0ff);padding:2px 7px;border-radius:4px;flex-shrink:0}.asn-prog-name{font-size:.8rem;color:var(--ink-soft, #3a4f70);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asn-prog-badge{display:inline-flex;align-items:center;justify-content:center;min-width:22px;height:20px;padding:0 6px;border-radius:99px;font-size:.64rem;font-weight:700;font-family:var(--font-mono);background:#6366f11f;color:var(--accent, #6366f1);flex-shrink:0}.asn-course-list{padding:6px 8px;display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:2px}.asn-course-item{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:var(--r-sm, 6px);cursor:pointer;transition:background .12s}.asn-course-item:hover{background:var(--surface-app, #f2f4f8)}.asn-course-item.checked{background:#6366f10f}.asn-course-checkbox{width:14px;height:14px;flex-shrink:0;accent-color:var(--accent, #6366f1);cursor:pointer}.asn-course-code{font-family:var(--font-mono);font-size:.71rem;font-weight:700;color:var(--ink);flex-shrink:0;min-width:72px}.asn-course-item.checked .asn-course-code{color:var(--accent, #6366f1)}.asn-course-title{color:var(--muted);font-size:.76rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asn-course-item.checked .asn-course-title{color:var(--ink-soft)}.asn-course-empty{padding:14px 10px;font-size:.8rem;color:var(--muted);text-align:center;grid-column:1 / -1}.asn-assign-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:var(--r-md, 8px);border:none;background:var(--accent, #6366f1);color:#fff;font-size:.8rem;font-weight:600;cursor:pointer;transition:background .15s;white-space:nowrap;font-family:inherit}.asn-assign-btn:hover{background:#4f46e5}.asn-asg-list{flex:1;overflow-y:auto;padding:6px 10px;display:flex;flex-direction:column;gap:2px}.asn-asg-empty{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--muted);padding:40px 20px;text-align:center}.asn-asg-empty svg{opacity:.18}.asn-asg-empty p{font-size:.85rem;line-height:1.6;margin:0;max-width:240px}.asn-table-wrap{flex:1;overflow-y:auto;padding:4px 6px 10px}.asn-table{width:100%;border-collapse:collapse;font-size:.8rem}.asn-table thead th{position:sticky;top:0;z-index:1;background:var(--surface-card, #fff);text-align:left;font-size:.66rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96);padding:9px 12px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .1));white-space:nowrap}.asn-table tbody td{padding:10px 12px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .06));vertical-align:middle}.asn-table tbody tr{transition:background .12s}.asn-table tbody tr:hover{background:var(--surface-app, #f2f4f8)}.asn-table tbody tr:last-child td{border-bottom:none}.asn-table tbody tr.asn-tr-confirming{background:#fef2f2}.asn-table tbody tr.asn-target-row td{background:#edf7f3}.asn-table tbody tr.asn-target-row td:first-child{box-shadow:inset 3px 0 #18835f}.asn-td-title{color:var(--ink-soft, #3a4f70);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asn-pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-size:.68rem;font-weight:700;letter-spacing:.01em;white-space:nowrap}.asn-pill:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.asn-pill--active{background:#f0fdf4;color:#15803d}.asn-pill--other{background:#fef9c3;color:#92400e;font-family:var(--font-mono)}.asn-td-actions{width:1%;text-align:right;white-space:nowrap}.asn-asg-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-radius:var(--r-sm, 6px);transition:background .12s}.asn-asg-row:hover{background:var(--surface-app, #f2f4f8)}.asn-asg-row.confirming{background:#fef2f2}.asn-asg-row.asn-target-row{border:1px solid #b9d7cc;background:#edf7f3;box-shadow:inset 3px 0 #18835f}.asn-asg-info{display:flex;align-items:center;gap:8px;flex:1;min-width:0;flex-wrap:wrap}.asn-asg-course-badge{font-family:var(--font-mono);font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:4px;flex-shrink:0;background:#eff6ff;color:#1d4ed8}.asn-asg-prog-badge{font-family:var(--font-mono);font-size:.68rem;font-weight:700;padding:2px 7px;border-radius:4px;flex-shrink:0;background:#f0fdf4;color:#15803d}.asn-asg-course-title{font-size:.78rem;color:var(--ink-soft, #3a4f70);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.asn-asg-prog-name{font-size:.78rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.asn-asg-dot{width:4px;height:4px;border-radius:50%;background:var(--border);flex-shrink:0}.asn-asg-sem-tag{font-size:.62rem;font-weight:700;padding:1px 6px;border-radius:99px;background:#fef9c3;color:#92400e;border:1px solid #fde68a;flex-shrink:0;font-family:var(--font-mono)}.asn-asg-actions{flex-shrink:0;display:flex;align-items:center;gap:4px}.asn-asg-manage-teachers-btn{min-height:28px;padding:0 9px;display:flex;align-items:center;justify-content:center;border:1px solid rgba(16,123,112,.22);background:transparent;border-radius:var(--r-sm, 6px);color:#147d72;cursor:pointer;font:inherit;font-size:.7rem;font-weight:650;white-space:nowrap;transition:background .12s,color .12s}.asn-asg-manage-teachers-btn:hover{background:#147d721a;color:#0f625a}.asn-asg-del-btn{width:28px;height:28px;display:flex;align-items:center;justify-content:center;border:none;background:transparent;border-radius:var(--r-sm, 6px);color:var(--muted);cursor:pointer;transition:background .12s,color .12s}.asn-asg-del-btn:hover{background:#fee2e2;color:#dc2626}.asn-asg-confirm{display:flex;align-items:center;gap:6px}.asn-asg-confirm>span{color:var(--muted);font-size:.73rem}.asn-asg-confirm-yes{padding:3px 9px;border:none;border-radius:var(--r-sm, 6px);background:#dc2626;color:#fff;font-size:.72rem;font-weight:600;cursor:pointer;transition:background .13s;font-family:inherit}.asn-asg-confirm-yes:hover{background:#b91c1c}.asn-asg-confirm-no{padding:3px 9px;border:1px solid var(--border);border-radius:var(--r-sm, 6px);background:transparent;font-size:.72rem;color:var(--ink-soft);cursor:pointer;transition:background .13s;font-family:inherit}.asn-asg-confirm-no:hover{background:var(--surface-app)}.asn-modal-pickers{display:grid;grid-template-columns:1fr 1fr;gap:16px}.asn-modal-section{display:flex;flex-direction:column;gap:6px}.asn-modal-section-label{font-size:.67rem;font-weight:800;text-transform:uppercase;letter-spacing:.1em;color:var(--muted)}.asn-modal-list{border:1px solid var(--border);border-radius:var(--r-md, 8px);overflow-y:auto;max-height:min(58vh,540px);min-height:240px;background:var(--surface-app, #f2f4f8)}.asn-modal-list-empty{padding:18px 14px;font-size:.8rem;color:var(--muted);text-align:center;line-height:1.5}.asn-modal-opt{width:100%;display:flex;align-items:center;gap:10px;padding:7px 10px;border:none;border-bottom:1px solid var(--border);background:transparent;text-align:left;cursor:pointer;transition:background .12s}.asn-modal-opt:last-child{border-bottom:none}.asn-modal-opt:hover{background:var(--alice, #e7f0ff)}.asn-modal-opt.selected{background:#6366f114;box-shadow:inset 3px 0 0 var(--accent, #6366f1)}.asn-modal-opt-code{font-family:var(--font-mono);font-size:.7rem;font-weight:700;color:var(--ink);flex-shrink:0;min-width:68px}.asn-modal-opt.selected .asn-modal-opt-code{color:var(--accent, #6366f1)}.asn-modal-opt-right{display:flex;flex-direction:column;gap:1px;min-width:0;overflow:hidden}.asn-modal-opt-name{font-size:.75rem;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asn-modal-opt.selected .asn-modal-opt-name{color:var(--ink-soft)}.asn-modal-opt-status{font-size:.62rem;font-weight:700;letter-spacing:.03em}.asn-modal-opt-status.shared{color:#315fbe}.asn-modal-opt-status.self-assigned{color:#92400e}.asn-modal-opt.shared{background:#f4f8ff!important;box-shadow:inset 3px 0 #315fbe!important}.asn-modal-opt.shared.selected{background:#e9effb!important}.asn-modal-opt.self-assigned{opacity:.65;cursor:not-allowed;background:#fffbeb!important;box-shadow:none!important}.asn-modal-hint{font-style:italic;color:var(--muted)!important}.asn-modal-section-hint{font-weight:600;text-transform:none;letter-spacing:0;font-size:.67rem;color:var(--accent, #6366f1);font-style:italic;font-family:inherit}.asn-conflict-msg{padding:9px 12px;background:#fef2f2;border:1px solid #fecaca;border-radius:var(--r-sm, 6px);color:#dc2626;font-size:.78rem;line-height:1.45}.asn-modal-footer{display:flex;gap:8px;justify-content:flex-end;padding-top:6px;border-top:1px solid var(--border);margin-top:4px}.asn-cancel-btn{padding:7px 16px;border-radius:var(--r-md, 8px);border:1px solid var(--border);background:transparent;font-size:.8rem;color:var(--ink-soft);cursor:pointer;transition:background .13s;font-family:inherit}.asn-cancel-btn:hover{background:var(--surface-app)}.asn-bulk-review{display:grid;grid-template-columns:280px minmax(0,1fr);grid-template-rows:minmax(0,1fr);height:min(68vh,680px);border:1px solid var(--border);border-radius:var(--r-lg, 12px);overflow:hidden;background:var(--surface-card, #fff)}.asn-bulk-groups{border-right:1px solid var(--border);min-height:0;background:var(--surface-app, #f2f4f8);display:flex;flex-direction:column;min-width:0}.asn-bulk-groups-title{padding:11px 12px;border-bottom:1px solid var(--border);font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}.asn-bulk-groups-list{overflow-y:auto;min-height:0;flex:1;padding:6px}.asn-bulk-group{width:100%;border:1px solid transparent;border-radius:var(--r-md, 8px);background:transparent;padding:9px 10px;display:flex;flex-direction:column;gap:3px;text-align:left;cursor:pointer;margin-bottom:4px}.asn-bulk-group:hover{background:#fff}.asn-bulk-group.active{background:#fff;border-color:#6366f147;box-shadow:inset 3px 0 0 var(--accent, #6366f1)}.asn-bulk-group.has-errors{box-shadow:inset 3px 0 #dc2626}.asn-bulk-group.active.has-errors{border-color:#fecaca}.asn-bulk-group-name{font-size:.82rem;font-weight:700;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.asn-bulk-group-meta{font-size:.67rem;color:var(--muted)}.asn-bulk-detail{display:flex;flex-direction:column;min-width:0;min-height:0;overflow:hidden}.asn-bulk-detail-head{padding:11px 14px;border-bottom:1px solid var(--border);background:#fff}.asn-bulk-detail-head>div{display:flex;flex-direction:column;gap:2px}.asn-bulk-detail-head strong{font-size:.92rem;color:var(--ink)}.asn-bulk-detail-head span{font-size:.72rem;color:var(--muted)}.asn-bulk-table-wrap{overflow:auto;flex:1;min-height:0;overscroll-behavior:contain}.asn-bulk-table{width:100%;border-collapse:collapse;font-size:.79rem}.asn-bulk-table th{position:sticky;top:0;z-index:1;background:var(--surface-app, #f2f4f8);color:var(--muted);text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);font-size:.68rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase}.asn-bulk-table td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}.asn-bulk-row.error{background:#fff5f5}.asn-bulk-row.duplicate{background:#fffbeb}.asn-bulk-table td strong{display:block;color:var(--ink);font-family:var(--font-mono);font-size:.76rem}.asn-bulk-table td span,.asn-bulk-table td small{display:block;color:var(--muted);font-size:.7rem;margin-top:2px}.asn-bulk-table td small{color:#991b1b;line-height:1.35}.asn-bulk-status{-webkit-user-select:none;user-select:none}.asn-bulk-status{display:inline-flex!important;width:fit-content;padding:2px 8px;border-radius:999px;font-size:.68rem!important;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.asn-bulk-status.valid{background:#d1fae5;color:#065f46}.asn-bulk-status.error{background:#fee2e2;color:#991b1b}.asn-bulk-status.duplicate{background:#fef3c7;color:#92400e}.asn-bulk-status.shared{background:#dbeafe;color:#1e40af}.asn-bulk-status.choose{background:#e0e7ff;color:#3730a3}.asn-bulk-cohort-tools{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.asn-bulk-cohort-auto,.asn-bulk-cohort-reset{border:1px solid #c7d2fe;background:#eef2ff;color:#3730a3;border-radius:8px;padding:5px 12px;font-size:.74rem;font-weight:700;cursor:pointer}.asn-bulk-cohort-auto:hover,.asn-bulk-cohort-reset:hover{background:#e0e7ff}.asn-bulk-cohort-reset{border-color:#d1d5db;background:#f9fafb;color:#374151}.asn-bulk-cohort-reset:hover{background:#f3f4f6}@media (max-width: 900px){.asn-body{flex-direction:column;height:auto;min-height:0}.asn-left{width:100%;height:180px;border-right:none;border-bottom:1px solid var(--border)}.asn-lec-list{display:flex;flex-direction:row;overflow-x:auto;overflow-y:hidden;padding:4px 6px;gap:4px}.asn-lec-item{flex-direction:column;align-items:center;min-width:80px;padding:8px 6px;text-align:center}.asn-lec-info{align-items:center}.asn-lec-name{font-size:.72rem}.asn-right{min-height:400px}}@media (max-width: 640px){.asn-modal-pickers{grid-template-columns:1fr}.asn-modal-list{max-height:150px}}@media (max-width: 560px){.asn-sem-select{min-width:200px}}.asn-modal-check{width:16px;height:16px;flex-shrink:0;border:1.5px solid var(--border, #cbd5e1);border-radius:4px;display:inline-flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:800;color:#fff;line-height:1;transition:background .12s,border-color .12s}.asn-modal-check.on{background:var(--accent, #6366f1);border-color:var(--accent, #6366f1)}.asn-modal-opt--multi:disabled .asn-modal-check{opacity:.4}.asn-modal-opt.unassigned-course{background:#fff4e6;box-shadow:inset 3px 0 #f59e0b}.asn-modal-opt.unassigned-course:hover{background:#ffe9cc}.asn-modal-opt.unassigned-course.selected{background:#ffe1b3;box-shadow:inset 3px 0 0 var(--accent, #6366f1)}.asn-modal-opt-flag{margin-left:auto;flex-shrink:0;font-size:.6rem;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:#b45309;background:#ffe1b3;padding:2px 7px;border-radius:99px}.asn-modal-pager{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px}.asn-modal-pager-btn{border:1px solid var(--border);background:#fff;border-radius:7px;padding:5px 12px;font-size:.78rem;font-weight:600;color:var(--ink-soft, #2d3f5a);cursor:pointer}.asn-modal-pager-btn:disabled{opacity:.45;cursor:default}.asn-modal-pager-btn:not(:disabled):hover{border-color:var(--blue, #4392f1);color:var(--blue, #4392f1)}.asn-modal-pager-info{font-size:.76rem;color:var(--muted);font-weight:600}.asn-modal-pickers--single{grid-template-columns:1fr}.asn-modal-pickers--single .asn-modal-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start}.asn-modal-pickers--single .asn-modal-opt{border-right:1px solid var(--border)}.asn-modal-pickers--single .asn-modal-opt:nth-child(2n){border-right:none}.asn-modal-pickers--single .asn-modal-opt-name{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media (max-width: 720px){.asn-modal-pickers--single .asn-modal-list{grid-template-columns:1fr}.asn-modal-pickers--single .asn-modal-opt{border-right:none}}.asn-bulk-section{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:10px 14px;margin-bottom:12px;background:var(--surface, #fff);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:10px}.asn-bulk-section-info{display:flex;flex-direction:column;gap:2px;min-width:0}.asn-bulk-section-title{font-size:.9rem;font-weight:700;color:var(--ink, #0f1f38)}.asn-bulk-section-sub{font-size:.78rem;color:var(--muted, #6a7a96)}.asn-tabs-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}.asn-tabs-row>:first-child{flex:0 1 auto;min-width:0}.asn-bulk-btn{margin-left:auto;display:inline-flex;align-items:center;gap:6px;font-size:.85rem;white-space:nowrap;flex-shrink:0}.asn-bulk-status.choose{background:#fef3c7;color:#92400e}.asn-bulk-row.choose{background:#fffbeb}.asn-bulk-studytype{display:block;margin-top:4px;font:inherit;font-size:12px;padding:2px 6px;border:1px solid #d97706;border-radius:4px;background:#fff;color:#92400e;max-width:160px}.asn-bulk-studytype:invalid,.asn-bulk-studytype[value=""]{border-style:dashed}.asn-bulk-studytype{width:100%;max-width:190px;margin-top:6px;padding:5px 8px;font:inherit;font-size:.78rem;font-weight:600;border:1.5px solid #d97706;border-radius:var(--r-md, 8px);background:#fff;color:#92400e;cursor:pointer}.asn-bulk-studytype:focus-visible{outline:2px solid #d97706;outline-offset:1px}.asn-bulk-studytype.answered{border-color:#059669;color:#065f46;background:#ecfdf5}.asn-bulk-status.ready{background:#d1fae5;color:#065f46}.asn-bulk-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.asn-bulk-filter{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid var(--border);border-radius:999px;background:var(--surface-app, #f2f4f8);font-size:.74rem;font-weight:700;color:var(--muted);cursor:pointer;white-space:nowrap}.asn-bulk-filter:hover{border-color:#d97706;color:#92400e}.asn-bulk-filter.on{background:#fef3c7;border-color:#d97706;color:#92400e}.asn-bulk-filter input{accent-color:#d97706;margin:0}.asn-bulk-apply-all{margin-left:6px;padding:3px 8px;font-size:.7rem;font-weight:700;border:1px solid #d97706;border-radius:999px;background:#fff;color:#92400e;cursor:pointer}.asn-bulk-apply-all:hover{background:#fef3c7}.asn-bulk-table td.asn-bulk-cohort-cell{white-space:nowrap}.asn-bulk-cohort-cell .asn-bulk-studytype{margin-top:0;max-width:160px}.asn-bulk-cohort-hint{display:block;font-size:.7rem;color:var(--muted)}.asn-share-note{padding:9px 12px;background:#eef4ff;border:1px solid #c7d9f7;border-radius:var(--r-sm, 6px);color:#1f3f7a;font-size:.78rem;line-height:1.45}.asn-share-note strong{color:#183b7a}.asn-pill--shared{background:#eaf1fc;color:#2a52a0;margin-left:6px;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.asn-inst-tag{display:inline-block;margin-left:6px;padding:1px 6px;border:1px solid #c8b6e8;border-radius:999px!important;background:#f4efff;color:#5b3fa8;font-family:var(--font-mono);font-size:.58rem;font-weight:700;letter-spacing:.04em;text-transform:lowercase;white-space:nowrap;vertical-align:middle}.asn-cohort-tag{margin-left:6px;padding:1px 6px;border:1px solid var(--border, #dfe6ed);border-radius:999px!important;background:var(--surface-app, #eef3f6);color:var(--muted, #718096);font-family:var(--font-mono);font-size:.58rem;font-weight:700;letter-spacing:.03em;white-space:nowrap}.asn-cohort-tag--partial{border-color:#e7c98f;background:#fff8e8;color:#8a6209}.asn-scope-note{padding:9px 13px;background:#f5f8fc;border:1px solid var(--border, #dfe6ed);border-left:3px solid #315fbe;border-radius:var(--r-sm, 6px);color:var(--ink-soft, #40546a);font-size:.76rem;line-height:1.55}.asn-scope-note strong{color:var(--ink, #172b3f)}.asn-scope-note .asn-inst-tag{margin-left:2px}@media (max-width: 700px){.asn-pill--shared{max-width:150px}}.asn-scope-toggle{display:flex;align-items:center;gap:6px;margin-top:7px;color:var(--muted, #718096);font-size:.7rem;font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none}.asn-scope-toggle input{width:13px;height:13px;cursor:pointer;accent-color:#315fbe}.asn-scope-toggle:hover{color:var(--ink-soft, #40546a)}.asn-outside-tag{margin-left:6px;padding:0 5px;border:1px solid #e7c98f;border-radius:999px!important;background:#fff8e8;color:#8a6209;font-family:var(--font-mono);font-size:.55rem;font-weight:700;letter-spacing:.03em;white-space:nowrap}.asn-pill--borrowed{background:#fff5e6;color:#92620a;margin-left:6px;max-width:230px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.asn-readonly-note{color:var(--muted, #718096);font-size:.66rem;font-style:italic;white-space:nowrap}@media (max-width: 700px){.asn-pill--borrowed{max-width:130px}}.asn-asg-filter{position:relative;display:flex;align-items:center;gap:8px;margin:0 0 10px}.asn-asg-filter .asn-search{flex:0 1 360px;max-width:360px}@media (max-width: 700px){.asn-asg-filter .asn-search{flex-basis:100%;max-width:100%}}.asn-asg-filter-clear{background:none;border:none;cursor:pointer;font:inherit;font-size:.8rem;font-weight:600;color:#4392f1;padding:0 4px}.asn-cohort-head th{padding:16px 10px 6px;text-align:left;font-size:.72rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#51607a;background:none;border-bottom:2px solid #dfe6ed}.asn-table tbody tr.asn-cohort-head:first-child th{padding-top:6px}.asn-cohort-head th em{margin-left:8px;font-style:normal;font-weight:600;letter-spacing:0;text-transform:none;color:#8a97ab}.asn-combo-head td{padding-top:12px;font-size:.78rem;font-weight:600;color:#6a7a96;background:#4392f112;border-top:2px solid #4392f1;border-left:2px solid #4392f1;border-right:2px solid #4392f1;border-radius:8px 8px 0 0}.asn-combo-vague{margin-left:8px;padding:1px 7px;border-radius:999px;background:#fdf0d8;color:#8a5a10;font-size:.68rem;font-weight:700;cursor:help}.asn-combo-row td{background:#4392f109}.asn-combo-row td:first-child{border-left:2px solid #4392f1}.asn-combo-row td:last-child{border-right:2px solid #4392f1}.asn-combo-last td{border-bottom:2px solid #4392f1}.asn-combo-last td:first-child{border-bottom-left-radius:8px}.asn-combo-last td:last-child{border-bottom-right-radius:8px}.asn-combo-tag{display:inline-block;margin-right:8px;padding:2px 8px;border-radius:999px;background:#4392f1;color:#fff;font-size:.7rem;font-weight:700}.asn-pill--action{cursor:pointer;border:none;font:inherit}.asn-pill--action:hover{filter:brightness(.94)}.asn-holders-intro{margin:0 0 14px;font-size:.86rem;line-height:1.55;color:#44546f}.asn-panel-context{display:flex;flex-wrap:wrap;gap:10px 20px;margin:0 0 18px;padding:14px 16px;border:1px solid #e1e8f0;border-radius:10px;background:#f7f9fc}.asn-panel-context>span{display:flex;flex-direction:column;gap:3px;color:#74829a;font-size:.66rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.asn-panel-context strong{color:#20364c;font-size:.84rem;font-weight:700;letter-spacing:0;text-transform:none}.asn-lecturer-search{display:flex;width:100%;box-sizing:border-box;align-items:center;gap:10px;min-height:46px;margin:0 0 12px;padding:0 12px;border:1px solid #dce4ed;border-radius:10px;background:#fff;box-shadow:0 2px 8px #182e4e0a;color:#7b8aa0;transition:border-color .15s,box-shadow .15s}.asn-lecturer-search:focus-within{border-color:#5779bd;box-shadow:0 0 0 3px #315fbe1a}.asn-lecturer-search>svg{width:17px;height:17px;flex:0 0 auto}.asn-lecturer-search>input{flex:1 1 auto;width:auto;min-width:0;box-sizing:border-box;border:0;outline:0;background:transparent;color:#20364c;font:inherit;font-size:.86rem}.asn-lecturer-search>input::placeholder{color:#9aa7b8}.asn-lecturer-search>button{flex:0 0 auto;padding:5px 8px;border:0;border-radius:6px;background:#eef2f7;color:#52627a;font:inherit;font-size:.72rem;font-weight:650;cursor:pointer}.asn-lecturer-search>button:hover{background:#e2e8f0;color:#26384f}.asn-holders-list{list-style:none;margin:0 0 12px;padding:0;display:flex;flex-direction:column;gap:6px}.asn-holders-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border:1px solid #e3e9f0;border-radius:9px;background:#fff;transition:border-color .15s,background .15s,box-shadow .15s}.asn-holders-list li:not(.asn-move-empty):hover{border-color:#cbd7e5;background:#fbfcfe;box-shadow:0 2px 7px #182e4e0a}.asn-holders-list li label{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:600}.asn-holders-list li.losing{border-color:#d6454559;background:#d645450a}.asn-holders-list li.losing .asn-holders-name{text-decoration:line-through;opacity:.65}.asn-holders-state{font-size:.74rem;font-weight:700;color:#6a7a96}.asn-holders-list li.losing .asn-holders-state{color:#c0392b}.asn-holders-warn{margin:0 0 12px;padding:10px 12px;border-radius:8px;background:#d6454514;color:#c0392b;font-size:.82rem;line-height:1.5}.asn-holders-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:16px;padding:14px 0 0;border-top:1px solid #e7ecf1}.asn-holders-actions>.asn-panel-done:only-child{display:inline-flex;min-width:92px;min-height:38px;align-items:center;justify-content:center;padding:0 16px;border:1px solid #183b7a;border-radius:8px;background:#183b7a;color:#fff;font:inherit;font-weight:650;box-shadow:0 2px 5px #183b7a33;cursor:pointer}.asn-holders-actions>.asn-panel-done:hover:not(:disabled){background:#102b5a}.asn-holders-actions>button:disabled,.asn-teacher-remove-confirm>button:disabled{opacity:.55;cursor:not-allowed}.asn-teacher-panel-heading{display:flex;align-items:center;justify-content:space-between;margin:14px 0 8px;color:#25334a;font-size:.86rem}.asn-teacher-panel-heading>span{min-width:22px;padding:2px 7px;border-radius:99px;background:#eef2f7;color:#52627a;text-align:center;font-size:.72rem;font-weight:700}.asn-teacher-add-heading{margin-top:20px}.asn-teacher-holder-list{max-height:190px;overflow-y:auto}.asn-teacher-holder-info{display:flex;flex-direction:column;gap:3px}.asn-teacher-panel-state{margin:8px 0;color:#6a7a96;font-size:.82rem}.asn-teacher-panel-error{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 11px;border-radius:7px;background:#d6454514;color:#a83232;font-size:.8rem}.asn-teacher-remove-btn{min-height:32px;padding:0 11px;border:1px solid #c9362b;border-radius:7px;background:#c9362b;color:#fff;font:inherit;font-size:.74rem;font-weight:600;box-shadow:0 2px 5px #b4231824;cursor:pointer}.asn-teacher-remove-btn:hover:not(:disabled){border-color:#a92a21;background:#a92a21}.asn-teacher-remove-confirm{display:flex;align-items:center;gap:7px}.asn-teacher-remove-confirm .dialog-secondary-btn,.asn-teacher-remove-confirm .dialog-primary-btn{min-height:32px;padding:0 10px;border-radius:7px;font:inherit;font-size:.72rem;font-weight:650;cursor:pointer}.asn-asg-row-actions{display:flex;align-items:center;justify-content:flex-end;gap:6px}.asn-asg-move-btn{padding:4px 10px;border:1px solid rgba(67,146,241,.4);border-radius:6px;background:#fff;color:#2b74d4;font:inherit;font-size:.76rem;font-weight:700;cursor:pointer}.asn-asg-move-btn:hover{background:#4392f114}.asn-move-list{max-height:320px;overflow-y:auto;margin-top:10px;padding:2px 3px 5px}.asn-move-empty{justify-content:center;color:#6a7a96;font-size:.84rem;background:#f8fafc!important;box-shadow:none!important}.asn-move-error{color:#a83232}.asn-merge-hint{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 12px;padding:11px 14px;border:1px solid rgba(67,146,241,.3);border-radius:10px;background:#4392f10d;font-size:.82rem}.asn-merge-hint strong{display:block;color:#0f1f38}.asn-merge-hint span{color:#44546f}.asn-merge-hint em{font-style:normal;font-weight:700;color:#2b74d4;margin-right:8px}.asn-merge-hint a{text-decoration:none;white-space:nowrap}.asn-holders-goto{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 14px;font-size:.78rem;color:#6a7a96}.asn-holders-goto-btn{padding:3px 10px;border:1px solid rgba(67,146,241,.35);border-radius:999px;background:#fff;color:#2b74d4;font:inherit;font-size:.76rem;font-weight:700;cursor:pointer}.asn-holders-goto-btn:hover{background:#4392f114}.asn-batch-notice{margin:10px 0 0;padding:9px 12px;border-radius:8px;background:#e7a01e1a;border:1px solid rgba(231,160,30,.35);color:#8a5d00;font-size:.8rem;line-height:1.5}.asn-batch{margin-top:12px;border:1px solid rgba(15,31,56,.12);border-radius:10px;overflow:hidden}.asn-batch-head{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;background:#4392f112;font-size:.82rem}.asn-batch-clear{background:none;border:none;cursor:pointer;font:inherit;font-size:.76rem;font-weight:700;color:#c0392b}.asn-batch-list{list-style:none;margin:0;padding:0;max-height:220px;overflow-y:auto}.asn-batch-list li{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr) auto;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid rgba(15,31,56,.07);font-size:.8rem}.asn-batch-list li.failed{background:#d645450f}.asn-batch-pair{display:flex;align-items:center;gap:8px;min-width:0}.asn-batch-prog{font-weight:600;color:#44546f;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asn-batch-prog em{font-style:normal;font-weight:500;color:#6a7a96}.asn-batch-reason{color:#c0392b;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asn-batch-shared{color:#6a7a96;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.asn-batch-remove{background:none;border:none;cursor:pointer;font-size:1.1rem;line-height:1;color:#6a7a96;padding:0 4px}.asn-batch-remove:hover{color:#c0392b}.asn-batch-add{padding:9px 16px;border:1px solid rgba(67,146,241,.45);border-radius:8px;background:#fff;color:#2b74d4;font:inherit;font-weight:700;cursor:pointer}.asn-batch-add:hover:not(:disabled){background:#4392f114}.asn-batch-add:disabled{opacity:.5;cursor:not-allowed}.asn-conflict-msg{white-space:pre-line}.asn-planning-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:1px solid var(--accent, #6366f1);border-radius:var(--r-md, 8px);background:#fff;color:var(--accent, #6366f1);font-size:.8rem;font-weight:600;font-family:inherit;text-decoration:none;white-space:nowrap;transition:background .15s,border-color .15s}.asn-planning-btn:hover{background:#6366f114}@media (max-width: 900px){.asn-lec-item{flex:0 0 136px;width:136px;min-width:0}.asn-lec-info{width:100%}.asn-lec-name{display:-webkit-box;max-width:100%;white-space:normal;line-height:1.25;-webkit-box-orient:vertical;-webkit-line-clamp:2}.asn-lec-count{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}.lpref-page{display:flex;flex-direction:column;gap:18px;max-width:none;margin:0;width:100%;min-width:0}.lpref-banner{display:flex;align-items:center;gap:16px;background:linear-gradient(135deg,#fff 0%,var(--alice, #e7f0ff) 160%);border:1px solid var(--border, rgba(15, 31, 56, .09));border-left:4px solid var(--blue, #4392f1);border-radius:var(--r-lg, 12px);padding:16px 20px;box-shadow:var(--shadow-xs)}.lpref-banner.is-done{border-left-color:#22c55e}.lpref-banner-icon{flex-shrink:0;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--blue, #4392f1);color:#fff}.lpref-banner.is-done .lpref-banner-icon{background:#22c55e}.lpref-banner-text{display:flex;flex-direction:column;gap:3px;min-width:0;flex:1}.lpref-banner-text strong{font-size:.96rem;font-weight:800;color:var(--ink, #0f1f38)}.lpref-banner-text span{font-size:.82rem;color:var(--ink-soft, #2d3f5a);line-height:1.45}.lpref-banner-pill{flex-shrink:0;align-self:flex-start;padding:4px 12px;border-radius:999px;font-size:.74rem;font-weight:700}.lpref-banner-pill.done{background:#22c55e24;color:#166534}.lpref-banner-pill.wait{background:#f59e0b29;color:#92400e}.lpref-card{background:var(--surface-card, #fff);border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:var(--r-xl, 16px);box-shadow:var(--shadow-xs);overflow:hidden}.lpref-card-head{display:flex;align-items:flex-start;gap:14px;padding:20px 22px 16px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .06))}.lpref-card-head--actions{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:14px 18px}.lpref-card-head--actions .lpref-foot-note{flex:1;min-width:0}.lpref-card-head--actions .lpref-primary-btn{flex-shrink:0}.lpref-card-head-icon{flex-shrink:0;width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4)}.lpref-card-head-icon.purple{background:#ede9fe;color:#6d28d9}.lpref-card-head h3{margin:0 0 3px;font-size:1rem;font-weight:800;color:var(--ink, #0f1f38)}.lpref-card-head p{margin:0;font-size:.82rem;color:var(--muted, #6a7a96);line-height:1.45}.lpref-card-body{padding:20px 22px}.lpref-card-foot{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:16px 22px;background:var(--surface-app, #f8fafc);border-top:1px solid var(--border, rgba(15, 31, 56, .06))}.lpref-foot-note{font-size:.8rem;color:var(--muted, #6a7a96);font-style:italic}.lpref-field-label{display:flex;align-items:baseline;gap:8px;font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft, #2d3f5a);margin-bottom:10px}.lpref-field-label:not(:first-child){margin-top:22px}.lpref-field-hint{font-size:.68rem;font-weight:600;letter-spacing:0;text-transform:none;color:var(--muted, #6a7a96)}.lpref-day-grid{display:flex;gap:8px;flex-wrap:wrap}.lpref-day-chip{min-width:56px;padding:9px 16px;border-radius:10px;font-size:.84rem;font-weight:700;border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));background:var(--surface-card, #fff);color:var(--ink-soft, #2d3f5a);cursor:pointer;transition:all .14s ease}.lpref-day-chip:hover{border-color:var(--blue, #4392f1);color:var(--blue, #4392f1)}.lpref-day-chip.selected{border-color:var(--blue, #4392f1);background:var(--blue, #4392f1);color:#fff;box-shadow:0 2px 8px #4392f152}.lpref-slot-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:10px}.lpref-slot-chip{display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:11px 14px;border-radius:11px;border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));background:var(--surface-card, #fff);cursor:pointer;transition:all .14s ease;text-align:left}.lpref-slot-chip:hover{border-color:var(--blue, #4392f1)}.lpref-slot-chip.selected{border-color:var(--blue, #4392f1);background:var(--alice, #e7f0ff);box-shadow:0 2px 8px #4392f12e}.lpref-slot-chip-name{font-size:.7rem;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--muted, #6a7a96)}.lpref-slot-chip.selected .lpref-slot-chip-name{color:var(--blue-dark, #2b74d4)}.lpref-slot-chip-time{font-size:.92rem;font-weight:700;color:var(--ink, #0f1f38);font-variant-numeric:tabular-nums}.lpref-slot-chip.selected .lpref-slot-chip-time{color:var(--blue-deep, #1a5abf)}.lpref-period-grid{display:flex;flex-direction:column;gap:10px}.lpref-period-row{display:grid;grid-template-columns:48px minmax(0,1fr);align-items:stretch;gap:10px}.lpref-period-day{display:grid;place-items:center;min-height:54px;border-radius:8px;background:var(--surface-app, #f8fafc);color:var(--ink-soft, #2d3f5a);font-size:.78rem;font-weight:800}.lpref-period-slots{display:grid;grid-template-columns:repeat(7,minmax(86px,1fr));gap:7px;min-width:0}.lpref-period-btn{min-width:0;min-height:54px;padding:7px 6px;border:1px solid var(--border-strong, rgba(15, 31, 56, .16));border-radius:8px;background:var(--surface-card, #fff);color:var(--muted, #6a7a96);cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;transition:border-color .14s ease,background .14s ease,color .14s ease}.lpref-period-btn span{font-size:.65rem;font-weight:800}.lpref-period-btn strong{font-size:.68rem;font-weight:700;color:var(--ink-soft, #2d3f5a);white-space:nowrap}.lpref-period-btn:hover{border-color:var(--blue, #4392f1)}.lpref-period-btn.selected{border-color:var(--blue, #4392f1);background:var(--alice, #e7f0ff);color:var(--blue-dark, #2b74d4);box-shadow:inset 0 0 0 1px var(--blue, #4392f1)}.lpref-period-btn.selected strong{color:var(--blue-deep, #1a5abf)}.lpref-assignment-section{margin-top:24px;padding-top:22px;border-top:1px solid var(--border, rgba(15, 31, 56, .09))}.lpref-assignment-section--only{margin-top:0;padding-top:0;border-top:0}.lpref-assignment-table-wrap{width:100%;max-height:min(560px,calc(100dvh - 300px));overflow:auto;overscroll-behavior:contain;scrollbar-gutter:stable;border:1px solid var(--border, rgba(15, 31, 56, .1));border-radius:8px}.lpref-assignment-table{width:100%;min-width:880px;border-collapse:separate;border-spacing:0;table-layout:fixed}.lpref-assignment-table th{position:sticky;top:0;z-index:2;height:40px;padding:9px 12px;background:#f5f7fa;border-right:1px solid var(--border, rgba(15, 31, 56, .1));border-bottom:1px solid var(--border, rgba(15, 31, 56, .1));color:var(--muted, #6a7a96);font-size:.68rem;font-weight:800;text-align:left;text-transform:uppercase}.lpref-assignment-table col:nth-child(1){width:29%}.lpref-assignment-table col:nth-child(2){width:25%}.lpref-assignment-table col:nth-child(3){width:14%}.lpref-assignment-table col:nth-child(4){width:25%}.lpref-assignment-table col:nth-child(5){width:60px}.lpref-assignment-table th:nth-child(5){text-align:center}.lpref-assignment-table th:last-child{border-right:0}.lpref-assignment-table td{height:66px;padding:11px 12px;border-right:1px solid var(--border, rgba(15, 31, 56, .07));border-bottom:1px solid var(--border, rgba(15, 31, 56, .07));color:var(--ink-soft, #2d3f5a);text-align:left;vertical-align:middle}.lpref-assignment-table td:last-child{border-right:0;text-align:center}.lpref-assignment-table tr:last-child td{border-bottom:0}.lpref-assignment-table tbody tr:hover{background:#fafbfc}.lpref-assignment-table tbody tr.is-confirmed{background:#f8fcfa}.lpref-assignment-table td>strong,.lpref-assignment-table td>span{display:block;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lpref-assignment-table td>strong{color:var(--ink, #0f1f38);font-size:.8rem;font-weight:800}.lpref-assignment-table td>span{margin-top:2px;color:var(--muted, #6a7a96);font-size:.72rem}.lpref-assignment-table select{width:100%;height:34px;padding:0 28px 0 9px;border:1px solid var(--border-strong, rgba(15, 31, 56, .16));border-radius:6px;background:#fff;color:var(--ink-soft, #2d3f5a);font:inherit;font-size:.74rem}.lpref-assignment-table select:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 2px #4392f121}.lpref-assignment-add{width:34px;height:34px;display:grid;place-items:center;border:1px solid #166534;border-radius:6px;background:#166534;color:#fff;cursor:pointer;margin:0 auto}.lpref-assignment-add:hover{background:#14532d}.lpref-assignment-add.is-confirmed{border-color:#0f7a55;background:#0f7a55}.lpref-assignment-add.is-confirmed:hover{border-color:#b4232f;background:#b4232f}.lpref-assignment-empty{padding:24px;border:1px dashed var(--border-strong, rgba(15, 31, 56, .16));border-radius:8px;color:var(--muted, #6a7a96);font-size:.8rem;text-align:center}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (max-width: 760px){.lpref-period-row{grid-template-columns:42px minmax(0,1fr)}.lpref-period-slots{grid-template-columns:repeat(7,86px);overflow-x:auto;padding-bottom:4px}}.lpref-notes-input{width:100%;box-sizing:border-box;padding:11px 13px;border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));border-radius:10px;font-size:.86rem;font-family:inherit;background:var(--surface-card, #fff);color:var(--ink, #0f1f38);resize:vertical;min-height:64px;transition:border-color .14s ease,box-shadow .14s ease}.lpref-notes-input:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f124}.lpref-notes-input::placeholder{color:var(--muted, #9aa7bd)}.lpref-primary-btn{display:inline-flex;align-items:center;gap:7px;padding:10px 24px;border-radius:10px;font-size:.88rem;font-weight:700;color:#fff;background:var(--blue, #4392f1);border:none;cursor:pointer;transition:background .14s ease,transform .06s ease}.lpref-primary-btn:hover:not(:disabled){background:var(--blue-dark, #2b74d4)}.lpref-primary-btn:active:not(:disabled){transform:translateY(1px)}.lpref-primary-btn:disabled{opacity:.45;cursor:default}.lpref-ghost-btn{display:inline-flex;align-items:center;gap:6px;padding:10px 20px;border-radius:10px;font-size:.86rem;font-weight:700;color:var(--ink-soft, #2d3f5a);background:var(--surface-card, #fff);border:1.5px solid var(--border-strong, rgba(15, 31, 56, .16));cursor:pointer;transition:background .14s ease,border-color .14s ease}.lpref-ghost-btn:hover:not(:disabled){background:var(--surface-app, #f2f4f8)}.lpref-ghost-btn:disabled{opacity:.5;cursor:default}.lpref-combine-btn{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:8px;font-size:.78rem;font-weight:700;color:#fff;background:#193d66;border:1px solid #193d66;justify-content:center;white-space:nowrap;cursor:pointer;transition:background .14s ease,color .14s ease}.lpref-combine-btn:hover:not(:disabled){background:#102f52;border-color:#102f52}.lpref-combine-btn:disabled{opacity:.5;cursor:not-allowed}.lpref-withdraw-btn{padding:6px 14px;border-radius:8px;font-size:.78rem;font-weight:700;color:var(--cinnabar, #dc493a);background:#dc493a12;border:1px solid rgba(220,73,58,.22);cursor:pointer;transition:background .14s ease,color .14s ease}.lpref-withdraw-btn:hover{background:var(--cinnabar, #dc493a);color:#fff}.lpref-withdraw-btn:disabled{opacity:.55;cursor:wait}.lpref-course-list{display:flex;flex-direction:column;gap:14px}.lpref-course-block{flex:0 0 auto;min-width:0;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:6px;overflow:hidden}.lpref-course-header{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;padding:13px 16px;background:var(--surface-app, #f8fafc);border-bottom:1px solid var(--border, rgba(15, 31, 56, .06))}.lpref-course-title-wrap{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;min-width:0}.lpref-course-name{font-size:.92rem;font-weight:800;color:var(--ink, #0f1f38)}.lpref-course-code{font-size:.72rem;font-weight:700;color:var(--muted, #6a7a96);font-family:var(--font-mono, monospace)}.lpref-course-header-right{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.lpref-course-badge{font-size:.7rem;font-weight:700;padding:3px 9px;border-radius:999px;background:#eef3f8;color:#193d66;border:1px solid #cddae8;white-space:nowrap}.lpref-prog-list{display:flex;flex-direction:column}.lpref-prog-row{display:grid;grid-template-columns:minmax(0,1fr) 90px 132px;align-items:center;gap:12px;padding:16px;min-height:78px;border-bottom:1px solid var(--border, rgba(15, 31, 56, .05))}.lpref-prog-row:last-child{border-bottom:none}.lpref-prog-id{min-width:0;display:flex;flex-direction:column;gap:5px;overflow-wrap:anywhere}.lpref-prog-name{font-size:.86rem;font-weight:600;color:var(--ink, #0f1f38)}.lpref-prog-meta{font-size:.73rem;color:var(--muted, #6a7a96);font-family:var(--font-mono, monospace)}.lpref-prog-access{display:inline-flex;align-items:center;gap:4px;font-size:.68rem;font-weight:700;color:#0369a1;background:#f0f9ff;border:1px solid #bae6fd;border-radius:999px;padding:3px 9px;white-space:nowrap}.lpref-prog-size{display:flex;flex-direction:column;align-items:flex-end;font-size:.95rem;font-weight:800;color:var(--ink, #0f1f38);white-space:nowrap;font-variant-numeric:tabular-nums}.lpref-prog-size small{font-size:.62rem;font-weight:600;color:var(--muted, #6a7a96);text-transform:uppercase;letter-spacing:.04em}.lpref-combo-list{display:flex;flex-direction:column;gap:12px}.lpref-combo-card{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:14px 16px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-radius:var(--r-lg, 12px);background:var(--surface-card, #fff)}.lpref-combo-info{flex:1;min-width:220px}.lpref-combo-course{font-size:.9rem;font-weight:800;color:var(--ink, #0f1f38);display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.lpref-combo-code{font-size:.72rem;font-weight:700;color:var(--muted, #6a7a96);font-family:var(--font-mono, monospace)}.lpref-combo-progs{font-size:.82rem;color:var(--ink-soft, #2d3f5a);margin:5px 0 8px;font-weight:600}.lpref-combo-meta{display:flex;gap:8px;flex-wrap:wrap}.lpref-combo-chip{font-size:.72rem;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--surface-app, #f2f4f8);color:var(--ink-soft, #2d3f5a);border:1px solid var(--border, rgba(15, 31, 56, .09))}.lpref-combo-chip.access{background:#f0f9ff;color:#0369a1;border-color:#bae6fd}.lpref-combo-note{font-size:.8rem;font-style:italic;color:var(--muted, #6a7a96);margin-top:8px}.lpref-combo-admin-note{font-size:.8rem;color:#166534;background:#22c55e14;border:1px solid rgba(34,197,94,.2);border-radius:8px;padding:6px 11px;margin-top:8px}.lpref-combo-side{display:flex;flex-direction:column;align-items:flex-end;gap:9px}.lpref-combo-status{display:inline-flex;align-items:center;padding:4px 12px;border-radius:999px;font-size:.74rem;font-weight:700;white-space:nowrap}.lpref-combo-status.PENDING{background:#fef3c7;color:#92400e}.lpref-combo-status.APPROVED{background:#d1fae5;color:#065f46}.lpref-combo-status.REJECTED{background:#fee2e2;color:#991b1b}.lpref-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:44px 24px;text-align:center;background:var(--surface-card, #fff);border:1px dashed var(--border-strong, rgba(15, 31, 56, .16));border-radius:var(--r-xl, 16px);color:var(--muted, #6a7a96)}.lpref-empty svg{opacity:.3}.lpref-empty p{margin:4px 0 0;font-size:.9rem;font-weight:700;color:var(--ink-soft, #2d3f5a)}.lpref-empty span{font-size:.8rem;max-width:420px}.lpref-tabs{align-self:flex-start}.lpref-section-label{font-size:.66rem;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted, #6a7a96);padding:12px 16px 6px}.lpref-group-section{border-bottom:1px solid var(--border, rgba(15, 31, 56, .06))}.lpref-group-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 12px 10px;padding:12px 14px;border:1px solid var(--border, rgba(15, 31, 56, .09));border-left-width:4px;border-radius:10px;background:var(--surface-card, #fff)}.lpref-group-row.PENDING{border-left-color:#f59e0b;background:#fffdf5}.lpref-group-row.APPROVED{border-left-color:#22c55e;background:#f6fef9}.lpref-group-main{flex:1;min-width:200px}.lpref-group-progs{font-size:.88rem;font-weight:800;color:var(--ink, #0f1f38);margin-bottom:7px}.lpref-group-meta{display:flex;gap:8px;flex-wrap:wrap}.lpref-group-side{display:flex;flex-direction:column;align-items:flex-end;gap:9px;flex-shrink:0}.lpref-prog-section{padding-bottom:6px}.lpref-prog-hint{padding:8px 16px 10px;font-size:.78rem;font-style:italic;color:var(--muted, #6a7a96)}.lpref-rejected-note{display:flex;align-items:center;gap:10px;margin:0 12px 12px;padding:9px 13px;border-radius:10px;background:#fef2f2;border:1px solid #fecaca;font-size:.79rem;color:#7f1d1d}.lpref-rejected-note strong{font-weight:800}.lpref-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;min-height:100vh;min-height:100dvh;background:#0f1f3873;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:grid;place-items:center;z-index:1000;padding:20px;overflow-y:auto}.lpref-modal{width:min(540px,100%);max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);overflow-y:auto;background:var(--surface-card, #fff);border-radius:var(--r-xl, 16px);box-shadow:var(--shadow-lg);padding:22px}.lpref-modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.lpref-modal-head h3{margin:0;font-size:1.08rem;font-weight:800;color:var(--ink, #0f1f38)}.lpref-modal-x{width:30px;height:30px;border-radius:8px;border:none;background:var(--surface-app, #f2f4f8);color:var(--muted, #6a7a96);font-size:1.3rem;line-height:1;cursor:pointer;transition:background .14s ease,color .14s ease}.lpref-modal-x:hover{background:#fee2e2;color:var(--cinnabar, #dc493a)}.lpref-modal-sub{font-size:.84rem;color:var(--ink-soft, #2d3f5a);line-height:1.5;margin:0 0 16px}.lpref-modal-progs{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.lpref-modal-prog{display:flex;align-items:center;gap:12px;padding:11px 14px;border-radius:10px;border:1.5px solid var(--border, rgba(15, 31, 56, .1));background:var(--surface-card, #fff);cursor:pointer;text-align:left;transition:all .14s ease}.lpref-modal-prog:hover{border-color:var(--blue, #4392f1)}.lpref-modal-prog.selected{border-color:var(--blue, #4392f1);background:var(--alice, #e7f0ff)}.lpref-modal-check{flex-shrink:0;width:20px;height:20px;border-radius:6px;border:1.5px solid var(--border-strong, rgba(15, 31, 56, .22));display:grid;place-items:center;background:#fff;color:#fff}.lpref-modal-check.on{background:var(--blue, #4392f1);border-color:var(--blue, #4392f1)}.lpref-modal-prog-id{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.lpref-modal-prog-name{font-size:.86rem;font-weight:700;color:var(--ink, #0f1f38)}.lpref-modal-prog-code{font-size:.72rem;color:var(--muted, #6a7a96);font-family:var(--font-mono, monospace)}.lpref-modal-prog-size{display:flex;flex-direction:column;align-items:flex-end;font-size:.88rem;font-weight:800;color:var(--ink, #0f1f38);white-space:nowrap}.lpref-modal-access{font-size:.62rem;font-weight:700;color:#0369a1;font-style:normal;text-transform:uppercase;letter-spacing:.03em}.lpref-modal-summary{padding:10px 14px;background:#f0fdf4;border:1px solid #86efac;border-radius:10px;font-size:.82rem;color:#15803d;margin-bottom:14px}.lpref-modal-summary-access{font-weight:700}.lpref-modal-note-label{display:flex;flex-direction:column;gap:6px;font-size:.78rem;font-weight:700;color:var(--ink-soft, #2d3f5a);margin-bottom:18px}.lpref-modal-note-label span{font-weight:500;color:var(--muted, #6a7a96)}.lpref-modal-actions{display:flex;justify-content:flex-end;gap:10px}@media (max-width: 640px){.lpref-banner{flex-wrap:wrap}.lpref-banner-pill{order:3}.lpref-slot-grid{grid-template-columns:repeat(2,1fr)}.lpref-combo-side{flex-direction:row;align-items:center}}.lpref-stream-toolbar{padding:10px 14px;border-bottom:1px solid #dce3eb}.lpref-course-list{max-height:calc(100dvh - 230px);overflow-y:auto;overscroll-behavior:contain}.lpref-stream-heading{display:grid;gap:6px;padding-bottom:16px;font-size:13px;color:#52677f}.lpref-stream-heading strong{color:#173a61;font-size:14px}.lpref-stream-count{display:flex;align-items:center;justify-content:space-between;padding:12px 0;font-size:13px;font-weight:600}.lpref-stream-count input{width:80px;border:1px solid #ccd8e4;border-radius:4px;padding:8px;font:inherit}.lpref-stream-table-scroll{max-height:300px;overflow:auto;overscroll-behavior:contain;border:1px solid #dce3eb}.lpref-stream-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:13px}.lpref-stream-table th,.lpref-stream-table td{padding:10px 12px;text-align:left;border-bottom:1px solid #dce3eb;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lpref-stream-table th{position:sticky;top:0;color:#173a61;background:#f1f5fa}.lpref-stream-table th:last-child,.lpref-stream-table td:last-child{text-align:right}.lpref-stream-note{font-size:12px;line-height:1.5;color:#52677f;margin:14px 0}.lpref-stream-chips{display:flex;flex-wrap:wrap;gap:6px;padding-top:8px;font-size:12px}.lpref-stream-chips span{padding:5px 8px;background:#eef3f9;color:#173a61;border-left:2px solid #173a61}.lpref-stream-chips strong{margin-left:8px}.lpref-prog-id .lpref-prog-access{align-self:flex-start}.lpref-course-name{overflow-wrap:anywhere}.lpref-prog-size small{letter-spacing:0}@media (max-width: 640px){.lpref-prog-row{grid-template-columns:minmax(0,1fr) 76px;gap:14px}.lpref-prog-row>button{grid-column:1 / -1;justify-self:start}.lpref-course-header-right{width:100%;justify-content:space-between}.lpref-group-row{flex-direction:column;align-items:stretch}.lpref-group-side{flex-direction:row;align-items:center;justify-content:space-between}}.lpref-modal-cross{margin-top:14px;border-top:1px solid rgba(15,31,56,.1);padding-top:12px}.lpref-modal-cross-toggle{background:none;border:none;padding:0;cursor:pointer;font:inherit;font-size:.84rem;font-weight:600;color:#4392f1}.lpref-modal-cross-toggle:hover{color:#2b74d4}.lpref-modal-cross-hint{margin:8px 0 10px;font-size:.8rem;line-height:1.45;color:#6a7a96}.lpref-modal-prog-code em{font-style:normal;font-weight:700;color:#4392f1}.lpref-modal-summary-codes{font-weight:700}.lpref-modal-prog-course{display:block;margin-top:2px;font-weight:500;font-size:.74rem;color:#6a7a96}@media (max-width: 600px){.lpref-assignment-table-wrap{max-height:none;overflow:visible;border:0}.lpref-assignment-table{min-width:0;table-layout:auto}.lpref-assignment-table colgroup,.lpref-assignment-table thead{display:none}.lpref-assignment-table,.lpref-assignment-table tbody{display:block}.lpref-assignment-table tr{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) 44px;grid-template-areas:"course course add" "programme programme add" "day period period";gap:8px 10px;margin-bottom:10px;padding:12px;border:1px solid var(--border, rgba(15, 31, 56, .1));border-radius:10px}.lpref-assignment-table td{display:block;height:auto;padding:0;border:0!important}.lpref-assignment-table td:nth-child(1){grid-area:course}.lpref-assignment-table td:nth-child(2){grid-area:programme}.lpref-assignment-table td:nth-child(3){grid-area:day}.lpref-assignment-table td:nth-child(4){grid-area:period}.lpref-assignment-table td:nth-child(5){grid-area:add;align-self:center}.lpref-assignment-table td>strong,.lpref-assignment-table td>span{white-space:normal}.lpref-assignment-table select{width:100%;min-height:38px}}@media (max-width: 600px){.lpref-assignment-table tr{border-color:#e2e8f0;border-radius:14px!important;background:#fff}.lpref-assignment-table tbody tr.is-confirmed{border-color:#bfd0ea;background:#f8fafd}.lpref-assignment-table select{border-radius:10px!important}.lpref-assignment-add{width:38px;height:38px;border:1.5px solid #183b7a;border-radius:12px!important;background:#fff;color:#183b7a}.lpref-assignment-add:hover{background:#eef2f8}.lpref-assignment-add.is-confirmed{border-color:#183b7a;background:#183b7a;color:#fff}.lpref-assignment-add.is-confirmed:hover{border-color:#b4232f;background:#b4232f}}.aud-page{display:grid;gap:14px}.aud-card{padding:18px 20px;border:1px solid var(--border, #e2e8f0);border-radius:8px!important;background:var(--surface-card, #fff);min-width:0}.aud-summary{display:flex;flex-wrap:wrap;gap:10px 0;padding-top:14px;padding-bottom:14px}.aud-summary>div{padding:0 22px;border-left:1px solid #edf1f5}.aud-summary>div:first-child{padding-left:0;border-left:0}.aud-summary strong{display:block;font-size:1.25rem;font-weight:700;line-height:1.2;color:var(--ink, #0f172a)}.aud-summary span{font-size:.76rem;color:var(--muted, #64748b)}.aud-tools{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:10px}.aud-tools input[type=search]{flex:1 1 260px;max-width:380px;padding:8px 11px;border:1px solid var(--border, #e2e8f0);border-radius:6px!important;font:inherit;font-size:.84rem}.aud-dates{display:inline-flex;align-items:center;gap:6px;font-size:.78rem;color:var(--muted, #64748b)}.aud-dates input{padding:6px 8px;border:1px solid var(--border, #e2e8f0);border-radius:6px!important;font:inherit;font-size:.8rem}.aud-menu{display:flex;align-items:center;gap:8px;margin-left:auto}.aud-chips{display:inline-flex;flex-wrap:wrap;gap:2px;padding:3px;border-radius:7px!important;background:#f1f5f9}.aud-chips button{padding:5px 11px;border:0;background:none;font:inherit;font-size:.76rem;font-weight:600;color:#64748b;cursor:pointer;border-radius:5px!important}.aud-chips button.on{background:#fff;color:var(--ink, #0f172a)}.aud-chips button span{margin-left:5px;font-weight:500;color:#94a3b8}.aud-note{margin:10px 0 0;font-size:.78rem;color:#9a3412}.aud-empty{margin:18px 0 6px;font-size:.84rem;color:var(--muted, #64748b)}.aud-list,.aud-table{margin-top:12px;transition:opacity .15s}.aud-list.is-loading,.aud-table.is-loading{opacity:.55}.aud-day+.aud-day{margin-top:14px}.aud-day h4{margin:0;padding:8px 0 6px;font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#94a3b8}.aud-entry{border-top:1px solid #edf1f5}.aud-line{display:grid;grid-template-columns:48px 120px minmax(0,1fr) 18px;gap:12px;align-items:start;width:100%;padding:10px 0;border:0;background:none;font:inherit;text-align:left;color:var(--ink, #0f172a);cursor:pointer}.aud-line:hover{background:#f8fafc}.aud-when{font-family:JetBrains Mono,monospace;font-size:.72rem;color:#475569;padding-top:2px}.aud-kind{display:inline-block;max-width:100%;padding:2px 8px;border-radius:999px!important;background:#eef2f6;font-size:.68rem;font-weight:600;color:#475569;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aud-text{display:grid;gap:2px;min-width:0}.aud-text b{font-size:.82rem;font-weight:500;line-height:1.45;overflow-wrap:anywhere}.aud-text small{font-size:.72rem;color:var(--muted, #64748b)}.aud-caret{font-size:.9rem;color:#94a3b8;text-align:center}.aud-details{display:grid;grid-template-columns:max-content minmax(0,1fr);gap:4px 18px;margin:0 0 10px 192px;padding:10px 12px;border-radius:6px!important;background:#f8fafc;font-size:.76rem}.aud-details>div{display:contents}.aud-details span{color:var(--muted, #64748b)}.aud-details b{font-weight:500;color:#334155;overflow-wrap:anywhere}.aud-head,.aud-row{display:grid;grid-template-columns:130px 130px minmax(140px,.9fr) minmax(0,2.4fr);gap:12px;align-items:start;padding:9px 0;border-top:1px solid #edf1f5;font-size:.78rem;color:var(--ink, #0f172a)}.aud-head{padding:6px 0;border-top:0;font-size:.68rem;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:#94a3b8}.aud-who{display:grid;gap:1px;min-width:0}.aud-who b{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aud-who small{font-size:.7rem;color:var(--muted, #64748b);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aud-what{line-height:1.45;overflow-wrap:anywhere}.aud-page .pagination{margin-top:12px}@media (max-width: 760px){.aud-card{padding:14px}.aud-summary>div{padding:0 14px}.aud-tools input[type=search]{max-width:none}.aud-line{grid-template-columns:44px minmax(0,1fr) 14px}.aud-line>span:nth-child(2){display:none}.aud-details{margin-left:0}.aud-head{display:none}.aud-row{grid-template-columns:1fr;gap:3px}}.pf-page{display:flex;flex-direction:column;gap:18px;max-width:1040px}.pf-banner{display:flex;align-items:center;gap:18px;background:linear-gradient(120deg,var(--blue, #4392f1) 0%,#2f74d6 100%);border-radius:16px;padding:22px 24px;color:#fff}.pf-avatar{width:68px;height:68px;border-radius:18px;flex-shrink:0;display:grid;place-items:center;background:#ffffff29;border:1px solid rgba(255,255,255,.25);font-size:1.9rem;font-weight:800;letter-spacing:.02em}.pf-banner-info{display:flex;flex-direction:column;gap:6px;min-width:0}.pf-name{margin:0;font-size:1.4rem;font-weight:800;line-height:1.1}.pf-roles{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.pf-role-chip{font-size:.72rem;font-weight:700;padding:3px 10px;border-radius:999px;background:#ffffff2e;border:1px solid rgba(255,255,255,.22);text-transform:uppercase;letter-spacing:.05em}.pf-status{font-size:.7rem;font-weight:700;padding:3px 9px;border-radius:999px;text-transform:uppercase;letter-spacing:.05em}.pf-status.ok{background:#22c55e38;border:1px solid rgba(134,239,172,.5);color:#dcfce7}.pf-status.off{background:#ef444438;border:1px solid rgba(252,165,165,.5);color:#fee2e2}.pf-email{margin:2px 0 0;font-size:.86rem;opacity:.85;font-family:JetBrains Mono,ui-monospace,monospace}.pf-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;align-items:start}.pf-grid>.pf-card:first-child{grid-row:span 2}.pf-card{background:#fff;border:1px solid var(--border, rgba(15,31,56,.09));border-radius:14px;padding:20px 22px;display:flex;flex-direction:column;gap:16px}.pf-card-title{margin:0;font-size:.95rem;font-weight:700;color:var(--ink, #0f1f38);display:flex;align-items:center;gap:8px;padding-bottom:12px;border-bottom:1px solid var(--border, rgba(15,31,56,.08))}.pf-fields{display:flex;flex-direction:column;gap:4px}.pf-field{display:flex;align-items:center;gap:13px;padding:10px 4px;border-bottom:1px solid var(--border, rgba(15,31,56,.06))}.pf-field:last-child{border-bottom:none}.pf-field-icon{width:34px;height:34px;border-radius:9px;flex-shrink:0;display:grid;place-items:center;background:var(--surface-app, #f2f4f8);color:var(--blue, #4392f1)}.pf-field-body{display:flex;flex-direction:column;gap:1px;min-width:0}.pf-field-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted, #6a7a96)}.pf-field-value{font-size:.9rem;font-weight:600;color:var(--ink, #0f1f38)}.pf-form{display:flex;flex-direction:column;gap:14px}.pf-form .field{display:flex;flex-direction:column;gap:6px}.pf-form .field>span{font-size:.76rem;font-weight:600;color:var(--ink-soft, #2d3f5a)}.pf-form .field input{padding:10px 12px;border-radius:9px;border:1px solid var(--border, rgba(15,31,56,.14));font-size:.88rem;font-family:inherit;color:var(--ink, #0f1f38);background:#fff;transition:border-color .15s,box-shadow .15s}.pf-form .field input:focus{outline:none;border-color:var(--blue, #4392f1);box-shadow:0 0 0 3px #4392f126}.pf-form-actions{display:flex;justify-content:flex-end;margin-top:2px}@media (max-width: 860px){.pf-grid{grid-template-columns:1fr}.pf-grid>.pf-card:first-child{grid-row:auto}}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0;border-radius:0!important}*:where(:not(.dash-welcome,.dash-first-card,.modal-card,.topbar-dropdown,.ax-menu-pop,.tv-drag-ghost,.exam-drag-ghost,:focus-visible)){box-shadow:none!important}button,input[type=button],input[type=submit],input[type=reset],input:not([type=checkbox]):not([type=radio]),select,textarea{border-radius:var(--r-btn, 5px)!important}.loader-orbit,.loader-logo-wrap,.boot-loader-ring{border-radius:50%!important}.loader-logo{border-radius:0!important;object-fit:contain}button:where(.btn-icon,.modal-close,.modal-close-btn,.topbar-icon-btn,.topbar-help-btn,.sidebar-collapse-btn,.dpref-icon-btn,.venue-dept-chip-x,.exam-search-clear,.ef-search-clear,.hero-arrow,.exam-row-remove){border-radius:999px!important}html .btn-primary,html .primary-btn,html .dep-form-btn,html .exam-btn.primary,html .tt-ops-primary,html .tt-generate-btn,html .tt-list-generate-btn,html .tt-list-action-btn--primary,html .tt-action-btn.primary,html .btn-toolbar-primary,html .dpref-primary-btn,html .asn-save-btn,html .asn-assign-btn,html .um-action-btn.success,html .exam-merge-go,html .exam-step-next,html .auth-submit,html .cta-primary{background:var(--blue-dark, #2b74d4)!important;border-color:var(--blue-dark, #2b74d4)!important;color:#fff!important}html .btn-primary:hover:not(:disabled),html .primary-btn:hover:not(:disabled),html .dep-form-btn:hover:not(:disabled),html .exam-btn.primary:hover:not(:disabled),html .tt-ops-primary:hover:not(:disabled),html .tt-generate-btn:hover:not(:disabled),html .tt-list-generate-btn:hover:not(:disabled),html .tt-list-action-btn--primary:hover:not(:disabled),html .tt-action-btn.primary:hover:not(:disabled),html .btn-toolbar-primary:hover:not(:disabled),html .dpref-primary-btn:hover:not(:disabled),html .asn-save-btn:hover:not(:disabled),html .asn-assign-btn:hover:not(:disabled),html .um-action-btn.success:hover:not(:disabled),html .exam-merge-go:hover:not(:disabled),html .exam-step-next:hover:not(:disabled),html .auth-submit:hover:not(:disabled),html .cta-primary:hover:not(:disabled){background:var(--blue-deep, #1a5abf)!important;border-color:var(--blue-deep, #1a5abf)!important}:root{--blue: #4392f1;--blue-dark: #2b74d4;--blue-deep: #1a5abf;--blue-light: #e3ebff;--alice: #e7f0ff;--lavender: #ece8ef;--cinnabar: #dc493a;--cinnabar-dark: #b83629;--ink: #0f1f38;--ink-soft: #2d3f5a;--muted: #6a7a96;--white: #ffffff;--surface-app: #f2f4f8;--surface-card: #ffffff;--surface-hover: #e7f0ff;--border: rgba(15, 31, 56, .09);--border-strong: rgba(15, 31, 56, .16);--font-sans: "Roboto", system-ui, -apple-system, "Helvetica Neue", Arial, sans-serif;--font-mono: "JetBrains Mono", "Cascadia Mono", "Cascadia Code", "Consolas", "Courier New", monospace;--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--r-sm: 6px;--r-md: 8px;--r-lg: 12px;--r-xl: 16px;--r-btn: 5px;--shadow-xs: 0 1px 3px rgba(15, 31, 56, .06);--shadow-sm: 0 2px 8px rgba(15, 31, 56, .08);--shadow-md: 0 4px 16px rgba(15, 31, 56, .1);--shadow-lg: 0 8px 32px rgba(15, 31, 56, .12);--ease: .18s ease}html{scroll-behavior:smooth}body{font-family:var(--font-sans);min-height:100vh;background:var(--white);color:var(--ink);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.5;font-size:15px}a{color:inherit;text-decoration:none}button,input,select,textarea{font-family:var(--font-sans);font-size:inherit}img{display:block;max-width:100%}.mono{font-family:var(--font-mono);font-feature-settings:"liga" 1,"calt" 1}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#4392f147;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#4392f180}:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:var(--r-sm)}.app-main{--blue: #315fbe;--blue-dark: #244c9d;--blue-deep: #183b7a;--blue-light: #e9effb;--alice: #edf3fb;--cinnabar: #d85d48;--cinnabar-dark: #b94736;--ink: #172b3f;--ink-soft: #40546a;--muted: #718096;--surface-app: #eef3f6;--surface-card: #ffffff;--surface-hover: #f4f7fa;--border: #dfe6ed;--border-strong: #c9d4df;--r-sm: 5px;--r-md: 7px;--r-lg: 8px;--r-xl: 8px;--shadow-xs: 0 1px 2px rgba(25, 48, 72, .04);--shadow-sm: 0 3px 12px rgba(25, 48, 72, .07);--shadow-md: 0 10px 28px rgba(25, 48, 72, .11);--shadow-lg: 0 20px 56px rgba(25, 48, 72, .16);background:#eef3f6!important}.app-shell:not(.app-shell--fullscreen){grid-template-columns:240px minmax(0,1fr)}.app-shell.app-shell--collapsed:not(.app-shell--fullscreen){grid-template-columns:68px minmax(0,1fr)}.app-shell:not(.app-shell--fullscreen) .sidebar{width:240px;border-right:1px solid rgba(255,255,255,.1);background:#173f75;box-shadow:8px 0 28px #12273e1f!important}.app-shell:not(.app-shell--fullscreen) .sidebar.collapsed{width:68px}.app-shell .sidebar-brand{min-height:68px;padding:12px 14px;gap:10px;border-bottom:1px solid rgba(255,255,255,.11);background:#0a26483d}.app-shell .sidebar-logo{width:38px;height:38px;padding:4px;border:1px solid rgba(255,255,255,.4)!important;border-radius:7px!important;background:#fff;box-shadow:0 5px 14px #0719302e!important}.app-shell .sidebar-brand-text strong{color:#fff;font-size:.8rem;font-weight:750;line-height:1.25}.app-shell .sidebar-brand-text span{margin-top:2px;color:#9fc1df;font-size:.58rem;font-weight:700;letter-spacing:.08em}.app-shell .sidebar-collapse-btn{width:26px;height:26px;border:1px solid rgba(255,255,255,.2)!important;border-radius:6px!important;background:#ffffff12;color:#dbeafa}.app-shell .sidebar-collapse-btn:hover{border-color:#ffffff57!important;background:#ffffff24;color:#fff;transform:none}.app-shell .sidebar-nav{gap:3px;padding:9px 10px 14px;scrollbar-color:rgba(255,255,255,.22) transparent}.app-shell .sidebar-nav::-webkit-scrollbar{width:4px}.app-shell .sidebar-nav::-webkit-scrollbar-thumb{border-radius:4px!important;background:#ffffff38}.app-shell .sidebar-section{padding:14px 10px 6px;color:#7fd0b2;font-size:.58rem;font-weight:800;letter-spacing:.1em}.app-shell .sidebar-link{position:relative;min-height:42px;gap:9px;padding:6px 9px;border:1px solid transparent!important;border-radius:6px!important;color:#d8e6f3;font-size:.8rem;font-weight:600;transform:none}.app-shell .sidebar-link:hover{border-color:#ffffff14!important;background:#ffffff17;color:#fff;transform:none}.app-shell .sidebar-link-icon{width:30px;height:30px;border-radius:6px!important;color:#a9c4dd;transform:none}.app-shell .sidebar-link:hover .sidebar-link-icon{background:#ffffff14;color:#fff;transform:none}.app-shell .sidebar-link.active{border-color:#ffffffc7!important;background:#fff;color:#173f75;font-weight:750;box-shadow:0 7px 18px #081c3538!important}.app-shell .sidebar-link.active:before{content:"";position:absolute;left:-1px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0!important;background:#20a779}.app-shell .sidebar-link.active .sidebar-link-icon{background:#e7f6ef;color:#14815d;transform:none}.app-shell .sidebar-divider{margin:8px 6px;border-top-color:#ffffff21;background:transparent}.app-shell .sidebar-footer{padding:11px 10px 13px;border-top:1px solid rgba(255,255,255,.11);background:#0a264833}.app-shell .sidebar-user-card{gap:7px;min-height:52px;padding:7px;border:1px solid rgba(255,255,255,.14)!important;border-radius:7px!important;background:#ffffff14}.app-shell .sidebar-user-main{min-width:0;border-radius:6px!important}.app-shell .sidebar-user-main:hover{opacity:1}.app-shell .sidebar-avatar{width:34px;height:34px;border:1px solid rgba(255,255,255,.25)!important;border-radius:6px!important;background:#20a779;color:#fff}.app-shell .sidebar-user-name{color:#fff;font-size:.76rem;font-weight:750}.app-shell .sidebar-user-label{color:#a9c4dd;font-size:.62rem}.app-shell .sidebar-signout-icon{width:30px;height:30px;border:1px solid rgba(255,255,255,.13)!important;border-radius:6px!important;color:#b9cee1}.app-shell .sidebar-signout-icon:hover{border-color:#f4867580!important;background:#e65f4c2e;color:#ffd7d0}.app-shell .sidebar.collapsed .sidebar-brand{min-height:auto;padding:12px 8px 10px;gap:8px}.app-shell .sidebar.collapsed .sidebar-collapse-btn{margin-top:0}.app-shell .sidebar.collapsed .sidebar-nav{padding:8px}.app-shell .sidebar.collapsed .sidebar-link{padding:5px}.app-shell .sidebar.collapsed .sidebar-link.active:before{top:8px;bottom:8px}.app-shell .sidebar.collapsed .sidebar-footer{padding:10px 8px}.app-shell .sidebar.collapsed .sidebar-user-card{flex-direction:column;gap:7px;padding:7px 4px;border-color:#ffffff1f!important;background:#ffffff0f}@media (max-width: 900px){.app-shell:not(.app-shell--fullscreen),.app-shell.app-shell--collapsed:not(.app-shell--fullscreen){grid-template-columns:minmax(0,1fr)}.app-shell:not(.app-shell--fullscreen) .sidebar,.app-shell:not(.app-shell--fullscreen) .sidebar.collapsed{width:min(286px,86vw);box-shadow:18px 0 50px #0b1d3047!important}.app-shell.app-shell--nav-open:after{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:25;background:#0f20317a;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}}.app-main .app-topbar{height:68px;padding:0 28px;border-bottom:1px solid #e2e8ee;background:#fffffffa;box-shadow:0 2px 12px #1930480d!important}.app-main .topbar-page h1{color:#172b3f;font-size:1.05rem;font-weight:750;line-height:1.25}.app-main .topbar-page p{margin-top:2px;color:#7b8999;font-size:.72rem}.app-main :where(.topbar-icon-btn,.menu-btn){width:34px;height:34px;border:1px solid transparent;border-radius:7px!important;background:#f5f7fa;color:#5b6d82}.app-main :where(.topbar-icon-btn,.menu-btn):hover{border-color:#d9e2eb;background:#edf2f7;color:#244c9d;transform:none}.app-main .topbar-sem-chip{min-height:34px;padding:6px 11px;border:1px solid #d9e4df;border-radius:7px!important;background:#f5faf7;color:#245d43;box-shadow:none!important}.app-main .topbar-sem-dot{background:#1f9d68}.app-main .topbar-sem-chip select{color:#245d43;font-weight:700}.app-main .topbar-user{min-height:40px;padding:4px 7px 4px 5px;border:1px solid transparent;border-radius:8px!important}.app-main .topbar-user:hover,.app-main .topbar-user.active{border-color:#dfe6ed;background:#f7f9fb;transform:none}.app-main .topbar-avatar{border-radius:7px!important;background:#173f75;box-shadow:inset 0 0 0 1px #fff3!important}.app-main .topbar-dropdown{margin-top:9px;overflow:hidden;border:1px solid #dce4ec;border-radius:8px!important;background:#fff;box-shadow:0 16px 42px #182d4526!important}.app-main .topbar-dropdown-header{background:#f7f9fb}.app-main .topbar-dropdown-item{min-height:38px}.app-main .page-content{padding:22px 28px 28px;gap:18px;background-color:#eef3f6;background-image:linear-gradient(rgba(255,255,255,.35) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.35) 1px,transparent 1px);background-size:28px 28px}.app-main :where(.panel,.app-card,.summary-card,.dash-panel,.dash-actions-card,.data-table-wrap,.dep-form-card,.apr-workflow-panel,.apr-cr-panel,.lpref-card,.dpref-card,.pf-card,.exam-panel,.exam-config-card,.tt-stepper,.tt-table-card,.tt-list-rows,.pm-table-wrap,.aud-table-wrap,.asn-table-wrap,.asn-bulk-table-wrap,.sem-table-wrap,.um-table-panel,.dean-single-panel,.dean-overview-card,.fac-card,.public-tt-table-wrap){border-color:#dfe6ed!important;border-radius:8px!important;background:#fff;box-shadow:0 3px 12px #19304812!important}.app-main :where(.panel,.app-card,.summary-card,.dash-panel,.dash-actions-card):hover{border-color:#d3dde7}.app-main :where(.panel-header,.dash-panel-head,.apr-panel-head,.exam-panel-head){min-height:38px;border-bottom-color:#e7ecf1}.app-main :where(.panel-header h2,.panel-header h3,.dash-panel-title,.asn-panel-title){color:#23384e;font-weight:750;letter-spacing:0}.app-main :where(.stats-grid,.summary,.dep-stats,.aud-stats,.dean-summary,.expv-stats,.tt-stats-row){gap:12px}.app-main :where(.app-card--stat,.stat-card,.um-stat-card,.dean-summary-item,.aud-stat,.tt-stat-card){min-height:96px;border:1px solid #dfe6ed!important;border-radius:8px!important;background:#fff;box-shadow:0 2px 9px #1930480e!important}.app-main .app-card--stat:before,.app-main .stat-card:before{width:3px}.app-main :where(.app-card-value,.stat-value,.summary-card strong,.um-stat-value,.dean-summary-value){color:#172b3f;font-variant-numeric:tabular-nums;letter-spacing:0}.app-main :where(.app-card-label,.stat-label,.dean-summary-label){color:#748397;letter-spacing:.04em}.app-main :where(.app-card-icon,.stat-icon,.dash-action-icon){border-radius:7px!important}.app-main :where(.table-shell,.table-wrapper,.data-table-wrap,.um-table-wrap,.aud-table-wrap,.asn-table-wrap,.asn-bulk-table-wrap,.pc-prog-table-wrap,.dean-view-table-wrap,.dean-prog-table,.exam-day-table-wrap,.pref-preview-table-wrap,.dpref-preview-table-wrap,.public-tt-table-wrap){overflow:auto;border:1px solid #dfe6ed!important;border-radius:8px!important;background:#fff;box-shadow:0 2px 9px #1930480d!important}.app-main table{border-color:#e4eaf0}.app-main table thead th,.app-main .data-row.header{border-color:#dfe6ed;background:#f5f8fa!important;color:#52657a!important;font-size:.69rem;font-weight:800;letter-spacing:.035em;text-transform:uppercase}.app-main table tbody td{border-color:#e8edf2}.app-main table:not(.schedule-grid-table) tbody td{color:#34485d}.app-main table:not(.schedule-grid-table) tbody tr:hover td,.app-main .data-row.clickable:hover{background:#f6f9fb!important}.app-main :where(.data-table-toolbar,.table-header,.ax-toolbar,.tt-requests-toolbar){border-color:#e2e8ee;background:#f8fafb}.app-main :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]),select,textarea){border:1px solid #ccd7e2!important;border-radius:7px!important;background-color:#fff;color:#263a50;box-shadow:inset 0 1px 1px #19304806!important}.app-main :where(input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=file]),select){min-height:38px}.app-main :where(input,select,textarea):hover{border-color:#aebdcb!important}.app-main :where(input,select,textarea):focus{border-color:#315fbe!important;outline:none;box-shadow:0 0 0 3px #315fbe1c!important}.app-main :where(input,textarea)::placeholder{color:#9aa7b5}.app-main :where(.field>span:first-child,.form-field>label,.form-label,label.form-field){color:#52657a;font-size:.74rem;font-weight:700}.app-main :where(.helper-text,.field-hint){color:#8390a0}.app-main :where(.primary-btn,.dep-form-btn,.btn-toolbar-primary,.tt-generate-btn,.lpref-primary-btn,.dpref-primary-btn,.pm-primary-btn,.exam-primary-btn){min-height:36px;border:1px solid #244c9d!important;border-radius:7px!important;background:#315fbe!important;color:#fff!important;font-weight:700;box-shadow:0 2px 5px #244c9d2e!important}.app-main :where(.primary-btn,.dep-form-btn,.btn-toolbar-primary,.tt-generate-btn,.lpref-primary-btn,.dpref-primary-btn,.pm-primary-btn,.exam-primary-btn):hover:not(:disabled){background:#244c9d!important;transform:translateY(-1px)}.app-main :where(.ghost-btn,.dep-form-cancel,.btn-toolbar,.tt-action-btn,.lpref-ghost-btn,.dpref-ghost-btn,.pm-ghost-btn){min-height:36px;border:1px solid #ccd7e2!important;border-radius:7px!important;background:#fff!important;color:#40546a!important;font-weight:650;box-shadow:none!important}.app-main :where(.ghost-btn,.dep-form-cancel,.btn-toolbar,.tt-action-btn,.lpref-ghost-btn,.dpref-ghost-btn,.pm-ghost-btn):hover:not(:disabled){border-color:#9eb0c2!important;background:#f5f8fa!important;color:#244c9d!important}.app-main :where(.icon-btn,.dep-icon-btn,.dpref-icon-btn,.lpref-modal-x,.dpref-modal-x,.modal-close-btn,.dean-modal-close,.tt-list-action-btn,.page-btn){border-radius:6px!important}.app-main :where(.danger-btn,.dep-form-danger,.btn-toolbar-danger,.ghost-btn.danger){border-color:#e6b9b2!important;background:#fff7f5!important;color:#b94736!important}.app-main button:disabled{opacity:.5;cursor:not-allowed;transform:none!important}.app-main .seg-tabs{gap:3px;padding:4px;border:1px solid #d8e1ea;border-radius:8px!important;background:#e8edf2}.app-main .seg-tab{min-height:32px;border-radius:6px!important;color:#637489;font-weight:700}.app-main .seg-tab.active{background:#fff;color:#244c9d;box-shadow:0 1px 4px #19304821!important}.app-main .seg-tab-count{border-radius:99px!important;background:#315fbe}.app-main .pagination{padding-top:13px;border-top-color:#e4eaf0}.app-main .page-btn{min-width:32px;height:32px;border:1px solid #d6e0e9;background:#fff;color:#53667b}.app-main .page-btn.active{border-color:#315fbe;background:#315fbe;color:#fff}.app-main :where(.badge,.status-badge,.apr-badge,.tt-combo-status,.tt-list-status,.request-status){border-radius:99px!important;font-weight:750;letter-spacing:0}.app-main :where(.item,.item-card,.request-card,.apr-card,.apr-cr-card,.exam-card,.sch-card,.sch-wk-card){border-color:#e0e7ee!important;border-radius:7px!important;background:#fff;box-shadow:0 1px 5px #1930480b!important}.app-main :where(.item-card,.request-card,.apr-card,.apr-cr-card):hover{border-color:#cbd7e2!important;background:#f9fbfc}.app-main :where(.empty,.empty-list,.empty-state,.apr-empty,.aud-empty,.asn-empty-state,.dpref-empty,.lpref-empty,.pm-empty,.exam-empty,.sch-empty,.tt-empty,.tt-list-empty){border:1px dashed #cdd8e3;border-radius:8px!important;background:#f8fafb;color:#718096}.app-main .page-error-card{border:1px solid #ebc2bb;border-radius:8px!important;background:#fff;box-shadow:0 12px 34px #19304817!important}.app-main .loader-spinner-wrap{width:74px;height:74px}.app-main .loader-logo-wrap{border-radius:50%!important;border-color:#d8e3ef;box-shadow:0 7px 18px #315fbe1f!important}.app-main .loader-orbit{border-radius:50%!important;border-top-color:#315fbe}.app-main .loader-logo{width:34px;height:34px}.app-main :where(.ax-menu-pop,.tt-pref-pop,.dropdown-menu,.filter-menu,.popover){border:1px solid #d7e0e9!important;border-radius:8px!important;background:#fff;box-shadow:0 14px 36px #19304824!important}.app-main .aud-header-actions{flex-wrap:nowrap;gap:7px;padding:0!important;border:0!important;background:transparent!important;box-shadow:none!important}.app-main .aud-header-actions .ghost-btn{min-height:34px;padding:7px 10px}.app-main .aud-view-toggle button{padding:6px 9px}@media (max-width: 1260px){.app-main .aud-header-actions .ghost-btn{width:34px;padding:0;justify-content:center;font-size:0}.app-main .aud-header-actions .ghost-btn svg{width:15px;height:15px}}@media (max-width: 900px){.app-main .app-topbar{padding:0 16px}.app-main .page-content{padding:16px}}@media (max-width: 600px){.app-main .app-topbar{height:60px;gap:8px;padding:0 10px}.app-main .topbar-page h1{font-size:.92rem}.app-main .topbar-page p{display:none}.app-main .page-content{padding:12px;gap:12px}.app-main .stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px!important}.app-main .app-card--stat{min-height:108px!important;padding:13px!important}.app-main .app-card--stat .app-card-value{font-size:1.4rem!important}.app-main .app-card--stat .app-card-label{font-size:.68rem!important}}@media (max-width: 340px){.app-main .stats-grid{grid-template-columns:1fr!important}}body.app-body :where(.modal-backdrop,.lpref-modal-backdrop,.dpref-modal-backdrop,.dean-modal-backdrop),body.app-faculties .modal-backdrop,body.app-semesters .modal-backdrop{background:#13263a7a!important;-webkit-backdrop-filter:blur(7px) saturate(.85);backdrop-filter:blur(7px) saturate(.85)}body.app-body :where(.modal-card,.lpref-modal,.dpref-modal,.dean-modal,.exam-merge-modal,.tt-force-modal,.tv-swap-modal),body.app-faculties .modal-card,body.app-semesters .modal-card{border:0!important;border-left:1px solid #dce4ec!important;border-radius:0!important;background:#fff;box-shadow:-18px 0 48px #12263b33!important}body.app-body :where(.modal-header,.lpref-modal-head,.dpref-modal-head,.dean-modal-header),body.app-faculties .modal-header,body.app-semesters .modal-header{border-bottom:1px solid #e7ecf1;background:#f8fafb}body.app-body :where(.modal-title,.lpref-modal-head h3,.dpref-modal-head h3,.dean-modal-title){color:#20364c;font-weight:750;letter-spacing:0}body.app-body :where(.modal-footer,.modal-actions,.lpref-modal-actions,.dpref-modal-actions){border-top-color:#e7ecf1;background:#f8fafb}body.app-body :where(.modal-backdrop,.lpref-modal-backdrop,.dpref-modal-backdrop,.dean-modal-backdrop){z-index:10000!important;overscroll-behavior:contain}body.app-body :where(.modal-card,.lpref-modal,.dpref-modal,.dean-modal,.tt-force-modal){color:#172b3f;font-family:var(--font-sans);box-shadow:inset 0 3px #315fbe,-18px 0 48px #12263b33!important}body.app-body .modal-card:has(>.modal-body){gap:0!important;padding:0!important}body.app-body .modal-card:not(:has(>.modal-body)):not(.tt-merge-workspace){gap:14px!important;padding:0 20px 20px!important;overflow-x:hidden!important}body.app-body .tt-merge-workspace{gap:0!important;padding:0!important}body.app-body .modal-header{min-height:58px;margin:0!important;padding:15px 18px!important;flex-shrink:0;border-bottom:1px solid #e3e9ef!important;background:#f7f9fb!important}body.app-body .modal-card:not(:has(>.modal-body))>.modal-header{margin:0 -20px!important}body.app-body .modal-header :where(h2,h3),body.app-body .modal-card:not(:has(>.modal-body))>:where(h2,h3):first-child{margin:0;color:#17324d!important;font-size:.95rem!important;font-weight:800!important;letter-spacing:0;line-height:1.35}body.app-body .modal-card:not(:has(>.modal-body))>:where(h2,h3):first-child{margin:0 -20px!important;padding:18px 20px 14px;border-bottom:1px solid #e3e9ef;background:#f7f9fb}body.app-body .modal-body{min-height:0;padding:18px 20px 20px!important;overflow-x:hidden!important;overflow-y:auto!important;scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:#aebed0 #f4f7f9}body.app-body :where(.modal-body,.modal-card,.lpref-modal,.dpref-modal,.dean-modal)::-webkit-scrollbar{width:9px}body.app-body :where(.modal-body,.modal-card,.lpref-modal,.dpref-modal,.dean-modal)::-webkit-scrollbar-track{background:#f4f7f9}body.app-body :where(.modal-body,.modal-card,.lpref-modal,.dpref-modal,.dean-modal)::-webkit-scrollbar-thumb{border:2px solid #f4f7f9;border-radius:8px!important;background:#aebed0}body.app-body :where(.modal-close-btn,.modal-close,.lpref-modal-x,.dpref-modal-x,.dean-modal-close){display:inline-grid!important;place-items:center;width:32px!important;height:32px!important;min-width:32px;padding:0!important;border:1px solid #d8e1ea!important;border-radius:6px!important;background:#fff!important;color:#637489!important;font-size:1rem!important;cursor:pointer}body.app-body :where(.modal-close-btn,.modal-close,.lpref-modal-x,.dpref-modal-x,.dean-modal-close):hover{border-color:#c9d4df!important;background:#eef2f5!important;color:#17324d!important}body.app-body :where(.modal-card,.lpref-modal,.dpref-modal,.dean-modal) :where(input,select,textarea){border:1px solid #cbd7e2!important;border-radius:6px!important;background-color:#fff!important;color:#172b3f!important;font-family:inherit}body.app-body :where(.modal-card,.lpref-modal,.dpref-modal,.dean-modal) :where(input,select,textarea):focus{border-color:#315fbe!important;outline:none!important;box-shadow:0 0 0 3px #315fbe1f!important}body.app-body :where(.modal-card,.lpref-modal,.dpref-modal,.dean-modal) label{color:#40546a;letter-spacing:0}body.app-body :where(.modal-footer,.modal-actions,.lpref-modal-actions,.dpref-modal-actions){display:flex;align-items:center;justify-content:flex-end;gap:8px;margin-top:4px;padding:14px 0 0;border-top:1px solid #e3e9ef!important;background:transparent!important}body.app-body .modal-card:not(:has(>.modal-body))>.modal-actions:last-child{margin:4px -20px -20px!important;padding:14px 20px!important;background:#f7f9fb!important}body.app-body :where(.modal-footer,.modal-actions) :where(button,.primary-btn,.ghost-btn),body.app-body :where(.lpref-modal-actions,.dpref-modal-actions) button,body.app-body .tt-force-actions button{min-height:36px;border-radius:6px!important;font-weight:700;letter-spacing:0}body.app-body :where(.lpref-modal,.dpref-modal){padding:0 20px 20px!important}body.app-body :where(.lpref-modal-head,.dpref-modal-head){min-height:58px;margin:0 -20px 14px!important;padding:14px 18px;border-bottom:1px solid #e3e9ef!important;background:#f7f9fb!important;flex-shrink:0}body.app-body :where(.lpref-modal-head h3,.dpref-modal-head h3){color:#17324d!important;font-size:.95rem!important}body.app-body :where(.lpref-modal-actions,.dpref-modal-actions){margin:6px -20px -20px!important;padding:14px 20px!important;background:#f7f9fb!important}body.app-body .dean-modal-header{min-height:62px;padding:16px 20px!important;background:#f7f9fb!important}body.app-body .tt-force-modal{padding:22px!important}body.app-body .tt-force-icon{width:44px;height:44px;border-radius:8px!important;background:#e9effb!important;color:#315fbe!important}@media (max-width: 640px){body.app-body .modal-body{padding:16px!important}body.app-body :where(.modal-card,.lpref-modal,.dpref-modal) .form-row{grid-template-columns:minmax(0,1fr)!important}body.app-body :where(.modal-footer,.modal-actions,.lpref-modal-actions,.dpref-modal-actions){align-items:stretch;flex-direction:column-reverse}body.app-body :where(.modal-footer,.modal-actions,.lpref-modal-actions,.dpref-modal-actions) button{width:100%;justify-content:center}body.app-body .dean-two-panel{flex-direction:column;overflow-y:auto}body.app-body .dean-two-panel-sidebar{width:100%;max-height:210px;border-right:0;border-bottom:1px solid #e3e9ef}}body.app-body .toast-stack,body.app-faculties .toast-stack,body.app-semesters .toast-stack{top:78px;right:22px;width:min(390px,calc(100vw - 28px));gap:9px;z-index:12000}body.app-body .toast,body.app-faculties .toast,body.app-semesters .toast{min-height:64px;padding:11px 12px;border:1px solid #dce4ec!important;border-radius:8px!important;background:#fffffffa;box-shadow:0 14px 34px #19304829!important}body.app-body .toast:before,body.app-faculties .toast:before,body.app-semesters .toast:before{display:none}body.app-body .toast-icon,body.app-faculties .toast-icon,body.app-semesters .toast-icon{width:34px;height:34px;display:grid;place-items:center;flex-shrink:0;border-radius:7px!important}body.app-body .toast.success .toast-icon{background:#e8f7ef;color:#18794e}body.app-body .toast.error .toast-icon{background:#fff0ed;color:#c44735}body.app-body .toast.warning .toast-icon{background:#fff5df;color:#a86608}body.app-body .toast.info .toast-icon{background:#eaf1fc;color:#315fbe}body.app-body .toast-content{min-width:0;flex:1}body.app-body .toast-title{color:#263a50;font-size:.8rem;font-weight:750}body.app-body .toast-message{color:#6d7c8e;font-size:.76rem}body.app-body .toast-close{width:28px;height:28px;border:0;border-radius:6px!important;background:transparent;color:#8290a0}body.app-body .notif-drawer{border-left:1px solid #dce4ec;background:#fff;box-shadow:-18px 0 48px #19304829!important}body.app-body .notif-header{border-bottom-color:#e4eaf0;background:#f8fafb}body.app-body .notif-item{border-bottom-color:#e8edf2}body.app-body .notif-item:hover{background:#f6f9fb}body.app-body .notif-item.unread{background:#f2f6fc}body.public-tt-body{--blue: #315fbe;--ink: #172b3f;--ink-soft: #40546a;--muted: #718096;--surface-app: #eef3f6;--border: #dfe6ed;background:#eef3f6}body.public-tt-body :where(.public-tt-table-wrap,.public-tt-filter,.public-tt-empty){border-radius:8px!important;box-shadow:0 5px 18px #19304814!important}.app-main .dashboard-container{gap:18px}.app-main .dash-welcome{min-height:154px;padding:26px 30px;border:1px solid rgba(24,59,122,.35)!important;border-radius:8px!important;background:#153a70!important;color:#fff;box-shadow:0 10px 28px #183b7a2e!important}.app-main .dash-welcome:after{display:none}.app-main .dash-welcome-eyebrow{color:#b9d1ff;letter-spacing:.08em}.app-main .dash-greet-text{color:#fff;font-size:1.48rem}.app-main .dash-greet-date{color:#ffffffc7}.app-main .dash-timetable-badge{border:1px solid rgba(255,255,255,.32);border-radius:99px!important;background:#ffffff24;color:#fff;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.app-main .dash-first-card{border:1px solid #315fbe!important;background:#fff!important;color:#172b3f;box-shadow:0 3px 12px #19304812!important;transform:none}.app-main .dash-first-card:before,.app-main .dash-first-card:after{display:none}.app-main .dash-first-card .app-card-label{color:#718096!important}.app-main .dash-first-card .app-card-value{color:#244c9d!important;font-size:1.75rem}.app-main .dash-first-card .app-card-sub{color:#718096!important}.app-main .dash-first-card .app-card-icon,.app-main .dash-first-card .app-card-icon[class*=app-card-icon--]{background:#e9effb!important;color:#315fbe!important;box-shadow:none!important}.app-main .dash-actions-card{padding:16px}.app-main .dash-actions-grid{gap:8px}.app-main .dash-action-card{min-height:66px;border:1px solid #e0e7ee!important;border-radius:7px!important;background:#fff;box-shadow:none!important}.app-main .dash-action-card:hover{border-color:#b9c8d7!important;background:#f7f9fb;transform:none}.app-main .dash-bottom-grid{gap:14px}.app-main .dash-panel{overflow:hidden}.app-main .dash-panel-head{padding:13px 16px;background:#f8fafb}.app-main .dash-panel-body{padding:14px 16px}.app-main .dash-view-all{color:#315fbe;font-weight:700}.app-main :where(.ax-ov-card,.dep-card,.fac-card,.venue-card){border:1px solid #dfe6ed!important;border-radius:8px!important;background:#fff!important;box-shadow:0 2px 9px #1930480e!important}.app-main :where(.ax-ov-card,.dep-card,.fac-card,.venue-card):hover{border-color:#b9c8d7!important;box-shadow:0 6px 18px #19304817!important;transform:translateY(-1px)}.app-main .ax-ov-card.is-active{border-color:#315fbe!important;box-shadow:inset 0 0 0 1px #315fbe!important}.app-main :where(.ax-toolbar,.data-table-toolbar){padding:11px 13px;border:1px solid #dfe6ed;border-radius:8px!important;background:#f8fafb;box-shadow:0 2px 8px #1930480a!important}.app-main :where(.dep-card-icon,.fac-card-code,.ax-ov-icon){border-radius:7px!important}.app-main :where(.apr-stat,.exam-stat,.pref-stat){border:1px solid #dfe6ed!important;border-radius:8px!important;background:#fff;box-shadow:0 2px 9px #1930480e!important}.app-main :where(.apr-stat-icon,.exam-stat-icon,.pref-stat-icon,.apr-req-avatar){border-radius:7px!important}.app-main .apr-page{gap:18px}.app-main .apr-card{min-height:74px}.app-main .apr-card-inner{padding:13px 15px}.app-main .apr-card-accent{width:3px}.app-main .apr-cr-panel,.app-main .apr-workflow-panel{overflow:hidden}.app-main :where(.apr-btn,.dean-btn,.hod-btn){border-radius:6px!important}.app-main :where(.apr-btn.approve,.dean-btn.approve,.hod-btn.approve){border-color:#18794e!important;background:#18794e!important;color:#fff!important}.app-main .hod-list-item--active{border-color:#315fbe!important;background:#f3f7fd!important;box-shadow:inset 0 0 0 1px #315fbe59!important}.app-main .dean-summary{overflow:hidden;border:1px solid #dfe6ed;border-radius:8px!important;background:#fff;box-shadow:0 3px 12px #19304812!important}.app-main .dean-summary-item{border:0!important;border-right:1px solid #e6ebf0!important;box-shadow:none!important}.app-main .dean-summary-item:last-child{border-right:0!important}.app-main .asn-sem-bar,.app-main .asn-body{border:1px solid #dfe6ed!important;border-radius:8px!important;background:#fff;box-shadow:0 3px 12px #19304812!important}.app-main .asn-sem-bar{min-height:54px}.app-main .asn-left{background:#f8fafb;border-right-color:#dfe6ed}.app-main .asn-left-header{background:#f3f6f8}.app-main :where(.asn-lec-row,.asn-prog-row,.asn-course-row){border-radius:6px!important}.app-main :where(.asn-lec-row,.asn-prog-row,.asn-course-row).active{background:#eaf1fc;color:#244c9d}.app-main .exam-tabs{gap:4px;padding:4px;border:1px solid #d8e1ea;border-radius:8px!important;background:#e8edf2;align-self:flex-start}.app-main .exam-tabs button{min-height:34px;border:0!important;border-radius:6px!important;background:transparent;color:#637489;box-shadow:none!important}.app-main .exam-tabs button.active{background:#fff!important;color:#244c9d!important;box-shadow:0 1px 4px #19304821!important}.app-main .exam-tabs button.active :where(span,small){background:#e9effb;color:#244c9d}.app-main .exam-config-card{background:#f6f8fa!important}.app-main .exam-config-card-header{background:#fff}.app-main :where(.exam-session-card,.exam-slot-card,.exam-clash-card){border-radius:7px!important;box-shadow:0 1px 5px #1930480d!important}.app-main :where(.lpref-card,.dpref-card){overflow:hidden}.app-main :where(.lpref-card-head,.dpref-card-head){border-bottom:1px solid #e5ebf0;background:#f8fafb}.app-main :where(.lpref-card-head-icon,.dpref-card-head-icon){border-radius:7px!important;background:#e9effb;color:#315fbe}.app-main :where(.lpref-period-btn,.dpref-slot-chip,.lpref-modal-prog,.dpref-tag,.lpref-prog-tag){border-radius:6px!important}.app-main :where(.lpref-period-btn,.dpref-slot-chip).selected{border-color:#315fbe!important;background:#eaf1fc!important;color:#244c9d!important;box-shadow:inset 0 0 0 1px #315fbe2e!important}.app-main :where(.pm-summary,.dpref-preview-stats){border:1px solid #dfe6ed;border-radius:8px!important;background:#fff;box-shadow:0 2px 9px #1930480e!important}.app-main .sch-wk-card{overflow:hidden;border-color:#dfe6ed!important;background:#fff}.app-main .sch-card{border-left:3px solid #315fbe!important}.app-main .sch-card:hover{border-color:#b9c8d7!important;transform:translate(2px)}.app-main :where(.ss-day-tab,.sheet-tab,.tt-day-tab){border-radius:6px!important}.app-main :where(.ss-day-tab.active,.sheet-tab.active,.tt-day-tab.active){background:#315fbe!important;color:#fff!important}.app-main .pf-page{max-width:1080px;margin:0 auto}.app-main .pf-banner{min-height:148px;border:1px solid #dbe4ec!important;border-radius:8px!important;background:#fff!important;color:var(--app-ink)!important;box-shadow:0 5px 18px #19304814!important}.app-main .pf-avatar{border-radius:8px!important;background:#173f75!important;color:#fff!important;box-shadow:none!important}.app-main .pf-name{color:var(--app-ink)!important}.app-main .pf-email{color:var(--app-muted)!important;opacity:1!important}.app-main .pf-role-chip{border:1px solid #c8d7ef!important;border-radius:999px!important;background:#edf3fc!important;color:#234c8f!important}.app-main .pf-status,.app-main .pf-status.ok{border:1px solid #bde3ce!important;border-radius:999px!important;background:#e8f7ef!important;color:#18794e!important}@media (max-width: 700px){.app-main .dash-welcome{min-height:138px;padding:22px}.app-main .dash-timetable-badge{align-self:flex-start}.app-main .dean-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.app-main .dean-summary-item{border-bottom:1px solid #e6ebf0!important}}.app-main :where(.primary-btn,.dep-form-btn,.btn-primary,.btn-toolbar-primary,.tt-generate-btn,.tt-action-btn.primary,.tt-list-action-btn--primary,.tt-ops-primary,.tt-combo-btn.approve,.apr-btn.approve,.lpref-primary-btn,.dpref-primary-btn,.pm-primary-btn,.exam-primary-btn,.exam-btn.primary,.exam-btn.success,.um-action-btn.success){border-color:#183b7a!important;background:#183b7a!important;color:#fff!important;box-shadow:0 2px 5px #183b7a33!important}.app-main :where(.primary-btn,.dep-form-btn,.btn-primary,.btn-toolbar-primary,.tt-generate-btn,.tt-action-btn.primary,.tt-list-action-btn--primary,.tt-ops-primary,.tt-combo-btn.approve,.apr-btn.approve,.lpref-primary-btn,.dpref-primary-btn,.pm-primary-btn,.exam-primary-btn,.exam-btn.primary,.exam-btn.success,.um-action-btn.success):hover:not(:disabled){border-color:#102b5a!important;background:#102b5a!important;color:#fff!important}body.app-body :where(.expv-import-modal-backdrop,.swap-alert-backdrop){background:#13263a7a!important;-webkit-backdrop-filter:blur(7px) saturate(.85)!important;backdrop-filter:blur(7px) saturate(.85)!important}body.app-body :where(.expv-import-modal,.swap-alert-dialog){border:0!important;border-left:1px solid #dce4ec!important;border-radius:0!important;background:#fff!important;box-shadow:inset 0 3px #183b7a,-18px 0 48px #12263b33!important}body.app-body .deo-suggest-popup{border:1px solid #dce4ec!important;border-radius:8px!important;background:#fff!important;box-shadow:0 24px 70px #12263b38!important}body.app-body .swap-alert-note{border-left-color:#183b7a!important;background:#edf3fc!important}body.app-body .swap-alert-review{border-color:#183b7a!important;background:#183b7a!important;color:#fff!important}body.app-body .swap-alert-review:hover{background:#102b5a!important}body.app-body :where(.confirmation-actions,.modal-actions,.modal-footer,.lpref-modal-actions,.dpref-modal-actions,.swap-alert-actions,.tt-force-actions)>:where(button,.dialog-primary-btn):last-child:not(:only-child){display:inline-flex;min-width:82px;min-height:36px;align-items:center;justify-content:center;padding:0 14px!important;border:1px solid #183b7a!important;background:#183b7a!important;color:#fff!important;box-shadow:0 2px 5px #183b7a33!important}body.app-body :where(.confirmation-actions,.modal-actions,.modal-footer,.lpref-modal-actions,.dpref-modal-actions,.swap-alert-actions,.tt-force-actions)>:where(button,.dialog-secondary-btn):first-child:not(:only-child){display:inline-flex;min-width:82px;min-height:36px;align-items:center;justify-content:center;padding:0 14px!important;border:1px solid #b42318!important;background:#c9362b!important;color:#fff!important;box-shadow:0 2px 5px #b4231829!important}body.app-body :where(.confirmation-actions,.modal-actions,.modal-footer,.lpref-modal-actions,.dpref-modal-actions,.swap-alert-actions,.tt-force-actions)>button:first-child:not(:only-child):hover:not(:disabled){border-color:#8f1c14!important;background:#a92a21!important;color:#fff!important}body.app-body :where(.confirmation-actions,.modal-actions,.modal-footer,.lpref-modal-actions,.dpref-modal-actions,.swap-alert-actions,.tt-force-actions)>button:last-child:not(:only-child):hover:not(:disabled){border-color:#102b5a!important;background:#102b5a!important;color:#fff!important}body.landing-body{--public-navy: #173f75;--public-navy-deep: #102e55;--public-blue: #315fbe;--public-green: #20a779;--public-coral: #e06452;--public-ink: #172b3f;--public-muted: #6d7c8e;--public-border: #dce4ec;background:#eef3f6;color:var(--public-ink)}body.landing-body .page{background:#fff}body.landing-body :where(.brand-logo,.primary-btn,.ghost-btn,.hero-feature-bar,.hfb-icon,.sc-card,.ttp-pic,.ttp-btn,.stats-band-inner,.sb-icon,.feat-cta,.feat-intro-photo,.feat-card,.feat-card-icon,.feature-card,.icon-shell,.cta-primary,.cta-ghost,.footer-logo,.footer-social-btn,.footer-contact-card){border-radius:8px!important}body.landing-body :where(.sc-live-dot,.hero-scroll-wheel){border-radius:50%!important}body.landing-body .topbar{min-height:72px;padding:10px clamp(22px,5vw,72px);border-bottom:1px solid #e1e7ed;background:#fffffff5;box-shadow:0 2px 14px #172b3f0d!important}body.landing-body .topbar:hover{box-shadow:0 5px 20px #172b3f14!important}body.landing-body .brand{gap:10px}body.landing-body .brand-logo{width:42px;height:42px;padding:4px;border:1px solid var(--public-border);background:#fff;box-shadow:0 4px 12px #172b3f14!important}body.landing-body .brand-text strong{color:var(--public-ink);font-size:.9rem;font-weight:750;letter-spacing:0}body.landing-body .brand-text span{color:var(--public-green);font-size:.62rem;font-weight:800;letter-spacing:.1em}body.landing-body .nav-links{gap:28px}body.landing-body .nav-links a{color:#536477;font-size:.82rem;font-weight:650}body.landing-body .nav-links a:after{background:var(--public-green)}body.landing-body .nav-links a:hover{color:var(--public-navy)}body.landing-body .top-actions{gap:8px}body.landing-body .top-actions .ghost-btn{min-height:38px;padding:9px 18px;border:1px solid #cfd9e3;color:var(--public-navy);font-size:.8rem}body.landing-body .top-actions .primary-btn{min-height:38px;padding:9px 18px;background:var(--public-navy);font-size:.8rem;box-shadow:0 6px 15px #173f752e!important}body.landing-body .top-actions .primary-btn:hover{background:var(--public-navy-deep)}body.landing-body .hero{min-height:calc(100svh - 72px);background:#1b1b1b}body.landing-body .hero:before{background:radial-gradient(118% 82% at 50% 46%,#00000042,#0000005c 58%,#0000007a),linear-gradient(180deg,#0000002e,#0000000a 40%,#0000004d)}body.landing-body .hero-inner{max-width:1240px;padding:80px clamp(28px,6vw,88px) 150px}body.landing-body .hero-content--center{max-width:840px;gap:21px}body.landing-body .hero-rule{width:min(600px,78%)}body.landing-body .hero-eyebrow{display:inline-flex;align-items:center;min-height:28px;margin:0;padding:5px 10px;border:1px solid rgba(138,218,188,.42);border-radius:6px!important;background:#12534670;color:#c9f3e3;font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}body.landing-body .hero-content h1{max-width:100%;margin:0 auto;color:#fff;font-weight:800;text-shadow:0 4px 28px rgba(0,0,0,.45)}body.landing-body .hero-sub{max-width:34ch;margin:0 auto;color:#e4edf5;font-size:clamp(.92rem,1.45vw,1.18rem);letter-spacing:.16em;line-height:1.5}body.landing-body .hero-ctas{gap:12px;justify-content:center}body.landing-body .hero-ctas .primary-btn{min-height:44px;padding:11px 20px;background:var(--public-green);box-shadow:0 9px 24px #0d554047!important}body.landing-body .hero-ctas .primary-btn:hover{background:#168760}body.landing-body .hero-explore-btn{min-height:44px;padding:11px 18px;border:1px solid rgba(255,255,255,.38);border-radius:8px!important;background:#ffffff14;color:#fff}body.landing-body .hero-feature-bar{width:min(1160px,calc(100% - 48px));margin-top:-76px;border:1px solid var(--public-border);box-shadow:0 24px 54px #172b3f29!important}body.landing-body .hfb-item{padding:25px 26px;border-right-color:#e4eaf0}body.landing-body .hfb-item:hover{background:#f7fafb}body.landing-body .hfb-icon{width:44px;height:44px;background:#eaf1fc;color:var(--public-blue)}body.landing-body .hfb-item:nth-child(2) .hfb-icon{background:#e7f6ef;color:#14815d}body.landing-body .hfb-item:nth-child(3) .hfb-icon{background:#fff0ed;color:#c65342}body.landing-body .hfb-stage{color:var(--public-green)}body.landing-body .hfb-text h3{color:var(--public-ink);letter-spacing:0}body.landing-body .hfb-text p{color:var(--public-muted)}body.landing-body .hfb-link{color:var(--public-blue)}body.landing-body .tt-preview-section{padding-top:116px;background:#fff}body.landing-body .ttp-ring{display:none}body.landing-body .ttp-pic{border:4px solid #fff}body.landing-body .sc-card{border-width:1px;box-shadow:0 12px 28px #172b3f21!important}body.landing-body .ttp-copy h2,body.landing-body .feat-intro h2{color:var(--public-ink);letter-spacing:0}body.landing-body .ttp-lead,body.landing-body .feat-lead{color:var(--public-muted)}body.landing-body .ttp-checks svg{color:var(--public-green);background:#e7f6ef}body.landing-body .ttp-btn,body.landing-body .feat-cta{background:var(--public-navy)}body.landing-body .ttp-btn:hover,body.landing-body .feat-cta:hover{background:var(--public-navy-deep)}body.landing-body .stats-band{background:#fff}body.landing-body .stats-band-inner{border-color:var(--public-border);background:var(--public-border)}body.landing-body .sb-item{background:#f9fbfc}body.landing-body .sb-icon{background:#eaf1fc;color:var(--public-blue)}body.landing-body .sb-item:nth-child(2) .sb-icon{background:#e7f6ef;color:#14815d}body.landing-body .sb-item:nth-child(3) .sb-icon{background:#fff5df;color:#a86608}body.landing-body .sb-item:nth-child(4) .sb-icon{background:#fff0ed;color:#c65342}body.landing-body .sb-text strong{color:var(--public-ink);letter-spacing:0}body.landing-body .features{padding-top:96px;background:#eef3f6}body.landing-body .feat-card{border-color:var(--public-border);box-shadow:0 5px 16px #172b3f0f!important}body.landing-body .feat-card:hover{border-color:#b9cbe0;box-shadow:0 16px 34px #172b3f1f!important}body.landing-body .feat-card-icon{background:#eaf1fc;color:var(--public-blue)}body.landing-body .feat-card:nth-child(2) .feat-card-icon{background:#e7f6ef;color:#14815d}body.landing-body .feat-card:nth-child(3) .feat-card-icon{background:#fff5df;color:#a86608}body.landing-body .feat-card:nth-child(4) .feat-card-icon{background:#fff0ed;color:#c65342}body.landing-body .feat-card h3{color:var(--public-ink);letter-spacing:0}body.landing-body .feat-card p{color:var(--public-muted)}body.landing-body .cta-banner{background:var(--public-navy)}body.landing-body .cta-banner:before{background:linear-gradient(90deg,#102e55f0,#173f75b8)}body.landing-body .cta-banner h2{letter-spacing:0}body.landing-body .cta-primary{background:var(--public-green)}body.landing-body .cta-primary:hover{background:#168760}body.landing-body .footer{background:#102e55}body.landing-body .footer:before{background:linear-gradient(180deg,#102e55d1,#0a1e37f0)}body.login-page-body{--login-navy: #173f75;--login-navy-deep: #102e55;--login-green: #20a779;--login-ink: #172b3f;--login-muted: #6d7c8e;--login-border: #d8e2eb;background:#eef3f6}body.login-page-body .auth-shell{grid-template-columns:minmax(480px,46%) minmax(0,1fr)}body.login-page-body .auth-panel{padding:38px 44px;background:var(--login-navy-deep)}body.login-page-body .auth-panel:before{background:linear-gradient(115deg,#102e556b,#0a1f37b3),linear-gradient(0deg,#081b30d1,#081b300a 64%)}body.login-page-body .auth-panel-logo{width:46px;height:46px;padding:5px;border:1px solid rgba(255,255,255,.34);border-radius:8px!important;background:#fffffff0}body.login-page-body .auth-panel-name{font-size:.86rem;font-weight:750;letter-spacing:0}body.login-page-body .auth-panel-headline{max-width:500px;margin-bottom:16px;font-size:2.25rem;line-height:1.12;letter-spacing:0}body.login-page-body .auth-panel-sub{max-width:48ch;margin-bottom:25px;color:#d9e5ef;font-size:.9rem}body.login-page-body .auth-panel-features{gap:8px}body.login-page-body .auth-panel-features li{padding:10px 12px;border:1px solid rgba(255,255,255,.15);border-radius:7px!important;background:#0d2d4c94;font-size:.8rem;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}body.login-page-body .auth-panel-features li:nth-child(2) .auth-feat-dot{background:#79a7ea}body.login-page-body .auth-panel-features li:nth-child(3) .auth-feat-dot{background:#f0b55a}body.login-page-body .auth-panel-features li:nth-child(4) .auth-feat-dot{background:#ee8d7e}body.login-page-body .auth-feat-dot{border-radius:50%!important;background:#75d1af;box-shadow:0 0 0 3px #75d1af2e}body.login-page-body .auth-form-area{padding:42px 28px;background-color:#eef3f6;background-image:linear-gradient(rgba(45,79,111,.035) 1px,transparent 1px),linear-gradient(90deg,rgba(45,79,111,.035) 1px,transparent 1px);background-size:32px 32px}body.login-page-body .auth-form-box:not(.auth-form-box--wide){width:min(450px,100%);padding:36px 38px 30px;border:1px solid var(--login-border);border-radius:8px!important;background:#fffffffa;box-shadow:0 20px 52px #172b3f24!important}body.login-page-body .auth-form-head{margin-bottom:25px}body.login-page-body .auth-form-title{color:var(--login-ink);font-size:1.75rem;letter-spacing:0}body.login-page-body .auth-form-sub{color:var(--login-muted)}body.login-page-body .auth-field{color:#41566d;font-size:.78rem}body.login-page-body .auth-field input{min-height:46px;border:1px solid #cdd9e4!important;border-radius:7px!important;background:#fbfcfd!important;font-size:.88rem!important}body.login-page-body .auth-field input:focus{border-color:#315fbe!important;box-shadow:0 0 0 3px #315fbe1f!important}body.login-page-body .auth-submit{min-height:46px;border-radius:7px!important;background:var(--login-navy)!important;box-shadow:0 8px 20px #173f7533!important;font-size:.88rem!important}body.login-page-body .auth-submit:hover:not(:disabled){background:var(--login-navy-deep)!important;box-shadow:0 11px 26px #173f7545!important}body.login-page-body .auth-back-link:hover{color:var(--login-navy)!important}body.login-page-body .auth-live-dot{border-radius:50%!important;background:var(--login-green)}body.login-page-body .auth-signup-row{margin-top:20px;padding-top:17px;border-top-color:#e4eaf0;color:var(--login-muted)}body.login-page-body .auth-signup-row a{color:var(--login-navy)}body.signup-page-body .auth-shell{grid-template-columns:minmax(400px,38%) minmax(0,1fr)}body.signup-page-body .auth-panel{padding-inline:clamp(30px,3.4vw,50px)}body.signup-page-body .auth-panel-headline{font-size:clamp(1.9rem,2.6vw,2.25rem)}body.signup-page-body .auth-form-area{align-items:flex-start;padding:32px clamp(24px,3.6vw,56px)}body.signup-page-body .auth-form-box--wide{width:min(760px,100%);margin:auto;padding:30px clamp(24px,3vw,38px) 26px;border:1px solid var(--login-border);border-radius:8px!important;background:#fffffffa;box-shadow:0 20px 52px #172b3f24!important}body.signup-page-body .auth-form{gap:15px}body.signup-page-body .auth-form-row{min-width:0;gap:15px}body.signup-page-body .auth-form-row>*,body.signup-page-body .auth-prog-wrap,body.signup-page-body .auth-pw-wrap{min-width:0}body.signup-page-body .auth-field-label{display:inline-flex;align-items:baseline;gap:4px}body.signup-page-body .auth-prog-dropdown{overflow-x:hidden;border:1px solid #cdd9e4;border-radius:7px!important;box-shadow:0 14px 30px #172b3f29}body.signup-page-body .auth-prog-option{padding:11px 13px}body.signup-page-body .auth-prog-option:hover{background:#eef4fb}body.signup-page-body .auth-prog-name{color:var(--login-ink)}body.signup-page-body .auth-prog-selected{color:#168760}body.signup-page-body .auth-field-error{color:#b83629}body.signup-page-body .auth-field input:disabled{color:#7c8998!important;background:#f1f4f6!important;cursor:wait}body.signup-page-body .auth-pw-toggle:hover{color:var(--login-navy)!important}body.signup-page-body .auth-form-footer{margin-top:17px}body.signup-page-body .auth-signup-row{margin-top:17px;padding-top:15px}@media (max-width: 1080px) and (min-width: 821px){body.signup-page-body .auth-shell{grid-template-columns:minmax(330px,34%) minmax(0,1fr)}body.signup-page-body .auth-panel-features li{padding-inline:10px}body.signup-page-body .auth-form-area{padding-inline:24px}body.signup-page-body .auth-form-box--wide{padding-inline:26px}}@media (max-width: 960px){body.landing-body .hero-content h1{font-size:2.7rem}body.landing-body .hero-inner{padding-left:56px;padding-right:56px}}@media (max-width: 820px){body.login-page-body .auth-shell{grid-template-columns:1fr;grid-template-rows:270px auto}body.login-page-body .auth-panel{min-height:270px;padding:24px 26px}body.login-page-body .auth-panel-body{margin-top:24px}body.login-page-body .auth-panel-headline{margin-bottom:8px;font-size:1.7rem}body.login-page-body .auth-panel-sub{margin-bottom:0}body.login-page-body .auth-panel-features,body.login-page-body .auth-panel-copy{display:none}body.login-page-body .auth-form-area{padding:28px 20px 38px}body.signup-page-body .auth-shell{grid-template-columns:1fr}body.signup-page-body .auth-form-area{align-items:flex-start}body.signup-page-body .auth-form-box--wide{width:min(620px,100%);padding:28px 26px 24px}}@media (max-width: 720px){body.landing-body .topbar{min-height:64px;padding:9px 16px;flex-wrap:nowrap}body.landing-body .brand-logo{width:38px;height:38px}body.landing-body .brand-text strong{max-width:148px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.landing-body .brand-text span{font-size:.56rem}body.landing-body .top-actions .ghost-btn{display:none}body.landing-body .top-actions .primary-btn{min-height:36px;padding:8px 12px}body.landing-body .hero{min-height:calc(100svh - 64px)}body.landing-body .hero-inner{padding:48px 22px 112px}body.landing-body .hero-rule{width:68%}body.landing-body .hero-content h1{line-height:1.12}body.landing-body .hero-sub{font-size:.82rem;letter-spacing:.13em}body.landing-body .hero-feature-bar{width:calc(100% - 28px);margin-top:-46px}body.landing-body .hfb-item{padding:20px}body.landing-body .features{padding-top:72px}}@media (max-width: 480px){body.login-page-body .auth-form-box:not(.auth-form-box--wide){padding:28px 22px 24px}body.login-page-body .auth-panel{padding:20px}body.signup-page-body .auth-form-area{padding-inline:14px}body.signup-page-body .auth-form-box--wide{padding:26px 18px 22px}body.signup-page-body .auth-form-head{margin-bottom:22px}body.signup-page-body .auth-form-title{font-size:1.55rem}body.signup-page-body .auth-form-footer,body.signup-page-body .auth-signup-row{font-size:.78rem}body.landing-body .brand-text strong{max-width:118px;font-size:.78rem}body.landing-body .hero-ctas{align-items:stretch;width:100%}body.landing-body .hero-ctas>*{justify-content:center}}.modal-backdrop,.lpref-modal-backdrop,.dpref-modal-backdrop,.dean-modal-backdrop,.expv-import-modal-backdrop,.swap-alert-backdrop{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;z-index:2000;display:flex!important;align-items:stretch!important;justify-content:flex-end!important;place-items:initial!important;padding:0!important;overflow:hidden!important;background:#0f1f386b;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:drawer-scrim-in .2s ease both}.modal-card,.lpref-modal,.dpref-modal,.dean-modal,.expv-import-modal,.tt-force-modal,.swap-alert-dialog{width:min(100vw,max(460px,var(--drawer-w, 620px)))!important;max-width:100vw!important;height:100dvh!important;max-height:100dvh!important;margin:0!important;border:0!important;border-left:1px solid #dce4ec!important;border-radius:0!important;box-shadow:-18px 0 48px #0f1f382e!important;animation:drawer-in .28s cubic-bezier(.4,0,.2,1) both}.modal-card,.lpref-modal,.dpref-modal,.dean-modal,.expv-import-modal,.tt-force-modal,.swap-alert-dialog{display:flex!important;flex-direction:column!important}.modal-card:has(>.modal-body),.dean-modal,.expv-import-modal,.lpref-modal,.dpref-modal{overflow:hidden!important}.modal-card>.modal-body,.dean-modal>.dean-modal-body,.lpref-modal>.lpref-modal-body,.dpref-modal>.dpref-modal-body{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}.modal-card:not(:has(>.modal-body)),.tt-force-modal,.swap-alert-dialog{overflow-y:auto!important;overscroll-behavior:contain}.modal-card>.modal-header,.dean-modal>.dean-modal-header,.lpref-modal>.lpref-modal-head,.dpref-modal>.dpref-modal-head{position:sticky;top:0;z-index:2;flex-shrink:0}.modal-card>.modal-footer:last-child,.modal-card>.modal-actions:last-child{flex-shrink:0}.drawer-sm{--drawer-w: 480px}.drawer-md{--drawer-w: 660px}.drawer-lg{--drawer-w: 880px}.drawer-xl{--drawer-w: 1120px}.drawer-full{--drawer-w: 100vw}.dean-modal--xl,.dpref-modal--wide,.exam-merge-modal,.tt-merge-workspace,.cr-review-modal,.tv-swap-modal{--drawer-w: 1000px}@keyframes drawer-in{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes drawer-scrim-in{0%{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.modal-backdrop,.lpref-modal-backdrop,.dpref-modal-backdrop,.dean-modal-backdrop,.expv-import-modal-backdrop,.swap-alert-backdrop,.modal-card,.lpref-modal,.dpref-modal,.dean-modal,.expv-import-modal,.tt-force-modal,.swap-alert-dialog{animation-duration:.01ms!important}}@media (max-width: 640px){.modal-card,.lpref-modal,.dpref-modal,.dean-modal,.expv-import-modal,.tt-force-modal,.swap-alert-dialog{width:100vw!important;border-left:0!important}}
