:root{--purple:#7f4293;--purple-700:#653274;--purple-900:#422149;--purple-050:#f7f1f8;--purple-100:#efe3f2;--ink:#332f34;--muted:#777079;--line:#e7e1e7;--bg:#f7f6f4;--white:#fff;--green:#3e7f64;--red:#a05252;--shadow:0 10px 32px rgba(51,35,55,.07);--radius:18px}
*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;font-family:'Libre Franklin',Arial,sans-serif;color:var(--ink);background:var(--bg);font-size:14px;line-height:1.55}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-family:'DM Sans',Arial,sans-serif;letter-spacing:-.02em}h1{font-size:32px;margin-bottom:0}h2{font-size:23px;margin-bottom:18px}h3{font-size:17px;margin-bottom:7px}.muted{color:var(--muted)}.eyebrow{display:block;text-transform:lowercase;letter-spacing:.14em;font-size:11px;font-weight:700;color:var(--purple);margin-bottom:6px}.eyebrow.light{color:#ead9ee}.badge{display:inline-flex;align-items:center;min-height:25px;padding:3px 9px;border-radius:999px;background:var(--purple-100);color:var(--purple-700);font-size:11px;font-weight:700;text-transform:capitalize}.badge.ok{background:#e8f4ed;color:#357058}.badge.off{background:#f2e9e9;color:#945252}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:10px;padding:10px 15px;font-weight:700;transition:.18s}.btn.primary{background:var(--purple);color:#fff}.btn.primary:hover{background:var(--purple-700)}.btn.ghost{background:#fff;border:1px solid var(--line);color:var(--purple-700)}.btn.small{padding:7px 10px;font-size:12px}.btn.full{width:100%;padding:13px}.text-link{color:var(--purple);font-weight:700}.link-button{padding:0;border:0;background:none;color:#ddd;text-decoration:underline}.alert,.flash{padding:11px 14px;border-radius:10px;margin:14px 0}.alert.error{background:#f9eaea;color:#8d4343}.flash{background:#eaf4ee;color:#35644f;margin-bottom:18px}.hint{font-size:12px;color:var(--muted);background:#faf7fb;border:1px solid var(--line);padding:10px;border-radius:10px}
.login-page{min-height:100vh;display:grid;grid-template-columns:minmax(390px,46%) 1fr;background:#fff}.login-brand-panel{padding:55px 64px;background:linear-gradient(155deg,#6d367e,#8d51a0);display:flex;flex-direction:column;justify-content:space-between;color:#fff;position:relative;overflow:hidden}.login-brand-panel:after{content:'';position:absolute;width:440px;height:440px;border:1px solid rgba(255,255,255,.11);border-radius:50%;right:-210px;bottom:-150px;box-shadow:0 0 0 70px rgba(255,255,255,.035),0 0 0 140px rgba(255,255,255,.025)}.login-logo{width:210px;max-width:62%;filter:brightness(0) invert(1);position:relative;z-index:2}.login-copy{max-width:540px;position:relative;z-index:2}.login-copy h1{font-size:48px;line-height:1.08;text-transform:lowercase;margin:0 0 22px}.login-copy p{font-size:17px;color:#efe6f0;max-width:500px}.login-form-wrap{display:flex;align-items:center;justify-content:center;padding:40px}.login-card{width:min(430px,100%)}.login-card h2{font-size:34px;text-transform:lowercase;margin-bottom:6px}.login-card label,.form-stack label,.inline-form label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:700;color:#514b52}.login-card label{margin-top:18px}.login-card input,.form-stack input,.form-stack select,.form-stack textarea,.inline-form select,table input,table select{width:100%;border:1px solid #dcd6dc;border-radius:9px;background:#fff;padding:11px 12px;color:var(--ink);outline:none}.login-card input:focus,.form-stack input:focus,.form-stack select:focus,.form-stack textarea:focus{border-color:#a976b7;box-shadow:0 0 0 3px rgba(127,66,147,.08)}.login-card .btn{margin-top:22px}.login-help{margin-top:20px;font-size:12px;color:var(--muted)}
.app-shell{min-height:100vh;display:grid;grid-template-columns:260px minmax(0,1fr)}.sidebar{position:sticky;top:0;height:100vh;background:#342638;color:#e9e2ea;padding:28px 19px 20px;display:flex;flex-direction:column}.sidebar.portal-sidebar{background:#49304f}.brand{padding:0 9px 25px;border-bottom:1px solid rgba(255,255,255,.1)}.brand img{width:145px;display:block;filter:brightness(0) invert(1)}.brand span{display:block;color:#cdbfd0;font-size:11px;letter-spacing:.11em;text-transform:lowercase;margin-top:8px}.nav{padding:20px 0;display:flex;flex-direction:column;gap:4px;overflow-y:auto;overflow-x:hidden;min-height:0;scrollbar-width:none;-ms-overflow-style:none}.nav::-webkit-scrollbar{width:0;height:0;display:none}.nav a{padding:10px 12px;border-radius:9px;color:#d8cfd9;font-weight:600;font-size:13px}.nav a:hover{background:rgba(255,255,255,.06);color:#fff}.nav a.active{background:#fff;color:var(--purple-700)}.sidebar-bottom{margin-top:auto;padding:17px 10px 0;border-top:1px solid rgba(255,255,255,.1);display:flex;justify-content:space-between;gap:10px;align-items:flex-end}.user-mini{min-width:0}.user-mini strong,.user-mini span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.user-mini strong{color:#fff;font-size:12px}.user-mini span{color:#aaa0ac;font-size:10px}.content{min-width:0;padding:30px 34px 20px}.topbar-app{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin:0 0 25px}.topbar-app h1{text-transform:lowercase;font-weight:600}.topbar-user{background:#fff;border:1px solid var(--line);padding:8px 12px;border-radius:999px;font-size:12px}.stats-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:20px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:21px;box-shadow:var(--shadow)}.stat-card span{color:var(--muted);font-size:12px}.stat-card strong{display:block;color:var(--purple-700);font-family:'DM Sans';font-size:34px;line-height:1.1;margin-top:8px}.stat-card strong.small-stat{font-size:18px;line-height:1.3}.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);margin-bottom:20px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:18px}.panel-head h2{margin-bottom:0}.two-col{display:grid;grid-template-columns:1fr 1fr;gap:20px}.page-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(330px,.7fr);gap:20px;align-items:start}.form-panel{position:sticky;top:20px}.form-stack{display:flex;flex-direction:column;gap:15px}.form-stack small,label small{font-weight:400;color:var(--muted)}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px}.check{flex-direction:row!important;align-items:center!important}.check input{width:auto!important}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:620px}th{text-align:left;color:#8b848c;font-size:10px;text-transform:uppercase;letter-spacing:.09em;padding:10px 12px;border-bottom:1px solid var(--line)}td{padding:13px 12px;border-bottom:1px solid #f0ecef;vertical-align:middle}td strong,td small{display:block}td small{color:var(--muted);margin-top:3px}.actions{text-align:right}.row-card{display:flex;justify-content:space-between;gap:20px;padding:13px 0;border-bottom:1px solid #f0ecef}.row-card:last-child{border-bottom:0}.row-card strong,.row-card span{display:block}.row-card span,.row-card time{color:var(--muted);font-size:12px}.empty{padding:28px 12px;color:var(--muted);text-align:center;border:1px dashed #dfd8df;border-radius:12px;background:#fcfbfc}.announcement-list{display:flex;flex-direction:column;gap:11px}.announcement-card{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;padding:16px;border:1px solid var(--line);border-radius:13px;background:#fff}.announcement-card p{margin-bottom:8px;color:#625b63}.announcement-card small{color:var(--muted)}.notice-mini{padding:13px 0;border-bottom:1px solid #f0ecef}.notice-mini strong{display:block}.notice-mini p{color:var(--muted);margin:4px 0;font-size:13px}.notice-mini small{color:#999}.inline-form{max-width:600px}.inline-form select{margin-top:7px}.panel-actions{padding-top:18px}.app-footer{color:#989198;font-size:10px;text-align:right;padding:18px 0 4px}
.hero-course{background:linear-gradient(135deg,#704080,#8e559e);border-radius:22px;padding:30px;color:#fff;margin-bottom:18px;box-shadow:var(--shadow)}.hero-course h2{font-size:31px;margin:0 0 3px}.hero-course p{margin:0;color:#e8dbe9}.portal-stats .stat-card{box-shadow:none}.frequency-hero{background:var(--purple);color:#fff;border-radius:22px;padding:30px;margin-bottom:18px}.frequency-hero strong{display:block;font-family:'DM Sans';font-size:58px;line-height:1}.frequency-hero p{color:#eadfeb;margin:10px 0 0}.timeline{display:flex;flex-direction:column}.timeline-item{display:grid;grid-template-columns:90px 1fr;gap:20px;padding:19px 0;border-bottom:1px solid var(--line)}.timeline-item:last-child{border-bottom:0}.timeline-date strong,.timeline-date span{display:block}.timeline-date strong{font-family:'DM Sans';font-size:20px;color:var(--purple)}.timeline-date span{color:var(--muted);font-size:12px}.timeline-item p{color:var(--muted);margin-bottom:6px}.card-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.resource-card{padding:18px;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;align-items:flex-start;min-height:220px}.resource-card h3{margin-top:14px}.resource-card p{color:var(--muted);flex:1}.resource-card small{display:block;color:#999;margin-bottom:15px}.center-panel{max-width:700px;padding:50px;text-align:center;margin:10vh auto}.narrow-panel{max-width:680px}.center-state{min-height:90vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:30px}.center-state img{width:180px;margin-bottom:30px}.center-state .btn{margin-top:18px}
@media(max-width:1100px){.page-grid{grid-template-columns:1fr}.form-panel{position:static}.stats-grid{grid-template-columns:repeat(2,1fr)}.card-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:820px){.login-page{grid-template-columns:1fr}.login-brand-panel{min-height:310px;padding:35px}.login-copy h1{font-size:34px}.login-form-wrap{padding:35px 24px}.app-shell{display:block}.sidebar{position:relative;width:100%;height:auto;padding:17px}.brand{display:flex;align-items:center;gap:14px;padding-bottom:15px}.brand img{width:110px}.brand span{margin:0}.nav{display:grid;grid-template-columns:repeat(2,1fr);max-height:none}.sidebar-bottom{margin-top:8px}.content{padding:22px 16px}.two-col{grid-template-columns:1fr}.card-grid{grid-template-columns:1fr}.topbar-user{display:none}}
@media(max-width:520px){.stats-grid{grid-template-columns:1fr 1fr}.stat-card{padding:16px}.stat-card strong{font-size:26px}.topbar-app h1{font-size:28px}.form-row{grid-template-columns:1fr}.nav{grid-template-columns:1fr 1fr}.login-brand-panel{min-height:280px}.login-logo{width:160px}.timeline-item{grid-template-columns:70px 1fr}.panel{padding:17px}}

.filter-grid{display:grid;grid-template-columns:1.3fr 1.3fr .8fr .8fr auto;gap:12px;align-items:end}.filter-grid label{display:flex;flex-direction:column;gap:7px;font-size:12px;font-weight:700;color:#514b52}.filter-grid input,.filter-grid select{border:1px solid #dcd6dc;border-radius:9px;background:#fff;padding:11px 12px}.filter-action{padding-bottom:1px}.protected-player{position:relative;background:#111;border-radius:16px;overflow:hidden;user-select:none}.protected-player video{display:block;width:100%;max-height:72vh;background:#000}.watermark{position:absolute;right:18px;top:16px;color:rgba(255,255,255,.62);font-size:11px;letter-spacing:.04em;text-shadow:0 1px 3px rgba(0,0,0,.8);pointer-events:none}.embed-video{position:relative;padding-top:56.25%;background:#111;border-radius:16px;overflow:hidden}.embed-video iframe{position:absolute;inset:0;width:100%;height:100%;border:0}.video-description{margin-top:18px;color:var(--muted)}
@media(max-width:980px){.filter-grid{grid-template-columns:1fr 1fr}.filter-action{grid-column:1/-1}.filter-action .btn{width:100%}}
/* V1.2.0 — filtros, ações e gestão */
.filter-panel{padding:16px 18px;width:min(100%,1060px);max-width:100%}.filter-line{display:grid;grid-template-columns:minmax(220px,1.6fr) minmax(150px,.7fr) auto auto;gap:10px;align-items:end}.filter-line.wide{grid-template-columns:repeat(4,minmax(150px,1fr)) auto auto}.filter-line label{display:flex;flex-direction:column;gap:6px;font-size:11px;font-weight:700;color:#514b52}.filter-line input,.filter-line select{width:100%;border:1px solid #dcd6dc;border-radius:9px;background:#fff;padding:10px 11px;color:var(--ink);outline:none}.row-actions{display:flex;gap:7px;justify-content:flex-end;align-items:center;flex-wrap:wrap}.row-actions form{margin:0}.row-actions .btn{white-space:nowrap}.nav-separator{height:1px;background:rgba(255,255,255,.1);margin:10px 8px}.sidebar-version{padding:8px 10px 10px;color:#9f91a2;font-size:10px;letter-spacing:.05em}.sidebar-version strong{color:#d4c8d6}.topbar-user{display:flex;align-items:center;gap:10px;transition:.18s}.topbar-user:hover{border-color:#cbb9d0;box-shadow:0 4px 18px rgba(68,43,73,.08)}.topbar-user-arrow{font-size:18px;line-height:1;color:var(--purple)}.info-list{margin:0}.info-list>div{display:grid;grid-template-columns:120px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--line)}.info-list dt{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.07em}.info-list dd{margin:0}.actions{min-width:170px}
@media(max-width:1250px){.filter-line.wide{grid-template-columns:repeat(2,minmax(180px,1fr))}.filter-line.wide .btn{align-self:end}}
@media(max-width:900px){.filter-line,.filter-line.wide{grid-template-columns:1fr 1fr}.filter-line .btn,.filter-line.wide .btn{width:100%}}
@media(max-width:600px){.filter-line,.filter-line.wide{grid-template-columns:1fr}.row-actions{justify-content:flex-start}.info-list>div{grid-template-columns:1fr;gap:4px}}

@media(max-width:1250px){.filter-panel{width:100%}}

/* V1.2.2 — composição do admin */
.page-main-stack{min-width:0;display:flex;flex-direction:column;gap:16px}
.page-main-stack>.panel{margin-bottom:0}
.page-main-stack>.filter-panel{width:100%;max-width:none;padding:15px 16px}
.page-main-stack+.form-panel{margin-bottom:0;align-self:start;top:18px}
.page-main-stack .filter-line.wide{grid-template-columns:minmax(180px,1.15fr) minmax(140px,.9fr) minmax(160px,1fr) minmax(120px,.7fr) auto auto}
.page-main-stack .filter-line{grid-template-columns:minmax(220px,1.4fr) minmax(145px,.7fr) auto auto}
@media(max-width:1450px){.page-main-stack .filter-line.wide{grid-template-columns:repeat(2,minmax(180px,1fr)) auto auto}}
@media(max-width:1100px){.page-main-stack{gap:14px}.page-main-stack+.form-panel{position:static}.page-main-stack .filter-line,.page-main-stack .filter-line.wide{grid-template-columns:1fr 1fr}.page-main-stack .filter-line .btn,.page-main-stack .filter-line.wide .btn{width:100%}}
@media(max-width:600px){.page-main-stack .filter-line,.page-main-stack .filter-line.wide{grid-template-columns:1fr}}


/* V1.2.3 — materiais: alinhamento e acesso */
.materials-table{table-layout:fixed;min-width:860px}
.materials-table th:nth-child(1){width:35%}
.materials-table th:nth-child(2){width:20%}
.materials-table th:nth-child(3){width:17%}
.materials-table th:nth-child(4){width:10%}
.materials-table th:nth-child(5){width:18%}
.materials-table td{vertical-align:middle}
.material-cell{padding-top:15px;padding-bottom:15px}
.material-title-link{display:block;color:var(--ink);font-weight:700;line-height:1.3;text-decoration:none;white-space:normal;overflow-wrap:anywhere}
.material-title-link:hover{color:var(--purple);text-decoration:underline;text-underline-offset:3px}
.material-context{display:block;margin-top:5px;color:var(--muted);font-size:11px;line-height:1.3;white-space:normal;overflow-wrap:anywhere}
.material-cohort{line-height:1.35}
.material-type{display:inline-block;text-transform:capitalize;color:#514b52}
.icon-actions{display:flex;gap:8px;justify-content:flex-end;align-items:center;flex-wrap:nowrap}
.icon-actions form{margin:0}
.icon-btn{width:38px;height:38px;border:1px solid #decfe2;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;background:#fff;color:var(--purple-700);text-decoration:none;font-size:16px;line-height:1;transition:.18s ease}
.icon-btn:hover{background:#f7f1f9;border-color:#cdb8d3;transform:translateY(-1px)}
.icon-btn:focus{outline:2px solid rgba(127,66,147,.18);outline-offset:2px}
.icon-btn.material-open{background:#fbf8fc}
.materials-table .actions{min-width:150px}
@media(max-width:1280px){.icon-actions{flex-wrap:wrap}.materials-table th:nth-child(1){width:31%}.materials-table th:nth-child(5){width:21%}}


/* V1.2.4 — materiais: ações compactas */
