:root{--green:#087653;--green-dark:#075b42;--mint:#e8f5ef;--ink:#17231f;--muted:#6b7872;--line:#dfe8e4;--bg:#f4f7f5;--white:#fff;--danger:#bd4040;--shadow:0 14px 38px rgba(17,61,45,.09)}

*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;min-width:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;overflow-x:hidden}
body.institution-locked{overflow:hidden}
body.institution-locked>.app-shell{visibility:hidden}
button,input,select,textarea{font:inherit;max-width:100%}
button{cursor:pointer}
.print-zone{display:none}
.institution-gate{position:fixed;inset:0;z-index:200;display:grid;place-items:center;padding:20px;background:linear-gradient(145deg,#e7f4ee,#f7faf8 50%,#dcede5)}
.institution-gate[hidden]{display:none}
.institution-card{width:min(440px,100%);max-height:calc(100dvh - 30px);overflow:auto;background:#fff;border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 28px 80px rgba(8,73,52,.18)}
.institution-logo{width:54px;height:54px;border-radius:16px;display:grid;place-items:center;margin:0 auto 14px;background:var(--green);color:#fff;font:800 28px Georgia}
.institution-kicker{text-align:center;color:var(--green);font-size:9px;font-weight:900;letter-spacing:.14em;margin:0}
.institution-card h1{text-align:center;font-size:25px;margin:5px 0 7px}
.institution-help{text-align:center;color:var(--muted);font-size:11px;line-height:1.55;margin:0 0 20px}
.institution-card form{display:grid;gap:10px}
.institution-card label{display:grid;gap:6px;font-size:10px;font-weight:800}
.institution-card input{width:100%;height:46px;border:1px solid var(--line);border-radius:10px;padding:0 12px;font-size:15px;text-transform:uppercase;outline-color:var(--green)}
.institution-primary{width:100%;min-height:43px}
.institution-divider{display:flex;align-items:center;gap:10px;color:#8a9691;font-size:9px;margin:16px 0}
.institution-divider:before,.institution-divider:after{content:"";height:1px;background:var(--line);flex:1}
.institution-card>small{display:block;color:var(--muted);font-size:9px;line-height:1.5;margin-top:15px}
.institution-message{border-radius:9px;padding:10px 12px;margin-bottom:12px;background:#fff4df;color:#77551a;font-size:10px;line-height:1.45}
.institution-message.success{background:#eaf7f0;color:var(--green)}
.institution-panel{max-width:760px}
.institution-code-card{border:1px solid #cfe5da;border-radius:14px;background:#f2faf6;padding:18px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:7px 16px;align-items:center}
.institution-code-card>span{font-size:9px;font-weight:850;color:var(--muted)}
.institution-code-card>strong{grid-row:2;font-size:20px;color:var(--green);overflow-wrap:anywhere}
.institution-code-card>.actions{grid-column:2;grid-row:1/3}
.institution-sync-status{display:grid;gap:4px;border:1px solid var(--line);border-radius:12px;padding:14px;margin-top:14px;font-size:10px}
.institution-sync-status b{color:var(--green)}
.institution-sync-status span{color:var(--muted);line-height:1.5}
.institution-sync-status.pending{background:#fff8e8;border-color:#ead39b}
.institution-sync-status.pending b{color:#815f16}
.institution-transfer-actions{display:flex;gap:9px;margin-top:16px}
.institution-send{min-width:180px}
.institution-send:disabled{opacity:.55;cursor:not-allowed}
.institution-send-note{color:var(--muted);font-size:9px;line-height:1.5;margin:8px 0 0}
.app-shell{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;width:250px;padding:24px 18px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;z-index:30}
.brand{display:flex;align-items:center;gap:12px;padding:0 8px 26px}
.brand>span{width:44px;height:44px;border-radius:13px;background:var(--green);color:#fff;display:grid;place-items:center;font:800 22px Georgia}
.brand b,.brand small{display:block}
.brand b{font-size:15px}
.brand small{font-size:9px;color:var(--muted);margin-top:3px}
.sidebar nav{display:grid;gap:5px}
.sidebar nav button{border:0;background:transparent;color:#5f6e67;border-radius:10px;padding:12px;text-align:left;font-size:11px;font-weight:800;display:flex;align-items:center;gap:10px}
.sidebar nav button i{font-style:normal;width:22px;text-align:center;font-size:16px}
.sidebar nav button:hover,.sidebar nav button.active{background:var(--mint);color:var(--green)}
.sidebar-note{margin-top:auto;background:#f0f7f4;border-radius:14px;padding:14px}
.sidebar-note b{font-size:11px}
.sidebar-note p{font-size:9px;color:var(--muted);line-height:1.55;margin:5px 0 0}
.sidebar-note.institution-session{margin-top:auto;margin-bottom:8px}
.sidebar-note.institution-session p{font-weight:900;color:var(--green);overflow-wrap:anywhere}
.sidebar-note.institution-session button{border:0;background:none;color:var(--green);padding:7px 0 0;font-size:8px;font-weight:800;text-decoration:underline}
.sidebar-note.institution-session+.sidebar-note{margin-top:0}
main{min-width:0;margin-left:250px;padding:0 30px 50px}
.topbar{height:86px;display:flex;align-items:center;justify-content:space-between}
.topbar small{color:var(--green);font-size:8px;font-weight:850;letter-spacing:.14em}
.topbar h1{margin:4px 0 0;font-size:23px}
.save-status{font-size:9px;color:var(--green);font-weight:800}
.controlbar{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px;display:flex;align-items:end;gap:10px;margin-bottom:18px;box-shadow:var(--shadow)}
.controlbar label{display:grid;gap:4px}
.controlbar label span{font-size:8px;font-weight:800;color:var(--muted)}
.controlbar input,.controlbar select{height:35px;border:0;background:#f1f6f3;border-radius:8px;padding:0 10px;font-size:10px;font-weight:750;min-width:115px}
.control-actions{margin-left:auto;display:flex;gap:7px}
.btn{border:0;border-radius:9px;background:var(--green);color:#fff;padding:9px 13px;font-size:10px;font-weight:800;white-space:nowrap}
.btn:hover{filter:brightness(.96)}
.btn.secondary{background:#fff;color:#53645d;border:1px solid var(--line)}
.btn.danger{background:#fff0f0;color:var(--danger);border:1px solid #edcaca}
.panel{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;box-shadow:var(--shadow)}
.panel+.panel{margin-top:16px}
.panel-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:15px}
.panel-head h2{font-size:16px;margin:0 0 4px}
.panel-head p{font-size:9px;color:var(--muted);margin:0}
.actions{display:flex;gap:7px;align-items:center}
.search{display:flex;align-items:center;gap:8px;border:1px solid var(--line);border-radius:9px;padding:0 10px;height:37px;min-width:240px}
.search input{border:0;outline:0;width:100%;font-size:10px}
.summary-strip{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.summary-card{border:1px solid var(--line);border-radius:12px;padding:13px;background:#fbfdfc}
.summary-card strong,.summary-card span{display:block}
.summary-card strong{font-size:21px;color:var(--green)}
.summary-card span{font-size:8px;color:var(--muted);margin-top:3px}
.table-scroll{width:100%;max-width:100%;overflow:auto;border:1px solid var(--line);border-radius:11px;max-height:calc(100vh - 280px);-webkit-overflow-scrolling:touch;overscroll-behavior-inline:contain;touch-action:pan-x pan-y;scrollbar-color:#83ad9c #edf4f1;scrollbar-width:thin}
.table-scroll::-webkit-scrollbar{width:10px;height:10px}
.table-scroll::-webkit-scrollbar-track{background:#edf4f1}
.table-scroll::-webkit-scrollbar-thumb{background:#83ad9c;border:2px solid #edf4f1;border-radius:20px}
table{border-collapse:collapse}
.bulk-table{width:max-content;min-width:100%;font-size:9px}
.bulk-table th{position:sticky;top:0;z-index:8;background:#edf4f1;color:#4d6057;border-right:1px solid #d5e1dc;border-bottom:1px solid #cbdad4;padding:8px 6px;text-align:center;min-width:70px;white-space:nowrap}
.bulk-table td{border-right:1px solid #e4ebe7;border-bottom:1px solid #e4ebe7;padding:5px;text-align:center;background:#fff}
.bulk-table tr:hover td{background:#f7fbf9}
.bulk-table input[type=number]{width:58px;height:31px;border:1px solid #dce5e1;border-radius:6px;text-align:center;font-size:11px;font-weight:800;color:var(--green);outline-color:var(--green);touch-action:pan-x pan-y}
.bulk-table .sticky-no{position:sticky;left:0;z-index:7;min-width:42px;width:42px}
.bulk-table .sticky-id{position:sticky;left:42px;z-index:7;min-width:82px;width:82px}
.bulk-table .sticky-name{position:sticky;left:124px;z-index:7;min-width:220px;width:220px;text-align:left}
.bulk-table th.sticky-no,.bulk-table th.sticky-id,.bulk-table th.sticky-name{z-index:12;background:#dfeee7}
.bulk-table td.sticky-no,.bulk-table td.sticky-id,.bulk-table td.sticky-name{background:#fff}
.bulk-table tr:hover td.sticky-no,.bulk-table tr:hover td.sticky-id,.bulk-table tr:hover td.sticky-name{background:#f7fbf9}
.bulk-table td.sticky-name b{display:block;font-size:9px}
.bulk-table td.sticky-name small{display:block;color:var(--muted);font-size:7px;margin-top:2px}
.bulk-table .attendance-head{background:#fff4df}
.bulk-table .score-head{background:#e5f3ed}
.legend{display:flex;gap:14px;flex-wrap:wrap;color:var(--muted);font-size:8px;margin-top:10px}
.legend b{color:var(--ink)}
.mobile-table-tools{display:none}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}
.form-grid .full{grid-column:1/-1}
.form-grid label,.field{display:grid;gap:5px;font-size:9px;font-weight:800}
.form-grid input,.form-grid select,.field input,.field select,.field textarea{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 10px;font-size:10px;outline-color:var(--green)}
.class-title{display:inline-flex;background:var(--mint);color:var(--green);padding:5px 9px;border-radius:20px;font-size:8px;font-weight:850}
.tp-layout{display:grid;grid-template-columns:215px minmax(0,1fr);gap:14px}
.subject-list{display:grid;gap:6px;align-content:start}
.subject-list button{border:1px solid var(--line);background:#fff;border-radius:9px;padding:10px;text-align:left;font-size:9px;font-weight:800;color:#596a63}
.subject-list button.active,.subject-list button:hover{background:var(--green);color:#fff;border-color:var(--green)}
.tp-info{border-radius:10px;background:#eff9f4;border:1px solid #cee6da;padding:10px 12px;color:#45685a;font-size:8px;line-height:1.5;margin-bottom:12px}
.tp-table{width:100%;min-width:720px;font-size:9px}
.tp-table th{background:#edf4f1;text-align:left;padding:9px;color:#4d6057}
.tp-table td{padding:6px;border-bottom:1px solid var(--line)}
.tp-table input,.tp-table textarea,.tp-table select{width:100%;border:1px solid var(--line);border-radius:6px;padding:7px;font-size:9px;resize:vertical}
.subject-selection-note{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#f2faf6;border:1px solid #d5e9df;border-radius:10px;padding:9px 11px;margin-bottom:10px;font-size:9px;color:#53685f}
.subject-selection-note b{color:var(--green)}
.subject-picker-table{min-width:900px!important}
.subject-picker-table tr.subject-disabled td{background:#f7f9f8;color:#7b8781}
.subject-picker-table tr.subject-enabled td:first-child{background:#eff9f4}
.subject-toggle{display:flex;align-items:center;gap:7px;font-size:9px;font-weight:850;color:#53645d;white-space:nowrap;cursor:pointer}
.tp-table .subject-toggle input[type=checkbox]{width:18px;height:18px;min-width:18px;margin:0;padding:0;accent-color:var(--green);cursor:pointer}
.built-in-label{display:inline-flex;align-items:center;justify-content:center;border-radius:20px;background:#eef3f1;color:#718079;padding:5px 8px;font-size:8px;font-weight:800}
.subject-empty{padding:30px 16px;text-align:center;border:1px dashed var(--line);border-radius:11px;background:#fbfdfc}
.subject-empty b{font-size:11px}.subject-empty p{margin:6px 0 0;color:var(--muted);font-size:9px}
.notes-table{width:100%;min-width:980px;font-size:9px}
.notes-table th{background:#edf4f1;padding:9px;text-align:left}
.notes-table td{padding:7px;border-bottom:1px solid var(--line)}
.notes-table input,.notes-table select{width:100%;border:1px solid var(--line);border-radius:7px;padding:8px;font-size:9px}
.notes-table .name{min-width:190px}
.preview-text{display:block;color:var(--muted);font-size:7px;line-height:1.4;margin-top:4px}
.report-toolbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:14px}
.report-toolbar .actions{justify-content:flex-end;flex-wrap:wrap}
.report-toolbar select{border:1px solid var(--line);border-radius:8px;padding:9px;font-size:10px;min-width:0}
.report-toolbar .report-class-filter{width:90px}
.report-toolbar .report-student-filter{width:175px}
.report-toolbar .report-ranking-filter{width:150px}
.report{width:min(900px,100%);margin:0 auto;color:#111;font-family:"Times New Roman",serif}
.report-page{position:relative;background:#fff;border:1px solid #bec7c2;padding:34px 50px 55px;min-height:1273px;margin-bottom:16px}
.report-title{text-align:center;font-size:16px;margin:0 0 14px;font-weight:700}
.report-id{display:grid;grid-template-columns:minmax(0,1fr) 245px;gap:35px;margin-bottom:18px}
.report-id p{display:flex;margin:2px 0;font-size:12px;line-height:1.25}
.report-id span{width:150px;flex:0 0 150px}
.report-id>div:last-child span{width:105px;flex-basis:105px}
.report table{width:100%;border-collapse:collapse;font-size:11px}
.report th,.report td{border:1px solid #111;padding:5px;vertical-align:middle;line-height:1.25}
.report thead th,.report .section-row th,.report .simple th,.absence-table th{background:#ddd;text-align:center;font-weight:700}
.report .no{width:36px;text-align:center}
.report .subject{width:225px}
.report .score{width:82px;text-align:center}
.report .competency{padding:0}
.report .competency p{margin:0;padding:7px 4px;min-height:38px;display:flex;align-items:center}
.report .competency p+p{border-top:1px solid #111}
.report .section-row th{text-align:left;padding:5px;background:#d7d7d7}
.report .section-row .no{background:#fff;font-weight:400}
.report .group-block-start .no,.report .group-block-end>td{border-bottom-width:2px}
.report-box{border:1px solid #111;margin-top:8px}
.report-box h3{font-size:12px;text-align:center;background:#eee;border-bottom:1px solid #111;margin:0;padding:3px;font-weight:700}
.report-box p{font-size:11px;margin:0;padding:7px;min-height:48px;line-height:1.35}
.simple{margin-top:8px}
.simple td{height:43px}
.report-bottom{display:grid;grid-template-columns:285px 335px;justify-content:space-between;gap:20px;margin-top:8px}
.report-bottom.no-decision{grid-template-columns:285px;justify-content:start}
.absence-table{font-size:10.5px!important}
.absence-table th{padding:3px!important}
.absence-table td{padding:2px 4px!important}
.absence-table td:nth-child(2){width:18px;text-align:center}
.absence-table td:last-child{width:88px}
.decision{border:1px solid #111;padding:5px;min-height:94px;font-size:10.5px}
.decision p,.decision>span{margin:2px 0}
.decision-line{display:flex}
.decision-line span{width:128px}
.signature{display:flex;justify-content:space-between;text-align:left;margin-top:58px;font-size:11px;line-height:1.35}
.signature>div{width:30%}
.signature>div:nth-child(2){text-align:left}
.signature-date-line{display:block;min-height:1.35em;white-space:nowrap}
.signature-gap{display:block;height:72px}
.page-foot{position:absolute;bottom:36px;left:50px;right:50px;display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;font:400 8px Arial,sans-serif;text-transform:uppercase}
.page-foot .footer-identity{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.page-number{text-transform:none;font-variant-numeric:tabular-nums;white-space:nowrap}
.page-foot .page-number{justify-self:end}
.empty{text-align:center;color:var(--muted);padding:45px 20px}
.empty h3{color:var(--ink);margin:0 0 5px}
.empty p{font-size:9px}
.modal-backdrop{display:none;position:fixed;inset:0;background:#102d226f;z-index:70;place-items:center;padding:16px}
.modal-backdrop.show{display:grid}
.modal{width:min(480px,100%);background:#fff;border-radius:17px;padding:22px;box-shadow:0 30px 80px #0004}
.modal>p{margin:0;color:var(--green);font-size:8px;font-weight:850;letter-spacing:.12em}
.modal h2{margin:5px 0 15px}
.modal-actions{display:flex;justify-content:flex-end;gap:7px;margin-top:16px}
.toast{position:fixed;right:20px;bottom:20px;background:#143d2f;color:#fff;border-radius:9px;padding:11px 14px;font-size:9px;z-index:90;box-shadow:0 15px 40px #0003}

@media(max-width:1050px){.sidebar{width:205px}
.sidebar nav button{font-size:9px}
main{margin-left:205px;padding:0 18px 40px}
.controlbar{overflow:auto}
.control-actions{margin-left:0}
.summary-strip{grid-template-columns:1fr 1fr}
.tp-layout{grid-template-columns:1fr}
.subject-list{display:flex;overflow:auto}
.subject-list button{min-width:150px}
}

@media(max-width:720px){.sidebar{position:sticky;inset:0 0 auto;width:auto;height:auto;padding:8px max(8px,env(safe-area-inset-right)) 8px max(8px,env(safe-area-inset-left));border-right:0;border-bottom:1px solid var(--line);box-shadow:0 5px 18px rgba(17,61,45,.08)}
.institution-gate{padding:10px}
.institution-card{padding:22px 17px;border-radius:18px}
.institution-code-card{grid-template-columns:1fr;padding:14px}
.institution-code-card>strong{grid-row:auto;font-size:18px}
.institution-code-card>.actions{grid-column:auto;grid-row:auto;display:grid;grid-template-columns:1fr 1fr;overflow:visible}
.institution-transfer-actions{display:grid;grid-template-columns:1fr 1fr}
.institution-send{width:100%;min-width:0}
.institution-send-note{font-size:11px}
.brand,.sidebar-note{display:none}
.sidebar nav{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.sidebar nav::-webkit-scrollbar{display:none}
.sidebar nav button{white-space:nowrap;min-width:max-content;min-height:42px;padding:9px 11px;font-size:12px}
.sidebar nav button i{font-size:15px}
.app-shell{display:block}
main{margin:0;padding:0 max(10px,env(safe-area-inset-right)) calc(30px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left))}
.topbar{height:72px}
.topbar h1{font-size:18px}
.topbar small{font-size:8px}
.save-status{display:block;background:var(--mint);border-radius:20px;padding:6px 8px;font-size:9px;white-space:nowrap}
.controlbar{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:8px;padding:10px;overflow:visible;border-radius:12px}
.controlbar label{min-width:0}
.controlbar input,.controlbar select{width:100%;min-width:0;height:44px;padding:0 8px;font-size:16px}
.control-actions{grid-column:1/-1;display:flex;width:100%;gap:7px;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
.control-actions .btn{flex:0 0 auto}
.btn{min-height:44px;padding:10px 13px;font-size:13px}
.panel{padding:13px;border-radius:13px}
.panel-head{align-items:flex-start;flex-direction:column}
.panel-head h2{font-size:17px}
.panel-head p{font-size:12px;line-height:1.5}
.actions{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px}
.search{min-width:210px;height:44px}
.search input{font-size:16px}
.summary-strip{grid-template-columns:1fr 1fr}
.summary-card{padding:11px}
.summary-card strong{font-size:20px}
.summary-card span{font-size:9px;line-height:1.35}
.form-grid{grid-template-columns:1fr}
.form-grid .full{grid-column:auto}
.form-grid label,.field{font-size:12px}
.form-grid input,.form-grid select,.field input,.field select,.field textarea{min-height:44px;font-size:16px}
.mobile-table-tools{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:0 0 8px;padding:8px 10px;border:1px solid #cfe5da;border-radius:9px;background:#eff9f4;color:#45685a;font-size:11px;font-weight:750}
.mobile-table-tools div{display:flex;gap:6px}
.mobile-table-tools button{width:42px;height:42px;border:1px solid #b9d9ca;border-radius:8px;background:#fff;color:var(--green);font-size:20px;font-weight:900}
.score-scroll{max-height:calc(100dvh - 260px);min-height:320px;scroll-behavior:smooth}
.score-scroll .sticky-no,.score-scroll .sticky-id{display:none}
.score-scroll .sticky-name{left:0;min-width:150px;width:150px;max-width:150px}
.bulk-table{font-size:12px}
.bulk-table th{min-width:78px;padding:10px 6px;font-size:11px}
.bulk-table td{padding:5px 4px}
.bulk-table td.sticky-name b{font-size:11px;line-height:1.25}
.bulk-table td.sticky-name small{font-size:9px;line-height:1.35}
.bulk-table input[type=number]{width:68px;height:44px;font-size:16px}
.bulk-table input[type=number]:focus{border-color:var(--green);box-shadow:0 0 0 3px #9bd2bb66}
.legend{font-size:11px;line-height:1.45}
.subject-list button{min-height:44px;min-width:170px;font-size:12px}
.tp-info{font-size:11px}
.tp-table,.notes-table{font-size:12px}
.tp-table input,.tp-table textarea,.tp-table select,.notes-table input,.notes-table textarea,.notes-table select{min-height:44px;font-size:16px}
.notes-table textarea{min-height:82px}
.preview-text{font-size:10px}
.report-toolbar{align-items:stretch;flex-direction:column}
.report-toolbar .actions{display:grid;grid-template-columns:1fr 1fr;overflow:visible}
.report-toolbar select{grid-column:1/-1;width:100%;min-width:0;min-height:44px;font-size:16px}
.report-toolbar .report-class-filter,.report-toolbar .report-student-filter,.report-toolbar .report-ranking-filter{width:100%}
.report-toolbar .btn{width:100%}
.report{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:8px}
.report-page{width:720px;min-height:1018px;padding:28px 36px 48px}
.report-id{grid-template-columns:1fr}
.report-bottom{gap:8px}
.report-bottom.no-decision{grid-template-columns:285px}
.signature{gap:6px}
.signature>div{width:33%}
.modal-backdrop{place-items:end center;padding:0}
.modal{width:100%;max-height:calc(100dvh - env(safe-area-inset-top));border-radius:18px 18px 0 0;padding:20px 16px calc(18px + env(safe-area-inset-bottom))}
.modal-actions{position:sticky;bottom:0;background:#fff;padding-top:10px}
.toast{left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom));font-size:12px;text-align:center}
}

@media print{html,body{background:#fff;margin:0;padding:0}
.app-shell,.modal-backdrop,.toast{display:none!important}
.print-zone{display:block!important;width:210mm!important;max-width:210mm!important;margin:0!important;padding:0!important}
.report{width:210mm!important;max-width:210mm!important;margin:0!important;overflow:visible!important;padding:0!important}
.report-student{width:210mm!important;margin:0!important;padding:0!important}
.report-page{box-sizing:border-box!important;border:0;margin:0!important;width:210mm!important;max-width:210mm!important;height:297mm!important;min-height:297mm!important;max-height:297mm!important;padding:15mm 13mm 14mm!important;transform:none!important;zoom:1!important;page-break-after:always;break-after:page}
.report-page:last-child{page-break-after:always}
.report-student:last-child .report-page:last-child{page-break-after:auto}
.page-foot{bottom:9mm;left:13mm;right:13mm}
@page{size:210mm 297mm;margin:0}
}


.text-btn{border:0;background:none;color:var(--green);font-size:inherit;padding:0;text-decoration:underline}
.muted{margin:3px 0 0;color:var(--muted);font-size:9px}
.warning{margin:0 0 14px;padding:11px 13px;border:1px solid #e7c783;background:#fff8e7;border-radius:10px;color:#6f551b;font-size:9px}
.warning b{margin-right:5px}
.print-rule{margin-top:16px;padding:13px;border:1px solid #cfe5da;background:#f0f8f4;border-radius:10px;display:grid;gap:4px;font-size:9px}
.print-rule b{color:var(--green)}
.notes-table textarea{width:100%;border:1px solid var(--line);border-radius:7px;padding:8px;font-size:9px;resize:vertical}
.notes-table.no-decision{min-width:800px}
.modal{max-height:92vh;overflow:auto}
.cover-page{text-align:left;display:flex;flex-direction:column;align-items:center;padding-top:90px}
.cover-logo-wrap{width:130px;height:130px;display:flex;align-items:center;justify-content:center;margin-bottom:24px}
.cover-logo{display:block;max-width:100%;max-height:100%;object-fit:contain}
.cover-document-title{text-align:center;font-size:23px;line-height:1.12;font-weight:700;letter-spacing:.4px}
.cover-title-line{display:block;white-space:nowrap}
.cover-title-line+.cover-title-line{margin-top:7px}
.cover-profile{width:520px;margin-top:42px;font-size:16px;line-height:1.35}
.cover-profile-row{display:grid;grid-template-columns:176px 18px minmax(0,1fr);min-height:34px;align-items:start}
.cover-profile-row strong{font-weight:700}
.cover-contact{display:grid;grid-template-columns:176px 18px 160px 52px 1fr;min-height:34px;margin-top:-7px;align-items:start;font-weight:700}
.cover-contact u,.cover-contact b{white-space:nowrap}
.identity-page{padding-top:58px}
.identity-page .report-title{font-size:21px;margin-bottom:38px}
.identity-list{width:575px;margin:0 auto;font-size:15px;line-height:1.28}
.identity-line{display:grid;grid-template-columns:205px 18px minmax(0,1fr);min-height:25px;align-items:start}
.identity-line i{font-style:normal}
.identity-line b{font-weight:400}
.identity-section{display:block;min-height:25px}
.identity-lower{display:flex;justify-content:center;align-items:flex-start;gap:94px;margin-top:62px;break-inside:avoid;page-break-inside:avoid}
.identity-photo{width:126px;height:161px;border:1px solid #111}
.identity-signature{display:block;margin:0;text-align:left;font-size:15px}
.identity-signature,.identity-signature>div{width:290px;flex:0 0 290px}
.parent-response p{height:58px}
.academic-page .report-title,.notes-page .report-title{margin-bottom:14px}
.school-form{grid-template-columns:repeat(3,1fr)}
.subject-manager{max-height:390px}
.subject-manager .tp-table{min-width:760px}
.tp-info a{color:var(--green);font-weight:800}
.tp-source-note{display:inline-block;margin-top:6px;color:#5f6f68}
.continuation-table{margin:0 0 8px}
.notes-page>.report-box:first-of-type{margin-top:7px}
.teacher-box p{min-height:58px}
.notes-page .signature{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;width:100%}
.notes-page .signature>div{width:48mm;text-align:left}
.notes-page .signature>div:first-child{justify-self:center}
.notes-page .signature>div:nth-child(2){
    justify-self: end;
    text-align: left;
    transform: translateX(2mm);
}
.notes-page .signature > div:last-child {
    justify-self: end;
    text-align: left;
    transform: translateX(4mm);
}

@media(max-width:900px){.school-form{grid-template-columns:1fr 1fr}
.school-form .full{grid-column:1/-1}
}

@media(max-width:720px){.school-form{grid-template-columns:1fr}
.school-form .full{grid-column:auto}
input:not([type=file]),select,textarea{font-size:16px!important}
.app-shell{min-height:100dvh}
.class-title{font-size:10px}
.muted,.warning,.print-rule,.empty p{font-size:12px;line-height:1.5}
.modal>p{font-size:10px}
}

@media print{*{-webkit-print-color-adjust:exact;print-color-adjust:exact}
.report-page{overflow:hidden}
.cover-page{padding-top:28mm!important}
.cover-logo-wrap{width:34mm;height:34mm;margin-bottom:7mm}
.cover-document-title{font-size:16pt;line-height:1.08}
.cover-title-line{font-size:16pt}
.cover-title-line+.cover-title-line{margin-top:2mm}
.cover-profile{width:121mm;margin-top:11mm;font-size:10.5pt;line-height:1.25}
.cover-profile-row{grid-template-columns:42mm 5mm minmax(0,1fr);min-height:8mm}
.cover-contact{grid-template-columns:42mm 5mm 37mm 13mm 1fr;min-height:8mm;margin-top:-2mm}
.identity-page{padding-top:15mm}
.identity-page .report-title{font-size:15pt;margin-top:2mm;margin-bottom:8mm}
.identity-list{width:134mm;font-size:10.5pt;line-height:1.2}
.identity-line{grid-template-columns:48mm 5mm minmax(0,1fr);min-height:5.2mm}
.identity-section{min-height:5.2mm}
.identity-lower{display:flex!important;flex-direction:row!important;justify-content:center!important;align-items:flex-start!important;gap:20mm;margin-top:10mm;break-inside:avoid!important;page-break-inside:avoid!important}
.identity-photo{width:30mm;height:40mm;flex:0 0 30mm}
.identity-signature{font-size:10.5pt}
.identity-signature,.identity-signature>div{width:68mm;flex:0 0 68mm}
.academic-page{padding-top:5mm}
.academic-page .report-title{font-size:12pt;margin-bottom:4mm}
.report-id{grid-template-columns:minmax(0,1fr) 56mm;gap:8mm;margin-bottom:5mm}
.report-id p{font-size:9.2pt;margin:.4mm 0;line-height:1.15}
.report-id span{width:36mm;flex-basis:36mm}
.report-id>div:last-child span{width:27mm;flex-basis:27mm}
.academic-page table{font-size:8.8pt}
.report th,.report td{padding:1.1mm;line-height:1.25}
.report .no{width:8mm}
.report .subject{width:50mm}
.report .score{width:22mm}
.academic-page .competency p{font-size:8.4pt;min-height:9.5mm;padding:1.7mm .8mm}
.report .section-row th{height:5.8mm;padding:.8mm}
.notes-page{padding-top:6.5mm}
.continuation-table{margin-bottom:2mm}
.continuation-table,.notes-page table,.notes-page .report-box p{font-size:8.8pt}
.continuation-table .competency p{font-size:8.4pt;min-height:9.5mm;padding:1.7mm .8mm}
.report-box{margin-top:2mm}
.report-box h3{font-size:9pt;padding:.8mm}
.report-box p{font-size:8.8pt;min-height:13mm;padding:1.2mm}
.simple{margin-top:2mm}
.simple td{height:11.5mm}
.teacher-box p{min-height:15mm}
.report-bottom{grid-template-columns:65mm 78mm;gap:8mm;margin-top:2mm}
.report-bottom.no-decision{grid-template-columns:65mm;justify-content:start}
.absence-table{font-size:8.5pt!important}
.decision{min-height:23mm;padding:1mm;font-size:8.5pt}
.decision-line span{width:30mm}
.parent-response p{height:16mm}
.signature{margin-top:18mm;font-size:9pt;line-height:1.3}
.identity-lower .identity-signature{margin-top:0!important;align-self:flex-start!important}
.signature-gap{height:22mm}
.identity-signature .signature-gap{height:22mm!important}
.notes-page .signature{font-size:9pt}
.page-foot{font-size:7pt}
}

/* Safari iOS/AirPrint memakai area cetak A4 yang lebih pendek karena margin
   bawaan tidak dapat dinonaktifkan. Tinggi 297 mm akan meluber dan membuat
   satu lembar kosong tambahan hanya untuk footer. */
@supports (-webkit-touch-callout:none){
@media print and (hover:none) and (pointer:coarse){
.report-page{height:270mm!important;min-height:270mm!important;max-height:270mm!important;page-break-inside:avoid!important;break-inside:avoid-page!important}
.page-foot{bottom:5mm!important}
}
}

@media print{
body.ios-printing .report-page{height:270mm!important;min-height:270mm!important;max-height:270mm!important;page-break-inside:avoid!important;break-inside:avoid-page!important}
body.ios-printing .page-foot{bottom:5mm!important}
}
