:root{
 --bg:#f5f7fb;--surface:#fff;--surface2:#f8faff;--text:#172033;--muted:#667085;--line:#e5eaf2;
 --primary:#3157d5;--primary2:#6d5dfc;--primary-soft:#eef2ff;--danger:#d92d20;--success:#067647;--warning:#b54708;
 --shadow:0 16px 40px rgba(35,48,78,.08);--shadow-sm:0 6px 18px rgba(35,48,78,.06);--radius:18px;--sidebar:264px
}
html[data-theme=dark]{--bg:#0c1220;--surface:#131c2d;--surface2:#192438;--text:#eef3ff;--muted:#9eabc0;--line:#26344d;--primary:#7fa1ff;--primary2:#9b8cff;--primary-soft:#1c2a4b;--shadow:0 16px 40px rgba(0,0,0,.24);--shadow-sm:0 6px 18px rgba(0,0,0,.18)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;background:var(--bg);color:var(--text);font-size:14px}body.menu-open{overflow:hidden}a{color:inherit;text-decoration:none}img{max-width:100%}
.topbar{position:fixed;inset:0 0 auto 0;height:76px;background:color-mix(in srgb,var(--surface) 92%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 20px;z-index:40}.topbar-left,.top-actions,.brand,.profile-chip{display:flex;align-items:center}.topbar-left{gap:10px}.brand{gap:12px;min-width:0}.brand-logo{width:44px;height:44px;border-radius:14px;background:linear-gradient(135deg,var(--primary),var(--primary2));display:grid;place-items:center;box-shadow:0 8px 22px rgba(49,87,213,.22);overflow:hidden;padding:5px;flex:0 0 auto}.brand-logo img{width:100%;height:100%;object-fit:contain;border-radius:9px}.brand-copy{display:flex;flex-direction:column;line-height:1.2;min-width:0}.brand-copy strong{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:360px}.brand-copy small{font-size:11px;color:var(--muted);margin-top:3px}.top-actions{gap:10px}.clock{font-size:10px;color:var(--muted);padding:6px 11px;border:1px solid var(--line);border-radius:13px;background:var(--surface2);display:grid;grid-template-columns:auto auto;column-gap:8px;row-gap:1px;line-height:1.2;min-width:235px}.clock strong{grid-row:1/3;align-self:center;color:var(--text);font-size:12px;padding-right:8px;border-right:1px solid var(--line)}.clock span{white-space:nowrap}.clock #clockTime{font-size:9px}.icon-btn{width:38px;height:38px;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:12px;cursor:pointer;font-size:17px;display:grid;place-items:center}.icon-btn:hover{background:var(--surface2)}.mobile-menu{display:none}.profile-chip{gap:9px;padding:5px 9px 5px 5px;border:1px solid var(--line);border-radius:14px;background:var(--surface)}.avatar{width:34px;height:34px;border-radius:10px;object-fit:cover}.avatar-fallback{display:grid;place-items:center;background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;font-weight:800}.profile-text{display:flex;flex-direction:column;max-width:145px}.profile-text b{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-text small{font-size:10px;color:var(--muted)}
.sidebar{position:fixed;left:0;top:76px;bottom:0;width:var(--sidebar);background:var(--surface);border-right:1px solid var(--line);padding:16px 14px;z-index:35;display:flex;flex-direction:column;overflow:auto}.sidebar-user{display:flex;align-items:center;gap:11px;padding:13px;border-radius:16px;background:linear-gradient(135deg,var(--primary-soft),var(--surface2));border:1px solid var(--line);margin-bottom:18px}.sidebar-avatar{width:40px;height:40px;border-radius:12px;background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;font-weight:800;display:grid;place-items:center;overflow:hidden;flex:0 0 auto}.sidebar-avatar img{width:100%;height:100%;object-fit:cover}.sidebar-user div:last-child{min-width:0}.sidebar-user b{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-user span{display:block;font-size:10px;color:var(--muted);margin-top:3px}.nav-menu{display:flex;flex-direction:column;gap:3px}.nav-label{font-size:9px;letter-spacing:.14em;font-weight:800;color:var(--muted);padding:12px 11px 5px}.nav-item{display:flex;align-items:center;gap:11px;padding:10px 11px;border-radius:12px;color:var(--muted);font-weight:650;transition:.18s ease}.nav-item:hover{background:var(--surface2);color:var(--text);transform:translateX(2px)}.nav-item.active{background:linear-gradient(90deg,var(--primary-soft),transparent);color:var(--primary);font-weight:800}.nav-icon{width:27px;height:27px;border-radius:9px;background:var(--surface2);border:1px solid var(--line);display:grid;place-items:center;font-size:14px;flex:0 0 auto}.nav-item.active .nav-icon{background:var(--primary);color:#fff;border-color:var(--primary)}.sidebar-footer{margin-top:auto;padding-top:16px}.logout-link{display:flex;align-items:center;gap:10px;padding:11px;border-radius:12px;color:var(--danger);font-weight:700;background:color-mix(in srgb,var(--danger) 7%,transparent)}.sidebar-overlay{display:none}
.main{margin-left:var(--sidebar);padding:102px 28px 42px;min-height:100vh}.public-main{padding:104px 24px 44px;max-width:1180px;margin:auto}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.page-head h1{font-size:28px;line-height:1.2;margin:4px 0 5px;letter-spacing:-.03em}.page-head p{margin:0;color:var(--muted);font-size:12px}.eyebrow{font-size:10px;letter-spacing:.13em;font-weight:900;color:var(--primary)}
.grid{display:grid;gap:16px}.grid.cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid.cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid.cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:18px;box-shadow:var(--shadow-sm)}.card h2,.card h3{margin-top:0}.card-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.card-header h3{margin:0;font-size:15px}.card-header p{margin:3px 0 0;color:var(--muted);font-size:11px}.dashboard-hero{position:relative;overflow:hidden;border:0;background:linear-gradient(130deg,#3157d5,#5648db 58%,#7a5ee8);color:#fff;padding:24px;box-shadow:0 18px 44px rgba(49,87,213,.22)}.dashboard-hero:after{content:"";position:absolute;width:230px;height:230px;border-radius:50%;background:rgba(255,255,255,.10);right:-70px;top:-95px}.dashboard-hero:before{content:"";position:absolute;width:130px;height:130px;border-radius:50%;background:rgba(255,255,255,.08);right:95px;bottom:-82px}.dashboard-hero>*{position:relative;z-index:1}.dashboard-hero .eyebrow{color:#dfe6ff}.dashboard-hero h2{font-size:27px;line-height:1.2;margin:6px 0 9px;max-width:720px}.dashboard-hero p{color:#e9ecff;max-width:760px;margin:0 0 16px;line-height:1.65}.hero-actions{display:flex;gap:9px;flex-wrap:wrap}.hero-actions .btn{background:#fff;color:#2f49b6}.hero-actions .btn.ghost{background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.28);color:#fff}
.stat{position:relative;overflow:hidden;min-height:130px}.stat-top{display:flex;justify-content:space-between;align-items:flex-start}.stat-icon{width:40px;height:40px;border-radius:13px;background:var(--primary-soft);color:var(--primary);display:grid;place-items:center;font-weight:900;font-size:17px}.stat strong{font-size:30px;line-height:1;display:block;margin:14px 0 5px;letter-spacing:-.04em}.stat .stat-label{font-size:12px;font-weight:700}.stat small{display:block;color:var(--muted);font-size:10px;margin-top:4px}.stat-accent{position:absolute;width:78px;height:78px;border-radius:50%;background:var(--primary-soft);right:-28px;bottom:-34px}.muted{color:var(--muted)}
.quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.quick-action{border:1px solid var(--line);background:var(--surface2);border-radius:14px;padding:13px;transition:.18s ease}.quick-action:hover{transform:translateY(-2px);box-shadow:var(--shadow-sm);border-color:color-mix(in srgb,var(--primary) 40%,var(--line))}.quick-action span{display:grid;place-items:center;width:34px;height:34px;border-radius:11px;background:var(--primary-soft);color:var(--primary);font-weight:900;margin-bottom:9px}.quick-action b{font-size:12px;display:block}.quick-action small{display:block;color:var(--muted);font-size:10px;margin-top:3px;line-height:1.4}.list-clean{display:flex;flex-direction:column}.list-item{display:flex;gap:11px;padding:11px 0;border-bottom:1px solid var(--line)}.list-item:last-child{border-bottom:0}.list-dot{width:9px;height:9px;border-radius:50%;background:var(--primary);margin-top:6px;flex:0 0 auto}.list-body{min-width:0;flex:1}.list-body b{font-size:12px}.list-body p{font-size:11px;color:var(--muted);margin:3px 0 0;line-height:1.45}.deadline-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px;border-radius:14px;background:var(--surface2);border:1px solid var(--line);margin-bottom:9px}.deadline-item:last-child{margin-bottom:0}.deadline-date{min-width:54px;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:7px}.deadline-date strong{display:block;font-size:17px}.deadline-date small{font-size:9px;text-transform:uppercase;color:var(--muted)}.deadline-info{flex:1;min-width:0}.deadline-info b{display:block;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.deadline-info span{font-size:10px;color:var(--muted)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid transparent;border-radius:11px;padding:10px 13px;background:var(--primary);color:#fff;cursor:pointer;font-weight:750;font-size:12px;transition:.18s ease}.btn:hover{filter:brightness(.98);transform:translateY(-1px)}.btn.secondary{background:var(--primary2)}.btn.ghost{background:var(--surface);color:var(--text);border-color:var(--line)}.btn.danger{background:var(--danger)}.btn.success{background:var(--success)}.btn.sm{padding:7px 10px;font-size:11px}.actions{display:flex;gap:7px;flex-wrap:wrap}
.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:14px}.table{width:100%;border-collapse:collapse;min-width:620px;background:var(--surface)}.table th,.table td{padding:11px 12px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}.table tr:last-child td{border-bottom:0}.table th{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);background:var(--surface2);position:sticky;top:0}.table tbody tr:hover{background:var(--surface2)}
.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-group{display:flex;flex-direction:column;gap:6px}.form-group.full{grid-column:1/-1}label{font-weight:750;font-size:11px;color:var(--text)}input,select,textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:11px;background:var(--surface);color:var(--text);outline:none;font:inherit}input:focus,select:focus,textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 12%,transparent)}textarea{min-height:105px;resize:vertical}.alert{padding:12px 14px;border-radius:13px;margin-bottom:16px;display:flex;gap:10px;align-items:flex-start;border:1px solid}.alert b{display:block;font-size:11px}.alert span{font-size:11px}.alert.success{background:#ecfdf3;color:#067647;border-color:#abefc6}.alert.danger{background:#fef3f2;color:#b42318;border-color:#fecdca}.badge{display:inline-flex;align-items:center;padding:4px 8px;border-radius:999px;background:var(--surface2);border:1px solid var(--line);font-size:10px;font-weight:700}.badge.primary{background:var(--primary-soft);border-color:transparent;color:var(--primary)}
.hero{display:grid;grid-template-columns:1.25fr .75fr;gap:22px;align-items:center}.hero h2{font-size:46px;line-height:1.05;margin:0 0 14px}.hero-logo{width:220px;max-width:100%}.login-box{max-width:520px;margin:20px auto}.meeting{border-left:4px solid var(--primary)}.course-card{padding:13px 0}.course-card h3{margin-top:0}.notice{border-left:3px solid var(--primary2);padding-left:12px}.profile-photo{width:110px;height:110px;object-fit:cover;border-radius:20px;border:1px solid var(--line)}.empty-state{text-align:center;padding:28px 18px;color:var(--muted)}.empty-state strong{display:block;color:var(--text);margin-bottom:5px}
@media(max-width:1100px){.grid.cols-4{grid-template-columns:repeat(2,1fr)}.quick-grid{grid-template-columns:repeat(2,1fr)}.clock{display:none}}
@media(max-width:900px){.mobile-menu{display:grid}.sidebar{transform:translateX(-105%);transition:transform .22s ease;box-shadow:20px 0 40px rgba(0,0,0,.12)}.sidebar.open{transform:translateX(0)}.sidebar-overlay{position:fixed;inset:76px 0 0 0;background:rgba(10,18,32,.4);z-index:30;backdrop-filter:blur(2px)}.sidebar-overlay.show{display:block}.main{margin-left:0;padding-left:20px;padding-right:20px}.brand-copy strong{max-width:250px}.profile-text{display:none}}
@media(max-width:640px){.topbar{height:68px;padding:0 10px}.sidebar{top:68px}.sidebar-overlay{inset:68px 0 0}.brand-logo{width:38px;height:38px;border-radius:12px}.brand-copy strong{max-width:170px;font-size:12px}.brand-copy small{display:none}.profile-chip{padding:4px}.top-actions{gap:6px}.main,.public-main{padding:88px 12px 30px}.page-head{margin-bottom:16px}.page-head h1{font-size:23px}.grid.cols-4,.grid.cols-3,.grid.cols-2,.form-grid{grid-template-columns:1fr}.quick-grid{grid-template-columns:1fr 1fr}.dashboard-hero{padding:19px}.dashboard-hero h2{font-size:22px}.card{padding:15px;border-radius:15px}.stat{min-height:118px}.hero h2{font-size:34px}.table-wrap{margin-left:-2px;margin-right:-2px}.deadline-item{align-items:flex-start}.clock{display:none}}
@media(max-width:390px){.brand-copy strong{max-width:135px}.quick-grid{grid-template-columns:1fr}.icon-btn{width:36px;height:36px}.profile-chip{display:none}}
@media print{.topbar,.sidebar,.sidebar-overlay,.no-print,.btn,.page-head{display:none!important}.main,.public-main{margin:0;padding:0}.card{box-shadow:none;border:0}.report-footer{position:fixed;bottom:0;left:0;right:0}.report-page:after{content:"Halaman " counter(page) " dari " counter(pages)}}


/* Modern landing & authentication */
.landing-hero{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:42px;align-items:center;min-height:560px;padding:44px;border:1px solid var(--line);border-radius:28px;background:linear-gradient(145deg,var(--surface),color-mix(in srgb,var(--primary) 5%,var(--surface2)));overflow:hidden;box-shadow:var(--shadow-sm)}
.landing-hero:before{content:"";position:absolute;width:460px;height:460px;border-radius:50%;background:color-mix(in srgb,var(--primary) 9%,transparent);right:-180px;top:-220px}.landing-copy,.landing-visual{position:relative;z-index:1}.landing-kicker{display:inline-flex;padding:7px 10px;border:1px solid color-mix(in srgb,var(--primary) 28%,var(--line));border-radius:999px;background:var(--primary-soft);color:var(--primary);font-size:9px;letter-spacing:.14em;font-weight:900}.landing-copy h2{font-size:52px;line-height:1.02;letter-spacing:-.055em;margin:18px 0 16px;max-width:690px}.landing-copy h2 span{color:var(--primary)}.landing-copy>p{font-size:14px;line-height:1.8;color:var(--muted);max-width:650px}.btn-lg{padding:13px 18px;font-size:13px}.landing-actions{margin-top:23px}.landing-trust{display:flex;gap:28px;margin-top:30px;padding-top:20px;border-top:1px solid var(--line)}.landing-trust div{display:flex;flex-direction:column}.landing-trust b{font-size:20px}.landing-trust span{font-size:10px;color:var(--muted);margin-top:2px}.mock-window{border:1px solid color-mix(in srgb,var(--primary) 22%,var(--line));border-radius:22px;background:var(--surface);box-shadow:0 35px 90px rgba(31,42,78,.18);overflow:hidden;transform:perspective(1000px) rotateY(-3deg) rotateX(2deg)}.mock-top{height:44px;display:flex;align-items:center;gap:6px;padding:0 14px;border-bottom:1px solid var(--line);background:var(--surface2)}.mock-top span{width:8px;height:8px;border-radius:50%;background:var(--line)}.mock-top b{margin-left:8px;font-size:9px;color:var(--muted)}.mock-body{display:grid;grid-template-columns:58px 1fr;min-height:330px}.mock-side{padding:17px 10px;border-right:1px solid var(--line);background:var(--surface2)}.mock-side i{display:block;height:28px;border-radius:9px;background:var(--line);margin-bottom:10px}.mock-side i:first-child{background:var(--primary)}.mock-content{padding:18px}.mock-banner{padding:20px;border-radius:16px;background:linear-gradient(130deg,#3157d5,#6546df);color:#fff}.mock-banner small,.mock-banner strong,.mock-banner span{display:block}.mock-banner small{font-size:8px;opacity:.8}.mock-banner strong{font-size:16px;margin:5px 0}.mock-banner span{font-size:9px;opacity:.85}.mock-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px}.mock-stats i{height:68px;border-radius:13px;background:var(--surface2);border:1px solid var(--line)}.mock-panels{display:grid;grid-template-columns:1.2fr .8fr;gap:9px;margin-top:9px}.mock-panels i{height:108px;border-radius:13px;background:var(--surface2);border:1px solid var(--line)}.visual-glow{position:absolute;width:240px;height:240px;border-radius:50%;background:color-mix(in srgb,var(--primary) 18%,transparent);filter:blur(55px);right:10%;bottom:5%}.feature-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:18px 0 54px}.feature-strip>div{display:grid;grid-template-columns:42px 1fr;grid-template-rows:auto auto;column-gap:10px;align-items:center;padding:15px;border:1px solid var(--line);border-radius:15px;background:var(--surface)}.feature-strip span{grid-row:1/3;width:38px;height:38px;display:grid;place-items:center;border-radius:12px;background:var(--primary-soft);color:var(--primary);font-weight:900}.feature-strip b{font-size:11px}.feature-strip small{font-size:9px;color:var(--muted)}.section-title{max-width:720px;margin:0 auto 20px;text-align:center}.section-title h2{font-size:30px;letter-spacing:-.035em;margin:8px 0}.section-title p{font-size:12px;color:var(--muted);line-height:1.7}.modern-feature{padding:22px}.feature-icon{display:grid;place-items:center;width:44px;height:44px;border-radius:14px;background:var(--primary-soft);color:var(--primary);font-size:18px;font-weight:900}.modern-feature h3{margin:16px 0 7px}.modern-feature p{font-size:11px;line-height:1.7;color:var(--muted)}.auth-shell,.success-wrap{max-width:760px;margin:0 auto}.auth-card{padding:26px}.auth-intro{margin-bottom:20px}.auth-intro h2{font-size:28px;margin:10px 0 7px}.auth-intro p{color:var(--muted);font-size:12px;line-height:1.7}.btn-wide{width:100%;padding:13px}.success-card{text-align:center;padding:34px}.success-icon{width:64px;height:64px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px;background:#ecfdf3;color:#067647;font-size:28px;font-weight:900}.wa-preview{margin:22px 0;text-align:left;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:var(--surface2)}.wa-preview-head{display:flex;justify-content:space-between;gap:12px;padding:11px 14px;border-bottom:1px solid var(--line);font-size:10px}.wa-preview-head span{color:var(--muted)}.wa-preview pre{white-space:pre-wrap;word-break:break-word;margin:0;padding:16px;font:inherit;font-size:11px;line-height:1.65;color:var(--text)}.center-actions{justify-content:center}.security-note{font-size:10px;color:var(--muted);margin:18px 0 0}.wa-hero{min-height:auto}
@media(max-width:900px){.landing-hero{grid-template-columns:1fr;padding:30px}.landing-copy h2{font-size:42px}.landing-visual{max-width:650px;margin:auto;width:100%}.feature-strip{grid-template-columns:repeat(2,1fr)}}
@media(max-width:640px){.landing-hero{padding:22px;border-radius:20px;min-height:auto}.landing-copy h2{font-size:34px}.landing-trust{gap:16px;justify-content:space-between}.mock-window{transform:none}.feature-strip{grid-template-columns:1fr;margin-bottom:38px}.modern-features{grid-template-columns:1fr}.success-card{padding:22px}.center-actions .btn{width:100%}}

/* V4 - Pemisahan identitas Admin dan Peserta */
body.role-admin{--role-accent:#3157d5;--role-accent2:#7548dd;--role-soft:#eef2ff}
body.role-peserta{--primary:#087f6b;--primary2:#0e9f82;--primary-soft:#e9fbf5;--role-accent:#087f6b;--role-accent2:#0e9f82;--role-soft:#e9fbf5}
html[data-theme=dark] body.role-peserta{--primary:#54d3b6;--primary2:#70dfc6;--primary-soft:#153830;--role-soft:#153830}
.role-admin .sidebar{border-right-color:color-mix(in srgb,var(--role-accent) 18%,var(--line))}.role-admin .sidebar-user{background:linear-gradient(135deg,color-mix(in srgb,var(--role-accent) 12%,var(--surface)),color-mix(in srgb,var(--role-accent2) 7%,var(--surface2)))}
.role-peserta .sidebar{background:linear-gradient(180deg,color-mix(in srgb,var(--surface) 97%,var(--primary-soft)),var(--surface));border-right-color:color-mix(in srgb,var(--primary) 18%,var(--line))}.role-peserta .sidebar-user{background:linear-gradient(135deg,var(--primary-soft),var(--surface));border-color:color-mix(in srgb,var(--primary) 20%,var(--line))}.role-peserta .sidebar-avatar,.role-peserta .avatar-fallback,.role-peserta .brand-logo{background:linear-gradient(135deg,var(--primary),var(--primary2))}.role-peserta .nav-item.active{background:linear-gradient(90deg,var(--primary-soft),transparent);color:var(--primary)}
.admin-command-hero{display:grid;grid-template-columns:1fr auto;gap:24px;align-items:center}.admin-command-badge{display:inline-flex;align-items:center;gap:7px;padding:6px 9px;border-radius:999px;background:rgba(255,255,255,.14);font-size:9px;font-weight:900;letter-spacing:.1em}.admin-command-panel{display:grid;grid-template-columns:repeat(2,110px);gap:9px}.admin-command-panel a{padding:13px;border-radius:15px;border:1px solid rgba(255,255,255,.22);background:rgba(255,255,255,.1);text-align:center;color:#fff;font-size:10px;font-weight:800;backdrop-filter:blur(8px)}.admin-command-panel b{display:block;font-size:20px;margin-bottom:4px}
.participant-hero{position:relative;overflow:hidden;background:linear-gradient(130deg,#087f6b,#0c9b7f 58%,#20a98c);border:0;color:#fff}.participant-hero:before{content:"";position:absolute;width:260px;height:260px;border-radius:50%;right:-80px;top:-120px;background:rgba(255,255,255,.10)}.participant-hero:after{content:"";position:absolute;width:150px;height:150px;border-radius:50%;right:150px;bottom:-110px;background:rgba(255,255,255,.08)}.participant-hero>*{position:relative;z-index:1}.participant-hero .eyebrow{color:#d6fff5}.participant-hero p{color:#e5fff8}.participant-progress{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px;max-width:680px}.participant-progress div{padding:11px 13px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.09);border-radius:13px}.participant-progress b{display:block;font-size:17px}.participant-progress span{font-size:9px;opacity:.8}.participant-btn{background:var(--primary)}
.participant-intro{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:16px;border-color:color-mix(in srgb,var(--primary) 20%,var(--line));background:linear-gradient(135deg,var(--surface),color-mix(in srgb,var(--primary) 5%,var(--surface2)))}.participant-intro h2{margin:5px 0 6px}.participant-intro p{margin:0;color:var(--muted)}.participant-badge{color:var(--primary);background:var(--primary-soft);border-color:transparent}.meeting-timeline{display:flex;flex-direction:column;gap:10px}.participant-meeting{display:flex;align-items:center;gap:14px;transition:.18s ease}.participant-meeting:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--primary) 35%,var(--line));box-shadow:var(--shadow)}.meeting-number{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;background:var(--primary-soft);color:var(--primary);font-size:16px;font-weight:900;flex:0 0 auto}.meeting-copy{flex:1;min-width:0}.meeting-copy h3{margin:6px 0 3px}.meeting-copy p,.meeting-copy small{margin:0;color:var(--muted);font-size:10px}.meeting-state{display:flex;align-items:center;gap:10px}.meeting-arrow{font-size:20px;color:var(--primary)}.success-soft{background:#ecfdf3!important;color:#067647!important;border-color:#abefc6!important}.announcement-feed{display:grid;gap:12px}.participant-announcement{border-left:4px solid var(--primary)}.participant-announcement.priority-penting{border-left-color:#f79009}.participant-announcement.priority-mendesak{border-left-color:#d92d20}.participant-announcement h3{margin:10px 0 7px}.participant-announcement p{line-height:1.65}.participant-announcement small{color:var(--muted)}.announcement-meta{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:10px}
@media(max-width:780px){.admin-command-hero{grid-template-columns:1fr}.admin-command-panel{grid-template-columns:repeat(4,1fr)}.participant-progress{grid-template-columns:1fr 1fr 1fr}.participant-intro{align-items:flex-start;flex-direction:column}.participant-meeting{align-items:flex-start}.meeting-state{flex-direction:column;align-items:flex-end}}
@media(max-width:520px){.admin-command-panel{grid-template-columns:1fr 1fr}.participant-progress{grid-template-columns:1fr}.participant-meeting{display:grid;grid-template-columns:54px 1fr}.meeting-state{grid-column:2;flex-direction:row;align-items:center;justify-content:space-between}.announcement-meta{flex-direction:column;gap:5px}}

/* V5 - Main menu dark-only, identitas Admin dan Peserta benar-benar dibedakan */
.role-admin .topbar,
.role-admin .sidebar{
  background:#0b1020;
  border-color:#202a46;
  color:#fff;
}
.role-admin .topbar{box-shadow:0 10px 30px rgba(0,0,0,.18)}
.role-admin .brand-copy strong,
.role-admin .profile-text b,
.role-admin .sidebar-user b,
.role-admin .clock strong{color:#fff}
.role-admin .brand-copy small,
.role-admin .profile-text small,
.role-admin .sidebar-user span,
.role-admin .clock,
.role-admin .nav-label{color:#9da9c7}
.role-admin .clock,
.role-admin .profile-chip,
.role-admin .icon-btn{
  background:#121a30;
  border-color:#273352;
  color:#fff;
}
.role-admin .sidebar-user{
  background:linear-gradient(135deg,#151e38,#10182c);
  border-color:#2a3658;
}
.role-admin .nav-item{color:#d8def0}
.role-admin .nav-item:hover{background:#151f38;color:#fff}
.role-admin .nav-item.active{
  background:linear-gradient(90deg,#3157d5,#5d48d9);
  color:#fff;
  box-shadow:0 8px 20px rgba(49,87,213,.22);
}
.role-admin .nav-icon{
  color:#dfe5ff;
  background:#151f38;
  border-color:#2a3658;
}
.role-admin .nav-item.active .nav-icon{
  background:rgba(255,255,255,.14);
  color:#fff;
  border-color:rgba(255,255,255,.18);
}
.role-admin .logout-link{color:#ffd5d2;background:#2b171c}

.role-peserta .topbar,
.role-peserta .sidebar{
  background:#081311;
  border-color:#17322c;
  color:#fff;
}
.role-peserta .topbar{box-shadow:0 10px 30px rgba(0,0,0,.18)}
.role-peserta .brand-copy strong,
.role-peserta .profile-text b,
.role-peserta .sidebar-user b,
.role-peserta .clock strong{color:#fff}
.role-peserta .brand-copy small,
.role-peserta .profile-text small,
.role-peserta .sidebar-user span,
.role-peserta .clock,
.role-peserta .nav-label{color:#9ab9b1}
.role-peserta .clock,
.role-peserta .profile-chip,
.role-peserta .icon-btn{
  background:#0d1f1b;
  border-color:#1f4038;
  color:#fff;
}
.role-peserta .sidebar-user{
  background:linear-gradient(135deg,#0f2822,#0b1d19);
  border-color:#1f453b;
}
.role-peserta .nav-item{color:#d8ebe6}
.role-peserta .nav-item:hover{background:#102923;color:#fff}
.role-peserta .nav-item.active{
  background:linear-gradient(90deg,#087f6b,#0aa182);
  color:#fff;
  box-shadow:0 8px 20px rgba(8,127,107,.22);
}
.role-peserta .nav-icon{
  color:#d9fff5;
  background:#102923;
  border-color:#20483e;
}
.role-peserta .nav-item.active .nav-icon{
  background:rgba(255,255,255,.14);
  color:#fff;
  border-color:rgba(255,255,255,.18);
}
.role-peserta .logout-link{color:#ffd5d2;background:#241616}

/* Menu utama tetap gelap meskipun tema konten diubah */
html[data-theme=light] .role-admin .topbar,
html[data-theme=dark] .role-admin .topbar,
html[data-theme=light] .role-admin .sidebar,
html[data-theme=dark] .role-admin .sidebar{background:#0b1020;color:#fff}
html[data-theme=light] .role-peserta .topbar,
html[data-theme=dark] .role-peserta .topbar,
html[data-theme=light] .role-peserta .sidebar,
html[data-theme=dark] .role-peserta .sidebar{background:#081311;color:#fff}

/* Hero dashboard dibuat berbeda per peran */
.role-admin .admin-command-hero{
  background:linear-gradient(135deg,#10172d 0%,#17234a 55%,#273b7c 100%);
  border:1px solid #2b3f75;
}
.role-peserta .participant-hero{
  background:linear-gradient(135deg,#0b1e19 0%,#0b463a 55%,#087f6b 100%);
  border:1px solid #1f6656;
}

/* V6: portal Dosen tetap memakai main menu gelap, terpisah dari Admin/Peserta. */
body.role-dosen{--primary:#c78b2b;--primary2:#e0a94a;--primary-soft:#332817;--role-accent:#c78b2b;--role-accent2:#e0a94a}
.role-dosen .topbar,.role-dosen .sidebar{background:#17130d!important;color:#fff;border-color:#332817}
.role-dosen .topbar{box-shadow:0 10px 30px rgba(0,0,0,.18)}
.role-dosen .brand-copy strong,.role-dosen .profile-text b,.role-dosen .sidebar-user b,.role-dosen .clock strong{color:#fff}
.role-dosen .brand-copy small,.role-dosen .profile-text small,.role-dosen .sidebar-user span,.role-dosen .clock,.role-dosen .nav-label{color:#c8b993}
.role-dosen .clock,.role-dosen .profile-chip,.role-dosen .icon-btn{background:#211a10;border-color:#3b2f1c;color:#fff}
.role-dosen .sidebar-user{background:linear-gradient(135deg,#2b2113,#1d170f);border-color:#3b2f1c}
.role-dosen .nav-item{color:#eee4cf}.role-dosen .nav-item:hover{background:#2a2114;color:#fff}.role-dosen .nav-item.active{background:linear-gradient(90deg,#3a2b14,transparent);color:#ffd58a}.role-dosen .nav-icon{background:#241c11;border-color:#3b2f1c}.role-dosen .nav-item.active .nav-icon{background:#c78b2b;color:#111;border-color:#c78b2b}
/* V6: hanya judul/header tabel yang rata tengah; isi tabel tetap rata kiri. */
.table th{text-align:center}.table td{text-align:left}

/* V7 submenu, slideshow, language, copyright */
.nav-group{margin:8px 10px}.nav-group-title{display:flex;align-items:center;gap:10px;padding:9px 12px;color:#fff;font-weight:700;font-size:.92rem}.nav-submenu{margin-left:17px;border-left:1px solid rgba(255,255,255,.14);padding-left:10px;display:grid;gap:4px}.nav-sub-item{display:block;padding:8px 10px;border-radius:9px;color:rgba(255,255,255,.72);text-decoration:none;font-size:.88rem}.nav-sub-item:hover,.nav-sub-item.active{background:rgba(255,255,255,.1);color:#fff}.app-copyright{text-align:center;padding:22px 12px;color:var(--muted);font-size:.82rem}.lang-switch{display:flex;border:1px solid rgba(255,255,255,.15);border-radius:10px;overflow:hidden}.lang-switch a{padding:7px 9px;color:#dbe4ff;text-decoration:none;font-size:.78rem}.lang-switch a.active{background:#fff;color:#10172a;font-weight:800}.home-slideshow{position:relative;min-height:320px;border-radius:24px;overflow:hidden;margin-bottom:22px;background:#0b1220}.home-slide{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transition:opacity .7s ease;padding:44px;display:flex;align-items:end}.home-slide.active{opacity:1;position:relative;min-height:320px}.home-slide>div{max-width:720px;color:#fff}.home-slide span{font-size:.78rem;letter-spacing:.14em;font-weight:800;opacity:.78}.home-slide h2{font-size:clamp(1.7rem,4vw,3rem);margin:10px 0}.home-slide p{font-size:1rem;max-width:640px;color:rgba(255,255,255,.84)}@media(max-width:720px){.home-slide{padding:24px;min-height:250px}.home-slide.active{min-height:250px}.nav-group{margin-left:8px;margin-right:8px}}

/* Foto akun / dosen */
.avatar-table{width:44px;height:44px;object-fit:cover;border-radius:12px;border:1px solid rgba(255,255,255,.12)}
.avatar-preview{width:110px;height:110px;object-fit:cover;border-radius:18px;border:1px solid rgba(255,255,255,.14);box-shadow:0 8px 24px rgba(0,0,0,.18)}
.avatar-placeholder{display:inline-flex;width:44px;height:44px;align-items:center;justify-content:center;border-radius:12px;background:rgba(255,255,255,.08);font-size:22px}
.photo-edit-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}.check-inline{display:flex;align-items:center;gap:8px}.check-inline input{width:auto}

.sortable-th{cursor:pointer;user-select:none;white-space:nowrap}.sortable-th::after{content:" ↕";opacity:.45;font-size:.85em}.sortable-th.sort-asc::after{content:" ↑";opacity:1}.sortable-th.sort-desc::after{content:" ↓";opacity:1}.file-current{font-size:.88rem;opacity:.8;margin-top:6px}

/* QR presensi lokal */
.qr-local{display:inline-flex;align-items:center;justify-content:center;padding:10px;background:#fff;border:1px solid var(--border);border-radius:12px;max-width:100%;overflow:auto}.qr-local svg{display:block;max-width:100%;height:auto}

.nav-icon svg,.theme-toggle svg,.feature-strip .ui-svg,.feature-icon .ui-svg,.quick-action .ui-svg,.stat-icon .ui-svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.theme-toggle{width:38px;height:38px;padding:0;display:grid;place-items:center}.theme-toggle>span{display:grid;place-items:center}.theme-toggle svg{width:20px;height:20px}html[data-theme="light"] .theme-moon{display:none}html[data-theme="dark"] .theme-sun{display:none}.qr-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}.qr-error{padding:10px;border:1px solid #f3b4b4;background:#fff2f2;color:#9b1c1c;border-radius:10px;font-size:12px}.feature-strip span svg,.feature-icon svg,.quick-action>span svg,.stat-icon svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}

.theme-toggle{display:inline-flex;align-items:center;justify-content:center;min-width:40px;min-height:40px}
.theme-toggle .theme-icon{display:block;width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.theme-toggle .theme-moon{display:none}
html[data-theme="dark"] .theme-toggle .theme-sun{display:none}
html[data-theme="dark"] .theme-toggle .theme-moon{display:block}
html:not([data-theme]) .theme-toggle .theme-sun{display:block}

.password-wrap{position:relative}.password-wrap input{padding-right:46px}.password-eye{position:absolute;right:6px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:0;background:transparent;color:inherit;cursor:pointer}.password-eye svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8}
.profile-menu{position:relative}.profile-menu summary{list-style:none;cursor:pointer}.profile-menu summary::-webkit-details-marker{display:none}.profile-popover{position:absolute;right:0;top:calc(100% + 8px);min-width:170px;background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.18);padding:8px;z-index:100}.profile-popover a{display:block;padding:9px 11px;border-radius:8px}.profile-popover a:hover{background:var(--soft)}.status-pill{display:inline-flex;padding:4px 9px;border-radius:999px;background:var(--soft);font-size:.85rem}.photo-cell img{width:42px;height:42px;border-radius:50%;object-fit:cover}

.password-eye{z-index:5;pointer-events:auto}.password-eye:focus{outline:2px solid var(--primary);outline-offset:2px}.profile-divider{height:1px;background:var(--line);margin:5px 2px}.profile-popover .danger-text{color:var(--danger)}

.password-eye{display:none!important}
.show-password-check{display:flex;align-items:center;gap:8px;margin-top:7px;font-size:13px;color:var(--muted);cursor:pointer;width:max-content}
.show-password-check input{width:auto!important;margin:0}

.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(145px,1fr));gap:10px;overflow:auto;padding:4px}.calendar-head{font-weight:800;text-align:center;padding:11px 8px;background:linear-gradient(135deg,var(--soft,#eef2ff),rgba(49,87,213,.10));border:1px solid var(--border,#dfe4ef);border-radius:12px;letter-spacing:.04em}.calendar-day{min-height:145px;border:1px solid var(--border,#dfe4ef);border-radius:14px;padding:10px;background:var(--card,#fff);box-shadow:0 5px 18px rgba(20,34,70,.05);position:relative}.calendar-day> b{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;font-size:13px;background:var(--soft,#f5f7fb)}.calendar-day.today{border:2px solid #3157d5;box-shadow:0 8px 24px rgba(49,87,213,.15)}.calendar-day.today> b{background:#3157d5;color:#fff}.calendar-day.empty{opacity:.28;background:transparent;box-shadow:none}.calendar-event{display:flex;flex-direction:column;gap:3px;margin-top:8px;padding:8px 9px;border-left:4px solid #3157d5;border-radius:9px;background:linear-gradient(135deg,rgba(49,87,213,.12),rgba(49,87,213,.05));font-size:12px}.calendar-event small{opacity:.76}.calendar-event span{font-weight:700;line-height:1.35}.calendar-event a{font-size:11px}.calendar-toolbar{display:flex;gap:10px;align-items:end;flex-wrap:wrap;margin-top:14px}.calendar-legend{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0 2px}.calendar-legend span{padding:6px 9px;border-radius:999px;background:var(--soft,#f5f7fb);font-size:11px;font-weight:700}.semester-chips{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px}.semester-chip{display:flex;flex-direction:column;gap:4px;padding:14px;border:1px solid var(--border,#ddd);border-radius:14px;text-decoration:none;color:inherit;background:var(--card,#fff)}.semester-chip.active{border-color:#3157d5;box-shadow:0 6px 18px rgba(49,87,213,.14)}.semester-chip span{font-size:12px;opacity:.72}.multi-link-row{display:grid;grid-template-columns:1fr 2fr;gap:8px;margin-bottom:8px}@media(max-width:800px){.calendar-grid{grid-template-columns:repeat(7,minmax(110px,1fr))}.multi-link-row{grid-template-columns:1fr}}

/* V23.1 - grid link materi/pertemuan agar tidak memanjang ke bawah */
.multi-link-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-top:10px}
.multi-link-card{min-width:0;padding:11px;border:1px solid var(--line,var(--border,#dfe4ef));border-radius:12px;background:var(--soft,rgba(127,127,127,.05));display:grid;gap:8px}
.multi-link-number{font-size:12px;font-weight:800;opacity:.72}
.multi-link-card input{min-width:0;width:100%}
.material-link-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-top:10px}
.material-link-grid.compact{grid-template-columns:repeat(3,minmax(110px,1fr));margin-top:6px}
.material-link-item{display:flex;align-items:center;justify-content:center;min-width:0;min-height:38px;padding:8px 10px;border:1px solid var(--line,var(--border,#dfe4ef));border-radius:10px;text-decoration:none;overflow-wrap:anywhere;text-align:center}
@media(max-width:1200px){.multi-link-grid,.material-link-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.material-link-grid.compact{grid-template-columns:repeat(2,minmax(110px,1fr))}}
@media(max-width:900px){.multi-link-grid,.material-link-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.multi-link-grid,.material-link-grid,.material-link-grid.compact{grid-template-columns:1fr}}

/* V24.1 - paksa form 20 Link Materi/Dokumen menjadi 4 kolom di desktop */
.form-group.full .multi-link-grid{
  width:100%;
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:12px!important;
  align-items:start;
}
.form-group.full .multi-link-card{
  min-width:0;
  width:100%;
}
.form-group.full .multi-link-card input{
  width:100%;
  box-sizing:border-box;
}
@media (max-width:1100px){
  .form-group.full .multi-link-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}
}
@media (max-width:650px){
  .form-group.full .multi-link-grid{grid-template-columns:1fr!important}
}


/* ===== V29 UI SAFE ===== */
html[data-accent="blue"]{--primary:#3157d5;--primary2:#6546df;--primary-soft:rgba(49,87,213,.10)}
html[data-accent="emerald"]{--primary:#14866d;--primary2:#23a47f;--primary-soft:rgba(20,134,109,.10)}
html[data-accent="purple"]{--primary:#7550d9;--primary2:#9b5de5;--primary-soft:rgba(117,80,217,.10)}
html[data-accent="orange"]{--primary:#d97706;--primary2:#f59e0b;--primary-soft:rgba(217,119,6,.11)}
html[data-accent="rose"]{--primary:#d84f73;--primary2:#ec6f91;--primary-soft:rgba(216,79,115,.10)}
.password-eye{display:inline-flex!important;z-index:6;pointer-events:auto;background:transparent!important}
.password-eye[aria-pressed="true"]{color:var(--primary)}
.hamburger-icon{width:19px;height:15px;display:flex;flex-direction:column;justify-content:space-between}
.hamburger-icon i{display:block;height:2px;border-radius:99px;background:currentColor;width:100%}
.accent-picker{position:relative}.accent-toggle .accent-dot{width:17px;height:17px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--primary2));box-shadow:0 0 0 3px var(--primary-soft)}
.accent-popover{position:absolute;top:46px;right:0;padding:9px;display:none;gap:7px;background:var(--surface);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;z-index:60}.accent-popover.show{display:flex}.accent-popover button{width:28px;height:28px;border:1px solid var(--line);background:var(--surface2);border-radius:9px;display:grid;place-items:center;cursor:pointer}.accent-popover button span{width:15px;height:15px;border-radius:50%;background:var(--swatch)}
.auth-shell-modern{display:grid;grid-template-columns:minmax(0,.92fr) minmax(420px,1.08fr);gap:18px;max-width:1020px;margin:12px auto 0;align-items:stretch}.auth-showcase{position:relative;overflow:hidden;padding:34px;background:linear-gradient(145deg,var(--primary),var(--primary2));color:#fff;min-height:480px;display:flex;flex-direction:column;justify-content:center}.auth-showcase:after{content:"";position:absolute;width:260px;height:260px;border-radius:50%;border:42px solid rgba(255,255,255,.08);right:-100px;bottom:-100px}.auth-showcase h2{font-size:38px;line-height:1.08;letter-spacing:-.04em;margin:14px 0}.auth-showcase>p{line-height:1.75;opacity:.88}.auth-kicker{font-size:10px;font-weight:900;letter-spacing:.16em;opacity:.86}.auth-feature-grid{display:grid;gap:10px;margin-top:24px;position:relative;z-index:1}.auth-feature-grid figure{margin:0;padding:12px;border:1px solid rgba(255,255,255,.15);border-radius:14px;background:rgba(255,255,255,.08);display:flex;align-items:center;gap:11px}.auth-feature-grid figure>span{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.16);display:grid;place-items:center;font-weight:800;font-size:11px}.auth-feature-grid figcaption{display:flex;flex-direction:column}.auth-feature-grid b{font-size:12px}.auth-feature-grid small{font-size:10px;opacity:.72;margin-top:2px}.auth-card-modern{padding:30px}.auth-card-modern .auth-intro h2{font-size:30px;margin:10px 0 6px}.auth-card-modern .auth-intro p{margin:0 0 22px;color:var(--muted);line-height:1.6}.auth-links{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;padding-top:16px;border-top:1px solid var(--line);font-size:11px}.auth-admin{margin-top:18px;padding:12px 14px;background:var(--surface2);border:1px solid var(--line);border-radius:13px;display:grid;gap:2px}.auth-admin small,.auth-admin span{color:var(--muted);font-size:10px}.auth-admin b{font-size:12px}
.home-figures{position:absolute;inset:0;pointer-events:none;z-index:3}.home-figure{position:absolute;margin:0;padding:9px 11px;border:1px solid color-mix(in srgb,var(--primary) 25%,var(--line));border-radius:13px;background:color-mix(in srgb,var(--surface) 94%,transparent);box-shadow:var(--shadow-sm);display:flex;align-items:center;gap:8px;backdrop-filter:blur(10px)}.home-figure span{width:28px;height:28px;border-radius:9px;background:var(--primary-soft);color:var(--primary);font-size:10px;font-weight:900;display:grid;place-items:center}.home-figure figcaption{font-size:9px;font-weight:800;white-space:nowrap}.figure-a{left:-18px;top:34px}.figure-b{right:-16px;top:98px}.figure-c{left:18px;bottom:-18px}
.meeting-schedule-line{display:block;margin:8px 0 0;color:var(--muted);font-size:10px;line-height:1.5}
@media(max-width:900px){.auth-shell-modern{grid-template-columns:1fr;max-width:680px}.auth-showcase{min-height:auto}.home-figure{display:none}}
@media(max-width:640px){.auth-card-modern,.auth-showcase{padding:20px}.auth-showcase h2{font-size:28px}.accent-popover{right:-44px}.mobile-menu{font-size:0}}


/* ===== V29.1 CLEAN UI FIX ===== */
/* Auth pages: fokus pada form, tanpa teks promosi yang bertumpuk. */
.auth-page .page-head{display:none}
.auth-page .public-main{max-width:720px;padding-top:112px}
.auth-page .clock{display:none}
.auth-clean-shell{max-width:540px;margin:14px auto 0}
.register-clean-shell{max-width:650px}
.auth-clean-card{padding:30px;border-radius:22px;overflow:visible}
.auth-clean-head{text-align:center;margin-bottom:24px}
.auth-clean-head .auth-mark{display:grid;place-items:center;width:48px;height:48px;margin:0 auto 12px;border-radius:15px;background:linear-gradient(135deg,var(--primary),var(--primary2));color:#fff;font-size:20px;font-weight:900;box-shadow:0 10px 26px color-mix(in srgb,var(--primary) 22%,transparent)}
.auth-clean-head h2{margin:0;font-size:28px;letter-spacing:-.03em}
.auth-clean-head p{margin:7px 0 0;color:var(--muted);font-size:12px}
.auth-form{gap:14px}
.auth-simple-links{border-top:1px solid var(--line);margin-top:16px;padding-top:14px;text-align:center;color:var(--muted);font-size:11px;line-height:1.6}
.auth-simple-links p{margin:4px 0}
.auth-simple-links a{color:var(--primary)}

/* Tombol mata: selalu tampak dan tidak tertimpa aturan versi lama. */
.auth-page .password-wrap{position:relative;width:100%}
.auth-page .password-wrap input{padding-right:54px!important}
.auth-page .password-eye{display:grid!important;place-items:center!important;position:absolute!important;right:7px!important;top:50%!important;transform:translateY(-50%)!important;width:38px!important;height:38px!important;padding:0!important;border:1px solid var(--line)!important;border-radius:10px!important;background:var(--surface2)!important;color:var(--muted)!important;cursor:pointer!important;z-index:10!important;opacity:1!important;visibility:visible!important;pointer-events:auto!important}
.auth-page .password-eye:hover,.auth-page .password-eye[aria-pressed="true"]{color:var(--primary)!important;border-color:color-mix(in srgb,var(--primary) 38%,var(--line))!important;background:var(--primary-soft)!important}
.auth-page .password-eye svg{display:block!important;width:19px!important;height:19px!important;fill:none!important;stroke:currentColor!important;stroke-width:1.8!important;stroke-linecap:round!important;stroke-linejoin:round!important}

/* Beranda: pertahankan layout utama, tetapi rapikan teks dan figure. */
.landing-hero-clean{min-height:500px}
.landing-hero-clean .landing-copy h2{max-width:580px}
.landing-hero-clean .landing-copy>p{max-width:520px;font-size:13px;line-height:1.65}
.landing-hero-clean .landing-visual{display:flex;flex-direction:column;gap:12px;min-width:0}
.landing-hero-clean .mock-window{transform:none;width:100%;min-width:0}
.landing-hero-clean .home-figures{position:static;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;pointer-events:none;z-index:auto}
.landing-hero-clean .home-figure{position:static!important;margin:0!important;padding:9px 10px;min-width:0;justify-content:center;border-radius:12px;box-shadow:none;background:var(--surface2);backdrop-filter:none}
.landing-hero-clean .home-figure span{width:25px;height:25px;border-radius:8px;flex:0 0 auto}
.landing-hero-clean .home-figure figcaption{font-size:9px;white-space:normal;overflow-wrap:anywhere}
.landing-hero-clean .mock-banner span{display:none}

@media(max-width:900px){
  .auth-page .public-main{padding-top:96px}
  .landing-hero-clean{min-height:auto}
  .landing-hero-clean .home-figures{display:grid}
}
@media(max-width:640px){
  .auth-page .public-main{padding:82px 12px 28px}
  .auth-clean-card{padding:20px}
  .auth-clean-head h2{font-size:24px}
  .register-clean-shell .form-grid{grid-template-columns:1fr}
  .landing-hero-clean .landing-copy h2{font-size:32px}
  .landing-hero-clean .landing-trust{gap:12px}
  .landing-hero-clean .home-figures{grid-template-columns:repeat(3,minmax(0,1fr))}
  .landing-hero-clean .home-figure{gap:5px;padding:7px 5px}
  .landing-hero-clean .home-figure figcaption{font-size:8px}
}
@media(max-width:430px){
  .brand-copy strong{max-width:145px}
  .auth-page .lang-switch{display:none}
  .auth-page .top-actions{gap:5px}
  .auth-page .icon-btn{width:36px;height:36px}
}


/* ===== V29.2 CLEAN AUTH + PALETTE ===== */
.auth-clean-head{margin-bottom:18px}.auth-clean-head h2{margin:0;font-size:30px;letter-spacing:-.03em}.auth-clean-head .auth-mark{display:none!important}
.password-wrap{position:relative}.password-wrap input{padding-right:52px!important}.password-eye{display:grid!important;place-items:center!important;position:absolute!important;right:7px!important;top:50%!important;transform:translateY(-50%)!important;width:38px!important;height:38px!important;border:1px solid var(--line)!important;border-radius:10px!important;background:var(--surface2)!important;color:var(--primary)!important;opacity:1!important;visibility:visible!important;z-index:20!important;cursor:pointer!important}.password-eye:hover{background:var(--primary-soft)!important;border-color:color-mix(in srgb,var(--primary) 42%,var(--line))!important}.password-eye svg{display:block!important;width:20px!important;height:20px!important;fill:none!important;stroke:currentColor!important;stroke-width:1.9!important}
.auth-options{margin-top:-3px}.remember-check{display:inline-flex;align-items:center;gap:9px;font-size:12px;font-weight:650;cursor:pointer;color:var(--text)}.remember-check input{width:17px;height:17px;margin:0;accent-color:var(--primary)}
.accent-toggle .accent-dot{display:none!important}.accent-toggle .palette-icon{display:block;width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;color:var(--primary)}
/* Warna pilihan berlaku pada aplikasi sekaligus penanda menu utama. */
.role-admin .nav-item.active,.role-peserta .nav-item.active,.role-dosen .nav-item.active{color:var(--primary)!important}.role-admin .nav-item.active .nav-icon,.role-peserta .nav-item.active .nav-icon,.role-dosen .nav-item.active .nav-icon{background:var(--primary)!important;border-color:var(--primary)!important;color:#fff!important}.role-admin .sidebar-avatar,.role-peserta .sidebar-avatar,.role-dosen .sidebar-avatar{background:linear-gradient(135deg,var(--primary),var(--primary2))!important}
.form-help{display:block;margin-top:5px;color:var(--muted);font-size:10px;line-height:1.45}
@media(max-width:640px){.auth-clean-card{padding:20px!important}.password-eye{right:6px!important}.top-actions{gap:6px}.accent-popover{right:-38px}}

/* ===== V29.3 THEME PANEL + MOBILE HAMBURGER ===== */
html[data-accent="blue"] body{--primary:#3157d5;--primary2:#5b78e8;--primary-soft:rgba(49,87,213,.11)}
html[data-accent="emerald"] body{--primary:#14866d;--primary2:#2aaa88;--primary-soft:rgba(20,134,109,.11)}
html[data-accent="purple"] body{--primary:#7550d9;--primary2:#a66be8;--primary-soft:rgba(117,80,217,.11)}
html[data-accent="rose"] body{--primary:#9f2349;--primary2:#d84f73;--primary-soft:rgba(159,35,73,.11)}
html[data-accent="graphite"] body{--primary:#46586c;--primary2:#64798f;--primary-soft:rgba(70,88,108,.12)}

.accent-popover.theme-panel{
  display:none;
  width:306px;
  max-width:calc(100vw - 24px);
  padding:0;
  gap:0;
  overflow:hidden;
  border-radius:14px;
  background:var(--surface);
  color:var(--text);
  border:1px solid var(--line);
  box-shadow:0 18px 46px rgba(0,0,0,.22);
}
.accent-popover.theme-panel.show{display:block}
.theme-panel-section{padding:14px 0}
.theme-panel-title{padding:0 22px 8px;font-size:11px;font-weight:900;letter-spacing:.12em;color:#f59e0b}
.theme-panel-divider{height:1px;background:var(--line)}
.theme-panel-option{
  width:100%!important;
  height:auto!important;
  min-height:44px;
  border:0!important;
  border-radius:0!important;
  padding:8px 18px!important;
  background:transparent!important;
  color:var(--text)!important;
  display:grid!important;
  grid-template-columns:28px minmax(0,1fr) 22px;
  align-items:center;
  gap:10px;
  text-align:left;
  font:inherit;
  cursor:pointer;
}
.theme-panel-option:hover{background:var(--surface2)!important}
.theme-panel-option.selected{background:color-mix(in srgb,var(--primary) 22%,var(--surface))!important}
.theme-panel-option>span:nth-child(2){font-size:15px;line-height:1.3;white-space:normal}
.theme-option-icon{font-size:22px;line-height:1;text-align:center}
.theme-check{visibility:hidden;font-weight:900;text-align:center;color:var(--text)}
.theme-panel-option.selected .theme-check{visibility:visible}
.theme-swatch{width:26px!important;height:26px!important;border-radius:50%!important;display:block!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.18)}
.swatch-blue{background:linear-gradient(135deg,#3157d5 0 55%,#f5c542 55% 100%)!important}
.swatch-emerald{background:linear-gradient(135deg,#12965c 0 55%,#ffd21f 55% 100%)!important}
.swatch-purple{background:linear-gradient(135deg,#7c3aed 0 55%,#ec67a5 55% 100%)!important}
.swatch-rose{background:linear-gradient(135deg,#a51446 0 55%,#ffbf24 55% 100%)!important}
.swatch-graphite{background:linear-gradient(135deg,#33465c 0 55%,#38bdf8 55% 100%)!important}

/* Tombol palet persis di samping tombol terang/gelap. */
.theme-toggle+.accent-picker{margin-left:0}
.accent-toggle{display:grid!important;place-items:center!important}
.accent-toggle .palette-icon{width:22px!important;height:22px!important}

/* Mobile: menu utama dibuka lewat ikon hamburger tiga garis di kiri. */
@media(max-width:900px){
  .topbar-left{gap:4px!important;min-width:0}
  .mobile-menu{
    display:grid!important;
    place-items:center!important;
    order:-2;
    width:46px!important;
    height:46px!important;
    min-width:46px!important;
    padding:0!important;
    border:0!important;
    border-radius:8px!important;
    background:transparent!important;
    color:inherit!important;
    box-shadow:none!important;
  }
  .mobile-menu:hover{background:rgba(255,255,255,.06)!important}
  .hamburger-icon{width:28px!important;height:20px!important;display:flex!important;flex-direction:column!important;justify-content:space-between!important}
  .hamburger-icon i{height:3px!important;width:100%!important;border-radius:4px!important;background:currentColor!important}
}
@media(max-width:640px){
  .mobile-menu{width:42px!important;height:42px!important;min-width:42px!important}
  .hamburger-icon{width:26px!important;height:19px!important}
  .accent-popover.theme-panel{right:-8px!important;top:46px!important;width:290px!important}
  .theme-panel-option{padding-left:15px!important;padding-right:15px!important}
  .theme-panel-option>span:nth-child(2){font-size:14px}
}

/* ===== V29.4 FIX: THEME PANEL LIST, NO LEGACY BUTTON COLLISION ===== */
.accent-picker{position:relative!important;display:inline-flex!important;align-items:center!important}
.accent-toggle{
  width:40px!important;height:40px!important;min-width:40px!important;
  padding:0!important;border:0!important;background:transparent!important;
  border-radius:10px!important;color:var(--text)!important;box-shadow:none!important;
}
.accent-toggle:hover{background:var(--surface2)!important}
.accent-toggle .palette-icon{display:block!important;width:23px!important;height:23px!important;stroke:currentColor!important}

.accent-popover.theme-panel{
  position:absolute!important;top:48px!important;right:0!important;z-index:300!important;
  width:306px!important;max-width:calc(100vw - 20px)!important;
  padding:0!important;margin:0!important;gap:0!important;
  display:none!important;overflow:hidden!important;
  border:1px solid #31454b!important;border-radius:12px!important;
  background:#102024!important;color:#e7eef1!important;
  box-shadow:0 18px 45px rgba(0,0,0,.34)!important;
}
.accent-popover.theme-panel.show{display:block!important}
.theme-panel-section{display:block!important;padding:14px 0!important;margin:0!important}
.theme-panel-title{display:block!important;width:auto!important;height:auto!important;margin:0!important;padding:8px 22px 10px!important;border:0!important;border-radius:0!important;background:transparent!important;color:#ff9d00!important;font-size:13px!important;line-height:1.2!important;font-weight:800!important;letter-spacing:.04em!important}
.theme-panel-divider{height:1px!important;margin:0!important;background:#31454b!important}

/* Reset total CSS popover lama yang membuat setiap span menjadi bulatan. */
.accent-popover.theme-panel .theme-panel-option{
  appearance:none!important;-webkit-appearance:none!important;
  width:100%!important;height:48px!important;min-height:48px!important;
  margin:0!important;padding:0 18px!important;
  border:0!important;border-radius:0!important;outline:0!important;
  background:transparent!important;color:#dce5e8!important;box-shadow:none!important;
  display:grid!important;grid-template-columns:32px minmax(0,1fr) 24px!important;
  align-items:center!important;column-gap:10px!important;
  text-align:left!important;font:inherit!important;cursor:pointer!important;
}
.accent-popover.theme-panel .theme-panel-option:hover{background:#193036!important}
.accent-popover.theme-panel .theme-panel-option.selected{background:#36c4bd!important;color:#071718!important}
.accent-popover.theme-panel .theme-panel-option > span{
  width:auto!important;height:auto!important;min-width:0!important;
  display:block!important;margin:0!important;padding:0!important;
  border:0!important;border-radius:0!important;background:none!important;
  color:inherit!important;box-shadow:none!important;
}
.accent-popover.theme-panel .theme-panel-option > span:nth-child(2){font-size:17px!important;line-height:1.25!important;white-space:normal!important}
.accent-popover.theme-panel .theme-option-icon{font-size:24px!important;line-height:1!important;text-align:center!important}
.accent-popover.theme-panel .theme-check{font-size:18px!important;font-weight:800!important;text-align:center!important;visibility:hidden!important}
.accent-popover.theme-panel .theme-panel-option.selected .theme-check{visibility:visible!important}

.accent-popover.theme-panel .theme-swatch{
  width:26px!important;height:26px!important;min-width:26px!important;
  border-radius:50%!important;display:block!important;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.15)!important;
}
.accent-popover.theme-panel .swatch-blue{background:linear-gradient(135deg,#195cff 0 55%,#ffc928 55% 100%)!important}
.accent-popover.theme-panel .swatch-emerald{background:linear-gradient(135deg,#0da956 0 55%,#ffd21d 55% 100%)!important}
.accent-popover.theme-panel .swatch-purple{background:linear-gradient(135deg,#7e22e8 0 55%,#ef62a5 55% 100%)!important}
.accent-popover.theme-panel .swatch-rose{background:linear-gradient(135deg,#b80d45 0 55%,#ffba19 55% 100%)!important}
.accent-popover.theme-panel .swatch-graphite{background:linear-gradient(135deg,#344a62 0 55%,#3cc6ee 55% 100%)!important}

@media(max-width:640px){
  .accent-popover.theme-panel{position:fixed!important;top:64px!important;right:10px!important;left:auto!important;width:306px!important;max-width:calc(100vw - 20px)!important}
  .accent-popover.theme-panel .theme-panel-option{height:47px!important;min-height:47px!important;padding:0 16px!important}
  .accent-popover.theme-panel .theme-panel-option > span:nth-child(2){font-size:16px!important}
}
