:root{
  --coral:#FF7A6B; --coral-l:#FFE3DF;
  --sun:#FFC83D;   --sun-l:#FFF4D1;
  --grass:#6BCB77; --grass-l:#E2F7E4;
  --sky:#4FC3F7;   --sky-l:#DFF4FD;
  --grape:#9B7BFF; --grape-l:#EEE8FF;
  --pink:#FF8FC7;  --pink-l:#FFE6F3;
  --orange:#FF9F43;--orange-l:#FFEBD7;
  --teal:#2EC4B6;  --teal-l:#DBF6F3;
  --ink:#3A2E5C; --ink-2:#6B6290; --ink-3:#9C95B8;
  --bg:#FFF9F0; --card:#FFFFFF; --line:#F0E8DA;
  --red:#F2545B; --red-l:#FDE3E4;
  --shadow:0 6px 0 rgba(58,46,92,.06), 0 10px 28px rgba(58,46,92,.08);
  --r:22px;
  --side:264px;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:Nunito,system-ui,sans-serif;color:var(--ink);background:var(--bg);font-size:15px;line-height:1.45;
  background-image:radial-gradient(circle at 20px 20px, rgba(255,200,61,.10) 3px, transparent 4px),radial-gradient(circle at 60px 60px, rgba(79,195,247,.08) 3px, transparent 4px);
  background-size:80px 80px;}
h1,h2,h3,h4,.baloo{font-family:'Baloo 2',Nunito,sans-serif;margin:0;line-height:1.15}
h1{font-size:30px;font-weight:800} h2{font-size:22px;font-weight:800} h3{font-size:18px;font-weight:700} h4{font-size:15px;font-weight:700}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
.muted{color:var(--ink-2)} .tiny{font-size:12px} .small{font-size:13px} .bold{font-weight:800}
.hidden{display:none!important}

