:root{--bg:#eef4ff;--card:#fff;--ink:#0b1e33;--muted:#5b6f8c;--line:#dce7f5;--blue:#2563eb;--blue2:#1d4ed8;--red:#dc2626;--green:#0f766e;--gold:#d97706;--purple:#7c3aed;--shadow:0 8px 30px rgba(15,23,42,.10);--radius:14px}
*{box-sizing:border-box}body{margin:0;font-family:Inter,-apple-system,Segoe UI,Arial,sans-serif;background:linear-gradient(160deg,#f0f5ff 0,#fafcff 40%,#f0f2ff 100%);color:var(--ink);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{cursor:pointer}a{color:var(--blue);font-weight:700;text-decoration:none}
.auth{min-height:100vh;display:grid;place-items:center;padding:20px;background:linear-gradient(135deg,#eef2ff,#faf5ff)}.auth-card{width:min(400px,92vw);background:rgba(255,255,255,.88);backdrop-filter:blur(12px);border:1px solid rgba(255,255,255,.6);border-radius:24px;padding:32px;box-shadow:0 20px 60px rgba(15,23,42,.14)}.mark{width:52px;height:52px;border-radius:16px;display:grid;place-items:center;background:linear-gradient(135deg,#38bdf8,#2563eb,#7c3aed);font-weight:900;font-size:20px;color:#fff;margin-bottom:12px;box-shadow:0 8px 20px rgba(37,99,235,.3)}.auth-card h1{margin:0 0 4px;font-size:26px;font-weight:800}.auth-card p{margin:0 0 20px;color:var(--muted);font-size:14px}label{display:block;margin:14px 0 5px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:#4a5c7a}input,select,textarea{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:11px 13px;background:#fff;color:var(--ink);transition:border-color .15s;font-size:14px}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}button,.btn{border:1px solid var(--line);border-radius:var(--radius);padding:10px 16px;background:#fff;color:var(--ink);font-weight:700;box-shadow:0 4px 12px rgba(15,23,42,.06);text-decoration:none;display:inline-block;transition:all .12s;font-size:13px;line-height:1.3}button:hover,.btn:hover{box-shadow:0 6px 20px rgba(15,23,42,.10);transform:translateY(-1px)}.primary,.btn.primary{background:linear-gradient(135deg,var(--blue),#1d4ed8);border-color:var(--blue);color:#fff;box-shadow:0 4px 16px rgba(37,99,235,.25)}.primary:hover{box-shadow:0 6px 24px rgba(37,99,235,.35)}.danger{background:linear-gradient(135deg,#ef4444,#b91c1c);border-color:#b91c1c;color:#fff;box-shadow:0 4px 16px rgba(220,38,38,.2)}.green{background:linear-gradient(135deg,#0f766e,#115e59);border-color:#115e59;color:#fff;box-shadow:0 4px 16px rgba(15,118,110,.2)}.auth-card button{width:100%;margin:18px 0 10px}.alert{padding:10px 14px;border-radius:12px;margin:10px 0;font-weight:700;font-size:13px}.alert.err{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.shell{min-height:100vh}.topbar{position:sticky;top:0;z-index:20;background:rgba(255,255,255,.78);backdrop-filter:blur(16px);border-bottom:1px solid var(--line)}.topbar-inner{max-width:1520px;margin:0 auto;padding:12px 20px;display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px 16px}.brand{display:flex;align-items:center;gap:12px}.brand h1{font-size:18px;margin:0;font-weight:800;letter-spacing:-.02em}.brand p{font-size:11px;color:var(--muted);margin:0}.tabs{display:flex;gap:2px;flex-wrap:wrap}.tab-btn{font-size:12px;padding:6px 14px;border-radius:999px;border:1px solid transparent;background:transparent;color:var(--muted);font-weight:700;transition:all .12s;white-space:nowrap}.tab-btn.active,.tab-btn:hover{background:var(--blue);border-color:var(--blue2);color:#fff;box-shadow:0 4px 14px rgba(37,99,235,.2)}.userbar{display:flex;align-items:center;gap:10px;font-size:13px;font-weight:700}.container{max-width:1520px;margin:0 auto;padding:20px}.hero{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:14px;margin:0 0 18px;padding:20px 24px;background:rgba(255,255,255,.7);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:20px;box-shadow:var(--shadow)}.hero h2{margin:0;font-size:24px;font-weight:800;background:linear-gradient(135deg,#1e3a5f,#2563eb,#7c3aed);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.02em}.hero p{margin:6px 0 0;color:var(--muted);font-size:13px}.toolbar{display:flex;gap:8px;flex-wrap:wrap}.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px;margin-bottom:20px}.metric{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px 14px;text-align:center;box-shadow:0 4px 16px rgba(15,23,42,.05)}.metric strong{display:block;font-size:28px;font-weight:900;margin-bottom:2px;color:#1e293b}.metric span{font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em}.section{display:none}.section.active{display:block}.panel{background:#fff;border:1px solid var(--line);border-radius:20px;padding:20px 22px;margin-bottom:18px;box-shadow:var(--shadow)}.panel h3{margin:0 0 8px;font-size:16px;font-weight:800}.muted{color:var(--muted);font-size:13px;margin:4px 0}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}.schedule{width:100%;border-collapse:collapse;font-size:12px}.schedule th,.schedule td{border:1px solid var(--line);padding:5px 6px;text-align:left;vertical-align:top}.schedule th{background:#f1f5f9;font-weight:700;font-size:10px;white-space:nowrap;position:sticky;top:0;z-index:2}.schedule td:first-child,.schedule th:first-child{position:sticky;left:0;z-index:3;background:#f1f5f9;width:40px}.tablewrap{overflow-x:auto;border-radius:12px;border:1px solid var(--line)}.day{background:#fff;border:1px solid var(--line);border-radius:16px;margin:0 0 14px;box-shadow:0 4px 14px rgba(15,23,42,.04);overflow:hidden}.day h3{padding:10px 14px;margin:0;font-size:12px;font-weight:800;background:#f8fafc;border-bottom:1px solid var(--line);letter-spacing:.03em}.status{padding:10px 14px;border-radius:12px;background:#f1f5f9;font-weight:700;font-size:13px}.status.err{background:#fef2f2;color:#991b1b}.status.warn{background:#fffbeb;color:#92400e}.section .btn,.section button{margin:0}.ai-output{background:#1e293b;color:#e2e8f0;border-radius:16px;padding:16px;margin-top:12px;font-size:12px;white-space:pre-wrap;font-family:'JetBrains Mono',monospace}.ai-output.hide{display:none}
@media(max-width:900px){.topbar-inner,.hero{display:block}.tabs,.toolbar{margin-top:10px}.cards,.grid{grid-template-columns:1fr 1fr}.hero h2{font-size:22px}.userbar{margin-top:10px}}@media(max-width:560px){.container{padding:12px}.cards,.grid{grid-template-columns:1fr}.toolbar{display:grid}.btn,button{width:100%}.schedule{font-size:11px;min-width:760px}}

/* ========== GRADE / LESSONS ========== */
.lesson{cursor:grab;position:relative;overflow:hidden;margin:2px 0;padding:7px 8px 6px 10px!important;border-left:4px solid var(--prof-color,#2563eb)!important;border-radius:10px!important;background:linear-gradient(180deg,var(--prof-color,#2563eb) 10%,#fff 48%)!important;box-shadow:0 2px 8px rgba(15,23,42,.06)!important;transition:box-shadow .12s}.lesson:hover{box-shadow:0 4px 14px rgba(15,23,42,.10)!important}.lesson:active{cursor:grabbing}.lesson.dragging{opacity:.4;outline:2px dashed var(--blue)}.slot{transition:background .12s;min-height:58px;background:#fbfdff}.slot.drag-over{background:#dbeafe!important;outline:2px solid #2563eb;outline-offset:-2px}.slot .empty{pointer-events:none;font-size:10px;color:#94a3b8;padding:12px 4px;text-align:center}
.lesson-top{display:grid!important;grid-template-columns:12px minmax(0,1fr) auto!important;gap:4px!important;align-items:start!important}.lesson-top b{font-size:12px!important;line-height:1.2!important;color:#020617!important;overflow:hidden;text-overflow:ellipsis;font-weight:800!important}.lesson span{font-size:10px!important;line-height:1.25!important;color:#374151!important}.lesson .prof-name{font-weight:800!important;color:#0f172a!important;font-size:10px!important}.drag-handle{font-size:13px!important;color:#94a3b8!important;line-height:1!important;margin-top:1px!important;cursor:grab!important}.lesson-actions{display:flex!important;gap:3px!important;margin:0!important;opacity:0!important;transition:opacity .12s!important}.lesson.show-actions .lesson-actions{opacity:1!important}.icon-btn{all:unset!important;width:18px!important;height:18px!important;border-radius:6px!important;display:inline-grid!important;place-items:center!important;background:#fff!important;border:1px solid #d1d9e8!important;color:var(--blue)!important;font-size:12px!important;font-weight:900!important;line-height:1!important;cursor:pointer!important;box-shadow:0 2px 6px rgba(15,23,42,.08)!important;transition:all .1s!important}.icon-btn:hover{background:#dbeafe!important;transform:scale(1.1)!important}.danger-icon{color:var(--red)!important}.danger-icon:hover{background:#fee2e2!important;border-color:#fecaca!important}
.color-dot{display:inline-block;width:11px;height:11px;border-radius:999px;margin-right:6px;vertical-align:middle;border:1.5px solid #fff;box-shadow:0 0 0 1px #cbd5e1}.item-row{display:grid;grid-template-columns:1fr auto auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:14px;padding:10px 14px;margin:8px 0;background:#fff;transition:box-shadow .1s}.item-row:hover{box-shadow:0 4px 14px rgba(15,23,42,.06)}.admin-table{font-size:12px}.admin-table th,.admin-table td{padding:6px 8px}.admin-table th{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.schedule th{font-weight:800;letter-spacing:.02em}

/* ========== LEGENDA ========== */
.print-legend{display:flex;flex-wrap:wrap;gap:4px 10px;align-items:center;margin:0 0 8px;padding:6px 10px;border:1px solid var(--line);border-radius:10px;background:rgba(255,255,255,.7);font-size:11px;box-shadow:0 2px 8px rgba(15,23,42,.04)}.legend-item{display:inline-flex;align-items:center;gap:5px;white-space:nowrap;font-weight:700;color:#374151;font-size:11px}.legend-item i{width:11px;height:11px;border-radius:999px;display:inline-block;border:1.5px solid rgba(15,23,42,.15);flex-shrink:0}.print-title{display:none;margin:0 0 3mm;text-align:center;font-size:16px;font-weight:900;letter-spacing:-.02em}.turno-page{page-break-after:always;break-after:page}.turno-page:last-child{page-break-after:auto;break-after:auto}

/* ========== SHARE LINK UI ========== */
.share-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px;margin:12px 0;box-shadow:0 4px 14px rgba(15,23,42,.05)}.share-card .share-url{font-family:'SF Mono',monospace;font-size:13px;background:#f1f5f9;padding:8px 12px;border-radius:10px;word-break:break-all;margin:8px 0;border:1px solid var(--line)}.share-card .share-actions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.share-card .toggle-active{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700}.toggle-active input[type=checkbox]{width:auto;accent-color:var(--blue)}.share-empty{text-align:center;padding:30px 10px;color:var(--muted)}.copy-btn{cursor:pointer}.copy-btn:active{opacity:.6}

/* ========== SCHOOL UI ========== */
.school-badge{display:inline-flex;align-items:center;gap:6px;padding:3px 12px;background:linear-gradient(135deg,#dbeafe,#e0f2fe);border-radius:999px;font-size:12px;font-weight:800;color:#0369a1;border:1px solid #b8d6fb}.school-form{max-width:420px}.school-select{width:100%;padding:10px;border-radius:12px;border:1.5px solid var(--line);background:#fff;font-size:14px;margin:4px 0 12px}

/* ========== PUBLIC SHARE PAGE ========== */
.public-shell{min-height:100vh;background:linear-gradient(160deg,#f0f5ff,#fafcff);padding:20px}.public-header{text-align:center;padding:24px 16px;background:rgba(255,255,255,.8);backdrop-filter:blur(8px);border:1px solid var(--line);border-radius:20px;margin-bottom:20px;box-shadow:var(--shadow)}.public-header h1{margin:0;font-size:22px;font-weight:800;letter-spacing:-.02em}.public-header p{color:var(--muted);margin:6px 0 0;font-size:14px}.public-controls{max-width:500px;margin:0 auto 20px;display:flex;gap:10px;align-items:center;flex-wrap:wrap;justify-content:center}.public-controls select{padding:10px 16px;border-radius:12px;border:1.5px solid var(--line);background:#fff;font-size:14px;min-width:200px;font-weight:600}.public-grade{max-width:1200px;margin:0 auto}.public-legend{display:flex;flex-wrap:wrap;gap:6px 14px;justify-content:center;margin:12px 0;padding:10px 16px;background:rgba(255,255,255,.7);backdrop-filter:blur(4px);border:1px solid var(--line);border-radius:14px;font-size:11px}.public-legend-item{display:inline-flex;align-items:center;gap:5px;font-weight:700;color:#374151}.public-legend-item i{width:10px;height:10px;border-radius:50%;display:inline-block;border:1.5px solid rgba(15,23,42,.1)}
.public-table{width:100%;border-collapse:collapse;font-size:12px;background:#fff;border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 4px 14px rgba(15,23,42,.05)}.public-table th,.public-table td{border:1px solid var(--line);padding:7px 10px;text-align:left}.public-table th{background:#f1f5f9;font-weight:800;font-size:11px;text-align:center;text-transform:uppercase;letter-spacing:.04em}.public-table td{vertical-align:top}.public-table .pub-lesson{padding:5px 8px;margin:2px 0;border-radius:8px;border-left:3px solid var(--prof-color,#2563eb);font-size:11px;line-height:1.35;background:linear-gradient(180deg,var(--prof-color,#2563eb) 8%,#fff 42%)}.public-table .pub-lesson strong{display:block;font-size:11px;font-weight:800}.public-table .pub-lesson span{font-size:10px;color:#475569}.public-empty{text-align:center;padding:50px 20px;color:var(--muted);font-size:14px}.public-footer{text-align:center;padding:24px;font-size:11px;color:#94a3b8}

/* ========== IA MODIFICADORA ========== */
#iaPrompt{width:100%;border:1.5px solid var(--line);border-radius:12px;padding:10px 13px;font-size:13px;resize:vertical;background:#fff;color:var(--ink);transition:border-color .15s;font-family:inherit}#iaPrompt:focus{outline:none;border-color:var(--blue);box-shadow:0 0 0 3px rgba(37,99,235,.12)}#iaModLog{transition:opacity .2s}#iaUndoBtn{transition:all .15s}.ai-output{font-size:13px;line-height:1.55;white-space:pre-wrap;margin-top:8px}.ai-output.hide{display:none}.ai-output pre{white-space:pre-wrap;word-break:break-all}.alert{padding:10px 12px;border-radius:12px;margin:10px 0;font-weight:800}.alert.err{background:#fef2f2;border:1px solid #fecaca;color:#991b1b}.alert.ok{background:#f0fdf4;border:1px solid #bbf7d0;color:#166534}.status.ok{color:#166534;font-weight:700}.status.err{color:#991b1b;font-weight:700}

/* ========== TABELA SEMANAL COMPACTA (só para impressão) ========== */
.print-weekly{display:none}
.compact-print{width:100%;border-collapse:collapse;font-size:12px;background:#fff}.compact-print th,.compact-print td{border:1px solid var(--line);padding:4px 5px;text-align:left;vertical-align:top}.compact-print th{background:#f1f5f9;font-weight:800;font-size:10px;text-align:center}.cp-time{font-weight:800;text-align:center!important;white-space:nowrap;width:38px;background:#f8fafc}.cp-lesson{display:flex;flex-wrap:wrap;gap:1px 4px;padding:1px 0;font-size:10px;line-height:1.25;border-left:3px solid var(--prof-color,#2563eb);padding-left:4px;margin:1px 0;background:linear-gradient(180deg,var(--prof-color,#2563eb) 8%,#fff 40%)}.cp-turma{font-weight:800;color:#0f172a;font-size:9px;min-width:20px;background:rgba(0,0,0,.06);padding:0 3px;border-radius:3px}.cp-comp{color:#1e293b;font-size:9px}.cp-prof{color:#475569;font-size:8px;font-style:italic}.cp-sep{color:#94a3b8;font-size:8px;margin:0 1px}.cp-empty{color:#cbd5e1;font-size:9px}

/* ======================================================
   IMPRESSÃO — TABELA SEMANAL COMPACTA, 2 FOLHAS
   ====================================================== */
@page{size:A4 landscape;margin:3mm 4mm}
@media print{
html,body{width:100%!important;height:auto!important;margin:0!important;padding:0!important;background:#fff!important;color:#000!important;font-size:9pt!important;line-height:1.15!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}

/* Esconde navegação, botões, sidebar mobile e tabelas de edição do site */
.sidebar,.sidebar-toggler,.sidebar-collapser,#btn-toggle,.overlay,.userbar,.hero,.hero .toolbar,.cards,.no-print,.btn,button,.drag-handle,.icon-btn,.lesson-actions,.lesson .lesson-actions *,.slot .empty,.day,.ia-chat-panel,.ia-chat-panel *{display:none!important}
.layout,.content,.section,#gradeOut{padding:0!important;margin:0!important;min-height:auto!important;width:100%!important;max-width:none!important;display:block!important}

/* Mostra a tabela semanal compacta */
.print-weekly{display:block!important}
.print-weekly .tablewrap{border:none!important;overflow:visible!important;box-shadow:none!important}

/* Cabeçalho do turno — moderno e elegante */
.turno-page{page-break-after:always;break-after:page}
.turno-page:last-child{page-break-after:auto;break-after:auto}
.print-title{display:block!important;font-size:17pt!important;font-weight:400!important;text-align:center!important;margin:0 0 1.8mm!important;padding:.8mm 0 1mm!important;color:#111827!important;border-bottom:2px solid #111827!important;letter-spacing:.06em!important;text-transform:uppercase!important}

/* Legenda — clean, discreta, sem borda pesada */
.print-legend{display:flex!important;align-items:center!important;flex-wrap:wrap!important;border:0!important;border-radius:0!important;padding:.6mm 0!important;margin:0 0 1.4mm!important;gap:.5mm 1.4mm!important;font-size:7pt!important;line-height:1.25!important;background:transparent!important;color:#475569!important}
.print-legend b{font-size:7pt!important;color:#475569!important;margin-right:.4mm!important;font-weight:700!important}
.legend-item{display:inline-flex!important;align-items:center!important;gap:.5mm!important;color:#334155!important;font-weight:600!important;font-size:7pt!important;white-space:nowrap!important}
.legend-item i{width:2.1mm!important;height:2.1mm!important;border-radius:999px!important;border:.4px solid rgba(0,0,0,.12)!important;display:inline-block!important;background:var(--prof-color,#2563eb)!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}

/* Tabela semanal compacta — moderna, limpa */
.compact-print{width:100%!important;table-layout:fixed!important;border-collapse:collapse!important;font-size:8.4pt!important;margin:0!important;border:1px solid #94a3b8!important}
.compact-print th,.compact-print td{border:.6px solid #cbd5e1!important;padding:.75mm .9mm!important;text-align:left!important;vertical-align:top!important;color:#0f172a!important;background:#fff!important}
.compact-print th{font-size:8pt!important;font-weight:800!important;background:#eaf1fb!important;text-align:center!important;text-transform:uppercase!important;letter-spacing:.04em!important;color:#1f2937!important;white-space:nowrap!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}
.compact-print td:first-child{width:11mm!important;font-weight:800!important;text-align:center!important;vertical-align:middle!important;background:#f1f5f9!important;font-size:7.5pt!important;color:#111827!important;white-space:nowrap!important}
.compact-print th:first-child{position:static!important;left:auto!important;width:11mm!important;min-width:11mm!important}
.turno-matutino .compact-print tbody tr{height:31mm!important}
.turno-vespertino .compact-print tbody tr,.turno-noturno .compact-print tbody tr{height:34mm!important}

/* Cada aula dentro da célula — cards sutis e legíveis */
.cp-lesson{display:flex!important;flex-wrap:wrap!important;align-items:baseline!important;gap:.25mm .65mm!important;padding:.42mm .55mm!important;margin:.28mm 0!important;border-left:2.7px solid var(--prof-color,#2563eb)!important;padding-left:1mm!important;background:rgba(255,255,255,.96)!important;font-size:7.8pt!important;line-height:1.22!important;border-radius:1px!important;box-shadow:none!important;break-inside:avoid!important;page-break-inside:avoid!important}
.cp-turma{font-weight:800!important;color:#0f172a!important;font-size:7.2pt!important;background:rgba(0,0,0,.045)!important;padding:0 1.8px!important;border-radius:1px!important;letter-spacing:.01em!important}
.cp-comp{color:#111827!important;font-size:7.2pt!important;font-weight:700!important}
.cp-prof{color:#334155!important;font-size:6.8pt!important;font-style:normal!important;font-weight:500!important}
.cp-sep{color:#94a3b8!important;font-size:6pt!important;margin:0 .35mm!important}
.cp-empty{color:#cbd5e1!important;font-size:7pt!important}
}
@keyframes slideDown{from{opacity:0;transform:translateX(-50%) translateY(-20px)}to{opacity:1;transform:translateX(-50%) translateY(0)}}
