:root{--green:#167c68;--green-dark:#0e6556;--green-soft:#eaf6f1;--blue:#3478c9;--ink:#19332e;--muted:#70807c;--line:#dce8e4;--paper:#f5f8f6;--white:#fff;--orange:#ed9a43;--shadow:0 14px 36px rgba(23,69,59,.09)}*{box-sizing:border-box}html{font-size:16px}body{margin:0;color:var(--ink);background:var(--paper);font-family:Nunito,system-ui,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a{transition:.2s ease}.eyebrow{margin:0 0 7px;color:var(--green);font:800 .72rem "Plus Jakarta Sans",sans-serif;letter-spacing:.13em}.eyebrow.light{color:#bfe9dd}.muted{color:var(--muted)}.brand{display:flex;align-items:center;gap:11px;font:800 1.12rem "Plus Jakarta Sans";color:white}.brand.dark{color:var(--ink);margin-bottom:54px}.brand small{display:block;margin-top:1px;font-size:.56rem;letter-spacing:.25em;opacity:.7}.brand-mark{display:grid;place-items:center;width:41px;height:41px;border-radius:13px;background:#fff;color:var(--green);font:900 1.3rem "Plus Jakarta Sans";box-shadow:0 6px 16px #084e4230}.brand-mark.large{width:66px;height:66px;margin:0 auto 22px;border-radius:20px;background:var(--green);color:white;font-size:2rem}.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:45px;padding:0 21px;border:1px solid transparent;border-radius:12px;font-weight:800;cursor:pointer}.btn:hover{transform:translateY(-1px)}.btn.primary{background:var(--green);color:#fff;box-shadow:0 8px 18px #167c6830}.btn.primary:hover{background:var(--green-dark)}.btn.white{background:#fff;color:var(--green)}.btn.ghost{background:#fff;border-color:var(--line);color:var(--ink)}.btn.wide{width:100%}.flash{margin:22px 32px -5px;padding:13px 18px;border-radius:11px;background:#dff5ec;color:#126550;font-weight:700}.flash.error{background:#fff0ec;color:#a1412b}.flash.floating{position:fixed;z-index:10;top:15px;left:50%;transform:translateX(-50%);margin:0;box-shadow:var(--shadow)}
.app-shell{display:grid;grid-template-columns:248px 1fr;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:248px;z-index:5;display:flex;flex-direction:column;padding:25px 18px 18px;background:linear-gradient(180deg,#126e5c,#0e5d50);color:#fff}.sidebar .brand{padding:0 10px 26px}.sidebar nav{display:flex;flex-direction:column;gap:5px}.sidebar nav a{display:flex;align-items:center;gap:13px;padding:12px 14px;border-radius:11px;color:#d4ebe5;font-weight:700}.sidebar nav a span{display:grid;place-items:center;width:25px;font-size:1.18rem}.sidebar nav a:hover,.sidebar nav a.active{background:#ffffff18;color:#fff}.sidebar nav a.active{box-shadow:inset 3px 0 #9bd8a9}.sidebar-foot{display:grid;grid-template-columns:38px 1fr 25px;align-items:center;gap:10px;margin-top:auto;padding:15px 8px 2px;border-top:1px solid #ffffff24}.sidebar-foot strong,.sidebar-foot small{display:block}.sidebar-foot strong{font-size:.82rem}.sidebar-foot small{font-size:.7rem;color:#b9d8d1}.logout{font-size:1.25rem}.avatar{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:#d8efe8;color:var(--green);font-weight:900}.avatar.large{width:55px;height:55px;font-size:1.2rem}.app-shell>main{grid-column:2;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;height:93px;padding:0 34px;background:#fff;border-bottom:1px solid var(--line)}.topbar p{margin:0 0 2px;color:var(--muted);font-size:.77rem}.topbar h1{margin:0;font:800 1.35rem "Plus Jakarta Sans"}.school-pill{display:inline-flex;align-items:center;padding:9px 13px;border-radius:99px;background:var(--green-soft);color:var(--green);font-size:.77rem;font-weight:800}.menu-toggle{display:none;background:none;border:0;font-size:1.4rem}.page-content{padding:30px 34px 50px;max-width:1500px;margin:0 auto}.section-head,.page-intro,.panel-head,.assessment-head,.exam-top{display:flex;align-items:flex-end;justify-content:space-between;gap:20px}.section-head h2,.page-intro h2,.assessment-head h2,.exam-top h2{margin:0;font:800 1.35rem "Plus Jakarta Sans"}.section-head>span{font-size:.78rem;color:var(--muted)}.page-intro{margin-bottom:24px}.page-intro p:not(.eyebrow){margin:7px 0 0;color:var(--muted)}
.welcome-card{position:relative;display:grid;grid-template-columns:1.25fr .75fr;overflow:hidden;min-height:245px;margin-bottom:29px;padding:35px 39px;border-radius:22px;background:linear-gradient(120deg,#197a66,#1d8e70);color:#fff;box-shadow:var(--shadow)}.welcome-card h2{max-width:560px;margin:12px 0 9px;font:800 2rem "Plus Jakarta Sans";line-height:1.2}.welcome-card p{max-width:590px;margin:0 0 25px;color:#ddf3ed}.welcome-badge{display:inline-block;padding:7px 11px;border-radius:99px;background:#ffffff18;font-size:.67rem;font-weight:900;letter-spacing:.1em}.welcome-art{position:relative;min-height:160px}.sun{position:absolute;right:20px;top:0;font-size:3.3rem}.hill{position:absolute;border-radius:50% 50% 0 0;background:#70bd89}.h1{width:330px;height:120px;right:-70px;bottom:-35px}.h2{width:250px;height:90px;right:80px;bottom:-45px;background:#a0d49b}.kid{position:absolute;right:118px;bottom:20px;font-size:4rem;transform:rotate(-12deg)}.tree{position:absolute;right:5px;bottom:15px;font-size:5rem;color:#0c6652}.journey{display:grid;grid-template-columns:1fr 30px 1fr 30px 1fr;align-items:center;margin:17px 0 28px}.journey-card{position:relative;display:grid;grid-template-columns:56px 1fr;gap:15px;min-height:177px;padding:23px;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:0 7px 20px #17453b0a}.journey-card:hover:not(.locked){transform:translateY(-3px);box-shadow:var(--shadow)}.journey-card.current{border-color:#8bc8b9;box-shadow:0 8px 24px #167c6815}.journey-card.locked{opacity:.57;cursor:not-allowed}.step-no{position:absolute;right:13px;top:12px;color:#9badA9;font-weight:900}.journey-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:16px;font-size:1.65rem}.journey-icon.green{background:#e3f4ec;color:var(--green)}.journey-icon.blue{background:#eaf2fd;color:var(--blue)}.journey-icon.orange{background:#fff0dc;color:var(--orange)}.journey-card small{color:var(--green);font-size:.61rem;font-weight:900;letter-spacing:.12em}.journey-card h3{margin:5px 0 7px;font-size:1rem}.journey-card p{min-height:39px;margin:0;color:var(--muted);font-size:.78rem}.journey-card b{font-size:.67rem;color:var(--muted)}.journey-line{text-align:center;color:#9cb0aa}.mini-progress{height:5px;margin:14px 0 6px;border-radius:6px;background:#e7eeeb;overflow:hidden}.mini-progress i{display:block;height:100%;background:var(--green)}.tips-grid{display:grid;grid-template-columns:1.2fr .8fr;gap:18px}.tip-card,.identity-card{display:flex;align-items:center;gap:16px;padding:20px 23px;border-radius:16px;background:#fff;border:1px solid var(--line)}.tip-card>span{font-size:1.7rem}.tip-card b,.identity-card b,.identity-card small{display:block}.tip-card p,.identity-card p{margin:3px 0 0;color:var(--muted);font-size:.8rem}.identity-card small{color:var(--muted);font-size:.64rem;font-weight:900;letter-spacing:.1em}
.admin-hero{display:flex;align-items:center;justify-content:space-between;padding:31px 34px;border-radius:20px;background:linear-gradient(120deg,#176f60,#25866c);color:#fff}.admin-hero h2{margin:6px 0;font:800 1.8rem "Plus Jakarta Sans"}.admin-hero p:last-child{margin:0;color:#d3ece6}.hero-mark{font:900 5rem "Plus Jakarta Sans";opacity:.18}.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin:22px 0}.stat-grid.compact{grid-template-columns:repeat(3,1fr)}.stat-card{display:flex;align-items:center;gap:15px;padding:21px;border-radius:15px;background:#fff;border:1px solid var(--line)}.stat-card>span{display:grid;place-items:center;width:45px;height:45px;border-radius:13px;background:var(--green-soft);color:var(--green);font-size:1.3rem}.stat-card small,.stat-card strong{display:block}.stat-card small{color:var(--muted);font-size:.72rem}.stat-card strong{font:800 1.55rem "Plus Jakarta Sans"}.dashboard-grid{display:grid;grid-template-columns:1.5fr .7fr;gap:20px}.panel{padding:24px;border-radius:17px;background:#fff;border:1px solid var(--line);box-shadow:0 5px 18px #17453b07}.panel-head{margin-bottom:17px}.panel-head h3,.quick h3{margin:2px 0;font-size:1.05rem}.panel-head>a{color:var(--green);font-size:.75rem;font-weight:800}.quick>a{display:grid;grid-template-columns:42px 1fr 15px;align-items:center;gap:11px;padding:13px 0;border-bottom:1px solid var(--line);font-size:.8rem}.quick>a>span{display:grid;place-items:center;width:39px;height:39px;border-radius:11px;background:var(--green-soft);color:var(--green);font-size:1.2rem}.quick a b,.quick a small{display:block}.quick a small{color:var(--muted)}
.assessment-head{margin-bottom:20px}.answered-count{display:flex;align-items:baseline;gap:7px}.answered-count b{font-size:1.2rem}.answered-count small{color:var(--muted)}.survey-layout{display:grid;grid-template-columns:235px 1fr;gap:22px;align-items:start}.number-panel,.exam-nav{padding:20px;border:1px solid var(--line);border-radius:16px;background:#fff}.number-panel h3,.exam-nav h3{margin:0 0 15px;font-size:.88rem}.number-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}.number-grid a{display:grid;place-items:center;aspect-ratio:1;border-radius:8px;background:#f1f5f3;color:#81908d;font-size:.72rem;font-weight:800}.number-grid a.answered{background:#dff3ea;color:var(--green)}.number-grid a.active{background:var(--green);color:#fff;box-shadow:0 5px 10px #167c6840}.legend{display:flex;gap:12px;margin-top:16px;color:var(--muted);font-size:.63rem}.legend i{display:inline-block;width:8px;height:8px;margin-right:4px;border-radius:3px}.legend i.answered{background:#dff3ea}.legend i.current{background:var(--green)}.question-card{position:relative;padding:30px 35px;border:1px solid var(--line);border-radius:18px;background:#fff;box-shadow:var(--shadow)}.question-meta{display:flex;align-items:center;justify-content:space-between;color:var(--muted);font-size:.72rem;font-weight:800}.aspect{padding:6px 10px;border-radius:99px;background:var(--green-soft);color:var(--green)}.survey-card .big-number{display:grid;place-items:center;width:44px;height:44px;margin:31px auto 17px;border-radius:14px;background:var(--green);color:#fff;font-weight:900}.survey-card h2{max-width:760px;margin:0 auto;text-align:center;font:800 1.45rem/1.45 "Plus Jakarta Sans"}.survey-card>p{margin:11px 0 27px;text-align:center;color:var(--muted);font-size:.82rem}.likert{display:grid;grid-template-columns:repeat(4,1fr);gap:11px}.likert label{position:relative;display:flex;flex-direction:column;align-items:center;gap:7px;min-height:130px;padding:18px 9px;border:2px solid var(--line);border-radius:14px;cursor:pointer;text-align:center}.likert label:hover,.likert label.selected{border-color:var(--green);background:var(--green-soft)}.likert input,.options input{position:absolute;opacity:0}.likert .emoji{font-size:2rem}.likert b{font-size:.75rem}.likert i{width:17px;height:17px;border:2px solid #bdcbc7;border-radius:50%}.likert label.selected i{border:5px solid var(--green)}.question-actions{display:flex;justify-content:space-between;margin-top:28px;padding-top:20px;border-top:1px solid var(--line)}
.completion{max-width:620px;margin:35px auto;padding:40px 60px;text-align:center;border:1px solid var(--line);border-radius:23px;background:#fff;box-shadow:var(--shadow)}.completion-icon{display:grid;place-items:center;width:75px;height:75px;margin:4px auto 22px;border-radius:50%;background:var(--green);color:#fff;font-size:2.2rem;box-shadow:0 0 0 11px var(--green-soft)}.confetti{color:var(--orange);letter-spacing:30px}.completion h2{margin:6px 0 10px;font:800 1.65rem "Plus Jakarta Sans"}.completion>p:not(.eyebrow){color:var(--muted)}.completion-info{display:flex;gap:14px;text-align:left;margin:24px 0;padding:17px;border-radius:13px;background:#f2f7f5}.completion-info>span{font-size:1.5rem}.completion-info b,.completion-info small{display:block}.completion-info small{color:var(--muted)}.completion .text-link{display:block;margin-top:19px;color:var(--muted);font-size:.75rem;font-weight:800}
.exam-top{margin-bottom:17px}.timer{display:flex;align-items:center;gap:10px;padding:9px 14px;border-radius:11px;background:#fff;border:1px solid var(--line)}.timer>span{font-size:1.35rem}.timer small,.timer b{display:block}.timer small{font-size:.58rem;color:var(--muted);font-weight:900}.timer b{font-size:1.05rem}.timer.urgent{background:#fff1ed;color:#a43d2a}.exam-progress{height:5px;margin-bottom:20px;border-radius:4px;background:#dce7e3}.exam-progress i{display:block;height:100%;background:var(--green)}.exam-layout{display:grid;grid-template-columns:.85fr 1.25fr 180px;gap:18px;align-items:start}.stimulus-card{position:sticky;top:15px;padding:24px;border-radius:17px;background:linear-gradient(145deg,#ecf7ef,#f7fbf8);border:1px solid #cfe5d8}.stimulus-label{display:inline-block;color:var(--green);font-size:.63rem;font-weight:900;letter-spacing:.08em}.stimulus-card h3{font:800 1.15rem "Plus Jakarta Sans"}.stimulus-card p{font-size:.85rem;line-height:1.72}.read-tip{display:flex;gap:10px;margin-top:20px;padding:13px;border-radius:11px;background:#fff;font-size:.72rem}.exam-question h2{display:flex;gap:13px;margin:25px 0;font:800 1.15rem/1.5 "Plus Jakarta Sans"}.exam-question h2>span{display:grid;place-items:center;flex:0 0 36px;height:36px;border-radius:11px;background:var(--green);color:#fff}.options{display:flex;flex-direction:column;gap:10px}.options label{display:grid;grid-template-columns:36px 1fr 25px;align-items:center;gap:12px;padding:12px 14px;border:2px solid var(--line);border-radius:12px;cursor:pointer}.options label:hover,.options label.selected{border-color:var(--green);background:var(--green-soft)}.options label>b{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:#f0f4f2}.options label.selected>b{background:var(--green);color:#fff}.options label i{display:none;color:var(--green)}.options label.selected i{display:block}.exam-nav p{margin:16px 0 0;color:var(--muted);font-size:.7rem;text-align:center}.exam-nav p b{color:var(--green)}
.result-hero{padding:30px;text-align:center;border-radius:20px;background:linear-gradient(120deg,#16755f,#249274);color:#fff}.result-stars{color:#ffd788;letter-spacing:14px}.result-hero h2{margin:8px 0;font:800 1.8rem "Plus Jakarta Sans"}.result-hero p:last-child{margin:0;color:#d9f0e9}.score-grid{display:grid;grid-template-columns:1fr 1fr;gap:19px;margin:20px 0}.score-card{display:flex;align-items:center;gap:23px;padding:25px;border-radius:17px;background:#fff;border:1px solid var(--line)}.ring{--p:50;display:grid;place-items:center;flex:0 0 115px;aspect-ratio:1;border-radius:50%;background:conic-gradient(var(--green) calc(var(--p)*1%),#e5eeeb 0)}.ring:before{content:"";grid-area:1/1;width:89px;aspect-ratio:1;border-radius:50%;background:#fff}.ring>div{grid-area:1/1;z-index:1;text-align:center}.ring strong,.ring small{display:block}.ring strong{font:800 1.35rem "Plus Jakarta Sans"}.ring small{font-size:.57rem;color:var(--muted)}.score-card h3{margin:5px 0;font-size:1.2rem}.score-card p{margin:0;color:var(--muted);font-size:.78rem}.score-card>div>small{color:var(--muted);font-size:.63rem;font-weight:900;letter-spacing:.1em}.character-icon{display:grid;place-items:center;flex:0 0 75px;height:75px;border-radius:20px;background:#e4f2fd;color:var(--blue);font-size:2.4rem}.score-card>strong{margin-left:auto;color:var(--blue);font-size:1.5rem}.score-card>strong small{font-size:.7rem}.result-bars{display:grid;grid-template-columns:1fr 1fr;gap:20px 35px}.result-bars span{display:flex;justify-content:space-between;font-size:.78rem}.result-bars i{display:block;height:8px;margin-top:8px;border-radius:8px;background:#e5eeeb;overflow:hidden}.result-bars em{display:block;height:100%;background:linear-gradient(90deg,var(--green),#55ae8e)}.reflection{display:flex;gap:15px;margin-top:25px;padding:19px;border-radius:13px;background:#edf8f2}.reflection p{margin:4px 0 0;color:var(--muted);font-size:.8rem}
.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}.testlet-card{padding:19px;border:1px solid var(--line);border-radius:16px;background:#fff}.testlet-top,.testlet-card footer{display:flex;justify-content:space-between;align-items:center}.testlet-top>span:first-child{color:var(--green);font-size:.67rem;font-weight:900}.testlet-visual{display:flex;align-items:center;justify-content:space-between;height:72px;margin:15px 0;padding:0 18px;border-radius:13px;background:linear-gradient(120deg,#e9f6f0,#f3f8f6);color:var(--green);font-size:2rem}.testlet-visual small{font-size:.65rem;font-weight:800}.testlet-card h3{margin:0;font-size:1rem}.testlet-card p{min-height:58px;color:var(--muted);font-size:.76rem;line-height:1.55}.testlet-card footer{padding-top:13px;border-top:1px solid var(--line);font-size:.68rem}.testlet-card footer a{color:var(--green);font-weight:900}.status,.role{display:inline-block;padding:5px 9px;border-radius:99px;font-size:.64rem;font-weight:900}.status.approved,.status.finished,.status.selesai{background:#e1f4eb;color:#16725d}.status.revision{background:#fff1dc;color:#9b641c}.status.draft,.status.in_progress{background:#eef1f0;color:#71817d}.role.admin{background:#e8ecfb;color:#4f61aa}.role.guru{background:#e3f3ec;color:#17715f}.role.reviewer{background:#fff0de;color:#9c641c}.role.siswa{background:#e9f2fd;color:#356fae}.back-link{display:inline-block;margin-bottom:16px;color:var(--muted);font-size:.75rem;font-weight:800}.stimulus-editor small{color:var(--green);font-weight:900;letter-spacing:.08em}.stimulus-editor p{line-height:1.7}.question-list{display:flex;flex-direction:column;gap:13px;margin-top:18px}.question-list article{display:grid;grid-template-columns:43px 1fr;gap:15px;padding:20px;border:1px solid var(--line);border-radius:14px;background:#fff}.question-list article>span{display:grid;place-items:center;width:38px;height:38px;border-radius:11px;background:var(--green);color:#fff;font-weight:900}.question-list h3{margin:4px 0 13px;font-size:.95rem}.compact-options{display:grid;grid-template-columns:1fr 1fr;gap:7px}.compact-options span{padding:8px;border-radius:8px;background:#f4f7f6;font-size:.72rem}.compact-options span.correct{background:#e0f3ea;color:#12634f}.review-list{display:flex;flex-direction:column;gap:15px}.review-list article{display:grid;grid-template-columns:1fr .9fr;gap:28px}.review-list h3{margin:11px 0 5px}.review-list p{color:var(--muted);font-size:.78rem}.review-list form{display:grid;grid-template-columns:140px 1fr;gap:10px}.review-list form>div{grid-column:1/3;display:flex;justify-content:flex-end;gap:8px}.review-list label,.stacked-form label,dialog label{display:flex;flex-direction:column;gap:6px;color:#475d57;font-size:.75rem;font-weight:800}input,select,textarea{width:100%;border:1.5px solid #d7e3df;border-radius:10px;background:#fff;padding:11px 12px;color:var(--ink);outline:none}input:focus,select:focus,textarea:focus{border-color:var(--green);box-shadow:0 0 0 3px #167c6812}.form-panel{max-width:700px}.stacked-form{display:flex;flex-direction:column;gap:17px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.table-wrap{overflow-x:auto}table{width:100%;border-collapse:collapse;text-align:left}th{padding:11px 12px;border-bottom:1px solid var(--line);color:var(--muted);font-size:.65rem;letter-spacing:.06em;text-transform:uppercase}td{padding:13px 12px;border-bottom:1px solid #edf2f0;font-size:.77rem}.user-cell{display:flex;align-items:center;gap:10px}.table-sub{display:block;color:var(--muted);font-size:.64rem;margin-top:2px}dialog{width:min(570px,calc(100% - 30px));border:0;border-radius:20px;padding:0;box-shadow:0 25px 80px #0a3b3240}dialog::backdrop{background:#0e362f99;backdrop-filter:blur(4px)}dialog form{position:relative;display:flex;flex-direction:column;gap:15px;padding:30px}dialog h2{margin:0 0 5px}.dialog-close{position:absolute;right:18px;top:17px;border:0;background:#eff4f2;border-radius:50%;width:32px;height:32px;font-size:1.3rem;cursor:pointer}
.detail-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.question-title-row{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}.question-title-row h3{flex:1}.text-button{padding:4px 7px;border:0;background:none;color:var(--green);font-size:.72rem;font-weight:900;cursor:pointer}.submit-review{display:flex;align-items:center;justify-content:flex-end;gap:15px;margin-top:19px;padding:16px 19px;border:1px solid var(--line);border-radius:14px;background:#fff}.submit-review span{color:var(--muted);font-size:.75rem;font-weight:800}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}
.inline-delete{display:inline-flex;margin:0}.danger-link{padding:4px 7px;border:0;background:none;color:#b24b3a;font-size:.7rem;font-weight:900;cursor:pointer}.danger-link:hover{color:#8f2f21;text-decoration:underline}.row-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.report-actions{min-width:175px}.review-history{margin-top:22px}
.question-dialog{width:min(780px,calc(100% - 30px));max-height:90vh}.question-dialog form{max-height:90vh;overflow-y:auto}.file-field{padding:11px;border:1px dashed #b9cec7;border-radius:11px;background:#f8fbfa}.file-field input{padding:7px;background:#fff}.file-field small{color:var(--muted);font-weight:600}.option-upload-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.option-upload{display:flex;flex-direction:column;gap:9px;padding:12px;border:1px solid var(--line);border-radius:12px}.image-preview{overflow:hidden;display:inline-flex;max-width:100%;margin:8px 0;border:1px solid var(--line);border-radius:10px;background:#fff}.image-preview img{display:block;max-width:100%;max-height:260px;object-fit:contain}.compact-options .image-preview{display:flex;margin:7px 0 0}.compact-options .image-preview img{max-height:90px}.options label.has-image{align-items:start}.options .image-preview{display:flex;margin-top:9px}.options .image-preview img{max-height:170px}.table-link{color:var(--green);font-weight:900;white-space:nowrap}
.report-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:22px}.report-heading h2{margin:0;font:800 1.55rem "Plus Jakarta Sans"}.report-heading p:last-child{margin:6px 0 0;color:var(--muted)}.report-score-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:19px}.report-score-grid>div{padding:21px;border:1px solid var(--line);border-radius:15px;background:#fff}.report-score-grid small,.report-score-grid strong,.report-score-grid span{display:block}.report-score-grid small{color:var(--muted);font-size:.62rem;font-weight:900;letter-spacing:.09em}.report-score-grid strong{margin:6px 0 2px;color:var(--green);font:800 1.7rem "Plus Jakarta Sans"}.report-score-grid strong em{font-size:.7rem}.report-score-grid strong.status-text{font-size:1.15rem}.report-score-grid span{color:var(--muted);font-size:.7rem}.report-two{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:18px}.testlet-analysis,.character-analysis{display:flex;flex-direction:column;gap:15px}.testlet-analysis span,.character-analysis span{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.73rem}.testlet-analysis em,.character-analysis em{color:var(--muted);font-style:normal}.testlet-analysis i,.character-analysis i{display:block;height:8px;margin-top:7px;border-radius:10px;background:#e8efed;overflow:hidden}.testlet-analysis u,.character-analysis u{display:block;height:100%;border:0;background:linear-gradient(90deg,var(--green),#71bc8f)}.character-analysis u{background:linear-gradient(90deg,#367bc9,#65a6df)}.report-description{margin-top:20px;padding:15px;border-radius:11px;background:var(--green-soft)}.report-description p{margin:5px 0 0;color:#49645e;font-size:.75rem;line-height:1.55}.report-answers .panel-head>span{color:var(--muted);font-size:.72rem}.answer-mark{display:inline-block;padding:5px 8px;border-radius:99px;font-size:.65rem;font-weight:900}.answer-mark.correct{background:#e1f4eb;color:#16725d}.answer-mark.wrong{background:#fff0ec;color:#a1412b}
.package-stats,.test-meta{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.package-stats span,.test-meta span{padding:5px 8px;border-radius:8px;background:#f0f5f3;color:var(--muted);font-size:.65rem;font-weight:800}.package-layout{display:grid;grid-template-columns:.8fr 1.2fr;gap:18px;margin-bottom:18px}.check-line{flex-direction:row!important;align-items:center}.check-line input{width:auto}.selection-list{display:flex;flex-direction:column;gap:8px;margin-bottom:17px}.selection-list label{display:flex;align-items:center;gap:11px;padding:12px;border:1px solid var(--line);border-radius:11px;cursor:pointer}.selection-list input,.student-select-grid input{width:auto}.selection-list b,.selection-list small,.student-select-grid b,.student-select-grid small{display:block}.selection-list small,.student-select-grid small{color:var(--muted)}.student-select-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.student-select-grid label{display:grid;grid-template-columns:auto 38px 1fr;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:11px}.student-test-grid{display:flex;flex-direction:column;gap:15px}.student-test-card{display:flex;align-items:center;justify-content:space-between;gap:25px;padding:24px;border:1px solid var(--line);border-radius:17px;background:#fff;box-shadow:0 5px 18px #17453b07}.student-test-card h3{margin:10px 0 5px;font:800 1.08rem "Plus Jakarta Sans"}.student-test-card p{margin:0;color:var(--muted);font-size:.78rem}.report-package-tools{display:flex;align-items:center;gap:10px}.report-package-tools select{min-width:240px}.key-target-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:7px}.key-target-grid label{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:5px;padding:7px;border:1px solid var(--line);border-radius:9px}.key-target-grid input{padding:8px;text-align:center}.key-target-grid small{grid-column:1/3;color:var(--muted);text-align:center}.field-help{display:block;margin-top:6px;color:var(--muted);font-size:.65rem}.key-distribution{margin-bottom:18px}.key-distribution-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.key-distribution-grid>div{position:relative;display:grid;grid-template-columns:auto 1fr;align-items:center;gap:3px 11px;padding:16px;border:1px solid var(--line);border-radius:13px;background:#f8fbfa}.key-distribution-grid>div.mismatch{border-color:#edbf78;background:#fff8ed}.key-distribution-grid span{grid-row:1/4;display:grid;place-items:center;width:42px;height:42px;border-radius:11px;background:var(--green);color:#fff;font-weight:900}.key-distribution-grid strong{font:800 1.25rem "Plus Jakarta Sans"}.key-distribution-grid small,.key-distribution-grid em{color:var(--muted);font-size:.65rem;font-style:normal}.distribution-note{margin:13px 0 0;color:var(--muted);font-size:.7rem}
.package-survey{margin-bottom:18px}.survey-selection-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}.survey-selection-grid label{display:grid;grid-template-columns:auto 28px 1fr;align-items:start;gap:9px;padding:11px;border:1px solid var(--line);border-radius:10px;cursor:pointer}.survey-selection-grid input{width:auto;margin-top:4px}.survey-selection-grid>b{color:var(--green)}.survey-selection-grid strong,.survey-selection-grid small{display:block}.survey-selection-grid strong{color:var(--green);font-size:.65rem}.survey-selection-grid small{margin-top:3px;color:var(--muted);font-size:.69rem}
.instrument-stats{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;margin-bottom:18px}.instrument-stats>div{padding:17px;border:1px solid var(--line);border-radius:13px;background:#fff}.instrument-stats small,.instrument-stats strong{display:block}.instrument-stats small{color:var(--muted);font-size:.65rem}.instrument-stats strong{margin-top:3px;font:800 1.35rem "Plus Jakarta Sans";color:var(--green)}.filter-bar{display:flex;align-items:center;gap:10px;margin-bottom:17px;padding:13px;border:1px solid var(--line);border-radius:14px;background:#fff}.search-field{display:flex;align-items:center;flex:1;gap:7px;color:var(--muted)}.search-field input{border:0;box-shadow:none!important}.filter-bar select{width:190px}.filter-bar .text-link{color:var(--muted);font-size:.72rem;font-weight:800}.item-number{display:grid;place-items:center;width:32px;height:32px;border-radius:9px;background:var(--green-soft);color:var(--green);font-weight:900}.direction{display:inline-block;padding:5px 8px;border-radius:99px;font-size:.65rem;font-weight:900}.direction.positive{background:#e1f4eb;color:#16725d}.direction.negative{background:#fff0e4;color:#9a5b17}.instrument-table td:nth-child(3){min-width:360px}.score-hint{display:flex;justify-content:space-between;padding:12px;border-radius:10px;background:var(--green-soft);color:#3d6259;font-size:.72rem}
.reviewer-select-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.reviewer-select-grid label{display:grid;grid-template-columns:auto 38px 1fr;align-items:center;gap:10px;padding:12px;border:1px solid var(--line);border-radius:11px}.reviewer-select-grid input{width:auto}.reviewer-select-grid b,.reviewer-select-grid small{display:block}.reviewer-select-grid small{color:var(--muted)}.package-reviewers{margin-bottom:18px}.review-assignment-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:17px}.review-assignment-card h3{margin:16px 0 6px}.review-assignment-card>p{min-height:55px;color:var(--muted);font-size:.75rem}.review-assignment-card footer{display:flex;align-items:center;justify-content:space-between;gap:10px;padding-top:14px;border-top:1px solid var(--line)}.review-stimulus{margin-bottom:18px}.review-stimulus>p:last-child{line-height:1.7}.detailed-review-list,.instrument-review-list{display:flex;flex-direction:column;gap:18px}.detailed-review{display:grid;grid-template-columns:1.25fr .75fr;gap:22px}.review-question h3{font:800 1rem/1.5 "Plus Jakarta Sans"}.review-rubric{display:flex;flex-direction:column;gap:11px;padding:17px;border-radius:13px;background:#f6f9f8}.review-rubric label{display:flex;flex-direction:column;gap:5px;color:#51655f;font-size:.7rem;font-weight:800}.review-timeline{grid-column:1/3;padding-top:17px;border-top:1px solid var(--line)}.review-timeline>div{display:grid;grid-template-columns:auto 1fr auto;gap:12px;margin-top:10px;padding:12px;border-radius:11px;background:#f5f8f7;font-size:.7rem}.review-timeline p,.review-timeline em{margin:0}.review-timeline p b,.review-timeline p small{display:block}.review-timeline p small,.review-timeline em{color:var(--muted)}.review-timeline.compact{grid-column:auto}.instrument-review-card{display:grid;grid-template-columns:1fr .8fr;gap:20px}.instrument-statement{display:grid;grid-template-columns:42px 1fr;gap:12px}.instrument-statement h3{margin:5px 0;font-size:.95rem}.instrument-statement small,.instrument-statement p{color:var(--muted);font-size:.7rem}.review-feedback{margin-top:13px;padding:13px;border-left:3px solid var(--orange);border-radius:7px;background:#fff8ed}.review-feedback p{margin:4px 0;color:#5c665f;font-size:.75rem}.review-feedback small{color:var(--muted)}.validity-section{margin-bottom:18px}.pattern-matrix{margin-bottom:18px}.pattern-matrix .panel-head>span{color:var(--muted);font-size:.7rem}.pattern-matrix td:not(:first-child){text-align:center}.pattern-matrix code{padding:5px 9px;border-radius:7px;background:#eef4f2;color:var(--green);font-weight:900;letter-spacing:.16em}.pattern-bit{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;font-weight:900}.pattern-bit.correct{background:#e1f4eb;color:#16725d}.pattern-bit.wrong{background:#fff0ec;color:#a1412b}.matrix-note{display:flex;justify-content:space-between;gap:15px;margin-top:14px;padding:13px;border-radius:10px;background:var(--green-soft);color:#3d6259;font-size:.7rem}.matrix-note span{text-align:right}
.login-layout{display:grid;grid-template-columns:1.05fr .95fr;min-height:100vh}.login-visual{position:relative;overflow:hidden;display:flex;align-items:flex-end;padding:65px;background:linear-gradient(145deg,#0e6b59,#20906f);color:#fff}.visual-copy{position:relative;z-index:2;max-width:550px}.visual-copy h1{margin:8px 0 13px;font:800 2.8rem/1.12 "Plus Jakarta Sans"}.visual-copy p:last-child{color:#d6eee7;font-size:1.02rem}.nature-orb{position:absolute;right:12%;top:13%;display:grid;place-items:center;width:285px;height:285px;border-radius:50%;background:#ffffff12;border:1px solid #ffffff20}.nature-orb span{font-size:7rem;color:#d7e997}.nature-orb i{position:absolute;right:28px;bottom:10px;font-size:5rem;color:#8dd1a0}.cloud{position:absolute;width:210px;height:50px;border-radius:50%;background:#ffffff0c}.c1{left:-40px;top:20%}.c2{right:-60px;bottom:20%}.login-panel{display:grid;place-items:center;padding:40px;background:#fff}.login-box{width:min(430px,100%)}.login-box h2{margin:5px 0 8px;font:800 1.8rem "Plus Jakarta Sans"}.login-box>.muted{margin:0 0 28px}.password-wrap{position:relative}.password-wrap input{padding-right:45px}.password-wrap button{position:absolute;right:5px;top:5px;width:36px;height:36px;border:0;background:none;color:var(--muted);cursor:pointer}.demo-note{display:flex;flex-direction:column;gap:3px;margin-top:19px;padding:13px 15px;border-radius:11px;background:var(--green-soft);color:#33665b;font-size:.72rem}.login-help{text-align:center;color:var(--muted);font-size:.7rem;margin-top:23px}.setup-page{display:grid;place-items:center;min-height:100vh;background:linear-gradient(145deg,#e8f4ef,#f7faf8)}.setup-card{width:min(510px,calc(100% - 30px));padding:42px;border-radius:22px;background:#fff;text-align:center;box-shadow:var(--shadow)}.setup-card h1{font:800 1.8rem "Plus Jakarta Sans"}.setup-card p{color:var(--muted)}.success-panel,.error-panel{margin:20px 0;padding:16px;border-radius:12px;background:#e4f5ed;color:#17644f;text-align:left}.error-panel{background:#fff0ec;color:#a1412b;font-size:.72rem;overflow-wrap:anywhere}.setup-card>small{display:block;margin-top:18px;color:var(--muted)}.empty{padding:70px 25px;text-align:center}.empty>span{font-size:3rem;color:var(--orange)}.empty h2{font:800 1.4rem "Plus Jakarta Sans"}.empty p{color:var(--muted)}.empty.compact{padding:40px}
@media(max-width:1100px){.journey{grid-template-columns:1fr}.journey-line{transform:rotate(90deg)}.exam-layout{grid-template-columns:1fr 1.3fr}.exam-nav{grid-column:1/3}.exam-nav .number-grid{grid-template-columns:repeat(9,1fr)}.dashboard-grid{grid-template-columns:1fr}.card-grid{grid-template-columns:1fr 1fr}.score-grid{grid-template-columns:1fr}.login-visual{padding:40px}.nature-orb{width:220px;height:220px;opacity:.55}.visual-copy h1{font-size:2.25rem}}@media(max-width:780px){.app-shell{display:block}.sidebar{transform:translateX(-100%);transition:.25s}.menu-open .sidebar{transform:translateX(0);box-shadow:15px 0 50px #0c322d55}.app-shell>main{display:block}.topbar{height:78px;padding:0 18px}.topbar p,.school-pill{display:none}.menu-toggle{display:block}.page-content{padding:22px 16px 40px}.welcome-card{grid-template-columns:1fr;padding:28px 25px}.welcome-card h2{font-size:1.55rem}.welcome-art{display:none}.tips-grid,.survey-layout,.exam-layout,.review-list article,.login-layout{grid-template-columns:1fr}.number-panel{order:2}.number-panel .number-grid{grid-template-columns:repeat(10,1fr)}.exam-nav{grid-column:auto}.exam-nav .number-grid{grid-template-columns:repeat(9,1fr)}.stimulus-card{position:static}.question-card{padding:23px 18px}.likert{grid-template-columns:1fr 1fr}.stat-grid,.stat-grid.compact{grid-template-columns:1fr 1fr}.card-grid{grid-template-columns:1fr}.review-list form{grid-template-columns:1fr}.review-list form>div{grid-column:auto}.result-bars{grid-template-columns:1fr}.login-visual{min-height:330px;align-items:flex-end}.login-panel{padding:38px 22px}.brand.dark{margin-bottom:35px}.visual-copy h1{font-size:2rem}.completion{padding:35px 22px}.compact-options{grid-template-columns:1fr}}@media(max-width:480px){.stat-grid,.stat-grid.compact{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.number-panel .number-grid{grid-template-columns:repeat(6,1fr)}.likert{grid-template-columns:1fr}.question-actions{gap:8px}.question-actions .btn{padding:0 13px}.score-card{align-items:flex-start;flex-wrap:wrap}.login-visual{min-height:300px;padding:25px}.login-visual .nature-orb{right:-60px}.top-actions{display:none}}
@media(max-width:780px){.report-two,.package-layout,.survey-selection-grid{grid-template-columns:1fr}.report-score-grid{grid-template-columns:1fr 1fr}.option-upload-grid{grid-template-columns:1fr}.student-select-grid{grid-template-columns:1fr 1fr}.student-test-card{align-items:flex-start;flex-direction:column}.report-package-tools{align-items:stretch;flex-direction:column}}
@media(max-width:780px){.key-distribution-grid{grid-template-columns:1fr 1fr}}
@media(max-width:780px){.instrument-stats{grid-template-columns:repeat(3,1fr)}.filter-bar{align-items:stretch;flex-direction:column}.filter-bar select{width:100%}}
@media(max-width:1100px){.review-assignment-grid{grid-template-columns:1fr 1fr}.reviewer-select-grid{grid-template-columns:1fr 1fr}}
@media(max-width:780px){.review-assignment-grid,.reviewer-select-grid,.detailed-review,.instrument-review-card{grid-template-columns:1fr}.review-timeline{grid-column:auto}.review-assignment-card>p{min-height:auto}.review-assignment-card footer{align-items:flex-start;flex-direction:column}.review-timeline>div{grid-template-columns:auto 1fr}.review-timeline em{grid-column:2}.review-rubric .row-actions{justify-content:stretch}.review-rubric .row-actions .btn{flex:1}}
@media(max-width:780px){.matrix-note{align-items:flex-start;flex-direction:column}.matrix-note span{text-align:left}}
@media(max-width:480px){.report-score-grid,.student-select-grid,.instrument-stats{grid-template-columns:1fr}.report-heading{align-items:flex-start;flex-direction:column}}
@media(max-width:480px){.key-target-grid{grid-template-columns:1fr 1fr}.key-distribution-grid{grid-template-columns:1fr}}
.package-pattern-matrix{margin-top:18px}.package-pattern-matrix .panel-head>span{color:var(--muted);font-size:.7rem}.package-pattern-matrix th{min-width:125px}.package-pattern-matrix th:first-child{min-width:45px}.package-pattern-matrix th:nth-child(2){min-width:180px}.package-pattern-matrix td:not(:nth-child(2)){text-align:center}.package-pattern{display:inline-flex;align-items:center;gap:7px}.package-pattern code{padding:5px 8px;border-radius:7px;background:#edf5f2;color:var(--green);font-weight:900;letter-spacing:.12em}.package-pattern b{display:grid;place-items:center;width:25px;height:25px;border-radius:7px;background:var(--green);color:#fff;font-size:.68rem}
.instrument-dialog{width:min(720px,calc(100vw - 28px));height:min(820px,calc(100dvh - 32px));max-width:720px;max-height:calc(100dvh - 32px);margin:auto;padding:0;overflow:hidden}.instrument-dialog .instrument-modal-form{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:0;width:100%;height:100%;min-height:0;max-height:none;padding:0;overflow:hidden}.instrument-modal-head{position:relative;display:grid;grid-template-columns:52px minmax(0,1fr) auto;align-items:start;gap:14px;min-height:0;padding:25px 28px 21px;border-bottom:1px solid var(--line);background:linear-gradient(135deg,#f3faf7,#fff)}.instrument-modal-head .dialog-close{position:static;grid-column:3;grid-row:1;flex:0 0 auto}.instrument-modal-icon{display:grid;place-items:center;width:48px;height:48px;border-radius:14px;background:var(--green);color:#fff;font-size:1.6rem}.instrument-modal-head h2{margin:3px 0 4px;font:800 1.3rem "Plus Jakarta Sans"}.instrument-modal-head p:last-child{margin:0;color:var(--muted);font-size:.73rem}.instrument-modal-body{display:flex;min-width:0;min-height:0;flex-direction:column;gap:18px;padding:24px 28px 32px;overflow-x:hidden;overflow-y:scroll;overscroll-behavior:contain;scrollbar-gutter:stable;-webkit-overflow-scrolling:touch;touch-action:pan-y}.instrument-modal-body label>span,.direction-picker legend{color:#475d57;font-size:.73rem;font-weight:900}.instrument-modal-body label>small,.statement-field>small{color:var(--muted);font-size:.63rem;font-weight:600}.instrument-meta label,.statement-field{display:flex;flex-direction:column;gap:7px}.statement-field textarea{min-height:132px;resize:vertical;line-height:1.55}.direction-picker{margin:0;padding:0;border:0}.direction-picker legend{margin-bottom:8px}.direction-picker>div{display:grid;grid-template-columns:1fr 1fr;gap:10px}.direction-picker label{display:grid;grid-template-columns:auto 1fr;align-items:start;gap:10px;padding:14px;border:1.5px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;transition:.18s}.direction-picker label:hover,.direction-picker label.selected{border-color:var(--green);background:var(--green-soft);box-shadow:0 0 0 3px #167c680c}.direction-picker input{width:auto;margin-top:3px;accent-color:var(--green)}.direction-picker b,.direction-picker small{display:block}.direction-picker small{margin-top:3px;color:var(--muted);font-size:.64rem;line-height:1.4}.instrument-score-hint{justify-content:flex-start;gap:12px;flex:0 0 auto}.instrument-score-hint .score-icon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:#fff;color:var(--green);font-size:1rem}.instrument-score-hint div b,.instrument-score-hint div span{display:block}.instrument-score-hint div span{margin-top:2px}.instrument-modal-actions{z-index:2;display:flex;flex:0 0 auto;justify-content:flex-end;gap:10px;padding:16px 28px max(16px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:#fff;box-shadow:0 -8px 25px #173f3608}
@supports not (height:100dvh){.instrument-dialog{height:min(820px,calc(100vh - 32px));max-height:calc(100vh - 32px)}}
@media(max-width:600px){.instrument-dialog{width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);border-radius:16px}.instrument-modal-head{grid-template-columns:42px minmax(0,1fr) auto;padding:18px}.instrument-modal-icon{width:40px;height:40px}.instrument-modal-head h2{font-size:1.08rem}.instrument-modal-head p:last-child{display:none}.instrument-modal-body{padding:18px 18px 28px}.instrument-modal-body .form-grid,.direction-picker>div{grid-template-columns:1fr}.instrument-modal-actions{padding:12px 18px max(12px,env(safe-area-inset-bottom))}.instrument-modal-actions .btn{flex:1}}
@media(max-height:650px) and (min-width:601px){.instrument-dialog{height:calc(100dvh - 16px);max-height:calc(100dvh - 16px)}.instrument-modal-head{grid-template-columns:40px minmax(0,1fr) auto;padding:14px 22px}.instrument-modal-icon{width:38px;height:38px}.instrument-modal-head p:last-child{display:none}.instrument-modal-body{padding:16px 22px 24px}.instrument-modal-actions{padding:10px 22px}.statement-field textarea{min-height:95px}}
@media print{.sidebar,.topbar,.btn,.result-hero .result-stars,.back-link{display:none!important}.app-shell{display:block}.app-shell>main{display:block}.page-content{padding:0}.result-hero{color:#000;background:#fff;border:1px solid #ccc}.panel,.score-card,.report-score-grid>div{box-shadow:none;break-inside:avoid}.report-answers{break-before:page}body{background:#fff}}
