:root{--bg:#f7f8f2;--bg2:#eef2e8;--card:#ffffff;--card2:#fcfef9;--text:#1c332f;--muted:#77827a;--line:#dfe4db;--teal:#598c53;--blue:#64806b;--pink:#22614f;--pink2:#164c3d;--green:#307656;--amber:#a16207;--red:#b42318;--shadow:0 14px 38px rgba(25,59,37,.08);--radius:16px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;min-height:100vh;color:var(--text);font-family:'DM Sans',Arial,sans-serif;background:var(--bg);overflow-x:hidden}body:before{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,rgba(89,140,83,.025) 1px,transparent 1px),linear-gradient(rgba(89,140,83,.025) 1px,transparent 1px);background-size:40px 40px;mask-image:linear-gradient(to bottom,#000 0%,transparent 90%)}button,input,select,textarea{font:inherit}.topbar{width:min(1320px,calc(100% - 34px));margin:0 auto;padding:18px 0;display:flex;align-items:center;justify-content:space-between;gap:20px}.brand{color:inherit;text-decoration:none;display:flex;align-items:center;gap:12px}.brand-mark{width:46px;height:46px;border-radius:14px;display:grid;place-items:center;font-weight:900;background:#1c332f;border:1px solid var(--line)}.brand strong{display:block;font-size:.8rem;letter-spacing:.12em;text-transform:uppercase}.brand small{display:block;color:var(--muted);margin-top:3px}.top-actions{display:flex;gap:10px}.ghost,.secondary,.primary{border:1px solid var(--line);border-radius:13px;min-height:42px;padding:0 15px;cursor:pointer;color:var(--text);background:var(--card);transition:.18s ease}.ghost:hover,.secondary:hover{transform:translateY(-1px);background:var(--card2)}.primary{background:var(--pink);color:white;border-color:transparent;font-weight:700}.primary:hover{filter:brightness(1.08);transform:translateY(-1px)}.primary:disabled{opacity:.42;cursor:not-allowed;transform:none}.shell{width:min(1320px,calc(100% - 34px));margin:0 auto;padding-bottom:60px}.hero{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:24px;align-items:end;padding:42px 0 30px}.eyebrow,.section-kicker{color:var(--pink);font-size:.76rem;font-weight:900;letter-spacing:.12em;text-transform:uppercase}.hero h1{font-size:clamp(2.6rem,5.4vw,5.4rem);line-height:.95;letter-spacing:-.05em;margin:12px 0 20px}.hero-copy p{max-width:820px;color:var(--muted);line-height:1.7;font-size:1.06rem}.hero-badges{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px}.hero-badges span,.chip{border:1px solid var(--line);border-radius:999px;padding:7px 10px;color:var(--muted);font-size:.76rem;background:#fcfef9}.hero-status{display:flex;align-items:center;gap:18px;padding:22px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow)}.hero-status p{margin:5px 0 0;color:var(--muted);font-size:.88rem}.status-ring{--p:0;position:relative;width:100px;height:100px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--pink) calc(var(--p)*1%),#e3ebda 0)}.status-ring:after{content:"";position:absolute;inset:9px;border-radius:50%;background:white}.status-ring strong,.status-ring span{z-index:1;position:absolute}.status-ring strong{font-size:1.45rem;top:28px}.status-ring span{font-size:.7rem;color:var(--muted);top:56px}.workspace{display:grid;grid-template-columns:210px minmax(0,1fr);gap:20px;align-items:start}.side-nav{position:sticky;top:18px;display:flex;flex-direction:column;padding:10px;border:1px solid var(--line);border-radius:18px;background:var(--card);box-shadow:var(--shadow)}.side-nav button{border:0;background:transparent;color:var(--muted);text-align:left;padding:11px 12px;border-radius:11px;cursor:pointer}.side-nav button:hover,.side-nav button.active{color:var(--text);background:#e3ebda}.content{display:grid;gap:18px}.panel,.save-panel{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow);padding:26px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:22px}.panel h2{font-size:1.55rem;margin:5px 0 0}.panel h3{margin:0 0 10px}.architecture{display:grid;grid-template-columns:1fr auto 1.2fr auto 1fr;align-items:center;gap:10px;padding:18px;border:1px solid var(--line);border-radius:18px;background:#fcfef9}.arch-node,.arch-gateway{text-align:center;padding:18px 12px;border-radius:16px;border:1px solid var(--line)}.arch-node{background:#edf0e5}.arch-gateway{background:#e3ebda;border-color:#cbdccc}.arch-node span,.arch-gateway span{display:block;color:var(--muted);font-size:.7rem;letter-spacing:.1em}.arch-node b,.arch-gateway b{display:block;margin:7px 0;font-size:1rem}.arch-node small,.arch-gateway small{color:var(--muted)}.flow{color:var(--teal);font-weight:900;font-size:.8rem}.overview-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:14px}.mini-card{padding:17px;border:1px solid var(--line);border-radius:16px;background:#fcfef9}.mini-card p{margin:8px 0 0;color:var(--muted);line-height:1.55;font-size:.88rem}.model-card{display:grid;grid-template-columns:.85fr 1.15fr;gap:18px;min-height:360px;margin-top:18px;border:1px solid var(--line);border-radius:20px;overflow:hidden;background:#fcfef9}.model-copy{padding:24px}.model-copy p{color:var(--muted);line-height:1.6}.model-copy label{display:grid;gap:6px;margin-top:18px}.model-copy small{display:block;color:var(--muted);margin-top:10px}.model-view{position:relative;min-height:330px;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}.stl-viewer-canvas{position:absolute;inset:0;width:100%;height:100%;touch-action:none}.stl-viewer-message{position:absolute;left:14px;bottom:14px;color:var(--muted);font-size:.8rem}.form-grid{display:grid;gap:14px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.form-grid.three{grid-template-columns:repeat(3,minmax(0,1fr))}label{display:grid;gap:7px;color:var(--muted);font-size:.82rem;font-weight:700}input,select,textarea{width:100%;border:1px solid var(--line);background:white;color:var(--text);border-radius:12px;padding:11px 12px;outline:none}select option{color:#102438}input:focus,select:focus,textarea:focus{border-color:#72917a;box-shadow:0 0 0 3px rgba(89,140,83,.10)}textarea{resize:vertical;line-height:1.55}.member-box,.unlock-box{margin:14px 0;padding:15px;border-radius:14px;border:1px solid var(--line);background:#fcfef9;color:var(--muted)}.unlock-box{display:flex;justify-content:space-between;align-items:center;gap:16px;border-color:#cbdccc}.unlock-box p{margin:4px 0 0}.unlock-actions{display:flex;gap:8px;min-width:360px}.node-grid,.json-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.node-card{display:grid;gap:11px;margin:0;border:1px solid var(--line);border-radius:18px;padding:18px}.node-card legend{padding:0 8px;color:var(--pink);font-weight:900}.check{display:flex;align-items:center;gap:9px;color:var(--text)}.check input{width:auto}.json-grid textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.inline-actions{display:flex;align-items:center;gap:12px;margin-top:10px}.validation{color:var(--muted);font-size:.84rem}.validation.ok{color:var(--green)}.validation.bad{color:var(--red)}.data-rules{padding:18px;border:1px solid var(--line);border-radius:18px;background:#fcfef9}.data-rules ul{padding-left:20px;color:var(--muted);line-height:1.7}.data-rules code{color:var(--teal)}.endpoint-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:16px 0}.endpoint-grid label{display:flex;align-items:center;gap:10px}.endpoint-grid label span{width:42px;color:var(--teal);font-size:.72rem}.checklist,.tests-list{display:grid;gap:9px}.check-item,.test-item{border:1px solid var(--line);border-radius:15px;padding:14px;background:#fcfef9}.check-item label{display:flex;align-items:flex-start;gap:12px;color:var(--text);cursor:pointer}.check-item input{width:auto;margin-top:3px}.check-item b{display:block}.check-item small{display:block;color:var(--muted);margin-top:4px;font-weight:400;line-height:1.45}.test-item{display:grid;grid-template-columns:minmax(220px,.8fr) 150px minmax(0,1.2fr);gap:12px;align-items:start}.test-item strong{display:block}.test-item p{margin:4px 0 0;color:var(--muted);font-size:.82rem}.metrics-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:15px}.save-panel{position:sticky;bottom:12px;display:flex;align-items:center;justify-content:space-between;gap:20px;z-index:10;background:rgba(252,254,249,.96);backdrop-filter:blur(18px)}.save-panel p{margin:5px 0 0;color:var(--muted);font-size:.83rem}.big{min-width:190px;min-height:50px}.modal{width:min(1050px,calc(100% - 28px));max-height:88vh;border:1px solid var(--line);border-radius:22px;padding:24px;color:var(--text);background:var(--bg2);box-shadow:0 24px 70px rgba(25,59,37,.18)}.modal::backdrop{background:rgba(19,43,36,.42);backdrop-filter:blur(5px)}.modal-head{display:flex;justify-content:space-between;align-items:start}.modal-head h2{margin:5px 0 0}.close{border:0;background:transparent;color:var(--text);font-size:2rem;cursor:pointer}.login-row{display:flex;gap:10px}.teacher-actions{display:flex;gap:8px;margin:14px 0}.teacher-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:16px 0}.teacher-summary div{border:1px solid var(--line);border-radius:14px;padding:14px}.teacher-summary b{display:block;font-size:1.5rem}.teacher-summary span{color:var(--muted);font-size:.78rem}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:15px}table{border-collapse:collapse;width:100%;min-width:850px}th,td{text-align:left;padding:11px 12px;border-bottom:1px solid var(--line);font-size:.82rem}th{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.07em}td{vertical-align:top}.muted{color:var(--muted)}.pill-ok,.pill-warn{display:inline-block;border-radius:999px;padding:4px 7px;font-size:.7rem;font-weight:800}.pill-ok{background:rgba(52,211,153,.15);color:var(--green)}.pill-warn{background:rgba(251,191,36,.14);color:var(--amber)}
@media(max-width:980px){.hero{grid-template-columns:1fr}.workspace{grid-template-columns:1fr}.side-nav{position:static;display:grid;grid-template-columns:repeat(4,1fr)}.architecture{grid-template-columns:1fr}.flow{transform:rotate(90deg);justify-self:center}.model-card{grid-template-columns:1fr}.form-grid.three,.metrics-grid{grid-template-columns:repeat(2,1fr)}.teacher-summary{grid-template-columns:repeat(2,1fr)}}
@media(max-width:680px){.topbar{align-items:flex-start}.top-actions{flex-direction:column}.hero h1{font-size:2.65rem}.side-nav{grid-template-columns:repeat(2,1fr)}.overview-grid,.form-grid.two,.form-grid.three,.node-grid,.json-grid,.metrics-grid,.endpoint-grid{grid-template-columns:1fr}.unlock-box,.save-panel{align-items:stretch;flex-direction:column}.unlock-actions-wrap{min-width:0}.unlock-actions{min-width:0;flex-direction:column}.test-item{grid-template-columns:1fr}.panel,.save-panel{padding:18px}.teacher-summary{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

/* REV02 — alinhamento cromático e editorial com o Projeto 1 */
h1,h2,h3{font-family:'Space Grotesk','DM Sans',Arial,sans-serif}
.topbar{border-bottom:1px solid var(--line);padding-top:20px;padding-bottom:20px}
.brand-mark{color:#e5efb7;border-radius:9px}
.hero h1{font-weight:500;letter-spacing:-.045em}
.hero h1 em{font-style:normal;color:#64806b}
.panel,.save-panel,.side-nav,.hero-status{border-radius:14px}
.hero-badges span,.chip{background:#fff;border-color:#dfe4db}
.side-nav button:hover,.side-nav button.active{color:#315f46;background:#e3ebda;font-weight:700}
.eyebrow,.section-kicker,.node-card legend{color:#22614f}
.arch-gateway{background:#e3ebda;border-color:#cbdccc}
.flow,.data-rules code,.endpoint-grid label span{color:#598c53}
.member-box,.unlock-box,.data-rules,.mini-card,.model-card,.check-item,.test-item{background:#fcfef9}
.imported-note{font-size:.72rem;font-weight:500;color:#839184}
.member-box{border-left:3px solid #598c53}
.primary{border-radius:7px}
.secondary,.ghost{border-radius:6px;background:transparent;color:#1c332f}
.secondary:hover,.ghost:hover{background:#e3ebda}
input,select,textarea{border-radius:6px}
.node-card{border-radius:10px;background:#fff}
.check-item,.test-item{border-radius:10px;background:#fff}
.pill-ok{background:#deeadc;color:#307656}.pill-warn{background:#f4ead1;color:#8a6506}


/* REV03 — identificação individual; grupo P1 resolvido automaticamente */
.identity-step{display:grid;grid-template-columns:42px minmax(0,1fr);gap:12px;align-items:end;margin-bottom:14px}
.step-number{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#22614f;color:#fff;font-weight:900;align-self:center}
.imported-group-card{display:grid;gap:6px;margin:12px 0 16px;padding:16px 18px;border:1px solid #cbdccc;border-left:4px solid #598c53;border-radius:10px;background:#f7faf3}
.imported-group-card strong{display:block;margin-top:5px;color:#1c332f;font-size:1.04rem}
.imported-group-card p{margin:0;color:#77827a;line-height:1.55}
.imported-caption{color:#22614f;font-size:.7rem;font-weight:900;letter-spacing:.09em}
.cell-fields{margin-top:14px}.span-two{grid-column:1/-1}
#student{font-weight:700;color:#1c332f}
@media(max-width:680px){.identity-step{grid-template-columns:1fr}.step-number{width:34px;height:34px}.span-two{grid-column:auto}}

.error-state{color:#8b1e1e!important;font-weight:700}

.unlock-actions-wrap{display:grid;gap:7px;min-width:360px}.unlock-actions-wrap .unlock-actions{min-width:0}.access-feedback{min-height:1.25em;margin:0 2px;font-size:.82rem;font-weight:700}.access-feedback.bad{color:#8b1e1e}.access-feedback.ok{color:#22614f}.unlock-actions input.input-error{border-color:#b42318;box-shadow:0 0 0 3px rgba(180,35,24,.12);background:#fff8f7}.unlock-actions input.input-ok{border-color:#3f7d55;box-shadow:0 0 0 3px rgba(63,125,85,.10)}

.field-help{display:block;color:var(--muted);font-size:.72rem;font-weight:400;margin-top:-2px}.input-error{border-color:#b91c1c!important;box-shadow:0 0 0 3px rgba(185,28,28,.10)!important}
