:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#142741;background:#f5f8fc;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.48;cursor:not-allowed}a{color:#1559ab}p{line-height:1.55}h1,h2,h3,h4{letter-spacing:-.025em}h1{font-size:clamp(1.8rem,3.4vw,2.75rem);line-height:1.15;margin:8px 0 12px}h2{font-size:1.45rem;margin:0 0 8px}h3{font-size:1.15rem;margin:0 0 12px}h4{margin:12px 0}h3 svg{vertical-align:middle;margin-right:8px;color:#2367b3}.app{min-height:100vh;display:flex;flex-direction:column}.site-header{background:#fff;border-bottom:1px solid #dfebf6;position:sticky;top:0;z-index:20}.header-inner{max-width:1240px;margin:auto;min-height:76px;display:flex;align-items:center;justify-content:space-between;padding:12px 22px;gap:18px}.brand{border:0;background:transparent;display:flex;align-items:center;gap:12px;text-align:left;color:#142741;padding:0}.brand strong{font-size:18px;display:block}.brand small{font-size:11px;letter-spacing:.02em;color:#6f849d;display:block}.brand-icon{background:#1161b7;color:#fff;padding:10px;border-radius:13px}.head-actions{display:flex;align-items:center;gap:10px}.who{font-size:12px;color:#57718b}.main{width:100%;max-width:1240px;margin:0 auto;flex:1;padding:34px 22px 70px}.hero{display:grid;grid-template-columns:1.6fr .7fr;gap:30px;background:linear-gradient(115deg,#0d4382,#0c65bf);color:#fff;border-radius:22px;padding:48px 50px;min-height:310px;box-shadow:0 14px 40px #0a4c9c19;align-items:center}.hero h1{max-width:700px;font-size:clamp(2rem,3.7vw,3.3rem);margin:14px 0}.hero p{color:#d9eaff;max-width:610px}.eyebrow{font-size:11px;font-weight:800;letter-spacing:.15em;color:#2271bf}.hero .eyebrow{color:#b6dcff}.hero-tags{display:flex;flex-wrap:wrap;gap:10px;margin-top:24px}.hero-tags span{display:flex;gap:5px;align-items:center;font-size:12px;background:#ffffff16;border:1px solid #ffffff30;padding:8px 12px;border-radius:20px}.hero-illustration{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;color:#d4e9fc}.hero-illustration span{font-weight:700;font-size:13px}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin:38px 0 20px}.section-heading p{color:#6b819b;margin:0}.small-muted{font-size:12px;color:#71849c}.tiny{font-size:11px;color:#8093a7}.group-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}.group-card{background:#fff;border:1px solid #dfe8f3;border-radius:16px;min-height:180px;padding:21px;text-align:left;display:flex;flex-direction:column;gap:9px;transition:.18s;box-shadow:0 3px 13px #304f7307;color:#173250}.group-card:hover,.group-card:focus-visible{transform:translateY(-2px);border-color:#72a7dc;box-shadow:0 9px 25px #2263a31a}.group-card.current{border-color:#0f68bf}.group-icon{background:#eef5fd;color:#1767bc;width:44px;height:44px;border-radius:13px;display:grid;place-items:center}.group-link{color:#1768ba;margin-top:auto;font-size:13px;font-weight:750}.panel{background:#fff;border:1px solid #e0eaf4;border-radius:18px;padding:24px;box-shadow:0 3px 14px #1d395607}.login-panel{margin-top:34px;display:grid;grid-template-columns:1fr 1fr;gap:30px;background:#fff;border:1px solid #dfebf5;border-radius:18px;padding:30px}.login-panel p{color:#6a829b}.form-stack{display:flex;flex-direction:column;gap:12px}label{font-size:13px;font-weight:650;color:#344e68;display:flex;flex-direction:column;gap:6px}input,textarea,select{border:1px solid #cbdbe9;border-radius:9px;padding:11px 12px;width:100%;background:#fff;color:#17324b;outline:none}input:focus,textarea:focus,select:focus{border-color:#3180cd;box-shadow:0 0 0 3px #3180cd1c}textarea{resize:vertical;min-height:54px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 16px;border-radius:10px;font-weight:700;font-size:13px;border:1px solid transparent;transition:.15s}.btn.primary{color:#fff;background:#1164bd}.btn.primary:hover:not(:disabled){background:#0753a7}.btn.secondary{color:#145aa0;background:#e8f3ff;border-color:#bddbf6}.btn.ghost{color:#2d5e92;background:#fff;border-color:#cdddec}.btn.small{padding:8px 12px;font-size:12px}.btn.block{width:100%}.link-btn{border:none;background:transparent;color:#1263b5;font-size:12px;display:inline-flex;gap:4px;align-items:center;padding:6px}.notice{padding:13px 17px;background:#fff4d6;border:1px solid #f5d783;border-radius:12px;display:flex;justify-content:space-between;gap:12px;align-items:start;margin-bottom:18px}.notice button{background:none;border:0;font-size:23px;color:#806725}.setup{background:#fff3d8;border:1px solid #f8daa0;padding:18px;display:flex;gap:15px;align-items:start;border-radius:14px;margin-bottom:22px}.setup p{margin:4px 0 0}.request-panel{margin-top:24px;display:flex;align-items:center;gap:16px;flex-wrap:wrap}.request-panel select{width:200px}.waiting{display:flex;gap:14px;align-items:start;margin-top:25px}.waiting p{margin:6px 0;color:#617b97}.back{border:0;background:none;color:#256cad;font-size:13px;font-weight:700;padding:7px 0;margin-bottom:13px;display:inline-flex;align-items:center;gap:3px}.equipment-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.equipment-card{overflow:hidden;background:#fff;border:1px solid #e0eaf4;border-radius:17px}.equipment-card img{width:100%;height:250px;object-fit:contain;background:#f7f9fb}.equipment-info{padding:20px}.equipment-info p{min-height:50px;color:#698098;font-size:13px}.code{color:#1565b8;font-size:11px;font-weight:800;letter-spacing:.13em}.workspace-title{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:20px}.workspace-title p{color:#71849a}.scorebox{background:#ebf5ff;border:1px solid #c4dff6;border-radius:14px;min-width:128px;padding:15px;text-align:center}.scorebox strong{font-size:31px;display:block;color:#1665af}.scorebox span{font-size:11px;color:#51759d}.workspace-grid{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,1fr);gap:18px;align-items:start}.image-panel{position:sticky;top:92px}.interactive-photo{position:relative;max-width:100%;background:#fafcff;border-radius:12px;overflow:hidden;border:1px solid #e8edf3;margin:18px 0}.interactive-photo img{display:block;width:100%;height:auto}.hotspot{position:absolute;transform:translate(-50%,-50%);background:#176aca;border:3px solid white;color:#fff;box-shadow:0 2px 12px #154c8a66;width:31px;height:31px;border-radius:50%;font-size:11px;font-weight:900}.photo-actions{display:flex;gap:8px;flex-wrap:wrap}.between{display:flex;align-items:center;justify-content:space-between;gap:10px}.progress{height:8px;background:#e7eff8;border-radius:30px;overflow:hidden;margin:12px 0 20px}.progress>div{height:100%;background:#1682c9;transition:.3s}.box-list{display:flex;flex-direction:column;gap:13px;max-height:900px;overflow:auto;padding:3px 3px 15px}.answer-box{border:1px solid #e2ebf4;border-radius:12px;padding:13px;scroll-margin-top:110px}.answer-box p{font-size:12px;color:#6b8097;margin:6px 0 10px}.answer-box textarea{width:100%;margin-bottom:5px;font-size:13px}.row-inline{display:flex;gap:8px;align-items:center}.mini-status{font-size:11px;font-weight:700}.mini-status.correct{color:#13834c}.mini-status.incorrect,.mini-status.missing{color:#a04e16}.results{background:#f7fafe;border:1px solid #e1eafa;border-radius:12px;padding:16px;margin:15px 0}.result-row{font-size:13px;border-bottom:1px solid #e4eefa;padding:9px 0}.good{color:#078557}.mid{color:#b37710}.bad{color:#cb4144}.lower-grid,.admin-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.lower-grid p{font-size:13px;color:#667d95}.sources-fields{display:flex;flex-direction:column;gap:8px;margin:16px 0}.source-row{display:flex;align-items:center;gap:12px;border-top:1px solid #edf1f7;padding:11px 0;font-size:13px}.source-row .small-muted{display:block}.journey{display:flex;flex-direction:column;gap:8px;margin:14px 0}.journey div{padding:11px;background:#f2f5fa;border-radius:9px;font-size:13px;color:#647d95}.journey div.done{background:#e5f5e9;color:#15824d;font-weight:700}.guide{border:1px solid #aad1ef;background:#f0f8ff;padding:14px;border-radius:11px}.choice-bank{display:flex;flex-wrap:wrap;gap:6px;margin:12px 0}.choice-chip{background:#fff;border:1px solid #9ac3e3;padding:8px;border-radius:8px;font-size:12px;cursor:grab}.guided-row{margin:10px 0;padding:10px;border:1px dashed #b1cce5;border-radius:9px}.guided-row select{margin-top:7px}.correction{border-top:1px solid #bdd4e8;margin-top:15px}.correction p{color:#31516d}.correction small{color:#71849a}.pill{display:inline-block;padding:5px 10px;border-radius:30px;font-size:11px;font-weight:800}.pill-good{background:#e4f7ee;color:#11754b}.pill-grey{background:#f3f5f8;color:#697d94}.dashboard-line,.admin-member{border-top:1px solid #eef2f8;padding:13px 0;font-size:13px}.admin-member{display:flex;align-items:center;justify-content:space-between}.admin-member p{margin:4px 0}.admin-panel{margin-top:18px}.create-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;align-items:end}.ai-tools{display:flex;flex-direction:column;gap:8px;background:#f3f8ff;border:1px solid #e0eefe;border-radius:12px;padding:15px;margin:15px 0}.ai-tools>button{align-self:flex-start}.admin-questions{margin:20px 0}.admin-question{padding:13px;border:1px solid #e3ebf4;border-radius:12px;margin:9px 0}.admin-question label{margin:8px 0}.admin-question p{margin:5px 0}.add-question{background:#f8fbff;padding:16px;border-radius:12px}.approval{margin-top:25px;border-top:2px solid #d8e6f3;padding-top:16px;display:flex;align-items:start;flex-direction:column;gap:12px}.checkbox-line{flex-direction:row;align-items:start;font-size:13px;font-weight:600}.checkbox-line input{width:17px;min-width:17px;height:17px;margin:2px 0 0}.footer{border-top:1px solid #dfe9f3;text-align:center;padding:20px;color:#70869a;font-size:11px;background:#fff}@media(max-width:950px){.workspace-grid{grid-template-columns:1fr}.image-panel{position:static}.group-grid{grid-template-columns:repeat(2,1fr)}.hero{grid-template-columns:1fr 150px;padding:34px}.hero-illustration svg{width:70px}.head-actions .who{display:none}}@media(max-width:620px){.hero{display:block;padding:27px}.hero-illustration{display:none}.group-grid,.lower-grid,.admin-grid,.create-grid,.login-panel,.equipment-grid{grid-template-columns:1fr}.main{padding:21px 13px 35px}.header-inner{padding:10px 14px}.brand small{display:none}.brand strong{font-size:15px}.section-heading{align-items:start}.label-desktop{display:none}.workspace-title{align-items:start}.workspace-title .scorebox{min-width:90px;padding:9px}.workspace-title .scorebox strong{font-size:24px}.workspace-grid{gap:10px}.panel{padding:16px}.group-card{min-height:145px}}@media print{.site-header,.footer,.head-actions,.back,.btn,.source-row,.lower-grid,.notice,.box-list textarea{display:none!important}.workspace-grid{display:block}.image-panel{position:static}.app{display:block}.main{padding:0}.workspace-title,.image-panel,.questions-panel{page-break-inside:avoid}.interactive-photo{max-height:380px}.interactive-photo img{max-height:360px;object-fit:contain}.hotspot{display:none}}.edit-meta{display:grid;grid-template-columns:125px minmax(0,1fr) auto;gap:10px;align-items:end;margin:10px 0}.edit-meta input{width:100%}@media(max-width:620px){.edit-meta{grid-template-columns:1fr}}.conflict-panel{background:#fff6e7;border:1px solid #dfb776;border-radius:10px;padding:12px;margin-top:12px;font-size:12px}.conflict-panel p{margin:6px 0;color:#77562e;overflow-wrap:anywhere}.conflict-panel strong{color:#86510a}.member-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}.history-list{max-height:380px;overflow:auto;border:1px solid #e1eaf4;border-radius:10px}.history-row{display:grid;grid-template-columns:155px minmax(140px,1fr) minmax(120px,1fr) 78px;align-items:center;gap:10px;padding:11px 12px;border-bottom:1px solid #edf1f7;font-size:12px}.history-row span{color:#607b95}.history-row strong{overflow-wrap:anywhere}.hotspot-editor{border:1px solid #d7e6f2;background:#f8fbff;border-radius:12px;padding:16px;margin:17px 0}.hotspot-editor>label{max-width:380px}.teacher-hotspot-photo{position:relative;width:min(100%,590px);margin:15px auto;border:1px solid #dce7f1;border-radius:10px;overflow:hidden;background:#fff}.teacher-hotspot-photo img{display:block;width:100%;height:auto;cursor:crosshair}.teacher-hotspot-photo .teacher-dot{pointer-events:none;display:grid;place-items:center}@media(max-width:700px){.history-row{grid-template-columns:1fr 1fr}.member-actions{justify-content:flex-end}}.saved-code{display:flex;flex-wrap:wrap;align-items:center;gap:10px;border:1px solid #bfdbd1;background:#f0faf5;border-radius:12px;margin:15px 0;padding:13px}.saved-code code{font-family:monospace;padding:7px 10px;background:#fff;border-radius:6px;-webkit-user-select:all;user-select:all;overflow-wrap:anywhere}.mcq-options{margin:10px 0;padding:0;border:0;display:flex;flex-direction:column;gap:8px}.mcq-option{display:flex;align-items:center;gap:12px;padding:11px 12px;border-radius:10px;border:1px solid #d9e5f1;background:#f9fbff;font-weight:500;font-size:13px;cursor:pointer}.mcq-option.chosen{background:#e8f4ff;border-color:#3481d0;font-weight:750}.mcq-option input{width:16px;min-width:16px;accent-color:#145ca9;margin:0}.placement-toolbar{border:1px solid #b8d4ee;background:#f3f9ff;padding:12px;border-radius:11px;display:flex;flex-direction:column;align-items:start;gap:7px;margin:12px 0}.placement-toolbar p{font-size:12px;margin:0;line-height:1.5}.placement-active{cursor:crosshair;border:3px dashed #1369b9}.placement-tag{position:absolute;transform:translate(-50%,-50%);background:#0867bf;border:2px solid #fff;color:#fff;border-radius:9px;padding:7px 10px;font-size:12px;font-weight:800;box-shadow:0 5px 18px #06335b55;white-space:nowrap;pointer-events:none}.place-summary{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f0f8ff;border-radius:8px;padding:11px;font-size:12px;flex-wrap:wrap}.semantic-hint{background:#fff8e8;border:1px solid #ead4a6;padding:10px;border-radius:8px;color:#6b541a!important}.drag-answer-chip{display:inline-flex;align-items:center;background:#e3f1fe;border:1px solid #7cb3e4;color:#124f88;padding:10px 12px;border-radius:8px;font-weight:800;font-size:12px;cursor:grab;-webkit-user-select:none;user-select:none}.slot-vector-overlay{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;pointer-events:none}.slot-vector-overlay circle{fill:#ffffff9e;stroke:#1267b6;stroke-width:.65;stroke-dasharray:1.4 1.1;vector-effect:non-scaling-stroke}.photo-drop-slot{position:absolute;transform:translate(-50%,-50%);min-width:60px;min-height:44px;border-radius:10px;border:2px dashed #1267b6;color:#175894;background:#ffffffe5;padding:8px 10px;z-index:4;font-size:12px;font-weight:800;white-space:normal;box-shadow:0 3px 9px #13243a35}.photo-drop-slot.assigned{background:#1165b5;color:#fff;border:2px solid #fff}.photo-drop-slot:focus-visible,.drag-answer-chip:focus-visible{outline:4px solid #eeaa2f;outline-offset:3px}.drag-answer-chip{font-family:inherit;text-align:center;cursor:grab}.drag-answer-chip.chip-active{background:#fff0c2;border:2px solid #b38427;color:#5b3e08}.drag-answer-chip.mains-chip{background:#fff1df;color:#945116;border-color:#dba364}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media(max-width:550px){.photo-drop-slot{min-width:44px;min-height:36px;padding:5px;font-size:10px}}.export-alert{padding:12px 15px;border:1px solid #e3c991;border-radius:12px;background:#fff8e9;color:#76571c;margin-top:12px;display:grid;gap:5px;font-size:13px}.export-alert.ready{background:#eaf9ef;border-color:#98d8ac;color:#186443}.export-alert strong{font-size:14px}.dashboard-filters{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.dashboard-filters label{display:flex;gap:6px;align-items:center;font-size:12px}.dashboard-filters select{max-width:275px;padding:8px;border:1px solid #cad9e8;border-radius:8px}.dashboard-scroll{width:100%;overflow:auto;margin-top:16px}.dashboard-table{border-collapse:collapse;width:100%;min-width:770px;font-size:12px;text-align:left}.dashboard-table th,.dashboard-table td{padding:12px 10px;border-bottom:1px solid #e1eaf5;vertical-align:top}.dashboard-table thead th{background:#edf6ff;color:#1e4e87}.dashboard-table td .small-muted{display:block;margin-top:4px}.dashboard-state{display:inline-block;padding:5px 9px;border-radius:11px;background:#e9f1f8;color:#375675;font-size:12px;font-weight:700}.dashboard-state.needs-help{background:#fff2d8;color:#835b16}.dashboard-state.finished{background:#e5f7ea;color:#156b39}.learning-timeline{margin:14px 0;max-height:400px;overflow:auto;border-top:1px solid #e4ebf2}.learning-event{display:flex;gap:13px;padding:12px;border-bottom:1px solid #e6edf4;font-size:13px}.learning-event p{margin:4px 0 0}.learning-dot{flex:0 0 12px;width:12px;height:12px;background:#2f78c1;border-radius:100%;margin-top:5px}.knx-access-panel{align-items:start}.knx-access-panel .access-intro{max-width:390px}.access-tabs,.access-switch{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.access-fields{min-width:0}.access-fields .form-stack{margin-top:13px}.knx-access-panel label{display:flex;flex-direction:column;gap:7px;font-weight:700;font-size:13px}.knx-access-panel input,.knx-access-panel select{display:block;width:100%;box-sizing:border-box;min-height:42px;border:1px solid #bfd3e8;border-radius:9px;padding:9px 11px;background:#fff;color:#183453;font:inherit}.knx-access-panel input:focus-visible,.knx-access-panel select:focus-visible{outline:3px solid #72b3ea;outline-offset:2px}.credentials-once{background:#f0fbf4;border:2px solid #2f9e5c;border-radius:14px;padding:20px;margin:19px 0;display:grid;gap:12px;overflow-wrap:anywhere}.credentials-once p{margin:8px 0;font-size:13px;line-height:1.65}.credentials-once code{display:inline-block;font-family:ui-monospace,Menlo,monospace;padding:5px 9px;color:#114b34;background:#fff;border:1px solid #b8dac7;border-radius:7px;-webkit-user-select:all;user-select:all}.credential-actions{display:flex;flex-wrap:wrap;gap:8px}.identity-hint{display:flex;align-items:center;gap:8px;background:#e9f4ff;border:1px solid #bddaf1;color:#195183;padding:11px;border-radius:10px;margin:12px 0;font-size:12px}@media(max-width:620px){.knx-access-panel .access-intro{max-width:none}}
