:root{
 --umm-red:#ba272c;--umm-red-dark:#84191d;--umm-red-soft:#fff0f1;
 --sip-purple:#6738b7;--sip-purple-dark:#351b64;--sip-purple-soft:#f1eafd;
 --sip-text:#252333;--sip-muted:#6f6a7c;--sip-border:#e8e2ec;--sip-bg:#f7f6f9;
}
*{box-sizing:border-box}body{background:var(--sip-bg);color:var(--sip-text);font-size:15px}a{color:var(--umm-red)}a:hover{color:var(--umm-red-dark)}
#sidebar .sidebar-wrapper{background:linear-gradient(180deg,#521217 0%,#821c21 53%,#ad262b 100%);box-shadow:12px 0 35px rgba(76,16,20,.18)}
.role-3 #sidebar .sidebar-wrapper{background:linear-gradient(180deg,#29134d 0%,#48217f 55%,#6738b7 100%)}
#sidebar .sidebar-header{padding:1.35rem 1.25rem .9rem}.sip-brand{display:flex;align-items:center;gap:.85rem;color:#fff!important}.sip-brand img{width:76px;height:76px;object-fit:contain;filter:drop-shadow(0 8px 13px rgba(0,0,0,.2))}.sip-brand strong{display:block;font-size:1.22rem;font-weight:800;letter-spacing:.01em}.sip-brand small{display:block;color:#fff;font-size:.77rem;font-weight:600;line-height:1.35;opacity:.9}
#sidebar .menu .sidebar-title{color:#fff;font-size:.72rem;font-weight:800;text-transform:uppercase;letter-spacing:.12em;margin:1.25rem 1.35rem .5rem;opacity:.75}
#sidebar .menu .sidebar-link{color:#fff;margin:.18rem .72rem;padding:.84rem 1rem;border-radius:12px;transition:.2s;font-weight:700;font-size:.94rem;opacity:.91}#sidebar .menu .sidebar-link i{color:#fff;font-size:1.08rem;opacity:.9}#sidebar .menu .sidebar-item.active>.sidebar-link,#sidebar .menu .sidebar-link:hover{color:#5d1115;background:#fff;box-shadow:0 10px 25px rgba(45,6,9,.2);opacity:1}.role-3 #sidebar .menu .sidebar-item.active>.sidebar-link,.role-3 #sidebar .menu .sidebar-link:hover{color:var(--sip-purple);background:#fff}#sidebar .menu .sidebar-item.active>.sidebar-link i,#sidebar .menu .sidebar-link:hover i{color:inherit}.sidebar-link .badge{font-size:.68rem}
.navbar-header{background:rgba(255,255,255,.96);border:1px solid var(--sip-border);border-radius:18px;margin:1.15rem 1.4rem 0;padding:.72rem 1rem;box-shadow:0 10px 30px rgba(46,32,55,.07);backdrop-filter:blur(8px)}.sip-navbar-title{font-size:1rem}.sip-clock{align-items:center;border:1px solid var(--sip-border);background:#faf9fb;border-radius:10px;padding:.55rem .75rem;font-size:.78rem;font-weight:700;color:#5f5969}.main-content{padding:1.35rem 1.45rem 2rem}.sip-footer{font-weight:600}
.page-heading h3{font-size:1.65rem;font-weight:800;color:var(--sip-text);margin-bottom:.25rem}.page-heading p{color:var(--sip-muted);margin-bottom:0;font-size:.94rem}.card,.sip-card{border:1px solid var(--sip-border);border-radius:17px;box-shadow:0 10px 30px rgba(60,43,72,.055);overflow:hidden}.card-header{background:#fff;border-bottom:1px solid var(--sip-border);padding:1.05rem 1.25rem}.card-header h4{font-size:1rem;font-weight:800;margin:0}.card-body{background:#fff}
.sip-hero{position:relative;overflow:hidden;border-radius:22px;padding:2rem;color:#fff;background:linear-gradient(125deg,#78181d 0%,#ad252a 55%,#cf3b41 100%);box-shadow:0 18px 42px rgba(154,31,36,.22)}.sip-hero.student-hero{background:linear-gradient(125deg,#32175c 0%,#6233ad 55%,#8752ce 100%);box-shadow:0 18px 42px rgba(77,33,131,.22)}.sip-hero:before,.sip-hero:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.1)}.sip-hero:before{width:300px;height:300px;right:-80px;top:-140px}.sip-hero:after{width:190px;height:190px;right:190px;bottom:-120px}.sip-hero>*{position:relative;z-index:1}.sip-hero h2{font-size:2rem;font-weight:800;margin:.45rem 0}.sip-hero p{color:#fff;opacity:.95;max-width:720px;font-weight:500}.hero-kicker,.public-kicker,.sip-auth-kicker{display:inline-block;font-size:.7rem;font-weight:900;letter-spacing:.16em;text-transform:uppercase}.hero-kicker{color:#fff;background:rgba(255,255,255,.17);padding:.35rem .65rem;border-radius:30px}
.btn{font-weight:700;border-radius:10px}.btn-sip{background:linear-gradient(135deg,var(--umm-red),#db454a);color:#fff;border:0;padding:.7rem 1.12rem;box-shadow:0 8px 18px rgba(186,39,44,.2)}.role-3 .btn-sip{background:linear-gradient(135deg,var(--sip-purple),#8c53d8);box-shadow:0 8px 18px rgba(103,56,183,.2)}.btn-sip:hover{color:#fff;transform:translateY(-1px)}.btn-soft-purple{background:var(--sip-purple-soft);color:var(--sip-purple);border:0}.btn-soft-purple:hover{background:#e5d8f9;color:#4d258a}.role-3 .btn-outline-danger{border-color:var(--sip-purple);color:var(--sip-purple)}.role-3 .btn-outline-danger:hover{background:var(--sip-purple);color:#fff}
.stat-card{padding:1.15rem;height:100%;background:#fff}.stat-card.compact{padding:1rem}.stat-icon{width:48px;height:48px;display:flex;align-items:center;justify-content:center;border-radius:14px;background:var(--umm-red-soft);color:var(--umm-red);font-size:1.25rem;margin-bottom:.8rem}.role-3 .stat-icon{background:var(--sip-purple-soft);color:var(--sip-purple)}.stat-number{font-size:1.75rem;font-weight:900;line-height:1.1}.stat-label{font-size:.82rem;color:var(--sip-muted);font-weight:700;margin-top:.2rem}.stat-list{display:flex;justify-content:space-between;align-items:center;padding:.68rem 0;border-bottom:1px dashed var(--sip-border);gap:1rem}.stat-list:last-child{border-bottom:0}.stat-list span:first-child{font-size:.84rem}.stat-list strong{font-size:1.05rem}.type-stat{display:flex;align-items:center;gap:.8rem;border:1px solid var(--sip-border);border-radius:13px;padding:.9rem}.type-stat>span{min-width:45px;height:45px;border-radius:12px;background:var(--umm-red-soft);color:var(--umm-red);display:flex;align-items:center;justify-content:center;font-weight:900}.type-stat strong,.type-stat small{display:block}.type-stat small{color:var(--sip-muted)}
.service-card{height:100%;padding:1.3rem;transition:.2s;position:relative}.service-card:hover{transform:translateY(-4px);box-shadow:0 18px 38px rgba(71,44,105,.12)}.service-icon{width:54px;height:54px;border-radius:15px;display:flex;align-items:center;justify-content:center;background:var(--umm-red-soft);color:var(--umm-red);font-size:1.4rem;margin-bottom:1rem}.student-service .service-icon{background:var(--sip-purple-soft);color:var(--sip-purple)}.service-card h5{font-size:1.04rem;font-weight:800;min-height:2.4rem}.service-card p{color:var(--sip-muted);font-size:.86rem;min-height:3.6rem}.service-code{position:absolute;right:1.2rem;top:1.2rem;background:#f1eef3;color:#746d7c;border-radius:8px;padding:.25rem .48rem;font-size:.68rem;font-weight:900}.service-meta{font-size:.78rem;color:var(--sip-muted);font-weight:700}
.table{color:var(--sip-text);font-size:.87rem}.table thead th{border-top:0;border-bottom:1px solid var(--sip-border);color:#665f70;font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;background:#faf9fb;white-space:nowrap}.table td{vertical-align:middle;border-color:#efebf1}.form-control,.custom-select{border:1px solid #dcd5e1;border-radius:10px;min-height:44px;font-size:.92rem}.form-control:focus,.custom-select:focus{border-color:var(--umm-red);box-shadow:0 0 0 .2rem rgba(186,39,44,.1)}.role-3 .form-control:focus,.role-3 .custom-select:focus{border-color:var(--sip-purple);box-shadow:0 0 0 .2rem rgba(103,56,183,.1)}textarea.form-control{min-height:105px}label{font-weight:750;color:#494451;font-size:.86rem}.form-section-title{font-size:.96rem;font-weight:900;border-left:4px solid var(--umm-red);padding-left:.65rem;margin-bottom:1rem}.role-3 .form-section-title{border-left-color:var(--sip-purple)}.filter-panel{background:#faf9fb;border:1px solid var(--sip-border);border-radius:13px;padding:1rem}
.badge{padding:.42rem .62rem;border-radius:30px;font-weight:800;font-size:.72rem}.badge-primary{background:#eee3ff;color:#6530b8}.badge-info{background:#dff4fb;color:#147895}.badge-warning{background:#fff0c9;color:#8d5e00}.badge-success{background:#dff5e8;color:#197644}.badge-danger{background:#fde1e5;color:#a81f31}.badge-secondary{background:#ece9f0;color:#635c70}.badge-ready{background:#e8e3ff;color:#4533a1}.badge-dark{background:#393641;color:#fff}.timeline{position:relative;padding-left:1.3rem}.timeline:before{content:"";position:absolute;left:5px;top:8px;bottom:8px;width:2px;background:#e4dcef}.timeline-item{position:relative;padding:0 0 1.2rem 1.1rem}.timeline-dot{position:absolute;left:-1.28rem;top:.25rem;width:12px;height:12px;border-radius:50%;background:var(--umm-red);border:3px solid #fdebec}.role-3 .timeline-dot{background:var(--sip-purple);border-color:#f1eafd}.detail-label{color:var(--sip-muted);font-size:.75rem;margin-bottom:.2rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.detail-value{font-weight:750;margin-bottom:1rem;word-break:break-word}.tracking-message,.tracking-response{border-radius:12px;padding:1rem;line-height:1.6}.tracking-message{background:#f7f5f8;border:1px solid var(--sip-border)}.tracking-response{background:#fff5f5;border:1px solid #f2d2d4}.role-3 .tracking-response{background:#f7f2ff;border-color:#e2d4f5}.attachment-list{display:flex;flex-wrap:wrap;gap:.7rem}.attachment-list a{display:flex;align-items:center;gap:.55rem;border:1px solid var(--sip-border);border-radius:11px;padding:.7rem .9rem;text-decoration:none;font-weight:700}.auto-number-info{display:flex;gap:.7rem;background:var(--umm-red-soft);border:1px solid #f5cdd0;border-radius:12px;padding:.9rem;margin-bottom:1rem;color:#741418}.auto-number-info i{font-size:1.3rem}.auto-number-info strong,.auto-number-info small{display:block}.auto-number-info small{opacity:.8}.sticky-card{position:sticky;top:1rem}.number-format{background:#fff;border:1px solid var(--sip-border);border-radius:12px;padding:.7rem .9rem;font-family:monospace;font-size:.9rem}.permission-badges span{display:inline-block;background:#f1edf3;border-radius:20px;padding:.25rem .48rem;margin:.13rem;font-size:.68rem;font-weight:700}.permission-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}.permission-option{display:flex;gap:.75rem;border:1px solid var(--sip-border);border-radius:12px;padding:.9rem;cursor:pointer;margin:0}.permission-option input{margin-top:.25rem}.permission-option strong,.permission-option small{display:block}.permission-option small{color:var(--sip-muted);font-weight:500;margin-top:.15rem}.upload-zone{border:2px dashed #d7cbdc;border-radius:16px;padding:2rem;text-align:center;background:#faf9fb}.upload-zone i{font-size:2.5rem;color:var(--umm-red)}.requirements{line-height:1.8;color:#56505e}.profile-photo{width:150px;height:150px;border-radius:50%;margin:0 auto 1rem;background:var(--sip-purple-soft);display:flex;align-items:center;justify-content:center;overflow:hidden;border:5px solid #fff;box-shadow:0 8px 25px rgba(60,30,100,.15)}.profile-photo img{width:100%;height:100%;object-fit:cover}.profile-photo span{font-size:3rem;color:var(--sip-purple);font-weight:900}.account-info{text-align:center}.account-avatar{width:90px;height:90px;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 1rem;background:var(--umm-red);color:#fff;font-size:2rem;font-weight:900}.bar-row{display:grid;grid-template-columns:75px 1fr 35px;align-items:center;gap:.7rem;margin:.75rem 0;font-size:.78rem}.bar-row>div{height:13px;background:#f0ebf1;border-radius:20px;overflow:hidden}.bar-row i{height:100%;display:block;border-radius:20px;background:linear-gradient(90deg,var(--umm-red),#e05358)}
/* Login dibuat terang */
.sip-auth-page{min-height:100vh;background:#f8f5f5}.sip-auth-shell{width:100%;min-height:100vh;display:grid;grid-template-columns:46% 54%}.sip-auth-form{background:#fff;color:var(--sip-text);padding:3rem clamp(2rem,5vw,5rem);display:flex;flex-direction:column;justify-content:center}.sip-auth-logo{display:flex;align-items:center;gap:1rem;margin-bottom:2.2rem;color:var(--sip-text)!important}.sip-auth-logo img{width:98px;height:98px;object-fit:contain}.sip-auth-logo h1{font-size:1.6rem;font-weight:900;margin:0}.sip-auth-logo p{margin:0;color:var(--sip-muted);font-size:.84rem}.sip-auth-kicker{color:var(--umm-red);margin-bottom:.55rem}.sip-auth-form h2{font-size:2.05rem;font-weight:900}.sip-auth-form .lead{color:var(--sip-muted);font-size:.94rem;max-width:560px}.sip-auth-input{position:relative}.sip-auth-input i{position:absolute;left:15px;top:15px;color:#827b89}.sip-auth-input .form-control{padding-left:43px;background:#fff;min-height:52px}.sip-auth-btn{width:100%;min-height:51px;border-radius:11px;border:0;color:#fff;font-weight:800;background:linear-gradient(135deg,var(--umm-red),#db454a);box-shadow:0 12px 26px rgba(186,39,44,.24)}.sip-auth-links{display:flex;justify-content:space-between;gap:1rem;margin-top:1.2rem;font-size:.83rem;font-weight:700}.sip-auth-visual{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;padding:3.2rem;background:linear-gradient(135deg,#7e181d 0%,#ba272c 58%,#db474c 100%);color:#fff}.sip-auth-visual:before,.sip-auth-visual:after{content:"";position:absolute;border-radius:50%;background:rgba(255,255,255,.09)}.sip-auth-visual:before{width:460px;height:460px;right:-190px;top:-190px}.sip-auth-visual:after{width:320px;height:320px;left:-130px;bottom:-150px}.sip-auth-visual>*{position:relative;z-index:1}.sip-auth-visual h2{font-size:2.6rem;font-weight:900;max-width:680px}.sip-auth-visual p{color:#fff;opacity:.94;max-width:660px;font-size:1rem}.visual-badge{align-self:flex-start;border:1px solid rgba(255,255,255,.35);background:rgba(255,255,255,.13);border-radius:30px;padding:.45rem .75rem;font-weight:800;font-size:.78rem;margin-bottom:1.1rem}.visual-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1.6rem}.visual-cards>div{background:#fff;color:var(--sip-text);border-radius:14px;padding:1.1rem;box-shadow:0 15px 35px rgba(85,8,12,.15)}.visual-cards i{display:block;color:var(--umm-red);font-size:1.55rem;margin-bottom:.7rem}.visual-cards strong,.visual-cards span{display:block}.visual-cards span{font-size:.77rem;color:var(--sip-muted);margin-top:.25rem}.auth-error{color:#b31b26;font-size:.78rem;font-weight:700;margin-top:.3rem;display:block}
/* Public */
.sip-public-body{background:#faf8f9}.sip-public-nav{background:#fff;border-bottom:1px solid var(--sip-border);padding:.75rem 0;position:sticky;top:0;z-index:20;box-shadow:0 5px 20px rgba(50,30,55,.05)}.public-brand{display:flex;align-items:center;gap:.7rem;color:var(--sip-text)!important;text-decoration:none!important}.public-brand img{width:66px;height:66px;object-fit:contain}.public-brand strong,.public-brand small{display:block}.public-brand strong{font-weight:900}.public-brand small{color:var(--sip-muted);font-size:.75rem}.sip-public-main{min-height:calc(100vh - 155px);padding:2.5rem 0 3rem}.public-hero{background:linear-gradient(125deg,#71151a,#ba272c 58%,#d7454b);border-radius:24px;color:#fff;padding:2.4rem;display:grid;grid-template-columns:1fr 235px;gap:2rem;align-items:center;box-shadow:0 20px 45px rgba(149,27,33,.2)}.public-hero h1{font-size:2.35rem;font-weight:900;margin:.5rem 0}.public-hero p{color:#fff;opacity:.95;max-width:760px}.public-qr-card{background:#fff;color:var(--sip-text);border-radius:16px;padding:1rem;text-align:center}.public-qr-card canvas{max-width:100%;height:auto}.public-qr-card strong,.public-qr-card small{display:block}.public-qr-card small{font-size:.65rem;color:var(--sip-muted);word-break:break-all}.public-service-card{height:100%;background:#fff;border:1px solid var(--sip-border);border-radius:17px;padding:1.5rem;box-shadow:0 10px 30px rgba(60,43,72,.05)}.public-service-card>i{font-size:2rem;color:var(--umm-red)}.public-service-card h3{font-size:1.25rem;font-weight:900;margin:.8rem 0}.public-service-card p{color:var(--sip-muted);min-height:72px}.public-page-heading{display:grid;grid-template-columns:1fr 190px;gap:2rem;align-items:center;margin-bottom:1.5rem}.public-page-heading.simple{display:block}.public-page-heading h1{font-size:2rem;font-weight:900}.public-page-heading p{color:var(--sip-muted)}.public-page-heading .public-kicker{color:var(--umm-red)}.mini-qr{text-align:center;background:#fff;border:1px solid var(--sip-border);border-radius:14px;padding:.7rem}.mini-qr canvas{width:120px!important;height:120px!important}.mini-qr small{display:block;font-size:.68rem;color:var(--sip-muted)}.public-form-card{max-width:1000px}.tracking-form{max-width:650px}.tracking-form .form-control{height:52px}.tracking-card{max-width:960px}.sip-public-footer{border-top:1px solid var(--sip-border);background:#fff;padding:1.2rem 0;font-size:.78rem;color:var(--sip-muted)}
@media(max-width:1199px){.visual-cards{grid-template-columns:1fr}.visual-cards>div{display:grid;grid-template-columns:35px 1fr;column-gap:.5rem}.visual-cards i{grid-row:1/3}.visual-cards span{margin:0}}
@media(max-width:991px){.sip-auth-shell{grid-template-columns:1fr}.sip-auth-visual{display:none}.sip-auth-form{min-height:100vh;padding:2rem}.navbar-header{margin:.8rem .8rem 0}.main-content{padding:1rem .8rem 2rem}.permission-grid{grid-template-columns:1fr}.public-hero{grid-template-columns:1fr}.public-qr-card{max-width:235px}.public-page-heading{grid-template-columns:1fr}.mini-qr{display:none}.sticky-card{position:static}}
@media(max-width:575px){.sip-auth-logo img{width:76px;height:76px}.sip-auth-logo h1{font-size:1.25rem}.sip-auth-form h2{font-size:1.65rem}.sip-auth-links{flex-direction:column}.public-hero{padding:1.5rem}.public-hero h1{font-size:1.7rem}.public-brand img{width:52px;height:52px}.page-heading h3{font-size:1.4rem}.sip-brand img{width:66px;height:66px}}

/* ================================================================
   SIP Psikologi UMM — Revisi 3.0
   Identitas visual ungu, login terpadu, jadwal ruang, dan pengumuman
   ================================================================ */
:root{
 --umm-red:#6429ad;
 --umm-red-dark:#3b176d;
 --umm-red-soft:#f3ebff;
 --sip-purple:#6429ad;
 --sip-purple-dark:#251044;
 --sip-purple-mid:#7f46c9;
 --sip-purple-soft:#f2eaff;
 --sip-lavender:#e7d8fb;
 --sip-ink:#171126;
}
body.sip-app-body{background:#f7f4fb}
#sidebar .sidebar-wrapper,.role-3 #sidebar .sidebar-wrapper{background:linear-gradient(180deg,#24103f 0%,#472078 48%,#6a31b5 100%);box-shadow:12px 0 35px rgba(58,25,98,.22)}
#sidebar .menu .sidebar-item.active>.sidebar-link,#sidebar .menu .sidebar-link:hover,.role-3 #sidebar .menu .sidebar-item.active>.sidebar-link,.role-3 #sidebar .menu .sidebar-link:hover{color:#532293;background:#fff}
.sip-hero,.sip-hero.staff-hero,.sip-hero.student-hero{background:linear-gradient(125deg,#2c124e 0%,#5f2aa3 54%,#8c54d1 100%);box-shadow:0 18px 42px rgba(74,32,125,.23)}
.btn-sip,.role-3 .btn-sip{background:linear-gradient(135deg,#542293,#8145c8);box-shadow:0 8px 18px rgba(91,39,157,.25)}
.public-hero{background:linear-gradient(125deg,#2b124c,#5d289f 58%,#8952cf);box-shadow:0 20px 45px rgba(69,29,117,.2)}
.public-service-card>i,.public-page-heading .public-kicker,.upload-zone i{color:#6429ad}
.account-avatar{background:#6429ad}.bar-row i{background:linear-gradient(90deg,#542293,#925bd3)}
.tracking-response{background:#f6f0ff;border-color:#dfd0f3}.auto-number-info{background:#f4edff;border-color:#decdf3;color:#44206f}

/* Unified login */
.sip-unified-login{margin:0;background:#f8f6fc;color:var(--sip-ink);font-family:inherit}
.login-landing{min-height:100vh;background:
 radial-gradient(circle at 10% 20%,rgba(126,67,194,.12),transparent 22%),
 radial-gradient(circle at 92% 8%,rgba(101,42,174,.13),transparent 25%),#faf9fd;padding:18px}
.login-topbar{max-width:1440px;margin:0 auto 16px;background:rgba(255,255,255,.94);border:1px solid #e7def2;border-radius:20px;padding:12px 18px;display:flex;align-items:center;justify-content:space-between;box-shadow:0 12px 34px rgba(54,30,83,.08);backdrop-filter:blur(12px)}
.login-brand-group{display:flex;align-items:center;color:#1b1230!important;min-width:0}.login-brand-divider{height:54px;width:1px;background:#cfbce7;margin:0 18px}.login-brand-umm,.login-brand-sip{display:flex;align-items:center;gap:10px}.login-brand-umm img{width:56px;height:56px;object-fit:contain}.login-brand-sip img{width:58px;height:58px;object-fit:contain;border-radius:50%;box-shadow:0 6px 15px rgba(77,32,130,.15)}
.login-brand-group strong,.login-brand-group small{display:block}.login-brand-group strong{font-size:1rem;font-weight:900;color:#2e1454}.login-brand-group small{font-size:.7rem;color:#5e536d;font-weight:650}.login-outline-btn{border:1px solid #cdb9e4;color:#482079;background:#fff;border-radius:11px;font-weight:800}.login-outline-btn:hover{background:#f1e9fb;color:#35155f}
.login-hero-section{max-width:1440px;margin:0 auto 16px;border:1px solid #e4d9f0;border-radius:28px;min-height:430px;display:grid;grid-template-columns:48% 52%;overflow:hidden;background:linear-gradient(125deg,#eee5fb 0%,#f8f5fc 46%,#e4d3f8 100%);box-shadow:0 20px 55px rgba(56,30,88,.09);position:relative}
.login-hero-section:before{content:"";position:absolute;width:330px;height:330px;border-radius:50%;background:rgba(112,52,185,.08);left:-140px;bottom:-180px}
.login-hero-copy{padding:48px 24px 42px 52px;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:2}.login-eyebrow{font-size:.72rem;font-weight:900;letter-spacing:.17em;color:#51208e}.login-hero-copy h1{font-size:2.75rem;line-height:1.08;font-weight:900;color:#171027;margin:12px 0 15px;max-width:650px}.login-hero-copy h1 span{display:block;color:#6429ad;font-size:4.3rem;letter-spacing:-.04em}.login-hero-copy>p{font-size:1rem;line-height:1.75;color:#4f465a;max-width:690px;margin-bottom:20px}.login-hero-art{display:flex;align-items:flex-end;justify-content:center;overflow:hidden;position:relative}.login-hero-art:after{content:"";position:absolute;inset:auto 5% 0;height:22%;background:linear-gradient(transparent,rgba(255,255,255,.65));pointer-events:none}.login-hero-art img{width:100%;height:100%;object-fit:cover;object-position:center;mix-blend-mode:multiply;filter:saturate(.96)}
.login-announcement{display:flex;align-items:center;background:#d9c4f3;border:1px solid #c5a9e7;border-radius:13px;overflow:hidden;max-width:720px;box-shadow:0 8px 18px rgba(72,32,119,.08)}.announcement-label{flex:none;background:#6429ad;color:#fff;padding:11px 14px;font-size:.78rem;font-weight:900}.announcement-window{overflow:hidden;white-space:nowrap;flex:1}.announcement-track{display:inline-flex;min-width:max-content;animation:sip-marquee 28s linear infinite}.announcement-track span{padding:0 28px;color:#1b102c;font-weight:800;font-size:.82rem}.announcement-track span:after{content:"•";margin-left:28px;color:#6429ad}@keyframes sip-marquee{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.login-feature-pills{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px}.login-feature-pills span{background:rgba(255,255,255,.78);border:1px solid #d9cae9;border-radius:30px;padding:8px 12px;font-size:.73rem;font-weight:800;color:#27183c}.login-feature-pills i{color:#6429ad;margin-right:5px}
.login-main-grid{max-width:1440px;margin:0 auto;display:grid;grid-template-columns:minmax(520px,690px) 1fr;gap:16px}.login-card,.login-information-panel{background:#fff;border:1px solid #e5dced;border-radius:24px;box-shadow:0 18px 45px rgba(54,30,82,.08)}.login-card{padding:28px}.login-card-heading{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:18px}.login-card-heading img{width:74px;height:74px;object-fit:contain;border-radius:50%;box-shadow:0 8px 20px rgba(90,39,151,.17)}.login-card-kicker{font-size:.66rem;letter-spacing:.15em;font-weight:900;color:#6429ad}.login-card-heading h2{font-size:1.55rem;font-weight:900;margin:4px 0;color:#1a102b}.login-card-heading p{margin:0;color:#756a80;font-size:.82rem}
.role-selector{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin-bottom:20px}.role-tab{border:1px solid #dcd0e9;background:#faf8fc;color:#30203f;border-radius:11px;min-height:60px;padding:7px 5px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:.7rem;font-weight:850;cursor:pointer;transition:.18s}.role-tab i{font-size:1.15rem;color:#7040ad}.role-tab:hover,.role-tab.active{background:#6429ad;color:#fff;border-color:#6429ad;transform:translateY(-1px);box-shadow:0 8px 18px rgba(87,35,149,.2)}.role-tab.active i,.role-tab:hover i{color:#fff}
.login-card label{font-size:.77rem;font-weight:850;color:#28183d}.login-input{position:relative}.login-input>i{position:absolute;left:14px;top:15px;color:#72598c;z-index:2}.login-input .form-control{height:50px;padding-left:42px;padding-right:44px;border:1px solid #dacde7;border-radius:11px;background:#fcfbfd;color:#171026}.login-input .form-control:focus,.login-card .custom-select:focus{border-color:#7a43ba;box-shadow:0 0 0 .2rem rgba(100,41,173,.12)}.login-card .custom-select{height:50px;border-color:#dacde7;border-radius:11px}.password-toggle{position:absolute;right:10px;top:9px;width:32px;height:32px;border:0;background:transparent;color:#6d5d7b}.login-form-note{display:flex;gap:9px;align-items:flex-start;background:#efe4fb;border:1px solid #d9c4ed;color:#231536;border-radius:11px;padding:10px 12px;font-size:.75rem;line-height:1.5;margin-bottom:14px}.login-form-note i{color:#6429ad;margin-top:1px}.login-submit{width:100%;border:0;border-radius:11px;min-height:50px;background:linear-gradient(135deg,#4b1c82,#7a3fbd);color:#fff;font-weight:900;letter-spacing:.04em;box-shadow:0 12px 24px rgba(83,34,141,.24);display:flex;justify-content:center;align-items:center;gap:8px}.login-submit:hover{filter:brightness(1.06)}
.login-example-box{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:16px}.login-example-box>div{border:1px dashed #cdb9e1;background:#fbf9fd;border-radius:10px;padding:10px 12px}.login-example-box strong,.login-example-box span{display:block}.login-example-box strong{font-size:.75rem;color:#54218f;margin-bottom:3px}.login-example-box span{font-size:.68rem;color:#62576d;line-height:1.5}
.login-information-panel{padding:28px;background:linear-gradient(145deg,#f4edfc,#fff)}.login-information-panel h3{font-weight:900;font-size:1.35rem;color:#211333;margin-bottom:18px}.login-module-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.login-module-grid>div{background:#fff;border:1px solid #e2d7ed;border-radius:14px;padding:15px;min-height:132px}.login-module-grid i{font-size:1.4rem;color:#6429ad;display:block;margin-bottom:8px}.login-module-grid strong,.login-module-grid span{display:block}.login-module-grid strong{font-size:.83rem;color:#211532}.login-module-grid span{font-size:.72rem;line-height:1.55;color:#6a6074;margin-top:4px}.login-security-note{display:flex;align-items:center;gap:12px;background:#d8c3f1;border:1px solid #c7a9e6;color:#1b102a;border-radius:14px;padding:14px;margin-top:12px}.login-security-note>i{font-size:1.75rem;color:#52208d}.login-security-note strong,.login-security-note span{display:block}.login-security-note strong{font-size:.82rem}.login-security-note span{font-size:.72rem;color:#44364e}
.login-footer{max-width:1440px;margin:16px auto 0;padding:14px 18px;border-radius:15px;background:#2b124b;color:#fff;display:flex;justify-content:space-between;gap:12px;font-size:.72rem;font-weight:700}

/* Jadwal dan mapping ruang */
.schedule-filter-card{background:linear-gradient(135deg,#eee4fa,#fff);border:1px solid #ded0ec;border-radius:16px;padding:1rem}.schedule-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}.schedule-summary>div{background:#fff;border:1px solid #e3d8ed;border-radius:14px;padding:1rem}.schedule-summary strong,.schedule-summary span{display:block}.schedule-summary strong{font-size:1.45rem;color:#592499}.schedule-summary span{font-size:.75rem;color:#706579;font-weight:700}.schedule-card{border-left:5px solid #6b31ae}.schedule-card.is-running{border-left-color:#1c8a55;background:#f5fcf8}.schedule-card.is-finished{border-left-color:#5f6670;background:#fafafa}.schedule-time{font-weight:900;color:#4d1f84}.room-map-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:14px}.room-map-column{border:1px solid #e1d7eb;border-radius:15px;background:#fff;overflow:hidden}.room-map-column h5{margin:0;padding:12px 14px;background:#dfcdf4;color:#1f1231;font-weight:900}.room-map-item{padding:12px 14px;border-top:1px solid #eee7f3}.room-map-item:first-of-type{border-top:0}.room-map-item small,.room-map-item strong{display:block}.key-status{display:inline-flex;align-items:center;gap:5px;border-radius:20px;padding:5px 8px;font-size:.68rem;font-weight:850;background:#eee7f7;color:#4e267d}.key-status.borrowed{background:#fff0c8;color:#795300}.key-status.returned{background:#dff5e9;color:#176e42}
.announcement-preview{overflow:hidden;white-space:nowrap;border-radius:10px;background:#dfcdf4;color:#1b1029;padding:10px;font-weight:800}.announcement-preview span{display:inline-block;padding-left:100%;animation:sip-admin-marquee 18s linear infinite}@keyframes sip-admin-marquee{to{transform:translateX(-100%)}}

@media(max-width:1100px){.login-hero-section{grid-template-columns:1fr}.login-hero-art{max-height:370px}.login-main-grid{grid-template-columns:1fr}.login-hero-copy{padding:38px}.login-hero-art img{object-position:center 38%}.login-information-panel{order:2}}
@media(max-width:760px){.login-landing{padding:8px}.login-topbar{border-radius:14px}.login-brand-divider,.login-brand-group small,.login-top-actions{display:none}.login-brand-umm img,.login-brand-sip img{width:44px;height:44px}.login-hero-section{border-radius:18px;min-height:0}.login-hero-copy{padding:28px 20px}.login-hero-copy h1{font-size:2rem}.login-hero-copy h1 span{font-size:3rem}.login-hero-art{height:270px}.login-announcement{display:block}.announcement-label{display:block}.login-main-grid{display:block}.login-card,.login-information-panel{border-radius:18px;padding:20px;margin-bottom:12px}.role-selector{grid-template-columns:repeat(3,1fr)}.login-example-box,.login-module-grid{grid-template-columns:1fr}.login-footer{flex-direction:column}.schedule-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:430px){.login-brand-sip span{display:none}.login-hero-art{height:230px}.role-selector{grid-template-columns:repeat(2,1fr)}.login-card-heading img{width:58px;height:58px}.schedule-summary{grid-template-columns:1fr}}
.sip-brand{gap:.7rem!important}.sip-brand-logos{display:flex;align-items:center;gap:5px;flex:none}.sip-brand-logos img{width:44px!important;height:44px!important;object-fit:contain;border-radius:50%;filter:drop-shadow(0 5px 9px rgba(0,0,0,.18))}.sip-brand-logos img+img{background:#fff;padding:2px}

/* Revisi 4: login ringkas, satu layar, responsif */
.sip-unified-login{background:#f4f0f8}.login-landing{min-height:100vh;padding:12px 18px;display:flex;flex-direction:column}.login-compact-topbar{max-width:1240px;width:100%;min-height:72px;margin:0 auto;padding:10px 18px}.login-announcement-under-logo{max-width:1240px;width:100%;margin:8px auto 10px;min-height:40px}.login-compact-grid{max-width:1240px;width:100%;margin:0 auto;display:grid;grid-template-columns:minmax(0,1fr) minmax(430px,520px);gap:14px;flex:1;min-height:0}.login-compact-intro{border-radius:22px;padding:34px 40px;background:linear-gradient(135deg,#5b238e,#2b124b);color:#fff;display:flex;flex-direction:column;justify-content:center;min-height:0}.login-compact-intro .login-eyebrow{color:#eadbff}.login-compact-intro h1{font-size:clamp(2rem,4vw,3.4rem);line-height:1.05;font-weight:900;margin:10px 0 14px;color:#fff}.login-compact-intro>p{max-width:660px;line-height:1.7;color:#f4edff}.login-brief{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}.login-brief>div{display:flex;gap:10px;padding:12px;background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.18);border-radius:13px}.login-brief i{font-size:1.35rem;color:#fff}.login-brief strong,.login-brief span{display:block;color:#fff}.login-brief span{font-size:.75rem;line-height:1.45}.login-card-compact{padding:20px;overflow:auto;max-height:calc(100vh - 164px)}.login-card-compact .login-card-heading{margin-bottom:10px}.login-card-compact .login-card-heading img{width:54px;height:54px}.login-card-compact .login-card-heading h2{font-size:1.3rem}.role-selector-long{display:grid;grid-template-columns:1fr 1fr;gap:6px;max-height:168px;overflow:auto;margin-bottom:12px;padding-right:3px}.role-selector-long .role-tab{min-height:44px;display:grid;grid-template-columns:30px 1fr;grid-template-rows:auto auto;text-align:left;align-items:center;justify-items:start;padding:6px 10px}.role-selector-long .role-tab i{grid-row:1/3}.role-selector-long .role-tab span{font-size:.75rem}.role-selector-long .role-tab small{font-size:.6rem;font-weight:600;opacity:.78}.login-card-compact .form-group{margin-bottom:.65rem}.login-card-compact .login-input .form-control,.login-card-compact .custom-select{height:43px}.login-card-compact .login-input>i{top:12px}.login-card-compact .password-toggle{top:6px}.login-card-compact .login-submit{min-height:44px}.login-demo-details{margin-top:9px;border:1px solid #e1d7eb;border-radius:10px;padding:8px 10px;background:#fbf9fd}.login-demo-details summary{cursor:pointer;font-size:.73rem;font-weight:800;color:#54218f}.login-demo-table{display:grid;grid-template-columns:1fr 1fr;gap:5px 10px;margin-top:8px}.login-demo-table span{font-size:.64rem;color:#605668}.login-demo-table strong{display:block;color:#321a4d}.login-footer{max-width:1240px;width:100%;margin:10px auto 0;padding:10px 16px}.bg-purple,.bg-primary,.btn-sip,.sidebar-wrapper,.announcement-label,.login-submit,.login-compact-intro{color:#fff!important}.bg-purple *,.bg-primary *,.btn-sip *,.sidebar-wrapper .sidebar-link,.sidebar-wrapper .sidebar-title{color:#fff}
@media(max-width:900px){.login-compact-grid{grid-template-columns:1fr}.login-compact-intro{padding:24px;min-height:260px}.login-card-compact{max-height:none}.login-brief{grid-template-columns:1fr 1fr}}
@media(max-width:600px){.login-landing{padding:8px}.login-compact-topbar{min-height:60px;padding:8px}.login-compact-topbar .login-outline-btn{font-size:0;width:42px;height:42px;padding:9px}.login-compact-topbar .login-outline-btn i{font-size:1.1rem;margin:0!important}.login-brand-group small,.login-brand-divider{display:none}.login-brand-umm img,.login-brand-sip img{width:40px;height:40px}.login-announcement-under-logo{margin:6px 0}.login-compact-intro{padding:22px;min-height:230px}.login-compact-intro h1{font-size:2.15rem}.login-brief{grid-template-columns:1fr}.login-card-compact{padding:16px}.role-selector-long{grid-template-columns:1fr;max-height:190px}.login-demo-table{grid-template-columns:1fr}.login-footer{font-size:.65rem;flex-direction:column;gap:3px}}

/* Revisi final instalasi: tampilan login satu layar dan pilihan akun memanjang */
.login-compact-grid{grid-template-columns:minmax(0,1fr) minmax(410px,500px);align-items:stretch}
.login-compact-visual{border-radius:22px;overflow:hidden;min-height:0;background:linear-gradient(145deg,#e8daf7,#f8f4fc);display:flex;align-items:center;justify-content:center;border:1px solid #dfd1ed}
.login-compact-visual img{width:100%;height:100%;object-fit:cover;object-position:center}
.role-selector-long{grid-template-columns:1fr;max-height:230px}
.role-selector-long .role-tab{grid-template-columns:34px minmax(0,1fr);min-height:48px}
.login-card-compact{max-height:calc(100vh - 168px)}
.bg-purple,.bg-primary,.bg-danger,.bg-dark,.sip-hero,.public-hero,.sidebar-wrapper,.announcement-label,.login-submit{color:#fff!important}
.bg-purple *, .bg-primary *, .bg-danger *, .bg-dark *, .sip-hero *, .public-hero *{color:#fff}
@media(max-width:900px){.login-compact-grid{grid-template-columns:1fr}.login-compact-visual{display:none}.login-card-compact{max-height:none}}
@media(max-width:600px){.role-selector-long{max-height:220px}.login-card-compact{max-height:none}}

/* Revisi 5: mobile, plotting ruang, jadwal, dan transaksi */
.sip-auto-back{margin-left:auto;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}
.organization-table{table-layout:fixed;min-width:680px}.organization-table .org-number{width:72px}.organization-table th:nth-child(2){width:35%}.organization-table th:nth-child(3){width:30%}.organization-table th:nth-child(4){width:25%}.organization-table td{padding:.55rem;vertical-align:middle}.organization-table .form-control{min-width:0}
.availability-legend{display:flex;flex-wrap:wrap;gap:8px}.availability-legend span,.slot-state{border-radius:20px;padding:6px 10px;font-size:.72rem;font-weight:800}.availability-legend .is-free,.availability-slot.is-free .slot-state{background:#e1f5e9;color:#176d42}.availability-legend .is-class,.availability-slot.is-class .slot-state{background:#efe4fb;color:#54218f}.availability-legend .is-booked,.availability-slot.is-booked .slot-state{background:#ffe2e2;color:#8b1f2d}.availability-legend .is-pending,.availability-slot.is-pending .slot-state{background:#fff1c9;color:#785600}
.availability-room{background:#fff;border:1px solid #e2d8ec;border-radius:16px;overflow:hidden}.availability-room>h4{display:flex;align-items:center;gap:5px;margin:0;padding:13px 16px;background:#f1e8fa;color:#2a1741;font-size:1rem;font-weight:900}.availability-room>h4 small{margin-left:auto;color:#75677e;font-size:.7rem}.availability-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(185px,1fr));gap:10px;padding:12px}.availability-slot{border:1px solid #e8e0ee;border-left:5px solid #cfc3d8;border-radius:12px;padding:10px;min-height:150px;display:flex;flex-direction:column}.availability-slot.is-free{border-left-color:#2f9f65}.availability-slot.is-class{border-left-color:#7241ab;background:#fcfaff}.availability-slot.is-booked{border-left-color:#bd384a;background:#fffafb}.availability-slot.is-pending{border-left-color:#d5a126;background:#fffdf7}.availability-slot>div{display:flex;justify-content:space-between;gap:8px}.availability-slot>div strong,.availability-slot>div span{font-size:.72rem}.availability-slot p{font-weight:800;font-size:.78rem;line-height:1.4;margin:10px 0;flex:1}.availability-slot p small{display:block;font-weight:500;color:#726878;margin-top:4px}.availability-slot .btn,.availability-slot .slot-state{align-self:flex-start}
.simple-room-map .room-map-column h5{display:flex;align-items:center}.simple-room-map .room-map-column h5 small{margin-left:auto;font-size:.65rem;color:#594a67}.room-map-item{position:relative;border-left:5px solid transparent}.schedule-primary{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.schedule-slot{font-size:.72rem;font-weight:900;background:#f1e9fa;color:#4e257b;border-radius:20px;padding:4px 8px}.lecturer-color-1{border-left-color:#7143a5!important}.lecturer-color-2{border-left-color:#277e73!important}.lecturer-color-3{border-left-color:#b15d32!important}.lecturer-color-4{border-left-color:#315f9a!important}.lecturer-color-5{border-left-color:#9b3e75!important}.lecturer-color-6{border-left-color:#67812e!important}.lecturer-color-7{border-left-color:#755c28!important}.lecturer-color-8{border-left-color:#4f6574!important}
.weekly-schedule{display:grid;gap:14px}.weekly-day{background:#fff;border:1px solid #e1d7ea;border-radius:15px;overflow:hidden}.weekly-day>h4{margin:0;padding:12px 15px;background:#e9dcf7;color:#27163c;font-size:1rem;font-weight:900;display:flex;justify-content:space-between}.weekly-day>h4 span{font-size:.7rem;color:#6d5b7d}.weekly-day-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;padding:12px}.weekly-class{display:grid;grid-template-columns:105px 1fr;gap:12px;padding:11px;border:1px solid #e8e1ee;border-left:5px solid transparent;border-radius:11px}.weekly-class-time strong,.weekly-class-time span,.weekly-class>div:last-child strong,.weekly-class>div:last-child span,.weekly-class>div:last-child small{display:block}.weekly-class-time strong{font-size:.72rem}.weekly-class-time span{font-size:.68rem;color:#756b7c}.weekly-class>div:last-child strong{font-size:.82rem}.weekly-class>div:last-child span{font-size:.72rem;color:#4b4053}.weekly-class>div:last-child small{font-size:.68rem;color:#786e80;margin-top:3px}.empty-day{padding:14px;margin:0;color:#817787;font-size:.8rem}
.login-compact-grid{grid-template-columns:minmax(0,.72fr) minmax(410px,500px);max-width:1120px}.login-compact-visual{max-height:610px}.login-compact-visual img{object-fit:contain;padding:18px}.login-card-compact{max-height:610px}

@media(max-width:900px){
  .main-content{padding-left:14px!important;padding-right:14px!important}.page-heading{gap:10px}.page-heading>div:first-child{min-width:0;flex:1 1 260px}.page-heading h3{font-size:1.35rem}.sip-auto-back{order:-1;margin-left:0}.schedule-summary{grid-template-columns:repeat(2,1fr)}.availability-slots{grid-template-columns:repeat(2,minmax(0,1fr))}.weekly-day-items{grid-template-columns:1fr}.login-compact-grid{grid-template-columns:1fr}.login-compact-visual{display:none}.login-card-compact{max-height:none}
}
@media(max-width:600px){
  #main{margin-left:0!important}.navbar-header{padding:.7rem}.main-content{padding:12px!important}.card-body{padding:1rem}.page-heading{display:flex!important;align-items:flex-start!important}.page-heading .btn{margin:2px 0}.page-heading>div:last-child{display:flex;flex-wrap:wrap;gap:5px}.form-row>.col,.form-row>[class*=col-]{margin-bottom:.6rem}.btn{white-space:normal}.table-responsive{border:1px solid #ece5f1;border-radius:10px}.datatable{min-width:760px}.organization-table{min-width:620px}.organization-table td,.organization-table th{padding:.4rem}.organization-table .form-control{padding:.45rem;font-size:.78rem}.schedule-summary{grid-template-columns:1fr 1fr;gap:7px}.schedule-summary>div{padding:.75rem}.room-map-grid{grid-template-columns:1fr}.availability-room>h4{align-items:flex-start;flex-wrap:wrap}.availability-room>h4 small{width:100%;margin-left:26px}.availability-slots{grid-template-columns:1fr}.availability-slot{min-height:0}.weekly-class{grid-template-columns:90px 1fr}.public-page-heading{display:block}.mini-qr{margin-top:12px}.public-form-card .card-body{padding:1rem!important}.sip-public-main{padding-top:18px}.login-compact-topbar{padding:6px}.login-card-compact{padding:14px}.login-card-heading img{width:46px!important;height:46px!important}
}

.student-qr-panel{margin-top:16px;padding:14px;border:1px dashed rgba(100,41,173,.25);border-radius:16px;background:#faf8ff;text-align:center}
.student-login-qr{display:inline-flex;align-items:center;justify-content:center;background:#fff;padding:10px;border-radius:14px;min-width:140px;min-height:140px;margin-bottom:8px;box-shadow:0 8px 22px rgba(100,41,173,.08)}
.student-qr-panel small{display:block;color:#6c757d;word-break:break-all}
.availability-table{width:100%;border-collapse:separate;border-spacing:0}
.availability-table th,.availability-table td{border:1px solid #ece5fb;padding:10px;vertical-align:top}
.availability-table th{background:#faf8ff}
.availability-day-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 12px;border-radius:999px;background:#f5efff;color:#5d2ca2;font-weight:700}
.empty-slot{color:#7a7a7a;font-style:italic}

/* Revisi v7: barcode login dan tampilan jadwal */
.student-login-qr.is-ready canvas{display:block;width:156px;height:156px;max-width:100%}
.student-login-qr.is-error{border:1px dashed #c98d92;background:#fff8f8;color:#7f2028;text-align:center;padding:14px}
.qr-fallback{font-size:.75rem;line-height:1.45}.qr-fallback i{display:block;font-size:1.35rem;margin-bottom:5px}.qr-fallback small{color:#745e62}

.schedule-heading-actions,.schedule-filter-actions{display:flex;flex-wrap:wrap;gap:7px}
.schedule-color-guide{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;border:1px solid #e6deeb;border-radius:12px;background:#fff}
.schedule-tag{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:5px 9px;font-size:.7rem;font-weight:800;line-height:1.2;white-space:nowrap}
.schedule-tag-time{background:#eee3fa;color:#5a268c}
.schedule-tag-class{background:#e5f0ff;color:#175c9e}
.schedule-tag-room{background:#fff0d8;color:#8a4f05}
.schedule-tag-lecturer{background:#e3f5ed;color:#176b4a}
.schedule-room-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(330px,1fr));gap:16px;align-items:start}
.schedule-room-panel{overflow:hidden;border:1px solid #dfd5e6;border-radius:16px;background:#fff}
.schedule-room-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;background:#6f1d2c;color:#fff}
.schedule-room-header span{display:flex;align-items:center;gap:8px;font-weight:900}.schedule-room-header small{font-size:.7rem;opacity:.9}
.schedule-room-list{display:grid;gap:10px;padding:11px}
.schedule-session{position:relative;border:1px solid #e8e1ed;border-left:6px solid #765095;border-radius:13px;padding:12px;background:#fff;transition:box-shadow .18s ease,border-color .18s ease}
.schedule-session:hover{border-color:#d5c8df;box-shadow:0 6px 18px rgba(54,27,73,.08)}
.schedule-session-top,.weekly-class-card-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;margin-bottom:9px}
.schedule-session h5,.weekly-class-card h5{margin:0 0 9px;font-size:.95rem;line-height:1.35;color:#2e2036;font-weight:900}
.schedule-session-meta{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:10px}
.schedule-lecturer{display:flex;align-items:flex-start;gap:9px;border-radius:10px;padding:8px 10px;background:#e8f6ef;color:#155b40}
.schedule-lecturer>i{font-size:1.05rem;margin-top:1px}.schedule-lecturer span,.schedule-lecturer small,.schedule-lecturer strong{display:block}.schedule-lecturer small{font-size:.62rem;text-transform:uppercase;letter-spacing:.04em;opacity:.8}.schedule-lecturer strong{font-size:.76rem;line-height:1.35}
.schedule-coordinator{margin-top:8px;color:#6f6574;font-size:.68rem}
.schedule-status{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:5px 9px;font-size:.66rem;font-weight:900;white-space:nowrap}.schedule-status.is-finished{background:#e2f4e9;color:#17653e}.schedule-status.is-running{background:#e6f0ff;color:#17569a}.schedule-status.is-waiting{background:#f0edf2;color:#65586d}
.schedule-session-actions{margin-top:11px}.schedule-admin-action{margin-top:8px}.schedule-admin-action a{font-size:.67rem;color:#a4313f}
.weekly-schedule-v7{display:grid;gap:16px}.weekly-day-v7{overflow:hidden;border:1px solid #e0d7e6;border-radius:16px;background:#fff}.weekly-day-v7>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 15px;background:#f0e7f7;color:#40205b}.weekly-day-v7>header span{display:flex;align-items:center;gap:8px;font-weight:900}.weekly-day-v7>header small{font-size:.68rem;color:#725f7f}
.weekly-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(255px,1fr));gap:10px;padding:11px}.weekly-class-card{border:1px solid #e8e1ed;border-left:6px solid #765095;border-radius:13px;padding:12px;background:#fff}.weekly-time-range{font-size:.72rem;font-weight:900;color:#5b4f63}.weekly-empty-v7{margin:0;padding:18px;color:#85798b;font-size:.78rem}.weekly-empty-v7 i{margin-right:6px}
@media(max-width:600px){.schedule-room-grid{grid-template-columns:1fr}.schedule-room-header{align-items:flex-start}.schedule-session-top,.weekly-class-card-top{align-items:flex-start}.schedule-status{margin-left:0}.schedule-filter-actions .btn{flex:1 1 145px}.weekly-card-grid{grid-template-columns:1fr}.schedule-color-guide{padding:9px}.schedule-tag{white-space:normal}}