/* ===== Layout ===== */
.shell{display:flex;min-height:100vh}
.side{width:var(--side);flex:0 0 var(--side);background:#fff;border-right:3px dashed var(--line);position:sticky;top:0;height:100vh;overflow-y:auto;padding:18px 14px 30px;z-index:40}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 16px}
.brand img{width:46px;height:46px}
.wordmark{font-family:'Baloo 2';font-weight:800;font-size:30px;letter-spacing:.5px;line-height:1}
.wordmark span:nth-child(6n+1){color:var(--coral)} .wordmark span:nth-child(6n+2){color:var(--orange)}
.wordmark span:nth-child(6n+3){color:var(--sun)} .wordmark span:nth-child(6n+4){color:var(--grass)}
.wordmark span:nth-child(6n+5){color:var(--sky)} .wordmark span:nth-child(6n){color:var(--grape)}
.brand small{display:block;font-size:11px;color:var(--ink-3);font-weight:700;letter-spacing:.3px}
.nav-group{margin:12px 0 4px;padding:0 10px;font-size:11px;font-weight:800;color:var(--ink-3);text-transform:uppercase;letter-spacing:1px}
.nav a{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:14px;text-decoration:none;font-weight:700;color:var(--ink-2);margin:2px 0;transition:.15s}
.nav a .ic{width:30px;height:30px;border-radius:10px;display:grid;place-items:center;font-size:16px;background:var(--bg)}
.nav a:hover{background:var(--sun-l);color:var(--ink)}
.nav a.on{background:var(--ink);color:#fff}
.nav a.on .ic{background:rgba(255,255,255,.15)}
.nav .badge{margin-left:auto}
.main{flex:1;min-width:0;padding:22px 28px 60px}
.topbar{display:flex;align-items:center;gap:14px;margin-bottom:22px;flex-wrap:wrap}
.topbar .title{flex:1;min-width:200px}
.topbar .title p{margin:2px 0 0;color:var(--ink-2);font-weight:600}
.menu-btn{display:none}
.chip-user{display:flex;align-items:center;gap:8px;background:#fff;border-radius:999px;padding:5px 12px 5px 5px;box-shadow:var(--shadow);font-weight:700}
.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-size:18px;flex:0 0 auto;font-weight:800;color:#fff}
.avatar.lg{width:84px;height:84px;font-size:40px}
.avatar.md{width:48px;height:48px;font-size:24px}
.avatar.sm{width:28px;height:28px;font-size:14px}

/* ===== Cards & grid ===== */
.grid{display:grid;gap:18px}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))} .g3{grid-template-columns:repeat(3,minmax(0,1fr))} .g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.g-auto{grid-template-columns:repeat(auto-fill,minmax(240px,1fr))}
.span2{grid-column:span 2} .span3{grid-column:span 3}
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:18px;position:relative;min-width:0}
.card.flat{box-shadow:none;border:2px solid var(--line)}
.card-h{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.card-h h3{flex:1}
.card-h .ic{width:36px;height:36px;border-radius:12px;display:grid;place-items:center;font-size:18px}
.kpi{display:flex;gap:14px;align-items:center}
.kpi .ic{width:54px;height:54px;border-radius:18px;display:grid;place-items:center;font-size:26px;flex:0 0 auto}
.kpi .v{font-family:'Baloo 2';font-size:30px;font-weight:800;line-height:1}
.kpi .l{color:var(--ink-2);font-weight:700;font-size:13px}
.bg-coral{background:var(--coral-l)} .bg-sun{background:var(--sun-l)} .bg-grass{background:var(--grass-l)} .bg-sky{background:var(--sky-l)}
.bg-grape{background:var(--grape-l)} .bg-pink{background:var(--pink-l)} .bg-orange{background:var(--orange-l)} .bg-teal{background:var(--teal-l)} .bg-red{background:var(--red-l)}
.c-coral{color:var(--coral)} .c-grass{color:#3a9e47} .c-red{color:var(--red)} .c-sky{color:#1d93c9} .c-grape{color:#7255e0} .c-orange{color:#e07b12}

/* ===== Buttons, inputs ===== */
.btn{border:0;cursor:pointer;border-radius:14px;padding:10px 16px;font-weight:800;display:inline-flex;align-items:center;gap:8px;background:var(--ink);color:#fff;box-shadow:0 4px 0 rgba(0,0,0,.15);transition:transform .08s;white-space:nowrap;text-decoration:none}
.btn:active{transform:translateY(2px);box-shadow:0 2px 0 rgba(0,0,0,.15)}
.btn.coral{background:var(--coral)} .btn.grass{background:var(--grass)} .btn.sky{background:var(--sky)} .btn.sun{background:var(--sun);color:var(--ink)} .btn.grape{background:var(--grape)} .btn.red{background:var(--red)}
.btn.ghost{background:#fff;color:var(--ink);box-shadow:inset 0 0 0 2px var(--line)}
.btn.sm{padding:6px 11px;font-size:13px;border-radius:11px}
.btn.icon{padding:8px 10px}
.btns{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:12px}
.field label{font-weight:800;font-size:13px;color:var(--ink-2)}
.input,select.input,textarea.input{border:2px solid var(--line);background:#fff;border-radius:14px;padding:10px 12px;outline:none;width:100%}
.input:focus{border-color:var(--sky)}
textarea.input{min-height:90px;resize:vertical}
.search{position:relative}
.search input{padding-left:38px}
.search:before{content:'🔎';position:absolute;left:12px;top:50%;transform:translateY(-50%);font-size:14px}
.check{display:flex;align-items:center;gap:8px;font-weight:700;cursor:pointer}
.check input{width:18px;height:18px;accent-color:var(--grass)}

/* ===== Pills / badges ===== */
.pill{display:inline-flex;align-items:center;gap:5px;padding:3px 10px;border-radius:999px;font-weight:800;font-size:12px;background:var(--bg);white-space:nowrap}
.pill.coral{background:var(--coral-l);color:#c94b3d} .pill.grass{background:var(--grass-l);color:#2f8a3b} .pill.sun{background:var(--sun-l);color:#9a6f00}
.pill.sky{background:var(--sky-l);color:#1677a6} .pill.grape{background:var(--grape-l);color:#5d40cc} .pill.red{background:var(--red-l);color:#c5262e}
.pill.pink{background:var(--pink-l);color:#c0397f} .pill.orange{background:var(--orange-l);color:#b86206} .pill.ink{background:var(--ink);color:#fff}
.badge{background:var(--coral);color:#fff;border-radius:999px;font-size:11px;font-weight:800;padding:2px 7px}

/* ===== Tables / lists ===== */
.table-wrap{overflow-x:auto;border-radius:16px}
table.t{width:100%;border-collapse:separate;border-spacing:0;font-size:14px}
.t th{text-align:left;font-size:12px;text-transform:uppercase;letter-spacing:.6px;color:var(--ink-3);padding:10px 12px;border-bottom:2px solid var(--line);white-space:nowrap}
.t td{padding:11px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
.t tr:hover td{background:#FFFCF6}
.t tr.click{cursor:pointer}
.list .row{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:1px dashed var(--line)}
.list .row:last-child{border-bottom:0}
.list .row .grow{flex:1;min-width:0}
.empty{text-align:center;padding:30px;color:var(--ink-3);font-weight:700}
.empty .e{font-size:44px}

/* ===== Tabs ===== */
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:16px}
.tab{border:0;background:#fff;padding:8px 14px;border-radius:999px;font-weight:800;cursor:pointer;color:var(--ink-2);box-shadow:inset 0 0 0 2px var(--line)}
.tab.on{background:var(--ink);color:#fff;box-shadow:none}

/* ===== Progress ===== */
.bar{height:10px;background:var(--bg);border-radius:99px;overflow:hidden}
.bar>i{display:block;height:100%;border-radius:99px;background:var(--grass)}
.ring{--p:50;--c:var(--grass);width:64px;height:64px;border-radius:50%;background:conic-gradient(var(--c) calc(var(--p)*1%), var(--bg) 0);display:grid;place-items:center;flex:0 0 auto}
.ring>span{width:48px;height:48px;border-radius:50%;background:#fff;display:grid;place-items:center;font-weight:800;font-size:13px}

/* ===== Charts ===== */
.bars{display:flex;align-items:flex-end;gap:10px;height:170px;padding-top:10px}
.bars .b{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px;height:100%;justify-content:flex-end;min-width:0}
.bars .b i{width:100%;max-width:38px;border-radius:10px 10px 4px 4px;display:block}
.bars .b small{font-size:11px;color:var(--ink-3);font-weight:700}
.bars .b em{font-style:normal;font-size:11px;font-weight:800;color:var(--ink-2)}

/* ===== Timeline (rotina) ===== */
.tl{position:relative;padding-left:8px}
.tl-item{display:flex;gap:14px;align-items:stretch;margin-bottom:10px}
.tl-time{width:62px;flex:0 0 62px;text-align:right;font-family:'Baloo 2';font-weight:800;color:var(--ink-2);padding-top:10px}
.tl-dot{width:46px;height:46px;border-radius:16px;display:grid;place-items:center;font-size:22px;flex:0 0 auto}
.tl-body{flex:1;border-radius:18px;padding:10px 14px;background:#fff;border:2px solid var(--line)}
.tl-item.now .tl-body{border-color:var(--coral);box-shadow:0 0 0 4px var(--coral-l)}
.tl-item.past{opacity:.55}

/* ===== Modal ===== */
.modal-bg{position:fixed;inset:0;background:rgba(58,46,92,.45);display:flex;align-items:flex-start;justify-content:center;padding:4vh 14px;z-index:100;overflow-y:auto;animation:fade .15s}
.modal{background:#fff;border-radius:26px;width:100%;max-width:720px;padding:22px;box-shadow:0 30px 80px rgba(0,0,0,.25);animation:pop .2s}
.modal.wide{max-width:980px}
.modal-h{display:flex;align-items:center;gap:10px;margin-bottom:16px}
.modal-h h2{flex:1}
.x{border:0;background:var(--bg);width:36px;height:36px;border-radius:12px;cursor:pointer;font-size:18px}
@keyframes fade{from{opacity:0}} @keyframes pop{from{transform:scale(.96) translateY(10px);opacity:0}}
.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 20px;border-radius:16px;font-weight:800;z-index:200;box-shadow:0 10px 30px rgba(0,0,0,.2);animation:pop .2s}

/* ===== Aluno ===== */
.kid-card{display:flex;gap:12px;align-items:center;cursor:pointer;transition:.15s}
.kid-card:hover{transform:translateY(-2px)}
.kid-tags{display:flex;gap:4px;flex-wrap:wrap;margin-top:4px}
.alert-box{border-radius:16px;padding:12px 14px;display:flex;gap:10px;align-items:flex-start;font-weight:700}
.alert-box.red{background:var(--red-l);color:#a3161e} .alert-box.sun{background:var(--sun-l);color:#7a5800} .alert-box.sky{background:var(--sky-l);color:#105f86}
.info-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.info-grid div{background:var(--bg);border-radius:14px;padding:10px 12px}
.info-grid b{display:block;font-size:11px;text-transform:uppercase;color:var(--ink-3);letter-spacing:.5px}
.hero{border-radius:28px;padding:22px;display:flex;gap:18px;align-items:center;flex-wrap:wrap;color:var(--ink)}

/* ===== Kanban ===== */
.kanban{display:grid;grid-template-columns:repeat(5,minmax(200px,1fr));gap:12px;overflow-x:auto}
.kcol{background:#fff;border-radius:20px;padding:12px;min-height:200px;box-shadow:var(--shadow)}
.kcol h4{display:flex;justify-content:space-between;margin-bottom:10px}
.kitem{background:var(--bg);border-radius:14px;padding:10px;margin-bottom:8px;font-size:14px}

/* ===== Mood / quick buttons ===== */
.opt{display:flex;gap:6px;flex-wrap:wrap}
.opt button{border:2px solid var(--line);background:#fff;border-radius:12px;padding:6px 10px;cursor:pointer;font-weight:700;font-size:13px}
.opt button.on{background:var(--grass);border-color:var(--grass);color:#fff}

/* ===== Calendar ===== */
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.cal .dh{text-align:center;font-weight:800;font-size:12px;color:var(--ink-3)}
.cal .d{background:#fff;border-radius:14px;min-height:86px;padding:6px;border:2px solid var(--line);font-size:12px;overflow:hidden}
.cal .d.today{border-color:var(--coral)}
.cal .d.out{opacity:.35}
.cal .d .n{font-weight:800}
.cal .ev{display:block;border-radius:6px;padding:1px 5px;margin-top:3px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ===== TV MODE ===== */

/* ===== Parents app ===== */
.phone{max-width:400px;margin:0 auto;background:#fff;border-radius:40px;padding:14px;box-shadow:0 30px 60px rgba(58,46,92,.25);border:10px solid var(--ink)}
.phone .ph-head{background:linear-gradient(135deg,var(--coral),var(--orange));color:#fff;border-radius:26px;padding:16px;display:flex;gap:12px;align-items:center}
.feed-item{display:flex;gap:10px;padding:10px 4px;border-bottom:1px dashed var(--line)}
.feed-item .e{font-size:22px;width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:0 0 auto}

/* ===== Login ===== */
.login{min-height:100vh;display:grid;place-items:center;padding:20px}
.login .box{background:#fff;border-radius:32px;padding:34px;max-width:440px;width:100%;box-shadow:var(--shadow);text-align:center}
.roles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0}
.roles button{border:2px solid var(--line);background:#fff;border-radius:18px;padding:14px 8px;cursor:pointer;font-weight:800}
.roles button.on{border-color:var(--coral);background:var(--coral-l)}
.roles button span{display:block;font-size:28px}

/* ===== Training ===== */
.course{overflow:hidden;padding:0}
.course .cv{height:110px;display:grid;place-items:center;font-size:52px}
.course .cb{padding:14px}
.quiz-opt{display:block;width:100%;text-align:left;border:2px solid var(--line);background:#fff;border-radius:14px;padding:10px 14px;margin-bottom:8px;cursor:pointer;font-weight:700}
.quiz-opt.ok{background:var(--grass-l);border-color:var(--grass)} .quiz-opt.no{background:var(--red-l);border-color:var(--red)}

/* ===== Responsive ===== */
@media (max-width:1100px){ .g4{grid-template-columns:repeat(2,minmax(0,1fr))} .g3{grid-template-columns:repeat(2,minmax(0,1fr))} .span3{grid-column:span 2} }
@media (max-width:860px){
  .side{position:fixed;left:0;top:0;transform:translateX(-100%);transition:.2s;box-shadow:10px 0 40px rgba(0,0,0,.15)}
  .side.open{transform:none}
  .menu-btn{display:inline-flex}
  .main{padding:14px 14px 60px}
  .g2,.g3,.g4{grid-template-columns:1fr} .span2,.span3{grid-column:auto}
  h1{font-size:24px}
}
@media print{ .side,.topbar .btns,.menu-btn{display:none!important} .main{padding:0} .card{box-shadow:none;border:1px solid #ddd} body{background:#fff} }
.qr i{width:9px;height:9px;display:block}

.btn.menu-btn{display:none}
@media (max-width:860px){.btn.menu-btn{display:inline-flex}}
/* TV: cardápio inteiro visível */
/* TV cozinha */
/* Turmas: cards proporcionais */
.turmas-grid{grid-template-columns:repeat(auto-fill,minmax(290px,1fr))}
.turma-card{display:flex;flex-direction:column;gap:10px;overflow:hidden}
.turma-card>*{min-width:0}
.turma-edit{position:absolute;top:12px;right:12px}
.turma-head{display:flex;gap:12px;align-items:center;padding-right:44px}
.turma-ic{width:56px;height:56px;flex:0 0 56px;border-radius:18px;display:grid;place-items:center;font-size:32px}
.turma-tit{min-width:0}
.turma-tit h3{font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.turma-card .pill{align-self:flex-start;margin-top:0!important}
.turma-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.turma-stats div{background:var(--bg);border-radius:14px;padding:8px 4px;text-align:center;min-width:0}
.turma-stats b{display:block;font-family:'Baloo 2';font-size:22px;line-height:1.1}
.turma-stats span{font-size:11px;font-weight:800;color:var(--ink-3)}
.turma-equipe div{display:flex;align-items:center;gap:8px;font-size:12.5px;padding:3px 0;min-width:0}
.turma-equipe span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink-2)}
.turma-equipe b{color:var(--ink)}
.turma-kids{display:flex;flex-wrap:wrap;gap:4px}
.turma-btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin-top:auto}
.turma-btns .btn{justify-content:center}
/* TV sala: alergias compactas */
.ph-sec{border-bottom:1px dashed var(--line);padding:10px 2px}
.ph-sec-h{font-family:'Baloo 2';font-weight:800;font-size:15px;margin-bottom:4px}
.ph-line{display:flex;justify-content:space-between;gap:8px;font-size:13px}
.ph-line b{text-align:right}
.pop-falta{position:absolute;inset:0;background:rgba(58,46,92,.55);display:flex;align-items:center;justify-content:center;padding:16px;z-index:5;border-radius:30px;animation:fade .2s}
.pop-box{background:#fff;border-radius:24px;padding:18px;width:100%;box-shadow:0 20px 50px rgba(0,0,0,.3);animation:pop .25s}
.opt button.on{background:var(--pink);border-color:var(--pink);color:#fff}
[data-kpi]:hover,[data-cardap]:hover,.tl-body:hover,[data-ev]:hover{transform:translateY(-2px);box-shadow:0 8px 0 rgba(58,46,92,.06),0 16px 34px rgba(58,46,92,.12)}
[data-kpi],[data-cardap],.tl-body,[data-ev]{transition:.15s;cursor:pointer}
[data-pessoa]:hover{box-shadow:0 0 0 3px var(--sun)}
[data-turma]:hover,[data-alerg]:hover{filter:brightness(.95);text-decoration:underline}
.qv-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
/* agenda do dia: botões de refeição em uma linha */
.opt button{padding:5px 7px}

.t.perm td,.t.perm th{padding:6px 4px}
.t.perm .btn[disabled]{opacity:.85;cursor:default}
/* Portal de escolas */
.portal{max-width:1200px;margin:0 auto;padding:20px 16px 60px}
.portal-top{display:flex;gap:12px;align-items:center;flex-wrap:wrap}
.portal-top img{width:58px;height:58px}
.portal-hero{text-align:center;padding:34px 10px 24px}
.portal-hero h1{font-size:38px;margin-bottom:6px}
.portal-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}
.portal-esc{display:flex;gap:12px;align-items:center;cursor:pointer;transition:.15s;padding:14px}
.portal-esc:hover{transform:translateY(-3px);box-shadow:0 0 0 3px var(--sun),var(--shadow)}
.portal-esc b{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal;overflow:hidden;line-height:1.2}
.portal-esc .turma-ic{width:50px;height:50px;flex:0 0 50px;font-size:28px}
@media (max-width:600px){.roles{grid-template-columns:repeat(2,1fr)!important}.portal-hero h1{font-size:28px}}

/* =================== TEMA LÚDICO E COLORIDO =================== */
body{background:linear-gradient(-45deg,#FFE3EC,#FFF1C9,#DDF7E3,#D9F1FF,#EDE4FF);background-size:400% 400%;animation:fundo 22s ease infinite}
@keyframes fundo{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}
#fx{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
#fx i{position:absolute;bottom:-90px;border-radius:50%;opacity:.55;animation:sobe linear infinite;box-shadow:inset -6px -8px 0 rgba(0,0,0,.08),inset 6px 6px 0 rgba(255,255,255,.55)}
#fx i.bal:after{content:'';position:absolute;left:50%;top:100%;width:1px;height:40px;background:rgba(58,46,92,.25)}
#fx b{position:absolute;font-size:22px;opacity:.5;animation:flutua 9s ease-in-out infinite}
@keyframes sobe{0%{transform:translateY(0) translateX(0) scale(.9)}50%{transform:translateY(-55vh) translateX(30px) scale(1)}100%{transform:translateY(-115vh) translateX(-20px) scale(1.05);opacity:0}}
@keyframes flutua{50%{transform:translateY(-14px) rotate(12deg)}}
#app{position:relative;z-index:1}
.side{background:linear-gradient(180deg,#FFF6E5 0%,#FFE9F3 35%,#E8F6FF 70%,#EFE8FF 100%);border-right:0;box-shadow:6px 0 30px rgba(155,123,255,.15)}
.nav a{background:rgba(255,255,255,.55);margin:4px 0;border-radius:16px}
.nav a .ic{background:#fff;box-shadow:0 3px 0 rgba(0,0,0,.06)}
.nav a:nth-of-type(6n+1) .ic{background:#FFE3DF} .nav a:nth-of-type(6n+2) .ic{background:#FFF4D1} .nav a:nth-of-type(6n+3) .ic{background:#E2F7E4}
.nav a:nth-of-type(6n+4) .ic{background:#DFF4FD} .nav a:nth-of-type(6n+5) .ic{background:#EEE8FF} .nav a:nth-of-type(6n) .ic{background:#FFE6F3}
.nav a:hover{background:#fff;transform:translateX(4px)}
.nav a.on{background:linear-gradient(90deg,#FF7A6B,#FF9F43);color:#fff;box-shadow:0 6px 16px rgba(255,122,107,.35)}
.nav-group{color:#9B7BFF}
.topbar .title h1{background:linear-gradient(90deg,#FF5C8A,#FF9F43,#FFC83D,#6BCB77,#4FC3F7,#9B7BFF);-webkit-background-clip:text;background-clip:text;color:transparent;font-size:34px}
.card{border:3px solid rgba(255,255,255,.9);box-shadow:0 8px 0 rgba(58,46,92,.06),0 14px 34px rgba(58,46,92,.10)}
/* cards em sequência ganham cores diferentes */
.grid>.card:nth-child(6n+1){background:linear-gradient(160deg,#FFF0EE,#FFFFFF 60%);border-top:6px solid #FF7A6B}
.grid>.card:nth-child(6n+2){background:linear-gradient(160deg,#FFF8DE,#FFFFFF 60%);border-top:6px solid #FFC83D}
.grid>.card:nth-child(6n+3){background:linear-gradient(160deg,#E9FAEC,#FFFFFF 60%);border-top:6px solid #6BCB77}
.grid>.card:nth-child(6n+4){background:linear-gradient(160deg,#E6F6FE,#FFFFFF 60%);border-top:6px solid #4FC3F7}
.grid>.card:nth-child(6n+5){background:linear-gradient(160deg,#F1ECFF,#FFFFFF 60%);border-top:6px solid #9B7BFF}
.grid>.card:nth-child(6n){background:linear-gradient(160deg,#FFEDF6,#FFFFFF 60%);border-top:6px solid #FF8FC7}
/* indicadores (KPIs) vibrantes */
.grid>.card.kpi{color:#fff;border:0;border-top:0}
.grid>.card.kpi:nth-child(6n+1){background:linear-gradient(135deg,#FF7A6B,#FF5C8A)}
.grid>.card.kpi:nth-child(6n+2){background:linear-gradient(135deg,#FFB020,#FF8A3D)}
.grid>.card.kpi:nth-child(6n+3){background:linear-gradient(135deg,#3FBF6A,#2EC4B6)}
.grid>.card.kpi:nth-child(6n+4){background:linear-gradient(135deg,#3BA8F0,#5B7CFF)}
.grid>.card.kpi:nth-child(6n+5){background:linear-gradient(135deg,#9B7BFF,#C56CF0)}
.grid>.card.kpi:nth-child(6n){background:linear-gradient(135deg,#FF8FC7,#FF6FA5)}
.card.kpi .ic{background:rgba(255,255,255,.28)!important;box-shadow:inset 0 0 0 2px rgba(255,255,255,.4)}
.card.kpi .l,.card.kpi .tiny,.card.kpi .muted{color:rgba(255,255,255,.92)!important}
.card.kpi .bar{background:rgba(255,255,255,.3)} .card.kpi .bar>i{background:#fff!important}
.card.kpi:after{content:'';position:absolute;right:-18px;top:-18px;width:80px;height:80px;border-radius:50%;background:rgba(255,255,255,.16)}
.card.kpi{overflow:hidden}
/* hero e abas */
.hero.card{background:linear-gradient(120deg,#FF9AA8,#FFC47A 35%,#9FE3B3 65%,#8FD3FF)!important;color:#3A2E5C;border:0}
.hero.card .muted{color:#4b3d7a!important}
.tab{background:#fff;box-shadow:0 3px 0 rgba(0,0,0,.06)}
.tabs .tab:nth-child(6n+1).on{background:#FF7A6B} .tabs .tab:nth-child(6n+2).on{background:#FFB020} .tabs .tab:nth-child(6n+3).on{background:#3FBF6A}
.tabs .tab:nth-child(6n+4).on{background:#3BA8F0} .tabs .tab:nth-child(6n+5).on{background:#9B7BFF} .tabs .tab:nth-child(6n).on{background:#FF6FA5}
.tab.on{color:#fff;box-shadow:0 5px 14px rgba(0,0,0,.15)}
.card-h .ic{box-shadow:0 3px 0 rgba(0,0,0,.06)}
.t th{background:linear-gradient(90deg,#FFF4D1,#FFE6F3,#DFF4FD);color:#6B6290}
.t th:first-child{border-radius:12px 0 0 12px} .t th:last-child{border-radius:0 12px 12px 0}
.modal{border-top:10px solid transparent;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(90deg,#FF7A6B,#FFC83D,#6BCB77,#4FC3F7,#9B7BFF) border-box;border:0;border-top:10px solid transparent}
.modal-h h2{color:#3A2E5C}
.chip-user{background:linear-gradient(90deg,#fff,#FFF4D1)}
.login,.portal{position:relative}
.login .box{border:0;background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,#FF7A6B,#FFC83D,#6BCB77,#4FC3F7,#9B7BFF) border-box;border:6px solid transparent}
.roles button{background:linear-gradient(160deg,#fff,#FFF4D1)}
.roles button:nth-child(4n+1){background:linear-gradient(160deg,#FFE3DF,#fff)} .roles button:nth-child(4n+2){background:linear-gradient(160deg,#E2F7E4,#fff)}
.roles button:nth-child(4n+3){background:linear-gradient(160deg,#DFF4FD,#fff)} .roles button:nth-child(4n){background:linear-gradient(160deg,#EEE8FF,#fff)}
.roles button:hover{transform:translateY(-3px) rotate(-1deg)}
.portal-hero h1{background:linear-gradient(90deg,#FF5C8A,#FF9F43,#FFC83D,#6BCB77,#4FC3F7,#9B7BFF);-webkit-background-clip:text;background-clip:text;color:transparent}
.portal-esc{border:0}
.portal-grid>.card:nth-child(6n+1){background:linear-gradient(135deg,#FFE3DF,#fff 70%)} .portal-grid>.card:nth-child(6n+2){background:linear-gradient(135deg,#FFF4D1,#fff 70%)}
.portal-grid>.card:nth-child(6n+3){background:linear-gradient(135deg,#E2F7E4,#fff 70%)} .portal-grid>.card:nth-child(6n+4){background:linear-gradient(135deg,#DFF4FD,#fff 70%)}
.portal-grid>.card:nth-child(6n+5){background:linear-gradient(135deg,#EEE8FF,#fff 70%)} .portal-grid>.card:nth-child(6n){background:linear-gradient(135deg,#FFE6F3,#fff 70%)}
.btn{transition:transform .12s,box-shadow .12s}
.btn:hover{transform:translateY(-2px)}
.avatar{box-shadow:0 0 0 3px #fff,0 3px 8px rgba(0,0,0,.12)}
.pill{box-shadow:0 2px 0 rgba(0,0,0,.05)}
.main:before{content:'⭐ 🎈 🌈 🧸 🎨 🌼 🐝 🪁';position:absolute;right:30px;top:96px;font-size:18px;letter-spacing:8px;opacity:.35;pointer-events:none}
.main{position:relative}
@media (prefers-reduced-motion:reduce){body,#fx i,#fx b{animation:none}}
@media (max-width:860px){.main:before{display:none}}
.emo{-webkit-text-fill-color:initial;color:initial;background:none}
/* contenção geral: nada pode sair dos cards */
.card{min-width:0;overflow-wrap:anywhere}
.card .btns{min-width:0}
.card img{max-width:100%}
.card .opt{flex-wrap:wrap;min-width:0}
.dia-ref{display:grid;grid-template-columns:64px minmax(0,1fr);gap:6px;align-items:center;margin-bottom:5px}
.dia-ref .opt{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px}
.dia-ref .opt button,.dia-hum .opt button{padding:4px 0;font-size:15px;line-height:1;min-width:0}
.dia-hum{display:grid;grid-template-columns:64px minmax(0,1fr);gap:6px;align-items:center;margin:8px 0 5px}
.dia-hum .opt{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:4px}
.diario-grid{grid-template-columns:repeat(auto-fill,minmax(270px,1fr))}
.diario-grid .card .btns .btn{padding:5px 8px;font-size:12px}
.card .pill{white-space:normal;max-width:100%;overflow-wrap:anywhere}
.card-h{flex-wrap:wrap}
.card-h>.btns,.card-h>div:last-child{max-width:100%}
.modal .pill{white-space:normal;max-width:100%}
.t.dre tr.dre-h td{background:var(--sun-l);font-weight:800}
.t.dre tr.dre-res td{background:linear-gradient(90deg,#9B7BFF,#5B7CFF);color:#fff;font-weight:800}
.t.dre .dre-cel{cursor:pointer}
.t.dre .dre-cel:hover{background:#FFF4D1;box-shadow:inset 0 0 0 2px var(--sun)}
.t.dre .dre-aj{background:#FFF1C2}
.t.dre .dre-lbl{cursor:pointer}
.t.dre .dre-lbl:hover{text-decoration:underline}
.t.dre .dre-add{padding:1px 6px;font-size:11px;margin-left:4px}
.kpi>div:last-child{min-width:0}
.kpi .v{font-size:clamp(18px,1.9vw,30px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cam{height:170px;position:relative;display:grid;place-items:center;overflow:hidden}
.cam:after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.05) 0 2px,transparent 2px 4px);animation:scan 3s linear infinite}
@keyframes scan{to{background-position:0 40px}}
.cam-e{font-size:70px;animation:bob 3s ease-in-out infinite;filter:drop-shadow(0 6px 10px rgba(0,0,0,.2))}
.cam-rec{position:absolute;left:10px;top:10px;background:#E53935;color:#fff;font-weight:800;font-size:11px;padding:3px 8px;border-radius:8px;animation:pulse 1.4s infinite}
.cam-rec.off{background:#555;animation:none}
.cam-t{position:absolute;right:10px;bottom:8px;color:#fff;font-weight:800;font-size:12px;text-shadow:0 1px 3px rgba(0,0,0,.5)}
@keyframes bob{50%{transform:translateY(-6px)}}
#sync-dot{position:fixed;right:12px;bottom:10px;z-index:300;font-size:11px;font-weight:800;padding:4px 10px;border-radius:99px;background:#fff;box-shadow:0 3px 10px rgba(0,0,0,.12)}
#sync-dot.on{color:#2f8a3b} #sync-dot.off{color:#c5262e}

/* v19: tabelas no celular — nada de texto quebrado na vertical; rola para o lado */
@media (max-width:860px){
  .table-wrap .t td,.table-wrap .t th{white-space:nowrap;overflow-wrap:normal}
  .card .table-wrap .pill{white-space:nowrap;max-width:none;overflow-wrap:normal}
  .table-wrap .t{min-width:max-content}
  .table-wrap .t td.wrap,.table-wrap .t td[data-wrap]{white-space:normal;min-width:220px}
  .table-wrap{-webkit-overflow-scrolling:touch}
}
/* v20: botões pequenos não estouram o card no celular */
@media(max-width:560px){.card .btn.sm{white-space:normal;max-width:100%;flex-shrink:1}.card>.btn.sm,.card .btns{flex-wrap:wrap}}

/* ===== v22 · TVs (sala, cozinha): escala pela menor dimensão da tela, nada cortado ===== */
.tv{--u:min(.86vw,1.53vh);position:fixed;inset:0;z-index:50;background:linear-gradient(135deg,#FFF3D6,#FFE6F3 50%,#DFF4FD);color:var(--ink);padding:calc(var(--u)*2) calc(var(--u)*2.4);display:grid;grid-template-columns:1.5fr 1fr;grid-template-rows:auto minmax(0,1fr) auto;gap:calc(var(--u)*1.5);font-size:calc(var(--u)*1.5);overflow:hidden}
.tv.sleep{background:linear-gradient(135deg,#2b2557,#3a2e5c 60%,#4b3d7a);color:#fff}
.tv.sleep .panel{background:rgba(255,255,255,.1);color:#fff;box-shadow:none}
.tv.sleep .nx,.tv.sleep .kid{background:rgba(255,255,255,.16);color:#fff}
.tv.sleep .tv-clock .d,.tv.sleep .now-desc,.tv.sleep .menu-line b,.tv.sleep .nx .h{color:#d6d0f5}
.tv.sleep .tv-bar{background:rgba(255,255,255,.18);box-shadow:none}
.tv .tv-head{grid-column:1/-1;display:flex;align-items:center;gap:calc(var(--u)*1.4);min-width:0}
.tv .tv-head img{width:calc(var(--u)*5);height:calc(var(--u)*5);flex:0 0 auto}
.tv .tv-titles{min-width:0}
.tv .tv-class{font-family:'Baloo 2',sans-serif;font-weight:800;font-size:calc(var(--u)*3.3);line-height:1.05;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv .tv-sub{font-weight:800;font-size:calc(var(--u)*1.5);opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tv .tv-clock{margin-left:auto;text-align:right;font-family:'Baloo 2',sans-serif;font-weight:800;flex:0 0 auto}
.tv .tv-clock .h{font-size:calc(var(--u)*4.8);line-height:.95}
.tv .tv-clock .d{font-size:calc(var(--u)*1.5);color:var(--ink-2)}
.tv .panel{background:rgba(255,255,255,.92);border-radius:calc(var(--u)*1.8);padding:calc(var(--u)*1.5) calc(var(--u)*1.8);box-shadow:0 calc(var(--u)*.8) calc(var(--u)*2.6) rgba(58,46,92,.12);overflow:hidden;min-height:0;min-width:0}
.tv h3{font-size:calc(var(--u)*2);line-height:1.15;margin:0 0 calc(var(--u)*.8)}
.tv .left{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:calc(var(--u)*1.5);min-height:0;min-width:0}
.tv .right{display:grid;grid-template-rows:auto auto minmax(0,1fr);gap:calc(var(--u)*1.5);min-height:0;min-width:0}
.tv .now-card{position:relative;display:flex;flex-direction:column;justify-content:center;gap:calc(var(--u)*1)}
.tv .now-row{display:flex;gap:calc(var(--u)*2);align-items:center;min-width:0}
.tv .now-main{flex:1;min-width:0}
.tv .now-emoji{font-size:calc(var(--u)*7);line-height:1;animation:tvbob 2.4s ease-in-out infinite;flex:0 0 auto}
@keyframes tvbob{50%{transform:translateY(calc(var(--u)*-.8)) rotate(-4deg)}}
.tv .now-label{font-size:calc(var(--u)*1.6);font-weight:800;text-transform:uppercase;letter-spacing:calc(var(--u)*.15);color:var(--coral)}
.tv .now-title{font-family:'Baloo 2',sans-serif;font-size:calc(var(--u)*3.8);font-weight:800;line-height:1.02;overflow-wrap:anywhere}
.tv .now-desc{font-size:calc(var(--u)*1.9);color:var(--ink-2);font-weight:700}
.tv .now-rest{font-weight:800;font-size:calc(var(--u)*1.7)}
.tv .tv-bar{height:calc(var(--u)*1.5);border-radius:99px;background:#fff;overflow:hidden;box-shadow:inset 0 0 0 calc(var(--u)*.2) var(--line)}
.tv .tv-bar i{display:block;height:100%;background:linear-gradient(90deg,var(--sun),var(--coral));border-radius:99px;transition:width 1s}
.tv .nexts{display:flex;gap:calc(var(--u)*1)}
.tv .nx{flex:1;min-width:0;display:flex;align-items:center;gap:calc(var(--u)*.8);border-radius:calc(var(--u)*1.4);padding:calc(var(--u)*.7) calc(var(--u)*1);text-align:left;background:#fff}
.tv .nx .e{font-size:calc(var(--u)*2.8);flex:0 0 auto}
.tv .nx .t{font-family:'Baloo 2',sans-serif;font-weight:800;font-size:calc(var(--u)*1.7);line-height:1.1}
.tv .nx .h{font-weight:800;color:var(--ink-2);font-size:calc(var(--u)*1.6)}
.tv .tl{display:flex;gap:calc(var(--u)*.5);margin-top:calc(var(--u)*.8);overflow:hidden;flex-wrap:nowrap}
.tv .tl span{flex:0 0 auto;padding:calc(var(--u)*.25) calc(var(--u)*.7);border-radius:99px;font-weight:800;font-size:calc(var(--u)*1.2);background:rgba(0,0,0,.06)}
.tv .tl span.on{background:var(--coral);color:#fff}
.tv .med{display:flex;align-items:center;gap:calc(var(--u)*.8);padding:calc(var(--u)*.6) calc(var(--u)*1);border-radius:calc(var(--u)*1);background:var(--sun-l);color:var(--ink);margin-bottom:calc(var(--u)*.5);font-weight:800;font-size:calc(var(--u)*1.5)}
.tv .med.due{background:var(--red);color:#fff;animation:tvpulse 1.2s infinite}
@keyframes tvpulse{50%{transform:scale(1.03)}}
.tv .none{font-weight:800;opacity:.7;font-size:calc(var(--u)*1.6)}
.tv .allergy{background:var(--red-l);color:#a3161e;border-radius:calc(var(--u)*1);padding:calc(var(--u)*.6) calc(var(--u)*1);font-weight:800;font-size:calc(var(--u)*1.45);line-height:1.25;margin-bottom:calc(var(--u)*.5)}
.tv .allergy.conf{background:var(--red);color:#fff}
.tv .visit{background:var(--grape-l);color:var(--ink);border-radius:calc(var(--u)*1);padding:calc(var(--u)*.7) calc(var(--u)*1);font-weight:800;font-size:calc(var(--u)*1.45);margin-bottom:calc(var(--u)*.5)}
.tv .menu-line{display:flex;gap:calc(var(--u)*1);padding:calc(var(--u)*.5) 0;border-bottom:calc(var(--u)*.12) dashed var(--line);font-weight:700;font-size:calc(var(--u)*1.55);line-height:1.2}
.tv .menu-line b{width:calc(var(--u)*9.5);flex:0 0 auto;color:var(--ink-2);white-space:nowrap}
.tv .menu-line span{min-width:0;overflow-wrap:anywhere}
.tv .kids{display:flex;flex-wrap:wrap;gap:calc(var(--u)*.6)}
.tv .kid{display:flex;align-items:center;gap:calc(var(--u)*.5);background:#fff;border-radius:99px;padding:calc(var(--u)*.25) calc(var(--u)*.9) calc(var(--u)*.25) calc(var(--u)*.25);font-weight:800;font-size:calc(var(--u)*1.4)}
.tv .kid .avatar,.tv .kz-dietas .avatar{width:calc(var(--u)*2.5);height:calc(var(--u)*2.5);font-size:calc(var(--u)*1.4)}
.tv .kid.off{opacity:.4}
.tv .tv-foot{grid-column:1/-1;display:flex;gap:calc(var(--u)*1);align-items:center;overflow:hidden;min-width:0}
.tv .ticker{flex:1;min-width:0;background:var(--ink);color:#fff;border-radius:99px;padding:calc(var(--u)*.8) calc(var(--u)*1.6);font-weight:800;font-size:calc(var(--u)*1.7);white-space:nowrap;overflow:hidden}
.tv .ticker span{display:inline-block;padding-left:100%;animation:tvtick 60s linear infinite}
@keyframes tvtick{to{transform:translateX(-100%)}}
.tv .bday{flex:0 0 auto;background:linear-gradient(90deg,var(--pink),var(--grape));color:#fff;border-radius:99px;padding:calc(var(--u)*.8) calc(var(--u)*1.6);font-weight:800;font-size:calc(var(--u)*1.7);white-space:nowrap}
.tv-exit{position:fixed;top:10px;right:10px;z-index:5;opacity:0;transition:.2s}
.tv:hover .tv-exit{opacity:.9}
.tv .confetti{position:absolute;inset:0;pointer-events:none;overflow:hidden;border-radius:inherit}
.tv .confetti i{position:absolute;width:calc(var(--u)*.8);height:calc(var(--u)*1.2);top:calc(var(--u)*-2);animation:tvfall linear infinite;border-radius:2px}
@keyframes tvfall{to{transform:translateY(110vh) rotate(720deg)}}
body:has(.tv) #sync-dot{display:none}

/* cozinha */
.tv.kz{grid-template-columns:1.55fr 1fr}
.kz .kz-now,.kz .kz-side{overflow:hidden}
.kz-serv{background:#fff;color:var(--ink);border-radius:calc(var(--u)*1.2);padding:calc(var(--u)*1) calc(var(--u)*1.3);margin-bottom:calc(var(--u)*.9);box-shadow:0 calc(var(--u)*.3) calc(var(--u)*1) rgba(58,46,92,.08)}
.kz-serv.big{background:#FFFBEF}
.kz-top{display:flex;gap:calc(var(--u)*1);align-items:center;flex-wrap:wrap;font-size:calc(var(--u)*1.55)}
.kz-serv.big .kz-top{font-size:calc(var(--u)*1.9)}
.kz-h{font-family:'Baloo 2',sans-serif;font-weight:800;color:var(--coral)}
.kz-por{font-weight:800;background:var(--grass-l);color:#2f8a3b;border-radius:99px;padding:calc(var(--u)*.1) calc(var(--u)*.9)}
.kz-tag{margin-left:auto;font-weight:800;font-size:calc(var(--u)*1.3);background:var(--sky-l);color:#1677a6;border-radius:99px;padding:calc(var(--u)*.2) calc(var(--u)*.9)}
.kz-tag.now{background:var(--coral);color:#fff;animation:tvpulse 1.4s infinite}
.kz-menu{font-weight:800;font-size:calc(var(--u)*1.55);margin:calc(var(--u)*.4) 0}
.kz-serv.big .kz-menu{font-size:calc(var(--u)*1.9)}
.kz-alert{background:var(--red);color:#fff;border-radius:calc(var(--u)*.8);padding:calc(var(--u)*.5) calc(var(--u)*.9);font-weight:800;font-size:calc(var(--u)*1.45);margin-top:calc(var(--u)*.4)}
.kz-rest{background:var(--orange-l);color:#8a4a05;border-radius:calc(var(--u)*.8);padding:calc(var(--u)*.5) calc(var(--u)*.9);font-weight:700;font-size:calc(var(--u)*1.4);margin-top:calc(var(--u)*.4)}
.kz-ok{color:#2f8a3b;font-weight:800;font-size:calc(var(--u)*1.4)}
.kz-vazio{font-size:calc(var(--u)*2);font-weight:700;padding:calc(var(--u)*1) 0}
.kz-al{color:var(--red);font-weight:800;font-size:calc(var(--u)*1.2)}
.kz-sub{margin-top:calc(var(--u)*.6);background:var(--grass-l);color:var(--ink);border-radius:calc(var(--u)*.8);padding:calc(var(--u)*.6) calc(var(--u)*.9);font-weight:700;font-size:calc(var(--u)*1.4)}
.kz-dietas div{display:flex;flex-wrap:wrap;align-items:center;gap:calc(var(--u)*.6);font-size:calc(var(--u)*1.4);font-weight:700;padding:calc(var(--u)*.35) 0;border-bottom:calc(var(--u)*.1) dashed var(--line)}
.kz-dietas span{color:var(--ink-2);font-weight:600;overflow-wrap:anywhere}
.kz-dietas em{font-style:normal;flex:1 1 calc(var(--u)*14);min-width:0;overflow-wrap:anywhere}
.kz-dietas b{overflow-wrap:anywhere}

/* telas mais "quadradas" (4:3): um pouco mais de zoom para ler de longe */
@media (max-aspect-ratio:3/2) and (min-aspect-ratio:11/10){.tv{--u:min(1.1vw,1.53vh)}}
/* TV em pé (retrato): uma coluna, letras maiores */
@media (max-aspect-ratio:1/1){
  .tv{--u:min(1.7vw,.88vh);grid-template-columns:1fr;grid-template-rows:auto auto minmax(0,1fr) auto}
  .tv.kz{grid-template-columns:1fr}
  .tv .tv-class{font-size:calc(var(--u)*2.7);white-space:normal}
  .tv .tv-sub{white-space:normal;font-size:calc(var(--u)*1.3)}
  .tv .tv-head,.tv .tv-foot{grid-column:1}
  .tv .left{grid-template-rows:auto auto minmax(0,1fr)}
  .tv .right{grid-template-rows:auto auto minmax(0,1fr)}
  .tv.kz{grid-template-rows:auto minmax(0,1.3fr) minmax(0,1fr) auto}
}
/* celular em pé (só para consulta): uma coluna com rolagem normal */
@media (max-width:600px) and (max-aspect-ratio:1/1){
  .tv .tv-head{flex-wrap:wrap}
  .tv .tv-titles{flex:1 1 calc(100% - var(--u)*20)}
  .tv .tv-clock{flex:0 0 auto}
  .tv{--u:3.3vw;grid-template-columns:1fr;grid-template-rows:auto;overflow:auto;position:absolute;min-height:100vh;height:auto}
  .tv .tv-head,.tv .tv-foot{grid-column:1}
  .tv .left,.tv .right{grid-template-rows:auto}
  .tv{bottom:auto;height:auto}
  .tv .left,.tv .right,.tv .panel{min-height:min-content;height:auto}
  .tv .panel{overflow:visible}
  .tv .al-panel{max-height:none!important}
  .tv .now-row{flex-direction:column;align-items:flex-start;gap:calc(var(--u)*1)}
  .tv .now-title{font-size:calc(var(--u)*5);overflow-wrap:normal}
  .tv .now-emoji{font-size:calc(var(--u)*9)}
  .tv .now-label{font-size:calc(var(--u)*2.6)}
  .tv-exit{opacity:.9;top:auto!important;bottom:calc(var(--u)*1.5)!important;right:calc(var(--u)*1.5)!important}
}
/* celular deitado / telas baixas: mantém as duas colunas, letras legíveis e rolagem */
@media (max-height:560px) and (min-aspect-ratio:11/10){
  .tv{--u:1.45vw;grid-template-columns:1.5fr 1fr;grid-template-rows:auto;overflow:auto;position:absolute;min-height:100vh;height:auto;padding:calc(var(--u)*1.2)}
  .tv .left,.tv .right{grid-template-rows:auto;align-content:start}
  .tv{bottom:auto;height:auto}
  .tv .left,.tv .right,.tv .panel{min-height:min-content;height:auto}
  .tv .panel{overflow:visible}
  .tv .al-panel{max-height:none!important}
  .tv .tv-class{font-size:calc(var(--u)*2.8)}
  .tv .now-emoji{font-size:calc(var(--u)*5.5)}
  .tv .now-title{font-size:calc(var(--u)*3.2)}
  .tv .tv-clock .h{font-size:calc(var(--u)*3.6)}
  .tv .tv-head img{width:calc(var(--u)*3.6);height:calc(var(--u)*3.6)}
  .tv-exit{opacity:.9;top:auto!important;bottom:6px!important;right:6px!important}
}
/* (NOVO) tudo clicável: nomes, turmas, telefones e e-mails */
.clk{cursor:pointer;text-decoration:underline dotted rgba(122,92,200,.45);text-underline-offset:3px;transition:color .15s}
.clk:hover{color:var(--grape,#7a5cc8);text-decoration-style:solid}
.clk-link{color:inherit;text-decoration:underline dotted;text-underline-offset:3px}
.clk-link:hover{color:var(--grape,#7a5cc8)}
.tv .clk,.tv .clk-link{text-decoration:none;cursor:default;pointer-events:none}
td .clk,.row .clk{padding:1px 0}
.clk-h{cursor:pointer}
.clk-h::after{content:" ›";opacity:.45;font-weight:800;transition:.15s}
.clk-h:hover{color:var(--grape,#7a5cc8)}
.clk-h:hover::after{opacity:1;margin-left:3px}
.tv .clk-h{cursor:default}.tv .clk-h::after{content:none}

/* anti-estouro nas TVs: nenhum texto passa da borda do cartão */
.tv .nexts{flex-wrap:wrap}
.tv .nx{flex:1 1 calc(var(--u)*16)}
.tv .nx>div:last-child{min-width:0}
.tv .nx .t,.tv .nx .h,.tv .panel,.tv .kid,.tv .now-desc,.tv .menu-line,.tv .al-item,.tv .kz-dietas{overflow-wrap:anywhere}
@media (max-width:600px) and (max-aspect-ratio:1/1),(max-height:560px) and (min-aspect-ratio:11/10){.tv .nexts{flex-direction:column}.tv .nx{flex:none}}
.card .btn{max-width:100%;white-space:normal}
