
:root{--ink:#1c332f;--green:#22614f;--paper:#f7f8f2;--line:#dfe4db}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}button,input,textarea{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}header{height:87px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 5.5%}.brand{display:flex;align-items:center;gap:12px;font-weight:700;font-size:19px}.mark{background:var(--ink);color:#e5efb7;width:35px;height:35px;display:grid;place-items:center;border-radius:9px;font-size:26px}.brandlight{font-weight:400;font-size:14px}.semester{font-size:10px;letter-spacing:1.6px}main{max-width:1400px;margin:auto;padding:0 5.5%}.hero{display:grid;grid-template-columns:1.2fr 1fr;min-height:400px;align-items:center;gap:35px;padding:42px 0}.eyebrow{font-size:10px;letter-spacing:1.8px;font-weight:700;display:flex;align-items:center;gap:8px}.eyebrow>span{width:6px;height:6px;border-radius:50%;background:#598c53}h1,h2,h3{font-family:'Space Grotesk',sans-serif}h1{font-size:clamp(32px,3.8vw,54px);line-height:1.12;font-weight:500;letter-spacing:-2px;margin:20px 0}h1 em{font-style:normal;color:#64806b}p{color:#77827a;line-height:1.7}.hero p{margin-bottom:28px}.primary{border:0;background:var(--green);color:white;border-radius:7px;padding:13px 20px;display:inline-flex;gap:30px;align-items:center;font-weight:500}.primary:hover{background:#164c3d}.primary:disabled{opacity:.5;cursor:not-allowed}.hero-note{font-size:9px;letter-spacing:1px;margin-left:19px;color:#839184}.visual{position:relative;height:290px;border-radius:15px;background:radial-gradient(circle,#e2ebd7 0,transparent 65%),linear-gradient(90deg,#dfe5d950 1px,transparent 1px),linear-gradient(#dfe5d950 1px,transparent 1px);background-size:auto,25px 25px,25px 25px;border:1px solid #e3e7dc}.board{position:absolute;inset:-10px 0 10px}.chip-label{position:absolute;bottom:43px;left:25px;font-size:9px;letter-spacing:1px;background:#fff9;padding:8px 12px;border:1px solid #d4dfcd;border-radius:4px}.chip-label span{color:#659468;margin-left:18px}.coordinates{position:absolute;bottom:13px;left:25px;right:20px;display:flex;justify-content:space-between;font-size:8px;letter-spacing:1px;color:#84927c}.stats{display:flex;align-items:center;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:23px 0;gap:45px}.stats>div{display:flex;align-items:center;gap:14px}.stats b{font-family:'Space Grotesk';font-size:29px;font-weight:500}.stats span{color:#7d897f;font-size:11px}.stats button{margin-left:auto;border:0;background:none;color:var(--green);font-size:12px}.stats button span{margin-left:15px}#turma{padding-top:43px;scroll-margin-top:20px}.section-head{display:flex;justify-content:space-between;align-items:center}.section-head h2{font-size:27px;margin:12px 0 4px;letter-spacing:-.8px}.section-head p{margin:0;font-size:12px}.outline{background:transparent;border:1px solid #ced8cd;border-radius:6px;padding:10px 14px;color:var(--ink);font-size:12px}.toolbar{display:flex;justify-content:space-between;margin:26px 0 20px;gap:15px}.tabs{display:flex;gap:4px}.tabs button,.category button{border:0;background:none;border-radius:5px;padding:9px 14px;color:#718173;font-size:12px}.tabs .selected,.category .selected{background:#e3ebda;color:#315f46;font-weight:600}input,textarea{border:1px solid var(--line);background:white;border-radius:6px;padding:11px;color:var(--ink);outline-offset:3px}.toolbar input{width:260px;font-size:12px}.students{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.student{text-align:left;background:#fff;border:1px solid var(--line);border-radius:10px;padding:19px 17px 0;transition:.15s;color:var(--ink);display:flex;flex-direction:column}.student:hover{transform:translateY(-3px);border-color:#72917a;box-shadow:0 5px 16px #193b2510}.card-top{display:flex;align-items:center;justify-content:space-between;gap:7px}.avatar{width:34px;height:34px;border-radius:50%;background:#edf0e5;display:grid;place-items:center;font-size:11px;color:#708161}.status{font-size:9px;color:#9b9c88}.done{color:#307656}.student h3{font-size:14px;line-height:1.5;min-height:42px;margin:15px 0 2px;font-weight:500}.student small{font-size:10px;color:#8a958b}.project-title{border-top:1px solid #eff1eb;padding:14px 0;margin-top:16px;font-size:10px;color:#7e8c7f;width:100%;display:flex;justify-content:space-between;gap:8px}.project-title span{color:#3a6a50}.hint{margin:34px 0 40px;border:1px solid var(--line);border-radius:9px;padding:20px;display:flex;gap:18px}.hint>span{font-size:24px;color:#6f8868}.hint b{font-size:12px}.hint p{font-size:11px;margin:4px 0}footer{display:flex;justify-content:space-between;padding:24px 0;border-top:1px solid var(--line);font-size:10px;color:#8a968b}footer b{color:#506754}.overlay{position:fixed;inset:0;background:#132b246b;backdrop-filter:blur(5px);display:flex;justify-content:center;align-items:center;padding:22px;z-index:10}.modal{background:var(--paper);border-radius:16px;width:740px;max-height:92vh;overflow:auto;padding:28px}.modal-head{display:flex;justify-content:space-between;gap:20px;align-items:center}.modal-head h2{font-size:23px;line-height:1.3;margin:10px 0}.modal-head button,.item button{border:0;background:none;font-size:25px;color:#708277}.notice{font-size:11px;border-left:2px solid #a1b887;padding-left:10px}.modal label{display:block;font-size:12px;font-weight:600;margin:21px 0}.modal label input,.modal textarea{display:block;width:100%;margin-top:9px}.modal textarea{height:75px;resize:vertical}.modal h3{font-size:15px;margin-top:25px}.category{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:12px}.category button{font-size:11px;padding:8px 10px}.components{display:grid;grid-template-columns:1fr 1fr;gap:7px}.components button{border:1px solid var(--line);border-radius:6px;background:white;text-align:left;display:flex;justify-content:space-between;padding:11px;font-size:12px;color:#526753}.components button:hover{border-color:#4e8165}.components b{color:#4e8165}.custom{display:flex;gap:8px;margin-top:12px}.custom input{flex:1;min-width:0}.count{font-size:11px;background:#e2e9db;padding:2px 7px;border-radius:10px;margin-left:6px}.empty{font-size:12px;background:#ecf0e5;padding:18px;border-radius:7px}.item{display:flex;gap:10px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line)}.item>span{flex:1;font-size:12px}.item input{width:70px;padding:6px}.optional{font-weight:400;color:#899285}.modal-bottom{display:flex;justify-content:space-between;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:19px}.modal-bottom>span{font-size:11px;color:#77867a}.feedback{font-size:12px;color:#296843;margin:10px 0}button:focus-visible,a:focus-visible{outline:2px solid #47845d;outline-offset:4px}@media(max-width:1000px){.students{grid-template-columns:repeat(3,1fr)}.hero-note{display:none}.stats{gap:20px}.stats>div{gap:8px}}@media(max-width:700px){header{height:70px}.semester{display:none}.hero{grid-template-columns:1fr;padding-top:32px;gap:15px}.hero h1{font-size:40px}.visual{height:220px}.stats{flex-wrap:wrap;gap:20px}.stats button{margin-left:0}.stats b{font-size:23px}.stats>div{flex:1}.stats span{font-size:9px}.students{grid-template-columns:repeat(2,1fr)}.toolbar{flex-direction:column}.toolbar input{width:100%}.student{padding:14px 12px 0}.student h3{font-size:12px;min-height:54px}.status{font-size:8px}.avatar{width:28px;height:28px}.section-head h2{font-size:23px}.section-head .outline{padding:9px}.brandlight{font-size:11px}.modal{padding:20px}.overlay{padding:10px}.modal-head h2{font-size:19px}.components{grid-template-columns:1fr 1fr}.custom .outline{padding:8px}.modal-bottom .primary{padding:12px}.modal-bottom>span{font-size:10px}footer{gap:20px}.desktop{display:none}}
dialog.modal{border:1px solid var(--line);color:var(--ink);margin:auto}dialog::backdrop{background:#132b246b;backdrop-filter:blur(5px)}dialog:not([open]){display:none}body:has(dialog[open]){overflow:hidden}#load-status:not(:empty){padding:14px 0;color:#657b64}.modal .primary{margin-top:10px}#summary-items{margin-bottom:20px}#summary .primary{margin-top:20px}
.toolbar-actions{display:flex;flex-wrap:wrap;gap:8px}.group-list{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;max-height:220px;overflow:auto}.member-check{display:flex!important;gap:8px;align-items:flex-start;background:#fff;border:1px solid var(--line);border-radius:6px;padding:9px!important;margin:0!important;font-weight:400!important}.member-check input{width:auto!important;margin:2px 0!important}.member-check span{font-size:11px}.group-card{padding:13px;border:1px solid var(--line);background:#fff;border-radius:9px;margin:10px 0}.group-card p{overflow-wrap:anywhere;font-size:11px}.group-card small{color:#607d68}.modal select{padding:10px;border:1px solid var(--line);border-radius:6px;max-width:100%;display:block;margin-top:7px}#teacher-panel .outline{margin:7px}#teacher-panel[hidden],#teacher-login[hidden]{display:none}@media(max-width:700px){.group-list{grid-template-columns:1fr}.section-head{align-items:flex-start;gap:12px;flex-wrap:wrap}}

/* Cartões partilhados dos grupos */
.student-group{border-color:#cbdccc;background:#fcfef9}
.student-group .avatar{background:#deeadc;color:#27634c;font-size:20px}
.student-group h3{min-height:0;margin-bottom:12px;font-weight:700}
.card-members{display:flex;flex-direction:column;gap:5px;font-size:11px;line-height:1.35;color:#5c7265;flex:1}
.card-members b{color:#2d5845;font-size:10px;margin-bottom:3px}
.card-members span{display:block}
.student-group .project-title{margin-top:16px;align-items:center}
.student-group .project-title>span:first-child{flex:1}
.no-results{grid-column:1/-1;padding:24px 0;color:#687d6c;font-size:13px}

/* Sessão administrativa: botão externo visível somente quando autenticado */
.teacher-logout-main{border-color:#b8c6bd;color:#245b47;font-weight:600}.teacher-logout-main:hover{background:#e9efe5}.teacher-logout-main[hidden]{display:none!important}

/* Members of an existing group: read-only list */
#group-select:has(.group-member-name){grid-template-columns:1fr 1fr;max-height:none;overflow:visible}
.group-member-name{background:#fff;border:1px solid var(--line);border-radius:6px;padding:11px 12px;font-size:12px;line-height:1.45}
.group-owner-tag{display:inline-block;font-size:10px;margin-left:6px;color:#557665}
@media(max-width:700px){#group-select:has(.group-member-name){grid-template-columns:1fr}}

/* Projeto 1 v9 — identidade visual distinta por grupo */
.student-group{border-color:var(--group-ink,#b5d1c2);background:color-mix(in srgb,var(--group-bg,#f3f7f0) 34%,white);}
.student-group:hover{border-color:var(--group-ink,#37755e);box-shadow:0 6px 18px #193b251c}
.student-group .avatar{background:var(--group-bg,#deeadc);color:var(--group-ink,#27634c);font-size:20px;font-weight:700;border:1px solid color-mix(in srgb,var(--group-ink) 25%,transparent)}
.student-group h3,.student-group .project-title>span:first-child{color:var(--group-ink,#27634c)}
.student-group .status{color:var(--group-ink,#27634c)}
#teacher-group-name{display:block;width:100%;max-width:420px}


/* Projeto 1 v11 — círculos dos grupos em HotPink */
.student-group .avatar{
  background:#FF69B4 !important;
  color:#3b0a2a !important;
  border:1px solid #d94d99 !important;
  box-shadow:0 0 0 1px rgba(255,105,180,.10) inset;
}

/* v12: círculos individuais por estado; os círculos de grupos continuam HotPink */
.student:not(.student-group).student-pending .avatar {background:rgb(255,0,0);color:#fff;border:1px solid #c90000;font-weight:700;}
.student:not(.student-group).student-registered .avatar {background:#228B22;color:#fff;border:1px solid #176b17;font-weight:700;}

/* Material da turma — três modos de agregação */
.summary-modes{display:flex;gap:6px;flex-wrap:wrap;margin:16px 0 8px}
.summary-modes button{border:1px solid #cdd8ce;background:transparent;border-radius:6px;padding:9px 12px;color:#46624f;font-size:12px}
.summary-modes button.selected{background:#e3ebda;border-color:#adbea9;font-weight:700}
.summary-context{font-size:11px;margin:6px 0 14px}
.summary-block{border:1px solid var(--line);border-radius:8px;background:#fff;margin:8px 0;overflow:hidden}
.summary-block>summary{cursor:pointer;display:flex;align-items:center;gap:12px;padding:12px;list-style:none}
.summary-block>summary::-webkit-details-marker{display:none}
.summary-block>summary:before{content:'▸';color:#51735f}
.summary-block[open]>summary:before{content:'▾'}
.summary-block>summary>span{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.summary-block>summary strong{font-size:12px}
.summary-block>summary small{font-size:11px;color:#657b69;line-height:1.4}
.summary-block>summary>b{font-size:12px;color:#375d48;white-space:nowrap}
.summary-block-content{padding:2px 12px 12px;border-top:1px solid var(--line)}
.summary-members,.summary-no-items{font-size:11px;line-height:1.5;color:#687b6c}

/* Revisão docente v14 */
.review-inline{background:#eef2e9;border-left:3px solid #5e8c64;border-radius:4px;padding:11px 13px;margin-top:15px;font-size:12px}.review-inline p{margin:5px 0 0;overflow-wrap:anywhere}.review-admin{border-top:1px solid var(--line);margin-top:20px;padding-top:12px}.review-actions{display:flex;gap:7px;flex-wrap:wrap}.review-actions button{font-size:11px;margin:0!important}.review-admin textarea{max-height:130px}.review-admin #review-feedback{font-size:12px;color:#3b7350}

/* v15 - Acesso ao professor */
#teacher-dialog:not(:has(#teacher-panel:not([hidden]))){max-width:650px}
.teacher-login{max-width:510px;margin:0 auto;padding:4px 0 10px}
.teacher-login-symbol{width:48px;height:48px;border-radius:13px;background:#e3ebda;color:#22614f;display:grid;place-items:center;font-size:26px;margin:10px 0 15px}
.teacher-login h3{margin:0 0 6px;font-size:18px;letter-spacing:-.3px}
.teacher-login>p{margin:0 0 21px;font-size:12px;max-width:420px}
.teacher-login form label{display:block;margin:0 0 9px;font-size:12px;font-weight:700}
.teacher-password-row{display:flex;align-items:stretch;gap:10px}
.teacher-password-row input{min-width:0;flex:1;width:auto;margin:0;padding:13px 15px;font-size:14px;border-radius:7px}
.teacher-password-row .primary{margin:0!important;gap:18px;justify-content:center;min-width:122px}
.teacher-password-row .primary:disabled{opacity:.65;cursor:wait}
.teacher-login .teacher-login-tip{font-size:11px;color:#728378;margin:12px 0 0}
#teacher-login[hidden]{display:none!important}
@media(max-width:480px){.teacher-password-row{flex-direction:column}.teacher-password-row .primary{width:100%}}

/* V17 — associação explícita de registos próprios */
.teacher-existing-project{margin:16px 0 22px;padding:14px 16px;border:1px solid #d6e0d4;background:#f1f5ee;border-radius:9px}
.teacher-existing-project label{margin:0 0 8px!important}
.teacher-existing-project select{width:100%;max-width:100%!important}
.teacher-existing-project button{margin:3px 0 0!important}
.teacher-existing-project p{font-size:11px;margin:9px 0 0}

.member-project-flag{display:block;color:#9a6322;font-size:10px;margin-top:4px}.member-available{color:#437e4c;font-size:10px}.pending-actions{display:flex;gap:8px;flex-wrap:wrap;margin:9px 0}.pending-actions button{font-size:11px}

/* v19 — catálogo ilustrado dos componentes */
.components button{display:flex;align-items:center;min-height:64px;gap:13px;padding:8px 11px;text-align:left}
.component-thumb{flex:0 0 67px;width:67px;height:54px;display:grid;place-items:center;overflow:hidden;border-radius:6px;background:#f7f9f5}
.component-thumb img{width:100%;height:100%;object-fit:contain;display:block}
.component-thumb img[hidden],.component-fallback[hidden]{display:none}
.component-fallback{color:#6c826f;font-size:24px}
.component-label{flex:1;min-width:0;overflow-wrap:anywhere;font-size:12px;line-height:1.35}
.components button>b{flex:0 0 auto;font-size:16px}
@media(max-width:480px){.components{grid-template-columns:1fr}.component-thumb{flex-basis:56px;width:56px;height:48px}}

/* v21: ampliar componente sem o adicionar */
.component-thumb img{cursor:zoom-in}
.component-image-dialog{border:1px solid #dfe4db;border-radius:15px;padding:20px 22px;background:#f7f8f2;color:#1c332f;max-width:calc(100vw - 28px);max-height:calc(100vh - 28px);box-shadow:0 16px 48px #12241f35}
.component-image-dialog::backdrop{background:#142a2580;backdrop-filter:blur(4px)}
.component-image-head{display:flex;align-items:center;justify-content:space-between;gap:22px;margin-bottom:13px}
.component-image-head h2{font-size:18px;margin:0}
.component-image-close{border:0;background:transparent;font-size:28px;color:#52665b;cursor:pointer}
.component-image-view{display:grid;place-items:center;overflow:auto;max-width:calc(100vw - 78px);max-height:calc(100vh - 135px);background:white;border-radius:9px;padding:10px}
.component-image-view img{display:block;width:auto;height:auto;max-width:calc(100vw - 98px);max-height:calc(100vh - 160px);object-fit:contain}
.component-image-dialog>p{font-size:11px;margin:9px 0 0}

/* v22: ficha técnica e checklist */
.technical-sheet{margin:24px 0;border:1px solid #d8e2d8;background:#f1f5ee;border-radius:10px;padding:18px}.technical-sheet h3{margin:0 0 12px}.technical-sheet label{margin:13px 0!important}.technical-sheet textarea{min-height:72px;width:100%;height:auto}.technical-sheet select{display:block;width:100%;margin-top:8px;padding:11px;border-radius:6px;border:1px solid var(--line);background:#fff}.tech-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.tech-check,.tech-history{margin-top:15px;background:#fff;border:1px solid var(--line);border-radius:8px;padding:13px}.tech-check strong,.tech-history strong{display:block;margin-bottom:9px}.tech-check-row{font-size:12px;padding:4px 0;display:flex;gap:9px}.tech-check-row span{font-weight:700;color:#307656}.tech-check small,.tech-history small{font-size:11px;color:#657b69}.tech-history div{font-size:11px;padding:3px 0}@media(max-width:700px){.tech-grid{grid-template-columns:1fr}.technical-sheet{padding:12px}}

/* v24 — ficha em três separadores e rodapé fixo */
#editor.modal{display:flex;flex-direction:column;overflow:hidden;max-height:92vh;padding:0;width:min(760px,calc(100vw - 24px))}
#editor:not([open]){display:none}
#editor>.modal-head{flex:0 0 auto;padding:24px 28px 0}
#editor>.notice{flex:0 0 auto;margin:12px 28px}
#project-form{display:flex;flex-direction:column;min-height:0;flex:1;overflow:hidden}
.editor-tabs{flex:0 0 auto;display:flex;gap:6px;margin:8px 28px 0;border-bottom:1px solid var(--line);overflow-x:auto}
.editor-tabs button{background:transparent;border:0;border-bottom:3px solid transparent;color:#61746a;white-space:nowrap;padding:12px 13px;font-size:12px;font-weight:600}
.editor-tabs button[aria-selected="true"]{border-bottom-color:#22614f;color:#1c332f}
.editor-panel{overflow:auto;min-height:0;flex:1;padding:16px 28px 20px;overscroll-behavior:contain}
.editor-panel[hidden]{display:none!important}
.editor-panel h3:first-child{margin-top:10px}
#editor .editor-sticky-footer{flex:0 0 auto;background:#f7f8f2;display:flex;align-items:center;gap:12px;padding:14px 28px 20px;border-top:1px solid #dbe3d8;margin:0;flex-wrap:wrap}
#editor .editor-sticky-footer #unit-total{margin-right:auto}
.editor-dirty{font-size:11px;color:#61806c;order:3;width:100%}
.editor-dirty.is-dirty{color:#a15a15;font-weight:700}
#editor .feedback{margin:0 28px;flex:0 0 auto;max-height:70px;overflow:auto}
#editor .tech-check,#editor .tech-history{margin:10px 0 18px}
@media(max-width:700px){#editor>.modal-head{padding:18px 18px 0}#editor>.notice{margin:9px 18px}.editor-tabs{margin:6px 18px 0}.editor-tabs button{padding:10px 8px;font-size:11px}.editor-panel{padding:12px 18px}#editor .editor-sticky-footer{padding:12px 18px}#editor .feedback{margin:0 18px}}

/* v25 — gestão do professor em quatro separadores */
#teacher-dialog{display:flex;flex-direction:column;overflow:hidden;padding:0;max-height:92vh;width:min(740px,calc(100vw - 24px))}
#teacher-dialog:not([open]){display:none}
#teacher-dialog>.modal-head{flex-shrink:0;padding:24px 26px 14px}
#teacher-panel{min-height:0;overflow-y:auto;padding:0 26px 12px}
#teacher-dialog>#teacher-feedback{padding:0 26px 16px;margin:0}
.teacher-tabs{display:flex;gap:5px;overflow-x:auto;position:sticky;top:0;z-index:2;background:var(--paper);padding:12px 0;border-bottom:1px solid var(--line)}
.teacher-tabs button{flex:0 0 auto;background:transparent;border:1px solid transparent;padding:10px 12px;border-radius:7px;color:#5d7867;font-size:12px}
.teacher-tabs button.selected{background:#e3ebda;color:#235941;border-color:#ccdbc8;font-weight:700}
.teacher-section{padding:16px 0 20px}
.teacher-section[hidden]{display:none!important}
.teacher-section .review-admin-inner{padding:0}
#teacher-section-review.review-admin{margin:0;border:0}
#teacher-section-review.review-admin h3{margin-top:6px}
.teacher-section-intro{font-size:12px}
.teacher-footer{border-top:1px solid var(--line);padding:12px 0 6px;position:sticky;bottom:0;background:var(--paper)}
.teacher-footer button{margin:0!important}
@media(max-width:700px){#teacher-dialog>.modal-head{padding:18px 18px 10px}#teacher-panel{padding:0 18px 10px}.teacher-tabs button{font-size:11px;padding:9px 10px}}

/* v26 — navegação, nome de grupo e estados da revisão */
#teacher-panel{scroll-behavior:auto;overscroll-behavior:contain}
.teacher-group-name-box{padding:14px 16px 10px;background:#edf3eb;border:1px solid #cfddcc;border-radius:10px;margin:14px 0}
.teacher-group-name-box label{margin:0!important;font-weight:700!important}
.teacher-group-name-box input{max-width:100%!important;background:#fff;border-color:#adbfaa}
.teacher-name-admin{color:#647e6d;font-size:11px;font-weight:400}
#teacher-group-name-hint{font-size:11px;line-height:1.45;margin:8px 0 0;color:#54705e}
#project-review[data-review-state="changes"]{background:#ffedef;border-left-color:#cf263f;color:#8e172d}
#project-review[data-review-state="changes"] p{color:#9c2238}
#project-review[data-review-state="review"]{background:#fff1da;border-left-color:#d98219;color:#854707}
#project-review[data-review-state="approved"]{background:#e5f5e8;border-left-color:#248048;color:#185e35}
#project-review[data-review-state="reopened"]{background:#f1e9fa;border-left-color:#7940b5;color:#63308f}
.student-group.review-card-review{background:#fff5e8;border-color:#e5ad55}
.student-group.review-card-changes{background:#fff0f0;border-color:#d97c84}
.student-group.review-card-approved{background:#eaf8ed;border-color:#7eba92}
.student-group.review-card-reopened{background:#f3edfc;border-color:#ae88d4}
.review-status-pill{display:inline-block;margin-top:5px;padding:4px 8px;border-radius:5px;font-size:10px;font-weight:700;vertical-align:middle}
.review-pill-review{background:#ffe0af;color:#834800}
.review-pill-changes{background:#ffccd1;color:#8f1830}
.review-pill-approved{background:#c7ebcf;color:#195d33}
.review-pill-reopened{background:#e3d0f8;color:#642996}
.student-group .project-title{align-items:flex-start}
@media(max-width:700px){.teacher-group-name-box{padding:12px}}

/* v28 — seletor 3D do microcontrolador */
.board canvas{display:block;width:100%!important;height:100%!important;border-radius:15px}
.chip-control{display:flex;align-items:center;gap:10px;padding:8px 10px 8px 12px;min-width:210px}
.chip-control-title{font-size:9px;letter-spacing:1px;color:#566a5d;text-transform:uppercase;white-space:nowrap}
.chip-control select{border:1px solid #d4dfcd;background:#fff;width:auto;min-width:140px;padding:8px 10px;border-radius:6px;font-size:12px;color:#1c332f;appearance:auto}
.chip-control select:focus{outline:2px solid #9fc1ac;outline-offset:2px}

/* v28 — painel de acompanhamento do professor */
#teacher-section-dashboard{padding-top:10px}
.dashboard-stack{display:flex;flex-direction:column;gap:18px}
.dashboard-heading h3{margin:0 0 6px;font-size:22px}
.dashboard-heading p{margin:0;font-size:12px}
.dashboard-cards,.dashboard-review-cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.dashboard-card{background:#f1f5ee;border:1px solid #d6e0d4;border-radius:11px;padding:14px 15px}
.dashboard-card b{display:block;font-family:'Space Grotesk',sans-serif;font-size:27px;font-weight:600;color:#1c332f;margin-bottom:4px}
.dashboard-card span{display:block;font-size:12px;color:#60756a}
.dashboard-card small{display:block;font-size:11px;color:#7c8d83;margin-top:5px;line-height:1.45}
.dashboard-card.review-draft{background:#f3f3ee}
.dashboard-card.review-review{background:#fff5e8;border-color:#e5b263}
.dashboard-card.review-changes{background:#fff0f1;border-color:#e49ea6}
.dashboard-card.review-approved{background:#eaf8ed;border-color:#8dc29b}
.dashboard-card.review-reopened{background:#f3edfc;border-color:#c5abeb}
.dashboard-progress{background:#fff;border:1px solid var(--line);border-radius:11px;padding:15px 16px}
.dashboard-progress-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}
.dashboard-progress-head strong{font-size:14px}
.dashboard-progress-bar{height:12px;background:#e5ece0;border-radius:999px;overflow:hidden}
.dashboard-progress-fill{height:100%;background:linear-gradient(90deg,#2b6a57,#6ea17f);border-radius:999px}
.dashboard-columns{display:grid;grid-template-columns:1.1fr .9fr;gap:14px}
.dashboard-panel{background:#fff;border:1px solid var(--line);border-radius:11px;padding:14px 15px}
.dashboard-panel h4{margin:0 0 10px;font-size:16px}
.dashboard-table{width:100%;border-collapse:collapse;font-size:12px}
.dashboard-table th,.dashboard-table td{padding:9px 8px;border-top:1px solid #ebefe6;text-align:left;vertical-align:top}
.dashboard-table thead th{border-top:0;color:#5f7368;font-size:11px;text-transform:uppercase;letter-spacing:.6px}
.dashboard-table td:last-child,.dashboard-table th:last-child{text-align:right}
.dashboard-list{display:flex;flex-direction:column;gap:10px}
.dashboard-list-item{border:1px solid #e4eadf;border-radius:9px;padding:11px 12px;background:#f9fbf7}
.dashboard-list-item b{display:block;font-size:13px;margin-bottom:4px}
.dashboard-list-item p{margin:0;font-size:12px;color:#667a6f;line-height:1.5}
.dashboard-pill{display:inline-flex;align-items:center;border-radius:999px;padding:4px 8px;font-size:10px;font-weight:700}
.dashboard-pill.review{background:#ffe0af;color:#834800}
.dashboard-pill.changes{background:#ffccd1;color:#8f1830}
.dashboard-pill.approved{background:#c7ebcf;color:#195d33}
.dashboard-pill.reopened{background:#e3d0f8;color:#642996}
.dashboard-pill.draft{background:#e7e9e1;color:#5a635c}
.dashboard-empty{font-size:12px;color:#728277}
@media(max-width:860px){.dashboard-cards,.dashboard-review-cards{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-columns{grid-template-columns:1fr}}
@media(max-width:560px){.chip-control{left:14px;bottom:42px;right:14px;min-width:0}.chip-control select{min-width:0;width:100%}.dashboard-cards,.dashboard-review-cards{grid-template-columns:1fr}.dashboard-progress-head{flex-direction:column;align-items:flex-start}.dashboard-table{font-size:11px}.dashboard-table th:nth-child(3),.dashboard-table td:nth-child(3){display:none}}

.stl-viewer-canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}.stl-viewer-canvas:active{cursor:grabbing}.stl-viewer-message{pointer-events:none;position:absolute;top:15%;left:10%;right:10%;text-align:center;font-size:12px;color:#517564}

/* v34: progress bar and project review navigation */
.dashboard-progress-fill{display:block;min-width:0;max-width:100%}
.dashboard-columns{grid-template-columns:minmax(0,1fr);gap:14px}
.dashboard-projects-panel{min-width:0;overflow-x:auto}
.dashboard-table{table-layout:fixed;min-width:530px;width:100%}
.dashboard-table th:nth-child(1){width:27%}
.dashboard-table th:nth-child(2){width:36%}
.dashboard-table th:nth-child(3){width:24%}
.dashboard-table th:nth-child(4){width:13%}
.dashboard-table td,.dashboard-table th{overflow-wrap:anywhere;word-break:normal}
.dashboard-hint{font-size:11px;margin:-2px 0 13px}
.dashboard-project-row{cursor:pointer}
.dashboard-project-row:hover,.dashboard-project-row:focus-visible{background:#eaf3e8;outline:2px solid #7ca78f;outline-offset:-2px}
@media(max-width:560px){.dashboard-table th:nth-child(3),.dashboard-table td:nth-child(3){display:table-cell}}

/* v35 — progresso pintado no próprio trilho, sem preenchimento residual */
.dashboard-progress-bar{height:12px;border-radius:999px;overflow:hidden;background:#e5ece0}

/* v36 — identificação discreta de versão */
footer .app-version{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:10px;white-space:nowrap;color:#77877c;}
@media(max-width:700px){footer{flex-wrap:wrap;gap:10px}footer .app-version{margin-left:auto}}

/* v1.38 — Compatibilidade com CSP style-src self, sem inline style */
body{font-family:Arial,Helvetica,sans-serif}
h1,h2,h3,.stats b,.dashboard-card b{font-family:Arial,Helvetica,sans-serif}
.student-group{--group-ink:#943052;--group-bg:#fce6f0}
.dashboard-progress-bar{display:block;appearance:none;-webkit-appearance:none;width:100%;height:12px;border:0;border-radius:999px;overflow:hidden;background:#e5ece0}
.dashboard-progress-bar::-webkit-progress-bar{background:#e5ece0;border-radius:999px}
.dashboard-progress-bar::-webkit-progress-value{background:linear-gradient(90deg,#2b6a57,#6ea17f);border-radius:999px}
.dashboard-progress-bar::-moz-progress-bar{background:linear-gradient(90deg,#2b6a57,#6ea17f);border-radius:999px}

/* Acessos v40.1 */
/* v40.7 — A largura do aviso acompanha a area util do painel com scroll.
   Os 15px adicionais a direita compensam a scrollbar nativa do Chrome/Windows.
   O bloco permanece antes do rodape de guardar, acima da linha divisoria. */
.p1-access-actions{display:flex;flex-wrap:wrap;gap:.6rem;margin:1rem 0}.p1-access-list{margin-top:1rem;max-height:340px;overflow:auto}.p1-access-row{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ccc;padding:.55rem;gap:1rem}.p1-access-row small{opacity:.7}
.p1-access-hint{margin:0 43px 14px 28px;padding:14px 16px;border:1px solid #d7ddd4;border-radius:10px;background:#f6f7f3;color:#5c6b60;display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;line-height:1.5}
.p1-access-hint.is-inactive{background:#f6f7f3;border-color:#d7ddd4;color:#5c6b60}
.p1-access-hint.is-open{background:#edf5ee;border-color:#a9c8af;color:#2f6a46}
.p1-access-hint.is-protected{background:#fdecef;border-color:#e4a6b6;color:#7c2437}
.p1-access-hint.is-error{background:#fff3e8;border-color:#e7c08a;color:#875620}
.p1-access-hint .outline{margin-left:auto}
.p1-access-unlock{margin-left:auto;border:1px solid #943052;background:#943052;color:#fff;border-radius:8px;padding:10px 14px;font-size:12px;font-weight:700;box-shadow:0 1px 0 rgba(28,51,47,.08)}
.p1-access-unlock:hover{background:#7d2946;border-color:#7d2946}
.p1-access-unlock:focus-visible{outline:2px solid #b84f74;outline-offset:3px}
@media(max-width:700px){.p1-access-hint{margin:0 33px 12px 18px}.p1-access-hint .outline,.p1-access-unlock{margin-left:0}.p1-access-unlock{width:100%;justify-content:center;text-align:center}}

/* v40.10 — nomes dos elementos na gestão das credenciais */
.p1-access-row-main{display:block;flex:1;min-width:0;overflow-wrap:anywhere}
.p1-access-row-main b{font-weight:700}
.p1-access-row-main .p1-access-roster{display:block;margin-top:5px;line-height:1.4;color:#536a5f;opacity:1;font-size:11px}
.p1-access-row>[data-issue]{flex-shrink:0}
@media(max-width:520px){.p1-access-row{align-items:flex-start;flex-direction:column}.p1-access-row>[data-issue]{align-self:flex-end}}

/* Acessos v40.11 — estado da disponibilidade da impressão/CSV */
.p1-access-availability{border:1px solid #d8c8a8;background:#fff7e8;color:#725521;border-radius:9px;padding:10px 13px;font-size:12px;line-height:1.5;margin:10px 0}
.p1-access-reissue-help{font-size:12px;line-height:1.5;color:#5e6e63;display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:12px 0}
.p1-access-reissue-help button{font-size:12px}
.p1-access-reissue-help small{color:#983c4a}
.p1-access-actions button:disabled{opacity:.45;cursor:not-allowed}
