:root{--canvas:#F9FAFB;--paper:#fff;--side:#fff;--ink:#111827;--soft:#6B7280;--border:#E5E7EB;--radius:18px;--card:20px;--shade:#F8FAFC;--primary:#2563EB;--primary-600:#1D4ED8;--primary-100:#EFF6FF;--secondary:#10B981; font-family:Inter,Geist,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:light}
*{box-sizing:border-box}html,body{width:100%;height:100%;margin:0;padding:0;overflow:hidden;background:var(--canvas);color:var(--ink)}button,select,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:2px solid #555;outline-offset:2px}button:disabled{opacity:.55;cursor:not-allowed}
.app{display:flex;width:100%;height:100dvh;min-height:0;overflow:hidden;position:relative}.sidebar{width:247px;flex:0 0 247px;height:100%;min-height:0;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;display:flex;flex-direction:column;padding:18px 11px 17px;background:var(--side);border-right:1px solid var(--border);scrollbar-width:thin}.brand{display:flex;align-items:center;gap:10px;margin:4px 10px 26px}.brand-mark{width:44px;height:44px;display:grid;place-items:center;color:#2563EB}.brand strong{font-weight:750;letter-spacing:-.04em;font-size:19px;display:block;line-height:1.04}.brand small{font-size:13px;font-weight:600}.role{font-size:13px;color:#333;margin:0 10px 17px}.nav{display:flex;flex-direction:column;gap:3px}.nav-item{width:100%;min-height:42px;display:flex;align-items:center;gap:12px;text-align:left;border:0;background:transparent;border-radius:10px;color:#222;font-size:13px;font-weight:540;padding:10px 11px}.nav-item:hover,.nav-child:hover,.nav-item.hovered{background:#ececec}.nav-item.active{background:#2563EB;color:white;font-weight:700}.icon{width:19px;height:19px;display:inline-grid;place-items:center;flex:0 0 19px}.icon svg{width:19px;height:19px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}.nav-item.active .icon svg{stroke:white}.chev{margin-left:auto;transition:transform .2s}.chev.rot{transform:rotate(180deg)}.nav-children{display:none;margin:1px 0 3px 35px;flex-direction:column;gap:2px}.nav-children.open{display:flex}.nav-child{width:100%;padding:8px 10px;text-align:left;background:transparent;border:0;border-radius:8px;color:#444;font-size:12px}.nav-child.active{background:#EFF6FF;color:#1D4ED8;font-weight:650}.logout{margin-top:auto;display:flex;gap:10px;align-items:center;background:transparent;border:0;text-align:left;padding:12px 10px;border-radius:10px;font-size:13px;color:#222}.logout:hover{background:#ececec}.main{height:100%;min-width:0;flex:1 1 auto;overflow-y:auto;overflow-x:hidden;overscroll-behavior-y:contain;scrollbar-gutter:stable;padding:22px clamp(16px,2.15vw,30px) 38px}.content{max-width:1540px;margin:0 auto}.head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 22px}.head h1{font-size:27px;letter-spacing:-.05em;line-height:1.16;margin:0 0 4px;font-weight:760}.head p{margin:0;color:#454545;font-size:14px}.head-right{display:flex;align-items:center;gap:16px}.period-group{display:flex;gap:11px;align-items:center}.period-group>label{font-size:13px}.menu-anchor{position:relative}.trigger{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #c9c9c9;border-radius:12px;padding:10px 12px;min-height:40px;color:#222;font-size:13px;font-weight:530}.trigger:hover,.trigger[aria-expanded=true]{border-color:#777;background:#fafafa}.period-trigger{min-width:199px;justify-content:space-between}.h-btn{display:inline-grid;place-items:center;width:40px;height:40px;border:0;background:transparent;border-radius:11px;position:relative}.h-btn:hover,.h-btn[aria-expanded=true]{background:#eee}.notif-dot{width:6px;height:6px;border-radius:50%;background:#EF4444;position:absolute;top:7px;right:7px}.v-divider{height:30px;width:1px;background:#d7d7d7}.account-trigger{border:0;background:transparent;padding:3px 0 3px 3px;display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700;border-radius:10px}.account-trigger:hover,.account-trigger[aria-expanded=true]{background:#ededed}.avatar{height:34px;width:34px;border-radius:50%;background:#2563EB;display:grid;place-items:center;color:#fff}.avatar svg{fill:#fff;stroke:none;width:23px;height:23px}.popover{display:none;position:absolute;right:0;top:calc(100% + 9px);background:#fff;border:1px solid #ddd;border-radius:16px;box-shadow:0 15px 42px #0002;z-index:30;width:245px;overflow:hidden;padding:7px}.popover.open{display:block}.popover strong{display:block;padding:10px 11px 8px;font-size:13px}.popover button{border:0;background:transparent;display:flex;align-items:center;gap:10px;text-align:left;width:100%;border-radius:9px;padding:10px;font-size:13px;color:#292929}.popover button:hover,.popover button.selected{background:#f2f2f2}.popover button.selected:after{content:'✓';margin-left:auto}.popover .muted{color:#747474;font-size:11px;padding:5px 11px 11px}.popover .line{height:1px;background:#eee;margin:3px 0}.notif-popover{width:310px}.notification{display:flex;gap:10px;padding:10px 9px;border-radius:10px;align-items:start}.notification:hover{background:#f5f5f5}.notification b{display:block;font-size:12px}.notification span{display:block;color:#666;font-size:11px;line-height:1.5;margin-top:3px}.notification i{width:7px;height:7px;border-radius:50%;background:#505050;flex:0 0 7px;margin-top:5px}.range-box{display:none;padding:10px;border-top:1px solid #eee;gap:7px}.range-box.open{display:grid;grid-template-columns:1fr 1fr}.range-box label{font-size:11px;color:#666}.range-box input{max-width:100%;width:100%;border:1px solid #ddd;border-radius:8px;background:#f8f8f8;padding:6px;font-size:11px}.range-box .apply{grid-column:span 2;background:#2563EB;color:white;justify-content:center}.welcome{display:flex;align-items:center;gap:16px;background:#EFF6FF;border:1px solid #DBEAFE;border-radius:14px;padding:18px 20px;position:relative;overflow:hidden;margin-bottom:16px;min-height:81px}.welcome:before,.welcome:after{content:'';position:absolute;width:70px;height:100px;transform:skew(-40deg);background:#93C5FD;right:55px;bottom:-65px}.welcome:after{background:#60A5FA;right:-4px;bottom:-45px}.welcome>.icon{height:40px;width:40px;flex-basis:40px;color:#777}.welcome>.icon svg{height:37px;width:37px;stroke-width:1.7}.welcome strong{font-size:19px;font-weight:740;letter-spacing:-.035em}.welcome p{margin:5px 0 0;font-size:13px;line-height:1.55}.demo{font-size:10px;color:#7b7b7b;text-align:right;margin:-6px 0 9px;letter-spacing:.03em}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:18px}.panel{background:var(--paper);border:1px solid #dcdcdc;border-radius:14px;min-width:0}.kpi{min-height:96px;padding:15px 13px;display:flex;align-items:center;gap:11px}.kpi .glyph{width:55px;height:59px;border-radius:12px;background:#EFF6FF;display:grid;place-items:center;color:#2563EB;flex:0 0 55px}.kpi .glyph svg{width:31px;height:31px;stroke-width:1.9}.kpi-title{font-size:12px;font-weight:690;line-height:1.4}.kpi-num{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;margin-top:3px}.kpi-num b{font-size:30px;font-weight:790;letter-spacing:-.06em;line-height:1.12}.kpi-num span{font-size:12px}.badge{font-size:12px;font-weight:650;background:#ededed;border-radius:100px;padding:7px 9px;margin-left:auto;white-space:nowrap}.kpi.action{cursor:pointer;text-align:left;width:100%;color:inherit}.kpi.action:hover{background:#fafafa}.kpi.action .badge{font-size:11px;font-weight:520}.charts{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);gap:20px;margin-bottom:17px}.chart-panel{padding:17px 17px 13px;min-height:240px}.chart-h{display:flex;align-items:center;justify-content:space-between;gap:8px}.chart-h h2{display:flex;align-items:center;gap:10px;font-size:16px;font-weight:750;letter-spacing:-.035em;margin:0}.chart-h .h-icon{color:#777}.chart-h .h-icon svg{width:23px;height:23px}.legend-top{font-size:11px;display:flex;align-items:center;gap:7px;color:#333}.small-dot{width:9px;height:9px;border-radius:50%;background:#2563EB;display:inline-block}.plot{width:100%;height:auto;display:block;margin:10px auto 0;overflow:visible;max-height:194px}.plot text{font-family:inherit;font-size:12px;fill:#444}.donut-body{display:flex;justify-content:space-around;align-items:center;gap:10px;min-height:183px}.ring{width:157px;height:157px;flex:0 0 157px;position:relative;display:grid;place-items:center}.ring svg{width:100%;height:100%;transform:rotate(-90deg)}.ring .center{position:absolute;display:flex;flex-direction:column;text-align:center;align-items:center}.ring .center b{font-size:23px;letter-spacing:-.05em}.ring .center span{font-size:11px}.legend{font-size:12px;display:flex;flex-direction:column;gap:15px;line-height:1.45}.legend-row{display:flex;gap:9px}.swatch{height:12px;width:12px;background:#2563EB;border-radius:3px;flex:0 0 12px;margin-top:2px}.swatch.light{background:#DBEAFE}.summary-row{display:grid;grid-template-columns:1.45fr 1fr;gap:20px;margin-bottom:18px}.section-strip{padding:11px 15px;background:#f4f4f4;border-bottom:1px solid #e4e4e4;display:flex;align-items:center;gap:10px;font-weight:720;font-size:14px}.section-strip svg{color:#777;width:18px;height:18px}.summary-panel{overflow:hidden}.summary-cells{display:flex;justify-content:space-evenly;align-items:center;padding:11px 9px}.summary-cell{text-align:center;flex:1;padding:2px 3px;border-right:1px solid #ddd}.summary-cell:last-child{border:0}.summary-cell b{display:block;font-size:23px;font-weight:800;letter-spacing:-.05em}.summary-cell span{font-size:11px}.quick{padding:9px 15px 10px;font-size:12px;line-height:1.5}.quick p{margin:5px 0}.quick p:before{content:'●';color:#999;font-size:10px;margin-right:10px}.issues-panel{padding:13px 13px 14px}.issues-head{display:flex;gap:10px;align-items:center;justify-content:space-between;margin:0 0 14px}.issues-head h2{display:flex;align-items:center;gap:9px;font-size:17px;letter-spacing:-.025em;margin:0}.issues-head h2 svg{color:#777}.soft-button{border:0;background:#eee;border-radius:13px;padding:9px 13px;color:#222;font-size:12px;white-space:nowrap}.soft-button:hover{background:#ddd}.issue-table{width:100%;border-collapse:collapse;font-size:11px;table-layout:auto}.issue-table th,.issue-table td{padding:9px 8px;text-align:left;border-bottom:1px solid #e4e4e4;vertical-align:middle}.issue-table th{background:#f1f1f1;font-weight:750;white-space:nowrap}.issue-table th:first-child{border-radius:6px 0 0 0}.issue-table th:last-child{border-radius:0 6px 0 0}.issue-table tr:last-child td{border-bottom:0}.issue-table .nowrap{white-space:nowrap}.issue-table .detail{max-width:235px}.issue-table .status{background:#eee;border-radius:7px;padding:5px 8px;font-size:10px;white-space:nowrap}.eye-btn{border:0;background:transparent;border-radius:8px;padding:3px 6px;color:#6d6d6d}.eye-btn:hover{background:#eee;color:#222}.issue-cards{display:none}.other-page{display:none;min-height:55vh;padding:36px 10px}.other-page h2{font-size:23px}.other-page p{color:#666;line-height:1.7}.empty-state{max-width:550px;margin:45px auto;padding:35px 25px;text-align:center;background:#fff;border:1px dashed #d3d3d3;border-radius:20px}.empty-state h2{margin:12px 0 4px}.empty-state button{margin-top:12px}.overlay{display:none;position:absolute;inset:0;z-index:40;background:#0005;align-items:center;justify-content:center;padding:20px}.overlay.open{display:flex}.dialog{width:min(475px,100%);max-height:90%;overflow-y:auto;background:#fff;border-radius:20px;box-shadow:0 20px 70px #0004;padding:24px}.dialog h2{font-size:21px;margin:0 0 5px}.dialog p{font-size:12px;color:#666}.dialog dl{display:grid;grid-template-columns:98px 1fr;gap:13px;margin:22px 0;font-size:13px}.dialog dt{color:#666}.dialog dd{margin:0;font-weight:600}.dialog-actions{display:flex;justify-content:flex-end;gap:8px}.dark-button{background:#2563EB;border:0;color:white;padding:9px 14px;border-radius:13px;font-size:12px}.mobile-menu{display:none}.mobile-backdrop{display:none}
@media(max-width:1230px){.sidebar{width:219px;flex-basis:219px}.kpi{padding:12px 10px}.kpi .glyph{width:42px;flex-basis:42px}.kpi .glyph svg{width:25px}.kpi-num b{font-size:25px}.kpi .badge{font-size:10px;padding:5px}.charts,.summary-row{gap:14px}.chart-panel{padding:14px 11px}.ring{width:135px;height:135px;flex-basis:135px}}
@media(max-width:1050px){.kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.charts,.summary-row{grid-template-columns:1fr}.chart-panel{min-height:auto}.ring{width:160px;height:160px;flex-basis:160px}.issue-table{font-size:10px}.issue-table th,.issue-table td{padding:8px 5px}.issue-table .detail{max-width:140px}.account-trigger .account-name{display:none}}
@media(max-width:720px){.sidebar{position:absolute;top:0;bottom:0;left:0;z-index:26;width:250px;height:100dvh;transform:translateX(-103%);transition:transform .2s ease;box-shadow:none}.sidebar.open{transform:translateX(0);box-shadow:8px 0 25px #0002}.mobile-backdrop.open{display:block;position:absolute;inset:0;background:#0006;z-index:25}.main{padding:14px 12px 34px;scrollbar-gutter:auto}.mobile-menu{display:grid;place-items:center;min-width:35px;width:35px;height:35px;border:0;background:white;border-radius:10px;margin-right:2px}.head{gap:6px;align-items:flex-start;margin-bottom:14px}.head h1{font-size:21px;margin-top:2px}.head p{font-size:11px}.head-right{gap:5px;margin-left:auto}.period-group>label,.v-divider{display:none}.period-trigger{min-width:0;max-width:136px;padding:8px 7px;min-height:35px;font-size:10px;gap:4px}.period-trigger .period-cal{display:none}.account-trigger .avatar{width:30px;height:30px}.account-trigger .dropchev{display:none}.account-trigger{padding:2px}.h-btn{width:34px;height:34px}.welcome{padding:15px;min-height:78px;gap:10px}.welcome strong{font-size:15px}.welcome p{font-size:11px}.welcome .icon{flex-basis:30px;width:30px}.welcome .icon svg{width:29px;height:29px}.welcome:before,.welcome:after{display:none}.kpis{gap:9px;margin-bottom:12px}.kpi{gap:7px;min-height:83px;padding:10px 9px}.kpi .glyph{display:none}.kpi-title{font-size:10px}.kpi-num b{font-size:23px}.kpi-num span{font-size:10px}.kpi .badge{font-size:9px}.charts,.summary-row{gap:12px;margin-bottom:12px}.chart-panel{padding:13px 11px}.chart-h h2{font-size:13px}.chart-h .h-icon svg{width:18px;height:18px}.legend-top{font-size:9px}.plot{margin-top:9px}.donut-body{min-height:135px}.ring{height:125px;width:125px;flex-basis:125px}.ring .center b{font-size:20px}.legend{font-size:11px}.section-strip{font-size:12px}.summary-cells{flex-wrap:wrap;gap:8px}.summary-cell{flex:1 1 27%;border:0}.summary-cell b{font-size:21px}.summary-cell span{font-size:10px}.issues-head h2{font-size:13px}.issue-table{display:none}.issue-cards{display:grid;gap:10px}.issue-card{border:1px solid #e4e4e4;background:#fff;border-radius:12px;padding:12px;min-width:0}.issue-card-top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.issue-card strong{font-size:13px}.issue-card time{font-size:10px;color:#666}.issue-card p{margin:5px 0;font-size:11px;overflow-wrap:anywhere}.issue-card .company{color:#666}.issue-card .type{font-weight:700;margin-top:11px}.issue-card-foot{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-top:9px}.issue-card .status{background:#efefef;border-radius:8px;padding:5px 8px;font-size:10px}.issue-card-foot button{border:0;border-radius:9px;padding:8px 10px;background:#ededed;font-size:11px}.popover{right:0;max-width:calc(100vw - 24px)}.notif-popover{width:min(300px,calc(100vw - 24px))}.period-popover{width:235px}.head-right .menu-anchor:nth-last-child(1) .popover{right:0}}
@media(max-width:365px){.head-right{gap:1px}.head h1{font-size:18px}.period-trigger{max-width:110px}.account-trigger .avatar{width:26px;height:26px}.h-btn{width:29px}.welcome p{font-size:10px}.kpi-num b{font-size:21px}.badge{display:none}.chart-h .legend-top{display:none}}

/* Dua halaman siswa: konsisten dengan tokens Beranda Admin v2 */
.student-page{display:none;min-width:0}.student-page[hidden]{display:none!important}
.page-intro,.detail-top{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:0 0 18px}.page-intro h2,.detail-top h2{font-size:25px;letter-spacing:-.047em;line-height:1.2;margin:7px 0 4px;font-weight:760}.page-intro p,.detail-top p{color:#5a5a5a;font-size:13px;margin:0;line-height:1.5}.crumb{font-size:12px!important;color:#858585!important}.crumb span{padding:0 7px;color:#aaa}.crumb-link{border:0;background:none;color:#666;text-decoration:underline;font-size:inherit;padding:0}.demo-pill{font-size:10px;color:#777;letter-spacing:.04em;white-space:nowrap}
.student-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:17px}.student-stat{display:flex;align-items:center;gap:13px;padding:14px 16px;min-height:88px}.stat-icon{height:49px;width:49px;flex:0 0 49px;border-radius:12px;background:#f5f5f5;color:#777;display:grid;place-items:center;font-size:21px}.stat-caption{font-size:12px;color:#3c3c3c;font-weight:640}.stat-value{font-size:29px;font-weight:780;letter-spacing:-.05em;margin-top:2px;line-height:1}
.student-workspace{overflow:hidden}.student-actions{padding:17px 17px 14px;display:flex;justify-content:space-between;align-items:center;gap:14px;border-bottom:1px solid #e9e9e9}.student-actions-primary{display:flex;gap:9px;flex-wrap:wrap}.action-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:10px 13px;min-height:39px;font-size:12px;font-weight:620;border:1px solid #d4d4d4;background:#fff;color:#242424;border-radius:10px;text-decoration:none;white-space:nowrap}.action-btn:hover{background:#f4f4f4}.action-btn.primary{background:#2563EB;border-color:#2563EB;color:#fff}.action-btn.primary:hover{background:#1D4ED8}.workspace-help{font-size:11px;color:#777;margin:0;text-align:right;max-width:235px;line-height:1.5}.student-filters{display:grid;grid-template-columns:minmax(220px,2.2fr) repeat(4,minmax(90px,1fr)) auto;align-items:end;gap:10px;padding:16px 17px}.student-filters label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:620;color:#555;min-width:0}.student-filters select,.student-filters input{height:39px;width:100%;min-width:0;background:#fff;border:1px solid #d7d7d7;border-radius:10px;padding:8px;font-size:12px;color:#252525}.student-filters .search-field{position:relative;justify-content:end}.search-field span{position:absolute;bottom:7px;left:11px;font-size:23px;color:#777;line-height:22px}.student-filters .search-field input{padding-left:34px}.reset-btn{border:0;background:#efefef;min-height:39px;padding:8px 12px;border-radius:10px;font-size:12px;cursor:pointer}.reset-btn:hover{background:#e2e2e2}
.students-table-wrap{width:100%;overflow:hidden}.students-table{width:100%;border-collapse:collapse;font-size:11px;table-layout:auto}.students-table th{text-align:left;background:#f4f4f4;color:#343434;font-size:10.5px;white-space:nowrap;padding:11px 8px;font-weight:760}.students-table td{border-bottom:1px solid #e8e8e8;padding:9px 8px;vertical-align:middle;line-height:1.4}.students-table tbody tr:last-child td{border-bottom:none}.students-table tbody tr:hover{background:#fafafa}.students-table td:first-child,.students-table th:first-child{padding-left:16px}.students-table td:last-child,.students-table th:last-child{padding-right:16px}.students-table .name-cell{font-weight:690;max-width:190px}.students-table .name-cell small{display:none;color:#777;font-weight:450}.students-table .action-cell{white-space:nowrap;text-align:right}.student-avatar{display:grid;place-items:center;width:37px;height:37px;min-width:37px;border-radius:12px;background:#ececec;color:#5c5c5c;font-size:12px;font-weight:750;overflow:hidden}.student-avatar img{height:100%;width:100%;object-fit:cover}.student-avatar.large{height:92px;width:92px;border-radius:17px;font-size:27px;flex:0 0 92px}.status-pill{display:inline-block;border-radius:7px;background:#ececec;padding:6px 8px;font-size:10px;font-weight:650;white-space:nowrap;color:#4e4e4e}.status-pill.dark{background:#ECFDF5;color:#059669}.status-pill.line{background:#f8f8f8;border:1px solid #ddd;color:#606060}.table-tools{display:inline-flex;gap:5px}.icon-action{width:31px;height:31px;border:1px solid #dedede;border-radius:9px;background:white;color:#444;display:inline-grid;place-items:center;font-size:15px;font-weight:700;cursor:pointer}.icon-action:hover{background:#efefef}.icon-action.danger{color:#6b4444}.students-cards{display:none;padding:0 12px 10px;gap:9px}.student-bottom{display:flex;gap:12px;justify-content:space-between;align-items:center;padding:14px 17px;border-top:1px solid #eaeaea;color:#555;font-size:11px}.student-paging{display:flex;align-items:center;gap:10px}.student-paging select{font-size:11px;padding:6px 8px;border:1px solid #dadada;border-radius:8px;background:white}.page-nav{height:30px;width:32px;border:1px solid #ddd;border-radius:8px;background:#fff;font-size:17px}.student-empty{text-align:center;padding:34px 15px}.student-empty strong{font-size:14px}.student-empty p,.student-footnote{font-size:11px;color:#777;line-height:1.6}.student-footnote{margin:12px 2px}
.detail-top-actions{display:flex;gap:9px}.student-profile{display:flex;gap:21px;align-items:center;padding:18px 20px;margin-bottom:15px}.student-profile h3{font-size:23px;letter-spacing:-.04em;margin:0 0 5px}.student-profile p{font-size:13px;color:#616161;margin:4px 0 12px}.student-profile .status-pill{margin-right:7px}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px;margin-bottom:15px}.detail-card,.detail-doc{padding:17px 18px}.detail-card h3,.detail-doc h3{margin:0 0 14px;font-size:16px;letter-spacing:-.03em}.detail-list{margin:0;display:grid;grid-template-columns:minmax(110px,45%) minmax(0,1fr);font-size:12px}.detail-list dt,.detail-list dd{padding:10px 0;border-bottom:1px solid #ededed}.detail-list dt{color:#666}.detail-list dd{margin:0;font-weight:630;overflow-wrap:anywhere;display:flex;align-items:center;justify-content:space-between;gap:8px}.detail-list dt:last-of-type,.detail-list dd:last-of-type{border-bottom:0}.copy-small{display:inline-grid;place-items:center;border:1px solid #ddd;border-radius:8px;height:27px;min-width:29px;background:white;font-size:14px}.copy-small:hover{background:#eee}.private-note,.file-tip{font-size:11px;line-height:1.5;color:#777;margin-top:14px}.doc-row{border:1px solid #eaeaea;background:#fdfdfd;border-radius:12px;padding:12px;display:flex;align-items:center;gap:12px;min-width:0}.doc-thumb{height:61px;width:91px;flex:0 0 91px;background:#ededed;border-radius:8px;display:grid;place-items:center;font-size:22px;overflow:hidden;color:#666}.doc-thumb img{width:100%;height:100%;object-fit:cover}.doc-meta{flex:1;min-width:0}.doc-meta b{font-size:12px;display:block;overflow-wrap:anywhere}.doc-meta small{display:block;font-size:11px;margin-top:5px;color:#747474}.doc-actions{display:flex;gap:9px}.empty-doc{border:1px dashed #d7d7d7;border-radius:12px;background:#fafafa;padding:26px;text-align:center;font-size:12px;color:#777}.empty-doc strong{display:block;font-size:13px;color:#444;margin-bottom:6px}
.student-modal-layer{display:none;position:absolute;inset:0;z-index:55;background:#0007;align-items:center;justify-content:center;padding:14px}.student-modal-layer.open{display:flex}.student-modal{width:min(555px,100%);max-height:min(94dvh,850px);overflow:hidden;background:#fff;border-radius:17px;box-shadow:0 22px 65px #0003;display:flex;flex-direction:column}.student-modal.wide{width:min(720px,100%)}.student-modal.small{width:min(455px,100%)}.student-modal.preview-modal{width:min(800px,100%)}.student-modal-header{padding:20px 21px 15px;display:flex;justify-content:space-between;align-items:flex-start;gap:8px;border-bottom:1px solid #eee}.student-modal-header h2{font-size:19px;margin:0 0 5px;letter-spacing:-.035em}.student-modal-header p{font-size:11px;line-height:1.55;color:#777;margin:0}.modal-x{width:31px;height:31px;flex:0 0 31px;border:0;background:#f3f3f3;border-radius:9px;font-size:24px;line-height:1;color:#555}.form-scroll{padding:13px 21px 18px;overflow-y:auto;max-height:calc(94dvh - 158px)}.form-scroll h3{font-size:13px;margin:13px 0 13px;border-bottom:1px solid #eee;padding-bottom:10px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.form-grid label{display:flex;flex-direction:column;gap:7px;font-size:11px;font-weight:650;color:#4a4a4a;min-width:0}.form-grid label small{font-size:10px;color:#999;font-weight:450;line-height:1.3}.form-grid input,.form-grid select{border:1px solid #d6d6d6;border-radius:9px;padding:10px;font-size:12px;min-width:0;width:100%;background:white;color:#222}.form-grid input[type=file]{padding:8px;font-size:10px}.form-grid .full-input{grid-column:span 2}.required{color:#953636}.modal-actions{padding:13px 21px;display:flex;justify-content:flex-end;gap:8px;border-top:1px solid #eee}.file-state{font-size:11px;color:#666;line-height:1.6;margin-top:10px}.file-tip{margin:9px 0 0}.preview-content{min-height:240px;max-height:min(68dvh,600px);padding:19px;background:#e9e9e9;display:grid;place-items:center;overflow:hidden}.preview-content img{max-height:min(61dvh,550px);max-width:100%;object-fit:contain;border-radius:7px;box-shadow:0 8px 35px #0002}.preview-content iframe{border:0;width:100%;height:62dvh;background:white}.import-body{padding:20px 21px;display:grid;gap:14px}.import-body p{font-size:12px;line-height:1.6;color:#666;margin:0}.import-body>input{font-size:12px;width:100%}.import-body .action-btn{justify-self:start}.import-result{max-height:220px;overflow-y:auto;font-size:12px;line-height:1.7;color:#444}.import-result ul{margin:7px 0;padding-left:20px}.student-toast{display:none;position:fixed;bottom:24px;right:24px;background:#262626;color:white;padding:12px 18px;border-radius:12px;box-shadow:0 12px 35px #0003;z-index:75;font-size:12px;max-width:330px;line-height:1.5}.student-toast.show{display:block}
@media(max-width:1370px){.students-table .hide-wide{display:none}.workspace-help{display:none}.student-filters{grid-template-columns:minmax(200px,2fr) repeat(3,minmax(90px,1fr)) auto}.student-filters>label:nth-child(5){display:none}}
@media(max-width:1170px){.students-table .hide-med{display:none}.student-actions{align-items:flex-start}.student-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.students-table .hide-small,.students-table .hide-compact{display:none}.students-table .name-cell small{display:block}.student-filters{grid-template-columns:repeat(3,minmax(0,1fr))}.student-filters .search-field{grid-column:1 / -1}.student-filters>label:nth-child(5){display:flex}.student-filters .reset-btn{grid-column:span 1}.detail-grid{grid-template-columns:1fr}}
@media(max-width:720px){.page-intro,.detail-top{align-items:flex-start;flex-direction:column;margin-bottom:13px}.page-intro h2,.detail-top h2{font-size:21px}.demo-pill{align-self:flex-end}.student-stats{gap:9px;margin-bottom:12px}.student-stat{padding:10px;min-height:66px;gap:9px}.stat-icon{display:none}.stat-caption{font-size:10px}.stat-value{font-size:24px}.student-actions{padding:13px;align-items:stretch}.student-actions-primary{display:grid;grid-template-columns:repeat(2,1fr);width:100%;gap:8px}.student-actions-primary .action-btn{padding:9px 6px;font-size:11px}.student-filters{grid-template-columns:1fr 1fr;padding:12px;gap:9px}.student-filters .search-field{grid-column:1 / -1}.student-filters label{font-size:10px}.student-filters .reset-btn{grid-column:1 / -1}.students-table-wrap{display:none}.students-cards{display:grid}.student-card{border:1px solid #e4e4e4;background:#fff;border-radius:12px;padding:12px}.student-card-top{display:flex;gap:10px;min-width:0}.student-card-name{font-size:13px;font-weight:730;line-height:1.4}.student-card-identity{color:#777;font-size:10px;line-height:1.6;margin-top:2px}.student-card-status{display:flex;gap:6px;flex-wrap:wrap;margin:9px 0 0 47px}.student-card-actions{display:flex;gap:7px;margin:12px 0 0;justify-content:flex-end;border-top:1px solid #eee;padding-top:9px}.student-card-actions .action-btn{font-size:11px;padding:7px 10px;min-height:33px}.student-card-actions .danger{color:#644}.student-bottom{padding:12px;flex-wrap:wrap}.student-paging{margin-left:auto}.detail-top-actions{width:100%}.student-profile{padding:13px;gap:13px}.student-avatar.large{width:64px;height:64px;flex-basis:64px;font-size:20px}.student-profile h3{font-size:19px}.student-profile p{font-size:11px}.detail-card,.detail-doc{padding:14px}.detail-list{grid-template-columns:minmax(96px,42%) minmax(0,1fr);font-size:11px}.doc-row{flex-wrap:wrap}.doc-actions{width:100%;justify-content:flex-end}.student-modal-layer{padding:8px}.student-modal{border-radius:13px;max-height:96dvh}.student-modal-header{padding:15px}.form-scroll{padding:9px 15px 15px}.modal-actions{padding:11px 15px}.form-grid{grid-template-columns:1fr;gap:11px}.form-grid .full-input{grid-column:span 1}.student-toast{bottom:15px;right:12px;left:12px;max-width:none}}
@media(max-width:360px){.student-stats{grid-template-columns:1fr 1fr}.student-filters{grid-template-columns:1fr}.student-filters .search-field{grid-column:span 1}.student-filters .reset-btn{grid-column:span 1}}

body.student-view .head-titles{display:none}body.student-view .head{justify-content:flex-end}

/* Review fixes from Data Master Siswa + common admin header */
body:not(.period-enabled) .period-group{display:none}
.head-right .h-btn,.head-right .h-btn .icon{color:#222}
.account-trigger,.account-trigger .account-name,.account-trigger .dropchev{color:#161616;opacity:1}
.account-trigger .avatar{background:#2563EB}
.head-right .notif-dot{background:#242424;border:1px solid var(--canvas);width:8px;height:8px}
/* The student's name grows; the action column only consumes its controls' intrinsic width. */
.students-table .name-cell{max-width:none;width:100%;min-width:150px;overflow-wrap:anywhere}
.students-table th:last-child,.students-table td:last-child{width:1%;white-space:nowrap}
.students-table .action-cell{text-align:right}
.students-table .table-tools{width:max-content}
/* Guru pages share all sizing tokens from student pages and Beranda. */
.teacher-page[hidden]{display:none!important}
.teacher-stats{margin-bottom:17px}
.teacher-table{table-layout:auto}
.teacher-table th,.teacher-table td{padding-left:9px;padding-right:9px}
.teacher-table th:first-child,.teacher-table td:first-child{padding-left:16px}
.teacher-table th:last-child,.teacher-table td:last-child{padding-left:8px;padding-right:16px;width:1%;white-space:nowrap}
.teacher-table .teacher-code,.teacher-table .teacher-id{white-space:nowrap;font-variant-numeric:tabular-nums}
.teacher-table .teacher-id{font-size:10.5px;letter-spacing:-.01em}
.teacher-table .name-cell{max-width:none;width:100%;font-weight:700;min-width:150px}
.teacher-table .photo-cell{width:60px}
.teacher-table .table-tools{width:max-content}
.teacher-table .action-cell{text-align:right}
.teacher-table td{height:52px}
.teacher-table .teacher-name small{display:none;font-weight:450;color:#777}
.teacher-filters{grid-template-columns:minmax(230px,2.3fr) minmax(150px,1fr) minmax(185px,1fr) auto;gap:12px}
.teacher-detail-grid .detail-card{min-height:245px}
.teacher-detail-grid .detail-list{grid-template-columns:minmax(118px,42%) minmax(0,1fr)}
.teacher-profile{min-height:130px}
.teacher-contact-note{font-size:11px;color:#777;line-height:1.5;margin:12px 0 0}
.teacher-photo-preview{width:62px;height:62px;object-fit:cover;border-radius:12px;border:1px solid #ddd}
.teacher-import-errors{max-height:200px;overflow:auto}
.teacher-modal-hint{font-size:11px;color:#686868;margin:0;line-height:1.6}
@media(max-width:1170px){.teacher-table .teacher-nuptk-col{display:none}.teacher-table col.teacher-nuptk-col{display:none}}
@media(max-width:900px){.teacher-table .teacher-nip-col{display:none}.teacher-table col.teacher-nip-col{display:none}.teacher-filters{grid-template-columns:1fr 1fr}.teacher-filters .search-field{grid-column:1/-1}.teacher-table .teacher-name small{display:block}}
@media(max-width:720px){.teacher-filters{grid-template-columns:1fr 1fr}.teacher-detail-grid{grid-template-columns:1fr}.teacher-page .student-actions{padding:13px}.teacher-page .student-filters{padding:12px;gap:9px}.teacher-page .student-filters .reset-btn{grid-column:1/-1}.teacher-page .student-stats{gap:9px}.teacher-page .detail-top-actions{display:flex}.teacher-page .student-profile{min-height:0}}
@media(max-width:360px){.teacher-filters{grid-template-columns:1fr}.teacher-filters .search-field{grid-column:1}.teacher-page .student-filters .reset-btn{grid-column:1}}

/* DU/DI mockups — based on the exact Beranda/Siswa/Guru CSS. No MVP frontend modifications. */
body.dudi-view .head-titles{display:none}body.dudi-view .head{justify-content:flex-end}
body.dudi-view .period-group{display:none}
body.dudi-view .head-right .h-btn, body.dudi-view .head-right .h-btn .icon{color:#222}
body.dudi-view .account-trigger,body.dudi-view .account-trigger .account-name{color:#161616;opacity:1}
body.dudi-view .account-trigger .avatar{background:#2563EB}
.dudi-intro p:last-child{max-width:750px}
.dudi-stats{margin-bottom:17px}
.dudi-stats .student-stat{min-height:87px}
.dudi-workspace{overflow:visible}
.dudi-workspace .student-actions{border-radius:14px 14px 0 0}
.dudi-workspace .student-filters{grid-template-columns:minmax(225px,2.1fr) repeat(3,minmax(140px,1fr)) auto;gap:11px;align-items:end}
.dudi-workspace .student-filters>label{gap:5px}
.dudi-workspace .search-field input{font-size:12px;height:40px}
.custom-filter{position:relative;min-width:0;display:flex;flex-direction:column;gap:6px}
.custom-filter>span{font-size:11px;font-weight:620;color:#555}
.custom-filter .trigger{height:40px;min-height:40px;border-radius:10px;font-size:12px;justify-content:space-between;width:100%;gap:6px;padding:8px 10px}
.custom-filter .trigger svg{width:15px;height:15px;flex:0 0 15px}
.custom-filter .popover{left:0;right:auto;top:calc(100% + 5px);width:100%;min-width:165px;max-height:250px;overflow:auto;border-radius:11px;z-index:44;box-shadow:0 12px 30px #0002}
.custom-filter .popover.open{display:block}
.custom-filter .popover button{font-size:12px;min-height:34px}
.custom-filter .popover button[aria-selected=true]{background:#eeeeee;font-weight:700}
.dudi-table-wrap{overflow:hidden;border-bottom:1px solid #eaeaea}
.dudi-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:11px}
.dudi-table th{background:#f4f4f4;text-align:left;font-size:10.5px;font-weight:760;white-space:nowrap;padding:12px 7px;color:#343434}
.dudi-table td{padding:12px 7px;vertical-align:middle;border-bottom:1px solid #e8e8e8;line-height:1.4;height:61px}
.dudi-table tbody tr:last-child td{border-bottom:0}
.dudi-table tbody tr:hover{background:#fafafa}
.dudi-table th:first-child,.dudi-table td:first-child{padding-left:16px}
.dudi-table th:last-child,.dudi-table td:last-child{padding-right:14px;text-align:right}
.dudi-table .dudi-name-text{display:block;font-weight:720;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dudi-table .dudi-addr-text{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;line-height:1.45;color:#555}
.dudi-table .code-cell{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:610}
.dudi-table .place-count{text-align:center;font-variant-numeric:tabular-nums}
.dudi-table .table-tools{display:inline-flex;gap:5px;width:max-content}
.dudi-table col.code{width:89px}.dudi-table col.name{width:19%}.dudi-table col.address{width:auto}.dudi-table col.places{width:68px}.dudi-table col.state{width:83px}.dudi-table col.complete{width:126px}.dudi-table col.ready{width:118px}.dudi-table col.actions{width:122px}
.dudi-table .status-pill{padding:6px 7px;font-size:10px}
.dudi-table .status-pill.small-status{font-size:9.5px}
.dudi-icon{width:17px;height:17px;display:inline-block;vertical-align:middle;flex:0 0 17px;stroke:currentColor;stroke-width:1.9;fill:none;stroke-linecap:round;stroke-linejoin:round}
.dudi-actions .icon-action{width:31px;height:31px}
.dudi-cards{display:none;padding:0 11px 11px;gap:9px}
.dudi-card{border:1px solid #e4e4e4;background:#fff;border-radius:12px;padding:12px;min-width:0}
.dudi-card-top{display:grid;grid-template-columns:39px minmax(0,1fr) auto;align-items:start;gap:9px}
.dudi-card-icon{background:#ececec;display:grid;place-items:center;width:39px;height:39px;border-radius:11px;color:#666}
.dudi-card-text{min-width:0}
.dudi-card-title{font-size:13px;font-weight:730;line-height:1.35;overflow-wrap:anywhere}
.dudi-card-sub{font-size:10px;color:#777;margin-top:3px;line-height:1.4}
.dudi-card-addr{color:#777;font-size:10px;line-height:1.45;margin-top:5px;overflow-wrap:anywhere}
.dudi-card-flags{display:flex;flex-direction:column;align-items:flex-end;gap:5px;max-width:123px}
.dudi-card-flags .status-pill{font-size:9.5px;padding:5px 6px}
.dudi-card-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;padding-top:10px;margin-top:10px;border-top:1px solid #ececec}
.dudi-card-actions button{height:44px;min-height:44px;padding:7px 4px;font-size:11px;display:inline-flex;justify-content:center;align-items:center;gap:5px;border:1px solid #d8d8d8;border-radius:9px;background:#fff;color:#333;font-weight:620}
.dudi-card-actions button:hover{background:#f3f3f3}
.dudi-actions .danger,.dudi-card-actions .danger{color:#705050}
/* Detail page */
.dudi-detail-top{align-items:end}
.dudi-detail-top .detail-top-actions{flex-wrap:wrap}
.dudi-hero{display:flex;align-items:center;gap:17px;padding:17px 20px;margin-bottom:15px}
.dudi-hero-image{width:67px;height:67px;flex:0 0 67px;display:grid;place-items:center;border-radius:16px;background:#efefef;color:#666}
.dudi-hero-text{min-width:0;flex:1}
.dudi-hero-text h3{font-size:21px;line-height:1.2;margin:0 0 5px;letter-spacing:-.035em}
.dudi-hero-text .dudi-code{font-size:12px;color:#5a5a5a}
.dudi-hero-flags{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-top:10px}
.dudi-hero-flags .status-pill{font-size:10px}
.dudi-detail-grid{display:grid;grid-template-columns:minmax(0,1.14fr) minmax(0,1fr);gap:15px;margin-bottom:16px}
.dudi-info-panel{padding:0;overflow:hidden}
.dudi-info-panel .section-strip{padding:12px 16px}
.dudi-info-panel .dudi-info-content{padding:5px 17px 11px}
.dudi-info-content .detail-list{grid-template-columns:minmax(116px,37%) minmax(0,1fr);font-size:12px}
.dudi-info-content .detail-list dt,.dudi-info-content .detail-list dd{padding:10px 0}
.dudi-subsection{margin:8px 0 12px}
.dudi-subsection-head{display:flex;align-items:center;justify-content:space-between;gap:15px;margin:0 0 14px}
.dudi-subsection-head h3{margin:0 0 4px;font-size:18px;letter-spacing:-.035em}
.dudi-subsection-head p{margin:0;font-size:12px;color:#777}
.dudi-locations{display:grid;gap:15px}
.dudi-location{overflow:hidden}
.dudi-location-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:14px 17px;background:#f8f8f8;border-bottom:1px solid #e7e7e7}
.dudi-location-head h4{font-size:16px;letter-spacing:-.03em;margin:0 0 5px}
.dudi-location-head p{font-size:11px;color:#666;margin:0}
.dudi-location-ops{display:flex;gap:7px;align-items:center;flex-wrap:wrap;justify-content:flex-end}
.dudi-location-ops .action-btn{min-height:34px;padding:7px 9px;font-size:11px}
.dudi-location-body{padding:15px 17px 16px}
.dudi-location-fields{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:13px;margin-bottom:15px}
.dudi-loc-field{min-width:0}
.dudi-loc-label{font-size:10px;color:#777;display:block;margin-bottom:5px}
.dudi-loc-val{font-size:11.5px;font-weight:650;overflow-wrap:anywhere;line-height:1.45}
.dudi-shifts-head{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid #ebebeb;padding:13px 0 10px}
.dudi-shifts-head strong{font-size:13px}
.dudi-shifts-head .action-btn{min-height:33px;padding:6px 10px;font-size:11px}
.dudi-shift-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:11px}
.dudi-shift-table th{background:#f5f5f5;color:#454545;padding:9px 11px;text-align:left;font-size:10px}
.dudi-shift-table td{border-bottom:1px solid #eee;padding:10px 11px;line-height:1.5}
.dudi-shift-table tr:last-child td{border-bottom:0}
.dudi-shift-table th:last-child,.dudi-shift-table td:last-child{text-align:right}
.dudi-shift-mobile{display:none}
.dudi-note-row{display:flex;gap:8px;align-items:flex-start;background:#f8f8f8;border:1px solid #e5e5e5;border-radius:11px;padding:11px 13px;margin-top:14px;color:#666;font-size:11px;line-height:1.5}
.dudi-note-row svg{flex:0 0 16px;margin-top:1px}
.dudi-modal-backdrop{display:none;position:fixed;inset:0;background:#0006;z-index:60;align-items:center;justify-content:center;padding:16px}
.dudi-modal-backdrop.open{display:flex}
.dudi-modal{background:white;border-radius:17px;border:1px solid #eee;width:min(560px,100%);max-height:91dvh;overflow:auto;box-shadow:0 18px 50px #0003}
.dudi-modal-header{padding:18px 20px 13px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.dudi-modal-header h3{font-size:18px;margin:0 0 5px}.dudi-modal-header p{font-size:11px;color:#777;margin:0}
.dudi-modal-close{border:0;background:#f2f2f2;border-radius:8px;width:30px;height:30px;font-size:20px;color:#444;flex:0 0 30px}
.dudi-modal-content{padding:17px 20px 20px}
.dudi-modal-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.dudi-modal-grid label{display:flex;flex-direction:column;font-size:11px;font-weight:640;color:#555;gap:6px}
.dudi-modal-grid input,.dudi-modal-grid select{width:100%;height:39px;border-radius:9px;border:1px solid #ddd;background:#fafafa;padding:9px;color:#222;font:inherit}
.dudi-modal-grid .span2{grid-column:span 2}
.dudi-modal-foot{display:flex;justify-content:flex-end;gap:8px;padding:13px 20px;border-top:1px solid #eee}
@media(max-width:1370px){.dudi-table .dudi-hide-wide{display:none}.dudi-table col.dudi-hide-wide{display:none}.dudi-workspace .student-filters{grid-template-columns:minmax(200px,2.2fr) repeat(3,minmax(120px,1fr)) auto}}
@media(max-width:1100px){.dudi-table .dudi-hide-mid{display:none}.dudi-table col.dudi-hide-mid{display:none}.dudi-table col.name{width:auto}.dudi-detail-grid{grid-template-columns:1fr}.dudi-table col.complete{width:120px}}
@media(max-width:900px){.dudi-workspace .student-filters{grid-template-columns:1fr 1fr 1fr}.dudi-workspace .student-filters .search-field{grid-column:1 / -1}.dudi-workspace .student-filters .reset-btn{grid-column:3}.dudi-table .dudi-hide-narrow{display:none}.dudi-table col.dudi-hide-narrow{display:none}}
@media(max-width:720px){.dudi-workspace .student-filters{grid-template-columns:1fr 1fr;padding:12px}.dudi-workspace .student-filters .search-field{grid-column:1 / -1}.dudi-workspace .student-filters .reset-btn{grid-column:1 / -1}.dudi-workspace .student-actions{padding:13px}.dudi-table-wrap{display:none}.dudi-cards{display:grid}.dudi-subsection-head{align-items:flex-start;flex-direction:column}.dudi-subsection-head .action-btn{align-self:stretch}.dudi-hero{align-items:flex-start;padding:13px;gap:11px}.dudi-hero-image{width:52px;height:52px;flex-basis:52px}.dudi-hero-text h3{font-size:18px}.dudi-location-head{flex-direction:column}.dudi-location-ops{width:100%;justify-content:space-between}.dudi-location-fields{grid-template-columns:1fr 1fr}.dudi-location-fields .dudi-address-field{grid-column:1/-1}.dudi-shift-table{display:none}.dudi-shift-mobile{display:grid;gap:8px}.dudi-shift-mobile article{display:grid;gap:7px;padding:11px;border:1px solid #e5e5e5;border-radius:10px;font-size:11px}.dudi-shift-mobile article strong{font-size:12px}.dudi-shift-mobile article span{color:#666}.dudi-detail-top .detail-top-actions{width:100%}.dudi-detail-top .detail-top-actions .action-btn{flex:1}.dudi-modal-grid{grid-template-columns:1fr}.dudi-modal-grid .span2{grid-column:span 1}}
@media(max-width:360px){.dudi-workspace .student-filters{grid-template-columns:1fr}.dudi-workspace .student-filters .search-field,.dudi-workspace .student-filters .reset-btn{grid-column:1}.dudi-card-top{grid-template-columns:35px minmax(0,1fr) auto;gap:7px}.dudi-card-icon{width:35px;height:35px}.dudi-card-flags{max-width:105px}.dudi-card-flags .status-pill{font-size:9px}}

/* Approved shared revisions — balanced table columns, legible mobile actions. */
.student-workspace {overflow:visible}
.student-workspace .student-actions {border-radius:14px 14px 0 0}
.students-table:not(.teacher-table) {table-layout:fixed}
.students-table:not(.teacher-table) col.st-photo {width:53px}
.students-table:not(.teacher-table) col.st-nis {width:72px}
.students-table:not(.teacher-table) col.st-nisn {width:96px}
.students-table:not(.teacher-table) col.st-name {width:auto}
.students-table:not(.teacher-table) col.st-class {width:92px}
.students-table:not(.teacher-table) col.st-major {width:78px}
.students-table:not(.teacher-table) col.st-gender {width:98px}
.students-table:not(.teacher-table) col.st-status {width:94px}
.students-table:not(.teacher-table) col.st-complete {width:119px}
.students-table:not(.teacher-table) col.st-action {width:125px}
.students-table:not(.teacher-table) .name-cell {width:auto;min-width:0;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.students-table:not(.teacher-table) td:nth-child(5),.students-table:not(.teacher-table) td:nth-child(6) {white-space:nowrap}
.teacher-table{table-layout:fixed}
.teacher-table col.tc-photo {width:53px}
.teacher-table col.tc-code {width:91px}
.teacher-table col.tc-name {width:auto}
.teacher-table col.tc-nip {width:162px}
.teacher-table col.tc-nuptk {width:150px}
.teacher-table col.tc-status {width:95px}
.teacher-table col.tc-complete {width:118px}
.teacher-table col.tc-action {width:125px}
.teacher-table .name-cell {width:auto;min-width:0;max-width:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.teacher-table td,.students-table td {height:53px}
.filter-enhanced{position:relative;display:flex;flex-direction:column;gap:6px;min-width:0}
.filter-enhanced select{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;padding:0!important;z-index:-1}
.filter-enhanced .filter-launch{width:100%;height:39px;border:1px solid #d0d0d0;border-radius:10px;padding:0 10px;background:white;font-size:12px;color:#222;display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;white-space:nowrap}
.filter-enhanced .filter-launch:hover,.filter-enhanced .filter-launch[aria-expanded=true]{border-color:#777;background:#fafafa}
.filter-enhanced .filter-pop{position:absolute;left:0;right:0;top:calc(100% + 5px);min-width:max(100%,170px);display:none;z-index:50;background:#fff;border:1px solid #ddd;border-radius:12px;box-shadow:0 15px 32px #0002;max-height:255px;overflow-y:auto;padding:5px}
.filter-enhanced .filter-pop.open{display:grid;gap:2px}
.filter-enhanced .filter-pop button{width:100%;border:0;border-radius:8px;padding:9px;text-align:left;font-size:12px;color:#333;background:transparent}
.filter-enhanced .filter-pop button:hover,.filter-enhanced .filter-pop button[aria-selected=true]{background:#eee}
.filter-enhanced .filter-pop button[aria-selected=true]{font-weight:700}
.student-filters{position:relative;z-index:5}
.student-filters>label.filter-enhanced{display:flex}
@media(max-width:1370px){.students-table:not(.teacher-table) col.st-gender{display:none}}
@media(max-width:1170px){.students-table:not(.teacher-table) col.st-major,.students-table:not(.teacher-table) col.st-complete{display:none}.teacher-table col.tc-nuptk{display:none}}
@media(max-width:900px){.students-table:not(.teacher-table) col.st-nisn,.students-table:not(.teacher-table) col.st-class{display:none}.teacher-table col.tc-nip{display:none}}
@media(max-width:720px){
 .student-card{padding:12px}
 .student-card-top{display:grid;grid-template-columns:37px minmax(0,1fr) auto;gap:9px;align-items:start}
 .student-card-top > div:nth-child(2){min-width:0}
 .student-card-status{display:flex;flex-direction:column;align-items:flex-end;gap:5px;flex:0 0 auto;margin:0;max-width:135px}
 .student-card-status .status-pill{font-size:9.5px;padding:5px 6px;line-height:1.2}
 .student-card-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;margin:10px 0 0;padding-top:10px}
 .student-card-actions .action-btn{width:100%;min-height:44px;padding:8px 2px;font-size:11px}
 .students-cards{gap:9px}
}
@media(max-width:360px){.student-card-top{grid-template-columns:35px minmax(0,1fr) auto;gap:6px}.student-card-status{max-width:112px}.student-card-status .status-pill{font-size:9px}}

/* Minor revision v1.1 — 10 digit NIS, 3-word names, stable table spacing. */
.students-table:not(.teacher-table) col.st-photo{width:53px}
.students-table:not(.teacher-table) col.st-nis{width:105px}
.students-table:not(.teacher-table) col.st-nisn{width:101px}
.students-table:not(.teacher-table) col.st-name{width:auto}
.students-table:not(.teacher-table) col.st-class{width:91px}
.students-table:not(.teacher-table) col.st-major{width:65px}
.students-table:not(.teacher-table) col.st-gender{width:90px}
.students-table:not(.teacher-table) col.st-status{width:96px}
.students-table:not(.teacher-table) col.st-complete{width:118px}
.students-table:not(.teacher-table) col.st-action{width:123px}
.students-table:not(.teacher-table) td:nth-child(2),
.students-table:not(.teacher-table) td:nth-child(3){white-space:nowrap;font-variant-numeric:tabular-nums;font-size:10.8px}
.teacher-table col.tc-code{width:94px}
.teacher-table col.tc-name{width:auto}
.teacher-table col.tc-nip{width:157px}
.teacher-table col.tc-nuptk{width:150px}
.teacher-table col.tc-action{width:123px}
.students-table:not(.teacher-table) .name-cell,
.teacher-table .name-cell{white-space:normal;overflow:visible;text-overflow:clip;line-height:1.4}
.students-table .name-primary{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
@media(max-width:1250px){
 .students-table:not(.teacher-table) .hide-wide,
 .students-table:not(.teacher-table) col.st-gender{display:none}
}
@media(max-width:1200px){
 .students-table:not(.teacher-table) .hide-med,
 .students-table:not(.teacher-table) col.st-major,
 .students-table:not(.teacher-table) col.st-complete{display:none}
}
@media(max-width:1010px){
 .teacher-table .teacher-nip-col,
 .teacher-table col.tc-nip{display:none}
}
@media(max-width:900px){
 /* Prioritize readable teacher names on narrow tablets. Full fields remain on Detail Guru. */
 .teacher-table th:nth-child(7),
 .teacher-table td:nth-child(7),
 .teacher-table col.tc-complete{display:none}
 .teacher-table .teacher-name small{display:none}
}

/* DU/DI operational forms */
.dudi-page[hidden]{display:none!important}
.dudi-form-layer{display:none;position:fixed;inset:0;z-index:65;background:#0007;align-items:center;justify-content:center;padding:12px}
.dudi-form-layer.open{display:flex}
.dudi-form-dialog{width:min(610px,100%);max-height:94dvh;overflow:hidden;background:white;border-radius:17px;box-shadow:0 20px 60px #0003;display:flex;flex-direction:column}
.dudi-form-head{display:flex;justify-content:space-between;gap:10px;padding:18px 20px 13px;border-bottom:1px solid #ececec}
.dudi-form-head h3{margin:0;font-size:19px}.dudi-form-head p{color:#777;font-size:11px;margin:4px 0 0}
.dudi-form-scroll{overflow-y:auto;padding:17px 20px;min-height:0}
.dudi-input-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.dudi-input-grid label{font-size:11px;font-weight:630;color:#4b4b4b;display:flex;flex-direction:column;gap:6px;min-width:0}
.dudi-input-grid input,.dudi-input-grid select,.dudi-input-grid textarea{font:inherit;font-size:12px;color:#242424;min-width:0;padding:10px;background:#fff;border:1px solid #d5d5d5;border-radius:9px;width:100%}
.dudi-input-grid textarea{resize:vertical;min-height:70px}
.dudi-input-grid .span2{grid-column:1/-1}
.dudi-form-actions{padding:13px 20px;display:flex;justify-content:flex-end;gap:9px;border-top:1px solid #eee}
.dudi-days{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:5px}
.dudi-days label{display:flex;flex-direction:row;gap:6px;align-items:center;border:1px solid #ddd;border-radius:8px;padding:9px 7px;font-size:11px;white-space:nowrap}
.dudi-days input{width:auto;margin:0;accent-color:#555}
.dudi-shift-table .table-tools{justify-content:flex-end}
.dudi-shift-table .icon-action{width:28px;height:28px;font-size:12px}
.dudi-shift-mobile .dudi-card-actions{margin-top:4px}
.dudi-form-error{font-size:12px;color:#803838;margin-top:10px;min-height:15px}
.dudi-loc-hint{font-size:11px;color:#717171;margin:7px 0}
@media(max-width:720px){.dudi-input-grid{grid-template-columns:1fr}.dudi-days{grid-template-columns:repeat(3,1fr)}.dudi-form-scroll{padding:13px 16px}.dudi-form-head,.dudi-form-actions{padding-left:16px;padding-right:16px}}

/* MVP1 v1.2 — Penempatan. New module only; earlier pages stay visually locked. */
.placement-page[hidden]{display:none!important}
.placement-workspace{overflow:visible}
.placement-workspace .student-actions{border-radius:14px 14px 0 0}
.placement-filters{display:grid;grid-template-columns:minmax(210px,2.1fr) repeat(3,minmax(125px,1fr)) auto;gap:10px;align-items:end;padding:14px 17px;position:relative;z-index:8}
.placement-filters label{display:flex;flex-direction:column;gap:6px;color:#555;font-size:11px;font-weight:620;min-width:0}
.placement-filters .search-field{position:relative}
.placement-filters .search-field input{height:39px;width:100%;min-width:0;border:1px solid #d7d7d7;background:white;border-radius:10px;padding:8px 10px 8px 34px;font-size:12px}
.placement-filters select{height:39px;background:white;border:1px solid #d7d7d7;border-radius:10px;width:100%;min-width:0;padding:8px;font-size:12px}
.placement-table-wrap{overflow:hidden;border-bottom:1px solid #e9e9e9}
.placement-table{table-layout:fixed;border-collapse:collapse;width:100%;font-size:11px}
.placement-table thead{background:#f4f4f4}
.placement-table th{text-align:left;white-space:nowrap;font-weight:730;font-size:10.5px;color:#333;padding:12px 9px}
.placement-table td{border-bottom:1px solid #ededed;padding:11px 9px;line-height:1.45;vertical-align:middle;min-width:0}
.placement-table tbody tr:last-child td{border-bottom:0}
.placement-table tbody tr:hover{background:#fafafa}
.placement-table th:first-child,.placement-table td:first-child{padding-left:16px}
.placement-table th:last-child,.placement-table td:last-child{padding-right:16px;text-align:right}
.placement-table .code{white-space:nowrap;font-variant-numeric:tabular-nums;font-weight:640}
.placement-table .primary-name{font-weight:720;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.placement-table .sub{font-size:10px;color:#777;margin-top:3px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.placement-table .date-span{font-size:10.5px;white-space:nowrap;font-variant-numeric:tabular-nums}
.placement-table .date-span span{display:block}
.placement-table col.pc-nis{width:115px}.placement-table col.pc-name{width:auto}.placement-table col.pc-dudi{width:18%}.placement-table col.pc-teacher{width:18%}.placement-table col.pc-dates{width:118px}.placement-table col.pc-state{width:105px}.placement-table col.pc-actions{width:118px}
.placement-table .table-tools{width:max-content}
.placement-table .status-pill{font-size:10px;padding:6px 7px}
.placement-cards{display:none;padding:0 12px 10px;gap:9px}
.placement-card{border:1px solid #e4e4e4;background:white;border-radius:12px;padding:12px;min-width:0}
.placement-card-head{display:grid;grid-template-columns:37px minmax(0,1fr) auto;gap:9px;align-items:start}
.placement-card-main{min-width:0}.placement-card-main strong{display:block;font-size:12px;line-height:1.4;overflow-wrap:anywhere}.placement-card-main small{display:block;color:#777;font-size:10px;margin-top:3px}
.placement-card-detail{display:grid;grid-template-columns:1fr 1fr;gap:8px 11px;padding:9px 0 0 46px;font-size:11px;color:#333}
.placement-card-detail span{display:block;color:#777;font-size:10px;margin-bottom:3px}.placement-card-detail b{font-weight:620;overflow-wrap:anywhere}
.placement-card-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;border-top:1px solid #e9e9e9;padding-top:10px;margin-top:11px}
.placement-card-actions button{min-height:44px;border:1px solid #dcdcdc;border-radius:9px;background:white;color:#333;font-size:11px;font-weight:600;display:flex;align-items:center;justify-content:center;gap:6px;padding:6px 4px}
.placement-card-actions button:hover{background:#f4f4f4}
.placement-empty{text-align:center;padding:35px 14px;font-size:12px;color:#666}.placement-empty strong{color:#333;font-size:14px}
.placement-modal-layer{display:none;position:fixed;inset:0;z-index:80;background:#0007;align-items:center;justify-content:center;padding:12px}
.placement-modal-layer.open{display:flex}
.placement-modal{width:min(610px,100%);max-height:min(94dvh,860px);background:#fff;border-radius:16px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px #0003}
.placement-modal.wide{width:min(920px,100%)}
.placement-modal-header{padding:19px 21px 14px;border-bottom:1px solid #eee;display:flex;align-items:start;gap:14px;justify-content:space-between}
.placement-modal-header h3{font-size:19px;margin:0 0 5px;letter-spacing:-.035em}.placement-modal-header p{margin:0;color:#777;font-size:11px;line-height:1.5}
.placement-modal-body{padding:18px 21px;overflow-y:auto;min-height:0}
.placement-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.placement-form-grid label,.placement-field{display:flex;flex-direction:column;gap:7px;font-size:11px;font-weight:640;color:#555;min-width:0}
.placement-form-grid input,.placement-form-grid select,.placement-field input,.placement-field select{border:1px solid #d5d5d5;padding:9px 10px;min-height:40px;background:#fff;color:#222;border-radius:9px;font-size:12px;width:100%;min-width:0}
.placement-form-grid .span2{grid-column:1/-1}.placement-form-help{grid-column:1/-1;color:#666;font-size:11px;line-height:1.5;background:#f7f7f7;border:1px solid #ebebeb;padding:10px 12px;border-radius:10px}
.placement-modal-actions{padding:12px 21px;border-top:1px solid #eee;display:flex;justify-content:flex-end;flex-wrap:wrap;gap:9px}
.placement-inline-error{color:#8b3131;line-height:1.5;font-size:11px;margin:12px 0 0;min-height:13px}
.placement-inline-result{font-size:11px;line-height:1.7;border:1px solid #e6e6e6;border-radius:10px;padding:12px;margin-top:12px;color:#444;background:#fafafa;max-height:220px;overflow:auto}
.placement-inline-result:empty{display:none}.placement-inline-result ul{margin:6px 0 0;padding-left:17px}
.placement-bulk-tools{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:0 0 14px}
.placement-bulk-list{display:grid;gap:7px;max-height:300px;overflow:auto;border:1px solid #e4e4e4;border-radius:11px;padding:8px}
.placement-bulk-row{display:grid;grid-template-columns:18px minmax(0,1.5fr) minmax(0,1fr) minmax(0,1fr);align-items:center;gap:9px;padding:7px;border-radius:8px;font-size:11px;min-width:0}
.placement-bulk-row:nth-child(even){background:#f7f7f7}.placement-bulk-row .name{font-weight:650;line-height:1.4}.placement-bulk-row small{font-size:10px;color:#777;display:block}.placement-bulk-row input[type=date]{height:33px;font-size:11px;width:100%;min-width:0;padding:4px;border:1px solid #ddd;border-radius:7px;background:white}
.placement-bulk-label{display:flex;align-items:center;justify-content:space-between;font-size:11px;padding:9px 2px}
.placement-bulk-label label{display:flex;align-items:center;gap:7px}.placement-bulk-row input[type=checkbox]{width:16px;height:16px;accent-color:#555}
.placement-bulk-row .date-override{display:block}.placement-bulk-row input[type=date]:disabled{background:#f3f3f3;color:#aaa}
.placement-history{display:grid;gap:9px}.placement-history article{padding:12px;border:1px solid #e8e8e8;border-radius:10px;font-size:11px;line-height:1.65}.placement-history article strong{display:block;font-size:12px}.placement-history article .muted{color:#777}
@media(max-width:1250px){.placement-table col.pc-teacher{width:18%}.placement-table col.pc-dudi{width:18%}.placement-table col.pc-nis{width:111px}}
@media(max-width:1100px){.placement-table .placement-hide-teacher,.placement-table col.pc-teacher{display:none}.placement-filters{grid-template-columns:minmax(190px,2fr) repeat(3,minmax(105px,1fr)) auto}}
@media(max-width:880px){.placement-table .placement-hide-dudi,.placement-table col.pc-dudi{display:none}.placement-filters{grid-template-columns:1fr 1fr 1fr}.placement-filters .search-field{grid-column:1/-1}.placement-filters .reset-btn{grid-column:3}.placement-bulk-tools{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.placement-table-wrap{display:none}.placement-cards{display:grid}.placement-filters{grid-template-columns:1fr 1fr;padding:12px;gap:9px}.placement-filters .search-field{grid-column:1/-1}.placement-filters .reset-btn{grid-column:1/-1}.placement-workspace .student-actions{padding:13px}.placement-form-grid{grid-template-columns:1fr}.placement-form-grid .span2{grid-column:1}.placement-modal-header{padding:15px}.placement-modal-body{padding:13px 15px}.placement-modal-actions{padding:12px 15px}.placement-bulk-list{max-height:44dvh}.placement-bulk-row{grid-template-columns:18px minmax(0,1fr) minmax(0,1fr);gap:7px}.placement-bulk-row .name{grid-column:2/-1}.placement-bulk-row .bulk-date-from{grid-column:2}.placement-bulk-row .bulk-date-to{grid-column:3}.placement-bulk-tools{grid-template-columns:1fr 1fr}}
@media(max-width:375px){.placement-filters{grid-template-columns:1fr}.placement-filters .search-field,.placement-filters .reset-btn{grid-column:1}.placement-card-detail{grid-template-columns:1fr 1fr;padding-left:0}.placement-card-head{grid-template-columns:35px minmax(0,1fr) auto;gap:6px}}


/* v1.3 targeted Penempatan footer patch — other pages unchanged */
.placement-bottom{min-height:62px;gap:10px;flex-wrap:wrap}
.placement-bottom .placement-paging{gap:9px;margin-left:auto}
.placement-paging label{font-size:11px;color:#666}
.placement-page-size{position:relative;min-width:65px}
.placement-page-size>select{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.placement-size-trigger{width:72px;height:36px;background:white;border:1px solid #d8d8d8;border-radius:9px;color:#242424;display:flex;align-items:center;justify-content:space-between;padding:0 10px;font-size:12px;font-weight:650}
.placement-size-trigger:hover,.placement-size-trigger[aria-expanded="true"]{border-color:#777;background:#fafafa}
.placement-size-menu{display:none;position:absolute;bottom:calc(100% + 6px);left:0;z-index:48;width:115px;padding:5px;background:white;border:1px solid #ddd;border-radius:10px;box-shadow:0 10px 30px #0002}
.placement-size-menu.open{display:grid;gap:2px}
.placement-size-menu button{padding:8px 10px;background:transparent;border:0;border-radius:7px;text-align:left;font-size:12px;color:#333}
.placement-size-menu button:hover,.placement-size-menu button[aria-selected="true"]{background:#eee;font-weight:650}
.placement-paging .page-nav{width:36px;height:36px;background:#fff;display:grid;place-items:center;padding:0;border-radius:9px;color:#303030}
.placement-paging .page-nav:disabled{color:#aaa;background:#f4f4f4;opacity:.8}
.placement-paging .page-nav svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2}
.placement-paging #placement-page-index{white-space:nowrap;font-size:12px;font-variant-numeric:tabular-nums;min-width:37px;text-align:center;color:#444}
@media(max-width:420px){.placement-bottom{align-items:flex-start;gap:8px}.placement-bottom #placement-page-status{flex-basis:100%}.placement-bottom .placement-paging{margin-left:0;width:100%;justify-content:space-between}}

/* v1.3 Monitoring Presensi admin-only. Inherits v1.1 typography and spacing tokens. */
.monitor-page[hidden]{display:none!important}
.monitor-stats{margin-bottom:17px}
.monitor-workspace{overflow:visible}
.monitor-workspace .student-actions{border-radius:14px 14px 0 0}
.monitor-filters{display:grid;grid-template-columns:minmax(230px,2fr) minmax(150px,1fr) minmax(160px,1fr) auto;gap:10px;padding:16px 17px;align-items:end;position:relative;z-index:9}
.monitor-filters label{display:flex;flex-direction:column;gap:6px;color:#555;font-size:11px;font-weight:630;min-width:0}
.monitor-filters .search-field{position:relative}
.monitor-filters .search-field input{height:39px;width:100%;min-width:0;border:1px solid #d7d7d7;background:#fff;border-radius:10px;padding:8px 10px 8px 34px;font-size:12px}
.monitor-filters select{height:39px;width:100%;min-width:0;background:white;border:1px solid #d8d8d8;border-radius:10px;padding:8px;font-size:12px;color:#292929}
.monitor-summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:0 17px 14px;font-size:11px;color:#666}
.monitor-summary span{overflow-wrap:anywhere}
.monitor-table-wrap{overflow:hidden;border-top:1px solid #eee}
.monitor-table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:11px}
.monitor-table th{background:#f3f3f3;padding:12px 9px;font-size:10.5px;font-weight:730;text-align:left;white-space:nowrap;color:#333}
.monitor-table td{padding:12px 9px;border-bottom:1px solid #ebebeb;line-height:1.42;vertical-align:middle}
.monitor-table tbody tr:last-child td{border-bottom:0}.monitor-table tbody tr:hover{background:#fafafa}
.monitor-table th:first-child,.monitor-table td:first-child{padding-left:16px}
.monitor-table th:last-child,.monitor-table td:last-child{padding-right:16px;text-align:right}
.monitor-table col.m-date{width:103px}.monitor-table col.m-name{width:auto}.monitor-table col.m-dudi{width:19%}.monitor-table col.m-in{width:80px}.monitor-table col.m-out{width:80px}.monitor-table col.m-att{width:116px}.monitor-table col.m-flags{width:156px}.monitor-table col.m-action{width:72px}
.monitor-table .primary-name{font-weight:715;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.monitor-table .sub{font-size:10px;color:#777;margin-top:4px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.monitor-table .num{font-variant-numeric:tabular-nums;white-space:nowrap}
.monitor-table .flag-text{display:block;font-size:10px;color:#5e5e5e;line-height:1.45;overflow-wrap:anywhere}
.monitor-table .reviewed{display:inline-block;font-size:10px;color:#4c4c4c;font-weight:650;margin-top:4px}
.monitor-table .no-issue{color:#777}
.monitor-table .icon-action{width:34px;height:34px}
.monitor-empty{padding:34px 15px;text-align:center;color:#666;font-size:12px}
.monitor-empty strong{font-size:14px;color:#333;display:block;margin-bottom:6px}
.monitor-cards{display:none;padding:0 12px 11px;gap:9px}
.monitor-card{border:1px solid #e4e4e4;background:#fff;border-radius:12px;padding:12px;min-width:0}
.monitor-card-top{display:grid;grid-template-columns:37px minmax(0,1fr) auto;gap:9px;align-items:start}
.monitor-card-main{min-width:0}.monitor-card-main strong{font-size:13px;display:block;line-height:1.4;overflow-wrap:anywhere}.monitor-card-main small{font-size:10px;color:#777;display:block;margin-top:3px;line-height:1.45}
.monitor-card-side{text-align:right;font-size:10px;color:#666;display:grid;justify-items:end;gap:5px}
.monitor-card-body{display:grid;grid-template-columns:1fr 1fr;gap:8px 10px;margin:11px 0 0;padding-top:9px;border-top:1px solid #eee}
.monitor-card-body span{font-size:10px;color:#777;display:block;margin-bottom:3px}.monitor-card-body b{font-size:11px;font-weight:640;overflow-wrap:anywhere}
.monitor-card button{width:100%;min-height:44px;border:1px solid #d8d8d8;background:#fff;border-radius:9px;font-size:12px;font-weight:650;margin-top:11px;color:#333}
.monitor-card button:hover{background:#f4f4f4}
.monitor-modal-layer{display:none;position:fixed;inset:0;background:#0007;z-index:86;align-items:center;justify-content:center;padding:12px}
.monitor-modal-layer.open{display:flex}
.monitor-dialog{width:min(860px,100%);max-height:95dvh;background:#fff;border-radius:17px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 24px 70px #0003}
.monitor-dialog-head{padding:17px 20px 13px;display:flex;align-items:start;justify-content:space-between;gap:12px;border-bottom:1px solid #eee}
.monitor-dialog-head h3{font-size:19px;letter-spacing:-.035em;margin:0 0 4px}.monitor-dialog-head p{font-size:11px;color:#666;margin:0;line-height:1.5}
.monitor-dialog-body{padding:16px 20px 18px;overflow-y:auto;min-height:0}
.monitor-detail-summary{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}
.monitor-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}
.monitor-info-panel{border:1px solid #e1e1e1;border-radius:12px;overflow:hidden;min-width:0}
.monitor-info-panel h4{font-size:13px;margin:0;padding:12px 14px;background:#f5f5f5;border-bottom:1px solid #e8e8e8}
.monitor-info-panel dl{margin:0;padding:4px 14px 8px;display:grid;grid-template-columns:40% 60%;font-size:11px}
.monitor-info-panel dt,.monitor-info-panel dd{padding:9px 0;border-bottom:1px solid #eee;overflow-wrap:anywhere;line-height:1.45}
.monitor-info-panel dt{color:#777}.monitor-info-panel dd{margin:0;font-weight:630;min-width:0}
.monitor-info-panel dt:last-of-type,.monitor-info-panel dd:last-of-type{border-bottom:0}
.monitor-wide-panel{padding:13px 15px;border:1px solid #e4e4e4;border-radius:12px;margin-bottom:12px;font-size:12px;line-height:1.5;color:#444}
.monitor-wide-panel h4{font-size:13px;margin:0 0 8px;color:#222}.monitor-wide-panel p{margin:5px 0}
.monitor-issue-line{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}
.monitor-review-log{font-size:11px;line-height:1.6;color:#555;display:grid;gap:7px;margin:9px 0 0}
.monitor-review-log article{background:#f8f8f8;border-radius:8px;padding:9px}
.monitor-review-form{display:grid;grid-template-columns:1fr 2fr;gap:11px}
.monitor-review-form label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:620;color:#555}
.monitor-review-form select,.monitor-review-form textarea{border:1px solid #d7d7d7;border-radius:9px;padding:10px;font-size:12px;color:#222;background:white;min-width:0}
.monitor-review-form textarea{min-height:75px;resize:vertical}
.monitor-modal-actions{display:flex;justify-content:flex-end;gap:9px;padding:12px 20px;border-top:1px solid #eee}
.monitor-error{color:#843e3e;font-size:11px;margin-top:8px;min-height:13px}
@media(max-width:1180px){.monitor-table .m-hide-dudi,.monitor-table col.m-dudi{display:none}.monitor-table col.m-flags{width:135px}.monitor-table col.m-name{width:auto}}
@media(max-width:900px){.monitor-filters{grid-template-columns:1fr 1fr}.monitor-filters .search-field{grid-column:1/-1}.monitor-filters .reset-btn{grid-column:2}.monitor-table .m-hide-flags,.monitor-table col.m-flags{display:none}}
@media(max-width:720px){.monitor-filters{padding:12px;gap:9px}.monitor-table-wrap{display:none}.monitor-cards{display:grid}.monitor-summary{padding:0 12px 12px;align-items:start;flex-direction:column;gap:5px}.monitor-detail-grid{grid-template-columns:1fr}.monitor-dialog-body{padding:13px}.monitor-dialog-head{padding:14px}.monitor-modal-actions{padding:12px 14px}.monitor-review-form{grid-template-columns:1fr}.monitor-card-side{max-width:122px}}
@media(max-width:375px){.monitor-filters{grid-template-columns:1fr}.monitor-filters .search-field,.monitor-filters .reset-btn{grid-column:1}.monitor-card-top{grid-template-columns:35px minmax(0,1fr) auto;gap:7px}.monitor-card-side{max-width:100px}}


/* v1.3.1 scoped UX patch: shared pagination and accessible date-range flow. */
.student-bottom.placement-bottom{min-height:62px}
.student-paging.placement-paging{gap:9px}
.student-paging.placement-paging .placement-page-size{min-width:72px}
.student-paging.placement-paging .placement-size-trigger{width:72px;color:#242424;font-weight:650}
.student-paging.placement-paging .page-nav{color:#303030;min-width:36px}
.student-paging.placement-paging .page-nav:disabled{color:#9b9b9b;background:#f5f5f5;opacity:1}
.student-paging.placement-paging .placement-size-menu{min-width:116px}
.student-paging.placement-paging > span[id$="-page-index"],
.student-paging.placement-paging > #monitor-page-number{white-space:nowrap;font-size:12px;color:#444;font-variant-numeric:tabular-nums;min-width:37px;text-align:center}
.period-popover{width:282px;max-width:calc(100vw - 24px);overflow:visible;z-index:80}
.period-popover.range-mode{width:310px;max-width:calc(100vw - 24px)}
.period-popover.range-mode > strong,.period-popover.range-mode > button[data-period]{display:none}
.period-popover .range-box{padding:9px 8px 8px;border-top:0;grid-template-columns:minmax(0,1fr);gap:11px}
.period-popover .range-box.open{display:grid;grid-template-columns:minmax(0,1fr)}
.period-popover .range-box label{display:flex;flex-direction:column;gap:6px;min-width:0;font-size:12px;color:#343434;font-weight:640}
.period-popover .range-box input[type="date"]{display:block;box-sizing:border-box;min-height:43px;height:43px;min-width:0;width:100%;border:1px solid #cecece;border-radius:9px;background:#fff;color:#222;opacity:1;padding:7px 10px;font:500 13px Inter,Geist,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color-scheme:light;appearance:auto;-webkit-appearance:auto}
.period-popover .range-box input[type="date"]:focus-visible{outline:2px solid #555;outline-offset:1px}
.period-popover .range-box .period-range-back{color:#4c4c4c;display:inline-flex;width:max-content;min-height:28px;align-items:center;gap:6px;padding:3px 5px;font-size:11px;font-weight:600}
.period-popover .range-box .period-range-back span{font-size:22px;line-height:1}
.period-popover .range-box .period-range-heading{padding:0 5px;margin:0 0 1px;font-size:15px;color:#202020}
.period-popover .range-box .period-range-error{min-height:0;color:#923f3f;font-size:11px;margin:0;line-height:1.4}
.period-popover .range-box .period-range-error:empty{display:none}
.period-popover .range-box .apply{grid-column:1;width:100%;min-height:42px;justify-content:center;background:#222!important;color:white!important;border-radius:9px;font-size:12px;font-weight:650}
.period-popover .range-box .apply:hover{background:#444!important}
@media(max-width:720px){
 .period-popover,.period-popover.range-mode{position:fixed;top:61px;left:12px;right:12px;width:auto;max-width:none}
 .period-popover .range-box input[type="date"]{font-size:14px}
}
@media(max-width:420px){
 .student-bottom.placement-bottom{align-items:flex-start;gap:8px}
 .student-bottom.placement-bottom > span:first-child{flex-basis:100%}
 .student-bottom.placement-bottom .student-paging.placement-paging{width:100%;margin-left:0;justify-content:space-between}
}

/* v1.4 isolated Monitoring Laporan. Inherits approved v1.3.1 tokens. */
.report-page[hidden]{display:none!important}
.report-workspace{overflow:visible}
.report-workspace .student-actions{border-radius:14px 14px 0 0}
.report-filters{display:grid;grid-template-columns:minmax(230px,2fr) repeat(3,minmax(135px,1fr)) auto;gap:10px;align-items:end;padding:16px 17px;position:relative;z-index:9}
.report-filters label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:630;color:#555;min-width:0}
.report-filters .search-field{position:relative}
.report-filters .search-field input{height:39px;width:100%;min-width:0;background:white;border:1px solid #d7d7d7;border-radius:10px;padding:8px 10px 8px 34px;font-size:12px;color:#222}
.report-filters select{height:39px;width:100%;min-width:0;border:1px solid #ddd;border-radius:10px;padding:8px;font-size:12px;background:white}
.report-filters .filter-launch>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}
.report-summary{display:flex;justify-content:space-between;gap:10px;padding:0 17px 14px;color:#666;font-size:11px;line-height:1.5}
.report-table-wrap{overflow:hidden;border-top:1px solid #eee}
.report-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px}
.report-table th{text-align:left;white-space:nowrap;font-size:10.5px;font-weight:730;color:#333;background:#f4f4f4;padding:12px 9px}
.report-table td{padding:12px 9px;border-bottom:1px solid #eee;vertical-align:middle;line-height:1.45;overflow-wrap:anywhere}
.report-table tbody tr:last-child td{border-bottom:0}.report-table tbody tr:hover{background:#fafafa}
.report-table th:first-child,.report-table td:first-child{padding-left:16px}
.report-table th:last-child,.report-table td:last-child{padding-right:16px;text-align:right}
.report-table col.r-date{width:100px}.report-table col.r-name{width:18.5%}.report-table col.r-dudi{width:14.5%}.report-table col.r-summary{width:auto}.report-table col.r-photos{width:52px}.report-table col.r-state{width:92px}.report-table col.r-public{width:114px}.report-table col.r-revision{width:105px}.report-table col.r-action{width:60px}
.report-table .report-primary{font-weight:710;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.report-table .report-sub{display:block;color:#777;font-size:10px;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.report-table .report-clamp{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.report-table .report-count{text-align:center;font-variant-numeric:tabular-nums}
.report-table .report-note{display:block;font-size:10px;color:#666;margin-top:4px}
.report-table .icon-action{width:34px;height:34px}
.report-empty{padding:32px 15px;text-align:center;font-size:12px;color:#666}
.report-empty strong{display:block;margin:0 0 6px;color:#333;font-size:14px}
.report-cards{display:none;padding:0 12px 10px;gap:9px}
.report-card{background:white;border:1px solid #e4e4e4;border-radius:12px;padding:12px;min-width:0}
.report-card-head{display:grid;grid-template-columns:37px minmax(0,1fr) auto;align-items:start;gap:9px}
.report-card-main{min-width:0}.report-card-main strong{display:block;font-size:13px;line-height:1.4;overflow-wrap:anywhere}.report-card-main small{display:block;font-size:10px;color:#777;margin-top:3px;line-height:1.45}
.report-card-flag{display:flex;flex-direction:column;align-items:flex-end;gap:5px;max-width:125px}.report-card-flag time{font-size:10px;color:#777}
.report-card-body{padding:10px 0 0;margin-top:9px;border-top:1px solid #eee;font-size:11px;color:#444;line-height:1.5}
.report-card-meta{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;color:#666;font-size:10px}
.report-card-actions{border-top:1px solid #eee;padding-top:10px;margin-top:10px}
.report-card-actions button{width:100%;min-height:44px;border:1px solid #d7d7d7;border-radius:9px;background:#fff;color:#333;font-size:12px;font-weight:640;display:flex;justify-content:center;align-items:center;gap:7px}
.report-card-actions button:hover{background:#f4f4f4}
.report-modal-layer{display:none;position:fixed;inset:0;z-index:88;background:#0007;padding:12px;align-items:center;justify-content:center}
.report-modal-layer.open{display:flex}
.report-dialog{width:min(890px,100%);max-height:95dvh;background:white;border-radius:17px;overflow:hidden;display:flex;flex-direction:column;box-shadow:0 23px 65px #0003}
.report-dialog-head{display:flex;justify-content:space-between;align-items:start;gap:12px;padding:18px 20px 13px;border-bottom:1px solid #eee}
.report-dialog-head h3{font-size:19px;letter-spacing:-.035em;margin:0 0 5px}.report-dialog-head p{font-size:11px;color:#666;line-height:1.5;margin:0}
.report-dialog-body{padding:17px 20px;overflow:auto;min-height:0}
.report-badges{display:flex;gap:7px;flex-wrap:wrap;margin:0 0 14px}
.report-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px;margin-bottom:13px}
.report-detail-panel{border:1px solid #e4e4e4;border-radius:12px;overflow:hidden;min-width:0}
.report-detail-panel h4{font-size:13px;padding:12px 14px;margin:0;background:#f5f5f5;border-bottom:1px solid #eaeaea}
.report-detail-panel dl{padding:4px 14px 9px;margin:0;display:grid;grid-template-columns:42% minmax(0,1fr);font-size:11px}
.report-detail-panel dt,.report-detail-panel dd{padding:9px 0;border-bottom:1px solid #eee;line-height:1.5;overflow-wrap:anywhere}
.report-detail-panel dt{color:#777}.report-detail-panel dd{font-weight:640;margin:0}
.report-detail-panel dt:last-of-type,.report-detail-panel dd:last-of-type{border:0}
.report-section{border:1px solid #e4e4e4;border-radius:12px;padding:13px 15px;margin-bottom:13px;min-width:0}
.report-section h4{font-size:13px;margin:0 0 10px;color:#262626}
.report-section p{font-size:12px;color:#444;line-height:1.55;margin:4px 0 10px;overflow-wrap:anywhere;white-space:pre-wrap}
.report-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.report-photo-placeholder{min-height:102px;border:1px dashed #d4d4d4;border-radius:11px;background:#f8f8f8;display:flex;justify-content:center;align-items:center;flex-direction:column;gap:8px;color:#777;text-align:center;padding:14px;font-size:11px}
.report-photo-placeholder svg{width:27px;height:27px;stroke:#777;stroke-width:1.6;fill:none}
.report-log{display:grid;gap:7px}.report-log article{font-size:11px;line-height:1.55;background:#f8f8f8;border-radius:9px;padding:10px;overflow-wrap:anywhere}.report-log article strong{font-size:11px}.report-log small{color:#777}
.report-request{border:1px solid #d6d6d6;background:#fafafa;border-radius:10px;padding:12px;margin:10px 0;font-size:11px;line-height:1.55}
.report-request b{display:block;font-size:12px;margin:0 0 5px}.report-request p{margin:3px 0;font-size:11px}
.report-review-form,.report-publish-form{display:grid;gap:9px;margin-top:12px}
.report-review-form label,.report-publish-form label{display:flex;flex-direction:column;gap:6px;color:#555;font-size:11px;font-weight:620}
.report-review-form textarea,.report-publish-form textarea,.report-review-form select{width:100%;min-width:0;border:1px solid #d5d5d5;border-radius:9px;padding:10px;color:#222;font-size:12px;background:white}
.report-review-form textarea,.report-publish-form textarea{min-height:70px;resize:vertical}
.report-inline-actions{display:flex;align-items:center;gap:8px;justify-content:flex-end;flex-wrap:wrap}
.report-error{min-height:0;font-size:11px;color:#903b3b}.report-error:empty{display:none}
.report-dialog-footer{border-top:1px solid #eee;padding:12px 20px;display:flex;justify-content:flex-end;gap:8px}
.report-muted{font-size:11px;color:#777;line-height:1.5}
@media(max-width:1320px){.report-table .r-hide-wide,.report-table col.r-hide-wide{display:none}.report-table col.r-summary{width:auto}}
@media(max-width:1120px){.report-table .r-hide-mid,.report-table col.r-hide-mid{display:none}.report-filters{grid-template-columns:minmax(200px,2fr) repeat(3,minmax(105px,1fr)) auto}}
@media(max-width:900px){.report-filters{grid-template-columns:1fr 1fr}.report-filters .search-field{grid-column:1/-1}.report-filters .reset-btn{grid-column:2}.report-table .r-hide-narrow,.report-table col.r-hide-narrow{display:none}}
@media(max-width:720px){.report-filters{padding:12px;gap:9px}.report-table-wrap{display:none}.report-cards{display:grid}.report-summary{padding:0 12px 12px;flex-direction:column;gap:4px}.report-detail-grid{grid-template-columns:1fr}.report-dialog-head{padding:14px}.report-dialog-body{padding:13px}.report-dialog-footer{padding:12px 14px}.report-photo-grid{grid-template-columns:1fr 1fr}.report-card-flag{max-width:118px}}
@media(max-width:375px){.report-filters{grid-template-columns:1fr}.report-filters .search-field,.report-filters .reset-btn{grid-column:1}.report-card-head{grid-template-columns:35px minmax(0,1fr) auto;gap:6px}.report-card-flag{max-width:105px}.report-photo-grid{grid-template-columns:1fr}}


/* MVP1 v1.5 — Evaluasi & Rekap; scoped new module. */
.recap-page[hidden]{display:none!important}
.recap-workspace{overflow:visible}
.recap-workspace .student-actions{border-radius:14px 14px 0 0}
.recap-filters{display:grid;grid-template-columns:minmax(220px,2.1fr) repeat(3,minmax(135px,1fr)) auto;gap:10px;align-items:end;padding:15px 17px;position:relative;z-index:9}
.recap-filters label{display:flex;flex-direction:column;gap:6px;min-width:0;color:#555;font-size:11px;font-weight:630}
.recap-filters .search-field{position:relative}
.recap-filters .search-field input{width:100%;min-width:0;height:39px;border:1px solid #d7d7d7;background:#fff;border-radius:10px;font-size:12px;color:#222;padding:8px 11px 8px 34px}
.recap-filters select{width:100%;min-width:0;height:39px;border:1px solid #d7d7d7;border-radius:10px;background:#fff;color:#222;font-size:12px;padding:8px}
.recap-filters .filter-launch>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis}
.recap-explainer{padding:0 17px 13px;color:#666;font-size:11px;line-height:1.5;display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}
.recap-table-wrap{overflow:hidden;border-top:1px solid #eee}
.recap-table{border-collapse:collapse;table-layout:fixed;width:100%;font-size:11px}
.recap-table th{background:#f4f4f4;color:#343434;font-size:10.5px;font-weight:730;white-space:nowrap;padding:12px 8px;text-align:left}
.recap-table td{padding:12px 8px;vertical-align:middle;border-bottom:1px solid #ebebeb;line-height:1.45}
.recap-table tbody tr:last-child td{border-bottom:0}
.recap-table tbody tr:hover{background:#fafafa}
.recap-table th:first-child,.recap-table td:first-child{padding-left:16px}
.recap-table th:last-child,.recap-table td:last-child{text-align:right;padding-right:16px}
.recap-table col.rc-nis{width:111px}.recap-table col.rc-name{width:auto}.recap-table col.rc-dudi{width:17%}.recap-table col.rc-guru{width:17%}.recap-table col.rc-days{width:74px}.recap-table col.rc-in{width:75px}.recap-table col.rc-out{width:75px}.recap-table col.rc-report{width:91px}.recap-table col.rc-review{width:115px}.recap-table col.rc-action{width:65px}
.recap-table .recap-name{font-weight:720;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere}
.recap-table .recap-sub{font-size:10px;color:#777;margin-top:4px;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.recap-table .recap-num{font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}
.recap-table .recap-review{font-size:10px;line-height:1.35;display:block;color:#555}
.recap-empty{padding:35px 16px;text-align:center;font-size:12px;color:#666}
.recap-empty strong{display:block;font-size:14px;color:#333;margin-bottom:6px}
.recap-cards{display:none;padding:0 12px 11px;gap:9px}
.recap-card{border:1px solid #e3e3e3;background:#fff;border-radius:12px;padding:12px;min-width:0}
.recap-card-head{display:grid;grid-template-columns:37px minmax(0,1fr) auto;gap:9px;align-items:start}
.recap-card-name{min-width:0}.recap-card-name strong{display:block;font-size:13px;line-height:1.4;overflow-wrap:anywhere}.recap-card-name small{display:block;color:#777;font-size:10px;line-height:1.45;margin-top:3px;overflow-wrap:anywhere}
.recap-card-meta{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;padding:11px 0;margin-top:10px;border-top:1px solid #eee}
.recap-card-meta span{font-size:9.5px;color:#777;display:block;line-height:1.35}.recap-card-meta b{font-size:15px;display:block;color:#222;font-variant-numeric:tabular-nums;margin-top:2px}
.recap-card-footer{display:grid;grid-template-columns:1fr;gap:8px;padding-top:10px;border-top:1px solid #eee}
.recap-card-footer button{width:100%;min-height:44px;border:1px solid #dadada;background:white;border-radius:9px;font-size:11px;font-weight:650;color:#333;display:flex;justify-content:center;align-items:center;gap:7px}
.recap-card-footer button:hover{background:#f4f4f4}
.recap-dialog-layer{display:none;position:fixed;inset:0;z-index:91;background:#0007;padding:12px;align-items:center;justify-content:center}
.recap-dialog-layer.open{display:flex}
.recap-dialog{width:min(920px,100%);max-height:95dvh;background:white;border-radius:17px;box-shadow:0 23px 65px #0003;display:flex;flex-direction:column;overflow:hidden}
.recap-dialog-head{padding:18px 20px 13px;border-bottom:1px solid #eee;display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.recap-dialog-head h3{margin:0 0 5px;font-size:19px;letter-spacing:-.035em}.recap-dialog-head p{font-size:11px;color:#666;margin:0;line-height:1.5}
.recap-dialog-body{min-height:0;overflow-y:auto;padding:16px 20px 18px}
.recap-detail-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:14px}
.recap-detail-metric{border:1px solid #e4e4e4;background:#fafafa;border-radius:11px;padding:12px;min-width:0}
.recap-detail-metric span{display:block;font-size:11px;color:#666;line-height:1.4}.recap-detail-metric b{display:block;font-size:22px;line-height:1.2;margin-top:5px;letter-spacing:-.045em}
.recap-info-note{font-size:11px;line-height:1.5;color:#666;background:#f7f7f7;border-radius:10px;padding:10px 12px;margin:0 0 13px}
.recap-detail-list{border:1px solid #e6e6e6;border-radius:11px;overflow:hidden}
.recap-detail-list table{width:100%;border-collapse:collapse;font-size:11px;table-layout:auto}
.recap-detail-list th{background:#f4f4f4;font-size:10.5px;color:#444;padding:10px;text-align:left}
.recap-detail-list td{padding:10px;border-top:1px solid #eee;vertical-align:middle;line-height:1.45}
.recap-detail-list td:last-child{white-space:nowrap}
.recap-detail-list .action-btn{padding:6px 9px;min-height:33px;font-size:10px}
.recap-detail-mobile{display:none;gap:8px}
.recap-day-card{padding:11px;border:1px solid #e5e5e5;border-radius:10px;font-size:11px;line-height:1.5}
.recap-day-card strong{font-size:12px}.recap-day-card p{margin:7px 0;color:#555}.recap-day-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:10px}.recap-day-actions button{min-height:42px;justify-content:center;font-size:11px;padding:7px 4px}
.recap-dialog-foot{display:flex;justify-content:flex-end;gap:8px;padding:12px 20px;border-top:1px solid #eee}
@media(max-width:1310px){.recap-table .recap-hide-guru,.recap-table col.rc-guru{display:none}}
@media(max-width:1130px){.recap-table .recap-hide-dudi,.recap-table col.rc-dudi{display:none}.recap-filters{grid-template-columns:minmax(210px,2fr) repeat(3,minmax(115px,1fr)) auto}}
@media(max-width:900px){.recap-table .recap-hide-mid,.recap-table col.rc-in,.recap-table col.rc-out{display:none}.recap-filters{grid-template-columns:1fr 1fr}.recap-filters .search-field{grid-column:1/-1}.recap-filters .reset-btn{grid-column:2}}
@media(max-width:720px){.recap-table-wrap{display:none}.recap-cards{display:grid}.recap-filters{padding:12px;gap:9px}.recap-explainer{padding:0 12px 12px;gap:3px}.recap-dialog-head{padding:14px}.recap-dialog-body{padding:13px}.recap-dialog-foot{padding:12px 14px}.recap-detail-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.recap-detail-list{display:none}.recap-detail-mobile{display:grid}}
@media(max-width:375px){.recap-filters{grid-template-columns:1fr}.recap-filters .search-field,.recap-filters .reset-btn{grid-column:1}.recap-card-head{grid-template-columns:35px minmax(0,1fr) auto;gap:6px}.recap-card-meta{grid-template-columns:repeat(2,minmax(0,1fr))}}


/* v1.6 — Konfigurasi admin (scoped, other modules locked). */
.config-page[hidden]{display:none!important}
.config-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);gap:16px;align-items:start;margin-bottom:16px}
.config-card{overflow:hidden;min-width:0}
.config-card-head{padding:15px 17px;border-bottom:1px solid #ececec;background:#fafafa;display:flex;align-items:start;justify-content:space-between;gap:12px}
.config-card-head h3{font-size:16px;font-weight:730;letter-spacing:-.03em;margin:0 0 4px}.config-card-head p{margin:0;color:#777;font-size:11px;line-height:1.5}
.config-section{padding:16px 17px}
.config-fields{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.config-fields label{font-size:11px;font-weight:630;color:#555;display:flex;flex-direction:column;gap:7px;min-width:0}
.config-fields label.full{grid-column:1 / -1}
.config-fields input{font:inherit;background:#fff;border:1px solid #d1d1d1;border-radius:9px;min-width:0;width:100%;min-height:40px;color:#222;padding:9px 11px;font-size:12px}
.config-fields input:focus-visible{outline:2px solid #555;outline-offset:1px}
.config-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;padding:13px 17px;border-top:1px solid #eee}
.config-note{font-size:11px;color:#666;line-height:1.6;margin:0 0 14px}
.config-note:last-child{margin-bottom:0}
.config-info-list{display:grid;gap:0}
.config-info-row{display:grid;grid-template-columns:minmax(115px,41%) minmax(0,1fr);gap:10px;border-bottom:1px solid #eee;padding:12px 0;font-size:11.5px;line-height:1.5}
.config-info-row:first-child{padding-top:1px}.config-info-row:last-child{border-bottom:0;padding-bottom:2px}
.config-info-row .config-key{color:#777}.config-info-row .config-value{font-weight:630;overflow-wrap:anywhere}
.config-policy-list{display:grid;gap:9px}.config-policy{border:1px solid #e8e8e8;border-radius:11px;padding:12px;display:grid;gap:4px}
.config-policy strong{font-size:12px;font-weight:710}.config-policy p{font-size:11px;color:#666;line-height:1.55;margin:0}
.config-pill{display:inline-block;background:#f0f0f0;border:1px solid #e4e4e4;color:#444;font-size:10px;font-weight:640;padding:5px 8px;border-radius:7px;white-space:nowrap}
.config-go{display:inline-flex;align-items:center;gap:6px;border:1px solid #d8d8d8;border-radius:9px;background:white;color:#333;font-size:11px;font-weight:630;min-height:35px;padding:7px 10px}
.config-go:hover{background:#f4f4f4}
.config-system{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.config-system article{border:1px solid #e5e5e5;border-radius:11px;padding:13px;min-width:0}
.config-system article strong{display:block;font-size:12px;margin-bottom:7px}.config-system article p{font-size:11px;color:#666;line-height:1.5;margin:8px 0 0}
.config-feedback{color:#444;font-size:11px;margin-top:10px;min-height:0;line-height:1.5;overflow-wrap:anywhere}
.config-feedback:empty{display:none}.config-feedback.error{color:#873d3d}
.config-note-panel{padding:13px 16px;margin-bottom:16px;border-radius:12px;border:1px solid #dedede;background:#fafafa;color:#555;font-size:11px;line-height:1.6}
.config-pill-inline{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
@media(max-width:1060px){.config-grid{grid-template-columns:1fr}.config-system{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.config-fields{grid-template-columns:1fr}.config-fields label.full{grid-column:1}.config-system{grid-template-columns:1fr}.config-card-head{padding:13px}.config-section{padding:13px}.config-actions{padding:12px 13px}.config-actions button{flex:1;min-height:44px}.config-info-row{grid-template-columns:minmax(100px,39%) minmax(0,1fr)}}
@media(max-width:360px){.config-info-row{grid-template-columns:1fr;gap:3px}.config-actions{display:grid;grid-template-columns:1fr}}


/* v1.7.4 Stage 2: actual participant demo image input and validation previews. */
#pv-root .pv-stage2-photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:11px 0 15px}
#pv-root .pv-stage2-slot{min-width:0;border:1px solid #dedede;background:#fcfcfc;border-radius:12px;padding:11px;display:grid;align-content:start;gap:9px}
#pv-root .pv-stage2-slot strong{font-size:11px;color:#3d3d3d}
#pv-root .pv-stage2-preview{width:100%;height:150px;border:1px dashed #d0d0d0;border-radius:10px;background:#f0f0f0;display:grid;place-items:center;color:#858585;font-size:11px;overflow:hidden;text-align:center}
#pv-root button.pv-stage2-preview{padding:0;cursor:zoom-in}
#pv-root .pv-stage2-preview img{display:block;width:100%;height:100%;object-fit:contain}
#pv-root .pv-stage2-slot input[type=file]{width:100%;max-width:100%;font-size:11px;color:#444}
#pv-root .pv-stage2-slot small{font-size:10px;color:#737373;line-height:1.5;overflow-wrap:anywhere}
#pv-root .pv-stage2-slot .pv-button{justify-self:start;min-height:32px}
#pv-root .pv-stage2-testing{display:flex;align-items:flex-start;gap:9px;color:#555;font-size:11px;line-height:1.5;margin:11px 0;padding:9px;border:1px dashed #dedede;border-radius:9px}
#pv-root .pv-stage2-testing input{margin-top:3px}
#pv-root .pv-stage2-progress{font-size:11px;font-weight:650;color:#555;margin:9px 0}
@media(max-width:510px){#pv-root .pv-stage2-photo-grid{grid-template-columns:1fr}#pv-root .pv-stage2-preview{height:175px}}

/* v1.7.4 Tahap 3 — scoped admin proof gallery, status separation & photo inspection */
.monitor-report-state{display:block;font-size:10px;line-height:1.4;color:#676767;margin-top:6px;overflow-wrap:anywhere}
.monitor-detail-summary .monitor-state-group{display:inline-flex;flex-wrap:wrap;gap:5px;align-items:center;font-size:10px;color:#666}
.monitor-detail-summary .monitor-state-group > b{font-size:10px;font-weight:700;color:#555}
.monitor-table col.m-att{width:146px}
.admin-proof-grid{display:grid;grid-template-columns:repeat(2,minmax(0,155px));gap:10px;margin:10px 0 4px}
.admin-proof-card{border:1px solid #dadada;border-radius:10px;background:#fff;padding:6px;min-width:0;color:#444;text-align:left;cursor:zoom-in}
.admin-proof-card:hover,.admin-proof-card:focus-visible{border-color:#666;background:#f7f7f7}
.admin-proof-card img{display:block;width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:7px;background:#efefef}
.admin-proof-card span{display:block;font-size:10px;font-weight:640;padding:7px 3px 2px;line-height:1.4;overflow-wrap:anywhere}
.report-photo-grid .admin-proof-grid,.report-photo-grid .admin-proof-empty{grid-column:1/-1}
.report-photo-grid .admin-proof-card{max-width:180px;width:100%}
.admin-proof-empty{margin:10px 0 5px;border:1px dashed #d7d7d7;background:#fafafa;border-radius:10px;padding:13px 14px;font-size:11px;line-height:1.55;color:#666}
.admin-photo-viewer[hidden]{display:none!important}
.admin-photo-viewer{position:fixed;z-index:950;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(0,0,0,.86);padding:14px}
.admin-photo-dialog{width:min(1050px,100%);height:min(94dvh,900px);max-height:94dvh;display:flex;flex-direction:column;overflow:hidden;background:#191919;border:1px solid #555;border-radius:15px;color:white}
.admin-photo-head{padding:11px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px}
.admin-photo-head strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.admin-photo-close,.admin-photo-arrow{border:1px solid #666;background:#303030;color:white;border-radius:10px;min-width:38px;height:38px;font-size:22px;display:grid;place-items:center;cursor:pointer}
.admin-photo-close:hover,.admin-photo-arrow:hover:not(:disabled){background:#4d4d4d}
.admin-photo-arrow:disabled{opacity:.26;cursor:not-allowed}
.admin-photo-stage{flex:1;display:flex;align-items:center;justify-content:center;gap:12px;min-height:0;padding:10px 14px}
.admin-photo-stage img{min-width:0;min-height:0;max-width:100%;max-height:100%;object-fit:contain;border-radius:7px}
.admin-photo-foot{text-align:center;color:#d1d1d1;font-size:11px;padding:9px 12px 14px;line-height:1.5}
@media(max-width:720px){.monitor-table col.m-att{width:auto}.admin-proof-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-photo-viewer{padding:5px}.admin-photo-dialog{height:calc(100dvh - 10px);max-height:calc(100dvh - 10px);border-radius:11px}.admin-photo-stage{gap:5px;padding:5px}.admin-photo-arrow{min-width:34px;width:34px;height:42px}.admin-photo-head{padding:9px 10px}}
@media(max-width:360px){.admin-photo-arrow{min-width:29px;width:29px}.admin-photo-stage{gap:3px}.admin-proof-card{padding:5px}}

/* Stage 4 scoped enhancements — verified GPS demo and revision comparison */
.stage4-compare{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:12px 0}.stage4-compare>section{padding:12px;border:1px solid #e3e3e3;border-radius:10px;background:#fcfcfc;min-width:0}.stage4-compare p{overflow-wrap:anywhere;line-height:1.5}.stage4-photo-grid{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}.stage4-photo-item{width:94px;height:76px;border:1px solid #ddd;padding:3px;background:white;border-radius:9px;cursor:zoom-in;overflow:hidden}.stage4-photo-item img{width:100%;height:100%;object-fit:cover;border-radius:5px}.stage4-versions{margin-top:17px;border-top:1px solid #ddd;padding-top:12px}.stage4-versions article{margin:9px 0;padding:12px;border:1px solid #e5e5e5;border-radius:9px;background:#fafafa}.stage4-request-photos>b{font-size:11px}.pv-stage4-auto-shift{border:1px solid #dedede;border-radius:10px;background:#fafafa;padding:12px;font-size:12px;margin:8px 0}.pv-stage4-auto-shift small{display:block;font-size:10px;color:#777;margin-top:3px}#pv-root .pv-stage4-auto-shift{font-size:12px}#pv-root #pv-stage4-special-toggle{margin-top:4px}
@media(max-width:720px){.stage4-compare{grid-template-columns:1fr}}
/* Targeted review fix: visible proof section and explicit upload test harness (demo only). */
.monitor-proof-heading{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}
.monitor-proof-heading h4{margin:0}
.monitor-proof-hint{font-size:11px;color:#666;margin:7px 0 11px;line-height:1.55}
.monitor-proof-link{display:inline-flex;gap:6px;align-items:center;border:1px solid #bbb;border-radius:9px;background:#fff;padding:8px 10px;color:#333;font-size:11px;font-weight:650}
.monitor-proof-link:hover{background:#eee}
.monitor-proof-test-form{padding:17px 20px;overflow-y:auto;min-height:0;display:grid;gap:13px}
.monitor-proof-test-form label{display:grid;gap:7px;font-size:12px;font-weight:650;color:#333}
.monitor-proof-test-form input,.monitor-proof-test-form textarea{width:100%;padding:10px;border-radius:9px;border:1px solid #ccc;font-size:12px;min-width:0;background:#fff}
.monitor-proof-test-form textarea{min-height:95px;resize:vertical;line-height:1.5}
.monitor-proof-test-note{font-size:11px;color:#666;line-height:1.55;margin:0}
.monitor-proof-test-error{font-size:11px;color:#8f3030;line-height:1.5;margin:0;min-height:0}
.monitor-proof-test-error:empty{display:none}
.monitor-proof-test-footer{display:flex;justify-content:flex-end;gap:9px;border-top:1px solid #eee;padding:13px 20px}
.monitor-proof-badge{font-size:10px;color:#555;font-weight:600;display:block;margin-top:5px}
@media(max-width:720px){.monitor-proof-test-form{padding:13px}.monitor-proof-test-footer{padding:12px 13px;flex-wrap:wrap}.monitor-proof-test-footer button{flex:1;min-height:43px}.monitor-proof-heading .monitor-proof-link{width:100%;justify-content:center}}

/* Simple reviewer path: seeded photos require NO user upload. Retain test DOM hidden for compatibility. */
#monitor-proof-test-open,#monitor-proof-saved,#monitor-proof-test-layer{display:none!important}
#monitor-proof-panel{scroll-margin-top:8px}
/* v1.7.4 Tahap 5: only QA guards, no visual changes to locked modules. */

/* v1.8.1 — ONLY PUBLIC overlay. Admin v1.7.4 and participant structures stay locked. */
#public-root[hidden],#public-detail[hidden],#public-zoom[hidden],#pub-info-dialog[hidden]{display:none!important}
#public-root{--pub-blue:#2563EB;--pub-ink:#151c2f;--pub-muted:#637086;--pub-line:#e4e9f2;--pub-white:#fff;position:fixed;inset:0;z-index:1100;background:#f8faff;color:var(--pub-ink);font-family:Inter,Geist,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;color-scheme:light;scroll-padding-top:147px}
#public-root *{box-sizing:border-box}#public-root button,#public-root input,#public-root select{font:inherit}#public-root button{cursor:pointer}#public-root button:focus-visible,#public-root a:focus-visible,#public-root input:focus-visible{outline:3px solid #2c65ef;outline-offset:3px}#public-root button:disabled{cursor:not-allowed;opacity:.42}
.pub-shell{max-width:1370px;margin:0 auto;padding-left:clamp(15px,4vw,48px);padding-right:clamp(15px,4vw,48px)}
.pub-header{position:sticky;top:0;z-index:20;background:#ffffffed;backdrop-filter:blur(14px);border-bottom:1px solid var(--pub-line)}.pub-header-in{min-height:71px;display:flex;align-items:center;gap:18px}.pub-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:inherit;min-width:0}.pub-brand-icon{background:#2563EB;color:white;width:42px;height:42px;display:grid;place-items:center;border-radius:12px;box-shadow:0 6px 18px #1657ec24}.pub-brand-icon svg{width:27px;height:27px}.pub-brand strong{display:block;font-size:15px;letter-spacing:-.04em;line-height:1.2}.pub-brand small{display:block;font-size:10px;color:var(--pub-muted);margin-top:1px}.pub-top-nav{display:flex;align-items:center;gap:3px;margin-left:auto}.pub-nav-link{background:transparent;border:0;border-radius:10px;color:#475066;padding:10px 13px;font-size:12px;font-weight:680;white-space:nowrap}.pub-nav-link:hover{background:#f0f4ff}.pub-nav-link[aria-current="page"]{color:var(--pub-blue);background:#eef3ff}.pub-nav-return{margin-left:2px;border-left:1px solid #dde4ef;padding-left:14px}.pub-btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:1px solid #d9e0ed;border-radius:11px;padding:10px 15px;min-height:42px;background:white;color:var(--pub-ink);font-size:12px;font-weight:720;line-height:1.3;text-decoration:none}.pub-btn:hover{background:#f1f5ff;border-color:#b7c8ed}.pub-btn-primary{background:var(--pub-blue);color:white;border-color:var(--pub-blue);box-shadow:0 7px 20px #2563EB2a}.pub-btn-primary:hover{background:#1D4ED8;border-color:#1D4ED8}.pub-btn-light{background:#fff;color:#202a40}.pub-mobile-nav{display:none}
.pub-content{padding-top:26px;padding-bottom:35px}.pub-view[hidden]{display:none!important}.pub-hero{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(300px,.98fr);gap:38px;align-items:center;min-height:322px;padding:22px 0 21px;position:relative}.pub-hero:before{content:'';position:absolute;right:0;top:12px;width:43%;height:78%;background:radial-gradient(circle at 55% 44%,#d5e5ffb0,transparent 72%);pointer-events:none}.pub-hero-copy{z-index:1}.pub-eyebrow{display:inline-flex;align-items:center;gap:6px;padding:7px 11px;border-radius:999px;background:#EFF6FF;color:#1D4ED8;font-size:10px;letter-spacing:.03em;font-weight:780}.pub-hero h1{font-size:clamp(30px,3.35vw,48px);letter-spacing:-.065em;font-weight:830;line-height:1.11;max-width:640px;margin:17px 0 14px}.pub-hero h1 em{font-style:normal;color:var(--pub-blue)}.pub-hero p{color:#576176;font-size:13px;line-height:1.73;max-width:570px;margin:0}.pub-hero-actions{display:flex;flex-wrap:wrap;gap:11px;margin-top:21px}.pub-hero-actions .pub-btn{min-height:46px;padding:11px 19px;font-size:13px}.pub-video-slot{min-width:0;position:relative;border-radius:20px;aspect-ratio:16/10;overflow:hidden;background:linear-gradient(130deg,#152e56,#254f9c 64%,#6a9fe9);border:6px solid white;box-shadow:0 17px 43px #173e8033;display:flex;flex-direction:column;justify-content:flex-end;color:white}.pub-video-art{position:absolute;inset:0;overflow:hidden;pointer-events:none}.pub-video-art:before{content:'';position:absolute;width:70%;height:125%;right:-10%;top:-45%;transform:rotate(24deg);background:#ffffff18;border:1px solid #ffffff29;border-radius:40px}.pub-video-lines{position:absolute;top:17%;left:12%;width:73%;display:grid;gap:9px;transform:rotate(-7deg);z-index:1}.pub-video-lines div{display:flex;align-items:center;gap:11px;background:#ffffff1a;border:1px solid #ffffff50;border-radius:10px;padding:11px 14px;font-size:10px;color:#d8e9ff;backdrop-filter:blur(3px)}.pub-video-lines span{font-size:12px;font-weight:720;color:white;flex:1}.pub-video-lines b{font-size:16px;color:#a1d9ff}.pub-video-art:after{content:'';position:absolute;width:56%;height:62%;left:12%;top:8%;border:2px solid #ffffff30;border-radius:15px;transform:rotate(-7deg);box-shadow:42px 25px 0 -6px #ffffff0f}.pub-video-photo{position:absolute;width:100%;height:100%;object-fit:cover;filter:brightness(.65);opacity:.55}.pub-video-shade{position:absolute;inset:0;background:linear-gradient(0deg,#071629eb,transparent 70%)}.pub-video-top{position:absolute;top:15px;left:17px;background:#0a1a338e;border:1px solid #ffffff38;border-radius:50px;padding:6px 10px;font-size:10px;font-weight:700}.pub-video-play{position:absolute;z-index:5;left:50%;top:46%;transform:translate(-50%,-50%);background:white;color:var(--pub-blue);border:0;width:62px;height:62px;border-radius:50%;display:grid;place-items:center;font-size:23px;box-shadow:0 9px 30px #071e4b4a}.pub-video-play:hover{transform:translate(-50%,-50%) scale(1.05)}.pub-video-caption{position:relative;z-index:2;padding:0 22px 20px}.pub-video-caption strong{display:block;font-size:20px;letter-spacing:-.04em}.pub-video-caption span{font-size:11px;color:#e3e8f2;line-height:1.5;display:block;margin-top:4px}
.pub-warning{margin:3px 0 12px;font-size:10px;color:#708096;line-height:1.55}.pub-toolbar{position:sticky;top:71px;z-index:19;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;background:#ffffffef;backdrop-filter:blur(12px);padding:12px 14px;border:1px solid var(--pub-line);border-radius:14px;box-shadow:0 5px 20px #142a570b;margin:0 0 17px}.pub-search{min-width:0;position:relative}.pub-search svg{position:absolute;left:13px;top:50%;transform:translateY(-50%);color:#77859c}.pub-search input{width:100%;height:44px;border:1px solid #dce3ee;border-radius:10px;background:white;padding:10px 12px 10px 41px;color:#24314b;font-size:12px;min-width:0}.pub-search input::placeholder{color:#7c8ba4}.pub-filter-anchor{position:relative}.pub-period-trigger{display:flex;align-items:center;gap:9px;justify-content:space-between;border:1px solid #dce3ee;border-radius:10px;background:white;min-height:44px;min-width:217px;padding:9px 12px;font-size:11px;font-weight:700;color:#303b53}.pub-period-trigger strong{font-weight:730}.pub-period-trigger[aria-expanded="true"]{border-color:#4269bd}.pub-period-menu{display:none;position:absolute;right:0;top:calc(100% + 7px);width:287px;background:white;border:1px solid #dce3ee;border-radius:14px;box-shadow:0 15px 38px #16294825;padding:7px;z-index:26}.pub-period-menu.open{display:grid;gap:2px}.pub-period-menu>button{width:100%;background:transparent;border:0;border-radius:9px;padding:10px 11px;text-align:left;font-size:12px;color:#3d4a60}.pub-period-menu>button:hover,.pub-period-menu>button[aria-selected="true"]{background:#edf3ff;color:#144cce}.pub-period-menu>button[aria-selected="true"]{font-weight:740}.pub-range{display:none;gap:9px;padding:9px}.pub-range.open{display:grid}.pub-range h3{font-size:15px;margin:0 0 2px}.pub-range label{display:grid;gap:5px;font-size:11px;color:#526079;font-weight:650}.pub-range input{height:42px;padding:8px 10px;border:1px solid #dce3ee;border-radius:9px;font-size:13px;min-width:0;width:100%;background:white;color:#26334b;color-scheme:light}.pub-range .pub-btn{width:100%}.pub-range-error{font-size:11px;color:#a33c3c;margin:0;line-height:1.5}.pub-range-error:empty{display:none}
.pub-result-bar{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;padding:4px 2px 13px}.pub-result-bar h2{font-size:19px;letter-spacing:-.04em;margin:0 0 4px}.pub-result-bar p{margin:0;color:var(--pub-muted);font-size:11px}.pub-live{display:flex;align-items:center;gap:7px;font-size:10px;color:#60718b;white-space:nowrap}.pub-live:before{content:'';width:8px;height:8px;background:#4cba91;border-radius:50%;box-shadow:0 0 0 3px #dff9ed}.pub-table-wrap{overflow:hidden;border:1px solid #e0e5ef;border-radius:15px;background:white}.pub-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:11px}.pub-table thead{background:#f2f5fa}.pub-table th{padding:13px 11px;text-align:left;color:#2b3547;font-size:10.5px;white-space:nowrap;font-weight:800}.pub-table td{padding:12px 10px;border-top:1px solid #edf0f5;line-height:1.45;vertical-align:middle;color:#3d495c;overflow-wrap:anywhere}.pub-table tr:hover td{background:#fbfcff}.pub-table th:first-child,.pub-table td:first-child{padding-left:15px}.pub-table th:last-child,.pub-table td:last-child{padding-right:15px}.pub-table col.p-col-person{width:18%}.pub-table col.p-col-company{width:15%}.pub-table col.p-col-teacher{width:14%}.pub-table col.p-col-date{width:10%}.pub-table col.p-col-presence{width:16%}.pub-table col.p-col-desc{width:17%}.pub-table col.p-col-photos{width:10%}.pub-person{display:flex;gap:9px;align-items:center}.pub-avatar{width:37px;height:39px;flex:0 0 37px;display:grid;place-items:center;font-weight:780;background:#e8efff;color:#3464cc;border-radius:10px;font-size:12px;overflow:hidden}.pub-avatar img{width:100%;height:100%;object-fit:cover}.pub-person b{font-size:11.5px;display:block;color:#192335;line-height:1.45}.pub-person small{font-size:10px;color:#79849a;display:block;margin-top:3px}.pub-company-name{color:#1c2b42;font-weight:730}.pub-company-location{display:block;color:#7b889d;font-size:10px;margin-top:5px}.pub-date{font-variant-numeric:tabular-nums}.pub-times{display:grid;gap:3px;font-size:10px}.pub-times b{font-weight:750;color:#30435e}.pub-status{display:inline-flex;max-width:100%;align-items:center;gap:5px;border-radius:8px;background:#e8f6ed;color:#1b7652;padding:5px 7px;font-size:9.5px;font-weight:750;line-height:1.3;margin-top:6px}.pub-status.pending{background:#e8efff;color:#1554d1}.pub-status.review{background:#fff3d7;color:#895b16}.pub-desc-clamp{font-size:10.5px;line-height:1.5;color:#505e75;margin:0}.pub-desc-button{background:transparent;border:0;color:var(--pub-blue);padding:2px 0;font-size:10px;font-weight:760;text-align:left;text-decoration:underline;text-underline-offset:2px}.pub-muted{font-size:10.5px;color:#909caf}.pub-thumbnails{display:flex;gap:5px;align-items:center}.pub-photo{border:1px solid #dfe5ee;background:#f4f6fb;border-radius:8px;padding:0;overflow:hidden;width:45px;height:45px;flex:0 0 45px}.pub-photo img{display:block;width:100%;height:100%;object-fit:cover}.pub-photo:hover{border-color:#3564d6}.pub-mobile-cards{display:none}.pub-mcard{border:1px solid #e1e7f0;background:white;border-radius:15px;padding:14px;display:grid;gap:12px}.pub-mhead{display:flex;gap:10px;align-items:center}.pub-mhead>div:nth-child(2){flex:1;min-width:0}.pub-mhead b{font-size:13px;line-height:1.4}.pub-mhead small{display:block;color:#7c8a9d;font-size:10px;margin-top:3px}.pub-mdate{font-size:10px;color:#738097}.pub-mmeta{display:grid;grid-template-columns:1fr 1fr;gap:9px;font-size:11px}.pub-mmeta span{display:block;color:#8a96a8;font-size:10px;margin-bottom:4px}.pub-mmeta strong{font-size:11px;color:#273650;font-weight:700}.pub-mdesc{font-size:11px;line-height:1.6;margin:0;color:#46556e}.pub-mphotos{display:flex;gap:9px;align-items:center}.pub-mphotos .pub-photo{width:calc(50% - 5px);height:91px;flex:0 1 145px}.pub-mfooter{display:flex;align-items:center;justify-content:space-between;gap:7px;border-top:1px solid #eff1f5;padding-top:11px}.pub-page-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;border:1px solid #e0e5ef;border-top:0;padding:12px 15px;background:white;border-radius:0 0 15px 15px;font-size:11px;color:#65738a}.pub-page-status{font-variant-numeric:tabular-nums}.pub-paging{display:flex;align-items:center;gap:9px;margin-left:auto}.pub-paging select{height:34px;border:1px solid #dce3ee;border-radius:8px;padding:4px 8px;background:white;color:#2b3a56;font-size:11px}.pub-page-arrow{display:grid;place-items:center;border:1px solid #dce3ee;background:white;border-radius:9px;width:36px;height:36px;font-size:19px;color:#2a3960}.pub-page-index{min-width:46px;text-align:center;color:#33415d;font-variant-numeric:tabular-nums}.pub-empty{padding:37px 18px;text-align:center;color:#66768e;font-size:12px}.pub-empty strong{display:block;color:#2b3751;font-size:14px;margin-bottom:6px}.pub-empty[hidden]{display:none}.pub-info-page{max-width:770px;margin:33px auto 90px;background:white;border:1px solid #e0e6f0;border-radius:20px;padding:30px}.pub-info-page h1{margin:0 0 11px;font-size:32px;letter-spacing:-.05em}.pub-info-page p{color:#617088;line-height:1.7}.pub-info-page .pub-btn{margin-top:10px}
.pub-footer{border-top:1px solid var(--pub-line);background:#f1f5fc;margin-top:37px}.pub-footer-in{padding-top:22px;padding-bottom:22px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:15px}.pub-footer-copy{font-size:10px;color:#6f7c90}.pub-footer-nav{display:flex;gap:14px;flex-wrap:wrap}.pub-footer-nav button{background:transparent;border:0;padding:4px;color:#56657f;font-size:11px}.pub-footer-nav button:hover{text-decoration:underline}.pub-bottom-gap{display:none}
#public-detail{position:fixed;inset:0;z-index:1110;background:#0c1634a8;padding:13px;display:flex;align-items:center;justify-content:center}#public-detail .pub-modal{width:min(650px,100%);max-height:91dvh;display:flex;flex-direction:column;background:white;border-radius:17px;overflow:hidden}#public-detail .pub-modal-head{padding:15px 19px;border-bottom:1px solid #e7ebf3;display:flex;align-items:start;justify-content:space-between;gap:12px}#public-detail .pub-modal-head h2{font-size:18px;margin:0 0 4px}#public-detail .pub-modal-head p{font-size:11px;color:#6b7790;margin:0}#public-detail .pub-modal-scroll{padding:20px;overflow:auto;line-height:1.75;color:#485673;font-size:13px;white-space:pre-wrap;overflow-wrap:anywhere}#public-detail .pub-modal-foot{padding:12px 19px;border-top:1px solid #e7ebf3;text-align:right}
#public-zoom{position:fixed;inset:0;z-index:1120;display:flex;align-items:center;justify-content:center;background:#070d1aeb;padding:12px}#public-zoom .pub-zoom-dialog{width:min(1030px,100%);height:min(93dvh,850px);background:#161f32;border-radius:14px;display:flex;flex-direction:column;color:white;overflow:hidden}#public-zoom .pub-zoom-top{padding:10px 14px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px}#public-zoom .pub-zoom-stage{flex:1;display:flex;align-items:center;justify-content:space-between;gap:7px;min-height:0;padding:10px}#public-zoom .pub-zoom-stage img{min-height:0;max-width:calc(100% - 90px);max-height:100%;object-fit:contain;border-radius:6px}#public-zoom .pub-zoom-stage button{width:38px;height:42px;border:1px solid #6e7787;border-radius:9px;background:#34405a;color:white;font-size:24px}#public-zoom .pub-zoom-foot{text-align:center;padding:10px 12px;font-size:11px;color:#dce3ed}
#pub-info-dialog{position:fixed;z-index:1130;inset:0;display:flex;align-items:center;justify-content:center;background:#101936ad;padding:14px}#pub-info-dialog .pub-info-box{background:white;border-radius:17px;padding:25px;width:min(470px,100%);box-shadow:0 16px 60px #0003}#pub-info-dialog h2{font-size:20px;letter-spacing:-.045em;margin:0 0 9px}#pub-info-dialog p{font-size:12px;line-height:1.7;color:#596882}#pub-info-dialog .pub-info-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;margin-top:20px}
@media(max-width:1150px){.pub-table{font-size:10.3px}.pub-table th,.pub-table td{padding-left:7px;padding-right:7px}.pub-table col.p-col-person{width:18%}.pub-table col.p-col-presence{width:17%}.pub-table col.p-col-photos{width:11%}.pub-photo{width:39px;height:39px;flex-basis:39px}.pub-top-nav .pub-nav-link{padding:10px 9px}}
@media(max-width:920px){.pub-table-wrap{display:none}.pub-mobile-cards{display:grid;gap:11px}.pub-hero{gap:19px;min-height:0;grid-template-columns:1fr 1fr}.pub-hero h1{font-size:clamp(27px,3.6vw,36px)}.pub-video-slot{aspect-ratio:4/4}.pub-header-in{min-height:65px}.pub-toolbar{top:65px}.pub-nav-return{display:none}}
@media(max-width:700px){#public-root{scroll-padding-top:130px}.pub-header-in{min-height:58px}.pub-top-nav{display:none}.pub-header .pub-brand{margin-right:auto}.pub-header .pub-brand-icon{height:35px;width:35px;border-radius:10px}.pub-header .pub-brand-icon svg{width:22px;height:22px}.pub-header .pub-brand strong{font-size:14px}.pub-header .pub-brand small{font-size:9px}.pub-header-exit{font-size:10px;min-height:33px;padding:6px 9px}.pub-content{padding-top:13px;padding-bottom:15px}.pub-hero{grid-template-columns:1fr;gap:15px;padding:8px 0 14px}.pub-hero h1{font-size:clamp(26px,7.7vw,35px);margin:12px 0 10px}.pub-hero p{font-size:11.5px;line-height:1.6}.pub-eyebrow{font-size:9px}.pub-hero-actions{margin-top:14px;display:grid;grid-template-columns:1fr;gap:8px}.pub-hero-actions .pub-btn{min-height:43px;font-size:12px}.pub-video-slot{aspect-ratio:16/8.3;border-width:4px;border-radius:14px}.pub-video-play{width:45px;height:45px;font-size:18px}.pub-video-caption{padding:0 14px 12px}.pub-video-caption strong{font-size:14px}.pub-video-caption span{font-size:9px}.pub-video-top{top:8px;left:10px;font-size:9px}.pub-warning{font-size:9px;line-height:1.45}.pub-toolbar{top:58px;padding:9px;border-radius:11px;display:grid;grid-template-columns:minmax(0,1fr);gap:7px}.pub-search input{height:39px;font-size:11px}.pub-period-trigger{min-height:39px;width:100%;min-width:0}.pub-period-menu{left:0;right:0;width:auto}.pub-result-bar h2{font-size:17px}.pub-live{font-size:9px}.pub-mobile-nav{display:grid;position:fixed;z-index:31;left:0;right:0;bottom:0;grid-template-columns:repeat(4,minmax(0,1fr));background:#fffefefa;border-top:1px solid #dfe6f3;box-shadow:0 -8px 26px #14254c0d;padding:7px 6px calc(7px + env(safe-area-inset-bottom));gap:3px}.pub-mobile-nav button{min-width:0;min-height:47px;display:grid;place-items:center;gap:2px;text-align:center;padding:4px 1px;background:transparent;color:#69758e;border:0;border-radius:10px;font-size:9px;font-weight:700}.pub-mobile-nav button[aria-current="page"]{background:#eaf1ff;color:#1454df}.pub-mobile-nav svg{width:18px;height:18px}.pub-mobile-nav button>span{font-size:17px;line-height:1.2;font-weight:700}.pub-footer{margin-top:15px}.pub-footer-in{padding-bottom:24px}.pub-footer-nav{display:none}.pub-bottom-gap{display:block;height:calc(75px + env(safe-area-inset-bottom))}.pub-page-footer{padding:10px;gap:9px}.pub-page-status{width:100%}.pub-paging{margin:0;width:100%;justify-content:space-between}.pub-mmeta{grid-template-columns:1fr 1fr}.pub-info-page{padding:19px;margin:16px auto 30px}.pub-info-page h1{font-size:25px}}
@media(max-width:359px){.pub-mmeta{grid-template-columns:1fr}.pub-result-bar{align-items:flex-start;flex-direction:column}.pub-video-slot{aspect-ratio:16/9}.pub-hero h1{font-size:25px}}
@media(prefers-reduced-motion:reduce){#public-root *,#public-root *:before,#public-root *:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}}


/* v1.8.2 MONOCHROME PUBLIC ONLY. Photos retain original pixels as documentary evidence. */
#public-root{--pub-blue:#2563EB;--pub-ink:#111827;--pub-muted:#6B7280;--pub-line:#E5E7EB;--pub-white:#fff;background:#F9FAFB;color:#111827}
#public-root button:focus-visible,#public-root a:focus-visible,#public-root input:focus-visible{outline-color:#222}
#public-root .pub-header{background:#ffffffef}
#public-root .pub-brand-icon{background:#202020;box-shadow:none;color:#fff}
#public-root .pub-nav-link{color:#555}#public-root .pub-nav-link:hover,#public-root .pub-nav-link[aria-current=page]{background:#efefef;color:#111}
#public-root .pub-btn{border-color:#d5d5d5;color:#222}#public-root .pub-btn:hover{border-color:#888;background:#eee}
#public-root .pub-btn-primary{background:#202020;color:white;border-color:#202020;box-shadow:none}#public-root .pub-btn-primary:hover{background:#444;color:white;border-color:#444}
#public-root .pub-hero:before{background:radial-gradient(circle at 55% 44%,#e2e2e2,transparent 72%)}
#public-root .pub-hero h1 em{color:#595959}#public-root .pub-hero p{color:#585858}
#public-root .pub-eyebrow{background:#ececec;color:#252525}
#public-root .pub-video-slot{background:linear-gradient(135deg,#111,#505050 65%,#888);box-shadow:0 18px 38px #0002}
#public-root .pub-video-shade{background:linear-gradient(0deg,#111e,transparent 75%)}#public-root .pub-video-lines div{color:#eee}#public-root .pub-video-lines b{color:#fff}
#public-root .pub-video-play{color:#111;box-shadow:0 9px 28px #0003}
#public-root .pub-warning{color:#737373}#public-root .pub-toolbar{border-color:#dedede;box-shadow:0 5px 20px #0000000c}
#public-root .pub-search input,#public-root .pub-period-trigger{border-color:#d6d6d6;color:#222}
#public-root .pub-search input::placeholder{color:#888}#public-root .pub-search svg{color:#777}
#public-root .pub-period-trigger[aria-expanded=true]{border-color:#444}#public-root .pub-period-menu{border-color:#d6d6d6;box-shadow:0 14px 38px #0002}
#public-root .pub-period-menu>button,#public-root .pub-range label{color:#444}
#public-root .pub-period-menu>button:hover,#public-root .pub-period-menu>button[aria-selected=true]{background:#eee;color:#222}
#public-root .pub-range input{border-color:#ccc;color:#222}#public-root .pub-range-error,#public-root .pub-login-error{color:#555}
#public-root .pub-live{color:#777}#public-root .pub-live:before{background:#555;box-shadow:0 0 0 3px #ddd}
#public-root .pub-table-wrap,#public-root .pub-page-footer{border-color:#ddd}#public-root .pub-table thead{background:#f0f0f0}
#public-root .pub-table th{color:#222}#public-root .pub-table td{border-color:#eee;color:#444}#public-root .pub-table tr:hover td{background:#fafafa}
#public-root .pub-avatar{background:#e5e5e5;color:#333}#public-root .pub-person b,#public-root .pub-company-name{color:#222}
#public-root .pub-person small,#public-root .pub-company-location{color:#777}#public-root .pub-times b{color:#333}
#public-root .pub-status{background:#e5e5e5;color:#222}#public-root .pub-status.pending{background:#f1f1f1;color:#444}#public-root .pub-status.review{background:#ddd;color:#222}
#public-root .pub-desc-button{color:#333}#public-root .pub-desc-clamp,#public-root .pub-mdesc{color:#444}
#public-root .pub-photo,#public-root .pub-mcard{border-color:#ddd;background:#fff}#public-root .pub-photo:hover{border-color:#444}#public-root .pub-photo img{object-fit:contain;background:#eee}#public-root .pub-mphotos .pub-photo img{object-fit:contain}
#public-root .pub-mmeta strong{color:#222}#public-root .pub-page-footer{color:#666}#public-root .pub-page-footer select,#public-root .pub-page-arrow{border-color:#ddd;color:#333}
#public-root .pub-mobile-nav{border-color:#ddd;box-shadow:0 -6px 20px #0001}#public-root .pub-mobile-nav button{color:#626262}#public-root .pub-mobile-nav button[aria-current=page]{background:#ebebeb;color:#111}
#public-root .pub-footer{background:#efefef;border-color:#ddd}
#public-detail,#pub-info-dialog{background:#0009}#public-detail .pub-modal-scroll{color:#444}#public-zoom{background:#080808ed}#public-zoom .pub-zoom-dialog{background:#171717}#public-zoom .pub-zoom-stage button{background:#303030}#public-detail .pub-btn-primary,#pub-info-dialog .pub-btn-primary{background:#222;border-color:#222;color:#fff}
#public-root .pub-info-head{padding:42px 0 36px;border-bottom:1px solid #ddd}#public-root .pub-info-head h1{font-size:clamp(32px,5vw,56px);line-height:1.1;letter-spacing:-.065em;margin:15px 0 13px}#public-root .pub-info-head p{font-size:14px;color:#666;line-height:1.7;max-width:680px}
#public-root .pub-editorial-section{padding:45px 0;border-bottom:1px solid #ddd}#public-root .pub-section-head{display:flex;align-items:end;justify-content:space-between;gap:15px;margin:0 0 23px}
#public-root .pub-section-kicker{font-size:10px;letter-spacing:.1em;font-weight:760;color:#777}#public-root .pub-section-head h2{font-size:clamp(25px,3vw,36px);letter-spacing:-.05em;line-height:1.2;margin:7px 0}#public-root .pub-section-head p{font-size:12px;color:#666;max-width:600px;line-height:1.6;margin:0}#public-root .pub-mini-count{font-size:12px;color:#777;white-space:nowrap}
#public-root .pub-partner-grid,#public-root .pub-guide-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}
#public-root .pub-partner-card{padding:22px;border:1px solid #dedede;border-radius:17px;background:white;display:flex;gap:14px;align-items:start;min-width:0}
#public-root .pub-company-glyph{display:grid;place-items:center;width:48px;height:48px;flex:0 0 48px;border-radius:12px;background:#eee;font-size:25px;color:#444}
#public-root .pub-partner-card h3{font-size:15px;letter-spacing:-.025em;margin:2px 0 8px;line-height:1.35}#public-root .pub-partner-card p{font-size:11px;color:#666;line-height:1.6;margin:0 0 15px;overflow-wrap:anywhere}#public-root .pub-partner-card small{font-size:10px;color:#777}
#public-root .pub-directory-search{display:grid;gap:7px;color:#555;font-size:11px;font-weight:650;max-width:400px;margin:0 0 17px}#public-root .pub-directory-search input{width:100%;background:#fff;border:1px solid #ccc;border-radius:10px;padding:12px 13px;font-size:12px;color:#222}
#public-root .pub-placement-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}#public-root .pub-placement-group{background:#fff;border:1px solid #ddd;border-radius:15px;overflow:hidden;min-width:0}#public-root .pub-placement-head{padding:15px 18px;background:#f1f1f1;display:flex;justify-content:space-between;align-items:center;gap:9px}#public-root .pub-placement-head h3{margin:0;font-size:14px}#public-root .pub-placement-head span{font-size:11px;color:#777;white-space:nowrap}#public-root .pub-placement-items{max-height:380px;overflow:auto;padding:6px 16px}#public-root .pub-placement-person{display:flex;align-items:center;gap:10px;padding:10px 0;border-bottom:1px solid #eee}#public-root .pub-placement-person:last-child{border:0}#public-root .pub-placement-person strong{display:block;font-size:12px}#public-root .pub-placement-person small{font-size:10px;color:#777;display:block;margin-top:3px}
#public-root .pub-guide-card{border:1px solid #ddd;border-radius:16px;background:#fff;padding:20px;min-width:0}#public-root .pub-guide-top{display:flex;align-items:center;gap:12px;border-bottom:1px solid #eee;padding-bottom:16px}#public-root .pub-guide-avatar{width:51px;height:51px;display:grid;place-items:center;background:#e8e8e8;border-radius:50%;font-weight:750;flex:0 0 51px}#public-root .pub-guide-top h3{margin:0 0 4px;font-size:14px}#public-root .pub-guide-top p{font-size:11px;color:#666;margin:0}#public-root .pub-guide-students{display:grid;gap:9px;padding-top:16px}#public-root .pub-guide-students>strong{font-size:11px}#public-root .pub-guide-students>span{font-size:11px}#public-root .pub-guide-students small{color:#777}#public-root .pub-directory-empty{color:#777;font-size:12px}
#public-root .pub-major-content{padding:38px 0 24px}#public-root .pub-major-intro{max-width:750px}#public-root .pub-major-intro h2{font-size:clamp(27px,3.2vw,39px);line-height:1.2;letter-spacing:-.05em;margin:10px 0}#public-root .pub-major-intro p{font-size:13px;line-height:1.7;color:#666}
#public-root .pub-major-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:25px 0 18px}#public-root .pub-major-card{background:#fff;border:1px solid #ddd;border-radius:18px;padding:26px;min-height:260px}#public-root .pub-major-card>span{font-size:10px;letter-spacing:.07em;color:#777;font-weight:700}#public-root .pub-major-card h3{font-size:23px;letter-spacing:-.04em;margin:13px 0}#public-root .pub-major-card p{font-size:12px;color:#666;line-height:1.7}#public-root .pub-major-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:18px}#public-root .pub-major-tags span{font-size:10px;border:1px solid #ddd;border-radius:30px;padding:7px 10px}#public-root .pub-major-profile{display:flex;gap:15px;align-items:center;margin-top:26px}#public-root .pub-major-profile-avatar{width:72px;height:72px;border-radius:16px;background:#eee;display:grid;place-items:center;font-size:35px;color:#777;flex:0 0 72px}#public-root .pub-major-profile strong{font-size:14px}
#public-root .pub-login-layout{display:grid;grid-template-columns:1.1fr minmax(310px,.9fr);gap:30px;align-items:center;min-height:65vh;padding:30px 0 65px}#public-root .pub-login-story h1{font-size:clamp(38px,5vw,66px);letter-spacing:-.07em;line-height:1.08;max-width:650px;margin:20px 0 20px}#public-root .pub-login-story p{font-size:14px;line-height:1.75;color:#666;max-width:520px}#public-root .pub-login-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:36px;max-width:550px}#public-root .pub-login-steps>div{display:grid;gap:12px;border-top:1px solid #bbb;padding-top:13px;font-size:11px}#public-root .pub-login-steps b{font-size:22px;letter-spacing:-.05em}
#public-root .pub-login-panel{background:white;border:1px solid #ddd;border-radius:22px;padding:clamp(22px,3vw,37px);box-shadow:0 12px 40px #0000000c}#public-root .pub-login-panel h2{font-size:29px;letter-spacing:-.05em;margin:9px 0}#public-root .pub-login-panel>p{font-size:12px;color:#666;line-height:1.6;margin:0 0 23px}#public-root .pub-login-roles{margin:0 0 19px;border:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:9px}#public-root .pub-login-roles legend{font-size:11px;font-weight:700;color:#555;margin-bottom:8px}#public-root .pub-login-roles label{position:relative;display:grid;place-items:center;min-height:47px;border:1px solid #ddd;border-radius:10px;cursor:pointer;font-size:12px;font-weight:700}#public-root .pub-login-roles label:has(input:checked){border-color:#222;background:#eee}#public-root .pub-login-roles input{position:absolute;opacity:0;inset:0;width:100%;cursor:pointer}#public-root .pub-login-roles label:focus-within{outline:2px solid #333;outline-offset:2px}
#public-root .pub-login-field{display:grid;gap:8px;font-size:11px;color:#555;font-weight:650}#public-root .pub-login-field input{height:47px;border:1px solid #ccc;border-radius:10px;padding:12px;font-size:13px;color:#222}#public-root .pub-login-notice{font-size:10px;line-height:1.6;color:#666;background:#f3f3f3;border-radius:10px;padding:12px;margin:13px 0 18px}#public-root .pub-login-submit{width:100%;min-height:49px;font-size:13px}#public-root .pub-login-error{font-size:11px;min-height:14px}#public-root .pub-login-back{border:0;background:none;padding:10px 0;color:#555;font-size:12px;font-weight:650;margin-top:9px}
#public-root .pub-footer-in{display:grid;grid-template-columns:1.25fr .7fr 1fr;gap:25px;align-items:start;padding-top:35px;padding-bottom:32px}#public-root .pub-footer-in strong{display:block;font-size:13px;margin-bottom:12px}#public-root .pub-footer-in p{color:#666;font-size:11px;line-height:1.65;max-width:300px}#public-root .pub-footer-in small{font-size:10px;color:#777}#public-root .pub-footer-links,#public-root .pub-footer-contact{display:grid;justify-items:start;align-content:start;gap:9px}#public-root .pub-footer-links button,#public-root .pub-footer-contact button{border:0;background:transparent;color:#444;padding:0;font-size:11px;text-align:left;text-decoration:underline;text-decoration-color:#bbb;text-underline-offset:3px}#public-root .pub-footer-contact p{margin:0 0 6px}
@media(max-width:920px){#public-root .pub-partner-grid,#public-root .pub-guide-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#public-root .pub-login-layout{grid-template-columns:1fr;gap:22px}#public-root .pub-login-story h1{font-size:42px}}
@media(max-width:700px){#public-root .pub-partner-grid,#public-root .pub-guide-grid,#public-root .pub-placement-list,#public-root .pub-major-grid{grid-template-columns:1fr}#public-root .pub-info-head{padding:23px 0 22px}#public-root .pub-editorial-section{padding:27px 0}#public-root .pub-section-head{align-items:start}#public-root .pub-section-head h2{font-size:25px}#public-root .pub-partner-card,#public-root .pub-guide-card,#public-root .pub-major-card{padding:17px}#public-root .pub-footer-in{grid-template-columns:1fr 1fr;gap:24px;padding-bottom:26px}#public-root .pub-footer-contact{grid-column:1/-1}#public-root .pub-footer-links{display:grid}#public-root .pub-login-layout{padding:16px 0 25px;gap:19px}#public-root .pub-login-story h1{font-size:34px;margin:13px 0}#public-root .pub-login-story p{font-size:12px}#public-root .pub-login-steps{margin-top:18px}#public-root .pub-login-panel{padding:21px;border-radius:16px}#public-root .pub-login-panel h2{font-size:25px}#public-root .pub-major-profile{align-items:flex-start}#public-root .pub-toolbar{scroll-margin-top:65px}#public-root .pub-mobile-nav{grid-template-columns:repeat(4,minmax(0,1fr))}#public-root .pub-footer-nav{display:none}#public-root .pub-video-lines{display:none}#public-root .pub-video-top{top:11px;left:11px}#public-root .pub-video-caption{padding:0 15px 15px;background:linear-gradient(0deg,#111a,#1110)}#public-root .pub-video-play{top:45%}#public-root .pub-video-caption strong{font-size:16px;line-height:1.25}#public-root .pub-video-caption span{font-size:10px;line-height:1.45}#public-root .pub-video-slot:after{content:"";position:absolute;z-index:0;inset:23% 19% 33%;border:1px solid #ffffff50;border-radius:14px;transform:rotate(-7deg);pointer-events:none}}
@media(max-width:360px){#public-root .pub-section-head{flex-direction:column}#public-root .pub-footer-in{grid-template-columns:1fr}#public-root .pub-footer-contact{grid-column:1}#public-root .pub-login-steps{gap:5px}}


/* v1.8.3: isolated public shift, email login and account demo UI. */
#public-root .pub-shift-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}
#public-root .pub-shift-company{border:1px solid #d8d8d8;border-radius:16px;background:white;overflow:hidden;min-width:0}
#public-root .pub-shift-company-head{padding:17px 18px;border-bottom:1px solid #e8e8e8;background:#f3f3f3}
#public-root .pub-shift-company-head h3{font-size:15px;margin:0 0 4px;line-height:1.4}
#public-root .pub-shift-company-head p,#public-root .pub-shift-caption{font-size:11px;color:#666;margin:0;line-height:1.6}
#public-root .pub-shift-location{border-top:1px solid #eee;padding:14px 17px}
#public-root .pub-shift-location:first-of-type{border-top:0}
#public-root .pub-shift-location summary{list-style:none;display:flex;align-items:center;gap:8px;justify-content:space-between;font-size:12px;font-weight:700;cursor:pointer}
#public-root .pub-shift-location summary::-webkit-details-marker{display:none}
#public-root .pub-shift-location summary:after{content:'+';font-size:19px;color:#444}
#public-root .pub-shift-location[open] summary:after{content:'−'}
#public-root .pub-shift-location p{font-size:10px;color:#777;line-height:1.55;margin:8px 0 10px;overflow-wrap:anywhere}
#public-root .pub-shift-list{display:grid;gap:8px;margin-top:12px}
#public-root .pub-shift-row{border:1px solid #e3e3e3;border-radius:10px;background:#fafafa;padding:11px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px;align-items:center}
#public-root .pub-shift-row strong{font-size:12px}#public-root .pub-shift-row span{display:block;font-size:10px;color:#666;margin-top:4px;line-height:1.45}
#public-root .pub-shift-row time{font-size:12px;font-variant-numeric:tabular-nums;font-weight:730;white-space:nowrap}
#public-root .pub-shift-empty{margin:0;font-size:11px;line-height:1.6;color:#666;padding:12px 0}
#public-root .pub-login-field{margin:0 0 16px}#public-root .pub-password-wrap{position:relative}#public-root .pub-password-wrap input{width:100%;padding-right:78px}
#public-root .pub-password-wrap button{position:absolute;top:50%;right:9px;transform:translateY(-50%);min-height:31px;padding:0 10px;background:#f2f2f2;border:0;border-radius:7px;color:#333;font-size:11px;font-weight:700}
#public-root .pub-login-meta{display:flex;gap:12px;align-items:center;justify-content:space-between;margin:-2px 0 15px;font-size:10px;color:#777;line-height:1.4}
#public-root .pub-login-meta button{border:0;background:none;text-decoration:underline;color:#303030;padding:3px;font-weight:700;white-space:nowrap}
#public-root .pub-login-submit:disabled{opacity:.6;cursor:wait}
#public-root .pub-login-explainer{font-size:12px;color:#666;line-height:1.65}
#public-root #pub-change-password h3{font-size:21px;letter-spacing:-.04em;margin:0 0 9px}
#public-root .pub-qa-panel{border:1px solid #b9b9b9;background:#f4f4f4;padding:15px;border-radius:12px;margin:0 0 17px}
#public-root .pub-qa-panel strong{font-size:10px;letter-spacing:.03em}#public-root .pub-qa-panel p{font-size:10px;color:#666;line-height:1.55}
#public-root .pub-qa-actions{display:flex;gap:8px;flex-wrap:wrap}#public-root .pub-qa-actions .pub-btn{flex:1;font-size:11px}
#student-account-section{margin-top:14px}#student-account-section .account-head{display:flex;justify-content:space-between;gap:12px;align-items:start}
#student-account-section .account-head h3{margin-bottom:5px}#student-account-section .account-head p,#student-account-section .account-hint{font-size:11px;line-height:1.65;color:#666;margin:7px 0 15px}
#student-account-section .account-form{display:flex;align-items:end;gap:11px;flex-wrap:wrap}
#student-account-section .account-form label{flex:1;min-width:210px;display:grid;gap:7px;font-size:11px;font-weight:640;color:#555}
#student-account-section .account-form input{border:1px solid #ccc;min-height:40px;width:100%;border-radius:9px;padding:9px 11px;font-size:12px}
#student-account-section .account-error{font-size:11px;color:#555;line-height:1.6;margin:9px 0 0}
#student-account-section .account-error:empty{display:none}
#pv-root .auth-demo-logout{border:1px solid #777;background:#fff;color:#222}
body.auth-student #pv-root [data-pv-action="admin"],body.auth-student #pv-root [data-pv-action="audit-photo"],body.auth-student #pv-admin-return{display:none!important}
@media(max-width:700px){#public-root .pub-shift-grid{grid-template-columns:1fr}#public-root .pub-shift-row{grid-template-columns:1fr}#public-root .pub-login-meta{align-items:start}#student-account-section .account-form{display:grid}#student-account-section .account-form button{width:100%}}

/* v1.8.3.1 · Informasi akun testing tanpa memunculkan pilihan peran */
#public-root .pub-demo-credentials{display:grid;gap:7px;padding:12px 13px;border:1px solid #ddd;border-radius:11px;background:#f7f7f7;margin:0 0 19px;font-size:11px;line-height:1.5;color:#444;overflow-wrap:anywhere}
#public-root .pub-demo-credentials strong{font-size:10px;letter-spacing:.05em;color:#333}
#public-root .pub-demo-credentials code{font:inherit;font-weight:700;color:#1c1c1c}
