/* Pelican Bay — design system (Space Blue + Fire Red, Roboto/Raleway) */
:root{
  --space-blue:#2A3745; --fire-red:#D74042; --water-blue:#7A9F9F; --fire-sand:#D99A2B;
  --rail:#1a242e; --sidebar:#212e39; --chat:#26333f; --input:#33434f;
  --card:#2f3f4c; --card-line:#3c4c59; --col:#243039;
  --hover:#34444f; --msg-hover:#2c3a45; --active:#3c4c59; --active-soft:#384854;
  --text:#d4dbe2; --muted:#8b98a6; --bright:#f4f7fa; --faint:#7a8794;
  --chan:#9aa7b4; --chan-hover:#eaf0f5;
  --brand:#D74042; --brand-d:#bd3639; --green:#2f9e6b; --red:#D74042; --yellow:#D99A2B;
  --link:#8FB6B6; --divider:rgba(255,255,255,.07);
  /* Tom água para TEXTO: no tema claro precisa de ser mais escuro para contrastar */
  --water-text:#7A9F9F; --water-soft:rgba(122,159,159,.18);
  /* Estado da tarefa (colunas Não iniciado/Em curso/Revisão/Concluído) */
  --todo:#64748b; --doing:#2f80ed; --review:#EAB308; --done:#2f9e6b; --standby:#d97706; --cancelado:#9ca3af;
  /* Prioridade (Baixa/Normal/Alta/Urgente) */
  --low:#8b98a6; --normal:#6FB0B3; --high:#D99A2B; --urgent:#D74042;
  /* Equipas — cores próprias, distintas das de estado/prioridade */
  --team-marketing:#B5179E; --team-web:#3F37C9; --team-design:#F5B301; --team-all:#64748b;
  /* Cliente e data — cores próprias */
  --client:#B08968; --date:#7AA2C9;
  --radius:10px;
  --font-head:'Roboto',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --font-body:'Raleway',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{font-family:var(--font-body);color:var(--text);background:var(--chat);-webkit-font-smoothing:antialiased;font-size:15px}
h1,h2,h3,.font-head{font-family:var(--font-head)}
button{font-family:inherit;cursor:pointer}
input,textarea,select{font-family:inherit;font-size:15px}
code{background:#1e1f22;padding:1px 5px;border-radius:4px;font-size:.85em;color:#c9cdd4}
a{color:var(--link);text-decoration:none}
a:hover{text-decoration:underline}
/* Links auto-detetados em texto livre (comentários, legendas, descrições, guiões). */
.lnk{display:inline!important;color:var(--link);text-decoration:underline;text-underline-offset:2px;word-break:break-word;overflow-wrap:anywhere}
/* Descrição da tarefa em modo leitura (links clicáveis; clicar abre a edição). */
.d-desc-view{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.45;color:var(--text);padding:7px 10px;border:1px solid transparent;border-radius:8px;cursor:text;min-height:20px}
.d-desc-view:hover{background:var(--hover)}

/* ---------- LOGIN ---------- */
/* Fundo do login: mesh gradient do hero do site (sem animação) */
.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:20px;
  background-color:hsla(211,23%,22%,1);
  background-image:
    radial-gradient(at 54% 75%, hsla(211,23%,22%,1) 0px, transparent 50%),
    radial-gradient(at 39% 45%, hsla(211,23%,22%,1) 0px, transparent 50%),
    radial-gradient(at 84% 22%, hsla(211,23%,22%,1) 0px, transparent 50%),
    radial-gradient(at 22% 74%, hsla(211,23%,22%,1) 0px, transparent 50%),
    radial-gradient(at 95% 91%, hsla(211,23%,22%,1) 0px, transparent 50%),
    radial-gradient(at 35% 31%, hsla(359,64%,54%,1) 0px, transparent 50%),
    radial-gradient(at 72% 94%, hsla(172,100%,85%,1) 0px, transparent 50%)}
.login-card{background:var(--chat);padding:32px;border-radius:8px;width:420px;max-width:100%;
  box-shadow:0 8px 24px rgba(0,0,0,.5);display:flex;flex-direction:column;text-align:center}
/* o display:flex acima anularia o atributo hidden — os cartões alternam entre si */
.login-card[hidden]{display:none}
.login-logo{width:56px;height:56px;border-radius:50%;background:var(--brand);color:#fff;font-weight:800;
  font-size:28px;display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.login-logo-img{width:252px;max-width:78%;height:auto;display:block;margin:0 auto 22px}
.login-card h1{margin:0;font-size:24px;color:var(--bright)}
.login-sub{margin:8px 0 20px;color:var(--muted);font-size:14px}
.login-lbl{text-align:left;font-size:12px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;
  color:var(--muted);margin:12px 0 6px}
.login-card input{padding:11px 12px;background:var(--input);border:1px solid var(--card-line);border-radius:5px;
  color:var(--text);outline:none}
.login-card input:focus{border-color:var(--brand)}
.login-card button{margin-top:20px;padding:12px;background:var(--brand);color:#fff;border:none;border-radius:999px;
  font-weight:600;font-size:15px}
.login-card button:hover{background:var(--brand-d)}
.login-err{color:#fb7f83;font-size:14px;min-height:18px;margin-top:8px}
.login-err.ok{color:var(--green)}
.login-hint{color:var(--faint);font-size:12px;margin-top:10px}
/* Link discreto no cartão de login (esqueci-me / voltar) */
.login-card .login-link{margin-top:12px;padding:0;background:none;border:none;color:var(--muted);
  font-size:13px;text-decoration:underline;text-underline-offset:2px;cursor:pointer;font-family:inherit}
.login-card .login-link:hover{background:none;color:var(--bright)}

/* ---------- LAYOUT ---------- */
#app{display:flex;height:100vh;overflow:hidden}

/* barra de servidores */
.server-rail{width:72px;background:var(--rail);display:flex;flex-direction:column;align-items:center;
  padding:12px 0;gap:8px;flex-shrink:0}
.server-pill{position:relative;width:48px;height:48px;border:none;border-radius:24px;background:var(--sidebar);
  color:var(--text);display:flex;align-items:center;justify-content:center;transition:border-radius .15s,background .15s;padding:0}
.server-pill .rail-ic{font-size:19px;font-weight:700}
.server-pill .rail-logo{width:30px;height:30px;object-fit:contain;display:block}
.server-pill:hover{border-radius:16px;background:var(--brand);color:#fff}
.server-pill.active{border-radius:16px;background:var(--brand);color:#fff}
.server-pill.active::before,.server-pill:hover::before{content:"";position:absolute;left:-16px;
  width:4px;background:#fff;border-radius:0 4px 4px 0;height:40px;transition:height .15s}
.server-pill:not(.active):hover::before{height:20px}
.server-pill.logout{background:var(--sidebar);color:var(--green)}
.server-pill.logout:hover{background:var(--red);color:#fff;border-radius:16px}
.server-pill.logout::before{display:none}
.rail-sep{width:32px;height:2px;background:var(--divider);border-radius:1px}
.rail-spacer{flex:1}
.rail-badge{position:absolute;bottom:-2px;right:-2px;background:var(--red);color:#fff;border-radius:10px;
  font-size:11px;font-weight:700;padding:1px 6px;border:3px solid var(--rail)}

/* ícones Phosphor */
.ph{vertical-align:-0.15em;line-height:1}

/* sidebar corporativo */
.sidebar{width:254px;background:var(--sidebar);border-right:1px solid var(--card-line);display:flex;flex-direction:column;flex-shrink:0}
.side-brand{padding:20px 18px 12px;flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:10px}
.brand-bell{position:relative;font-size:19px;color:var(--muted);flex-shrink:0}
.brand-bell:hover{color:var(--bright)}
/* 66px: com o rácio da marca dá 163px de largura; com o gap e o sino são 192px
   dos 218px úteis da sidebar (254px menos 18px de padding de cada lado). */
.side-logo{height:66px;width:auto;max-width:300px;object-fit:contain;display:block;cursor:pointer;transition:opacity .12s}
.side-logo:hover{opacity:.78}
.side-logo:focus-visible{outline:2px solid var(--brand);outline-offset:4px;border-radius:4px}
.side-menu{padding:4px 12px 10px;min-height:0;overflow-y:auto}   /* com muitos itens: encolhe e faz scroll (mantém o avatar visível) */
.menu-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.09em;color:var(--faint);font-weight:700;padding:6px 8px 8px;font-family:var(--font-head)}
.menu-item{display:flex;align-items:center;gap:12px;width:100%;background:none;border:none;color:var(--chan);
  padding:10px 12px;border-radius:9px;font-size:14.5px;font-weight:500;font-family:var(--font-body);text-align:left;position:relative;margin-bottom:2px}
.menu-item:hover{background:var(--hover);color:var(--chan-hover)}
.menu-item.active{background:var(--active);color:#fff;font-weight:600}
.menu-item.active::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:3px;border-radius:0 3px 3px 0;background:var(--brand)}
.menu-item .mi-ic{width:22px;text-align:center;font-size:19px;flex-shrink:0}
.menu-item .mi-txt{flex:1}
/* Bolinha com o nº de conversas pendentes no separador Conversas */
.menu-item .nav-badge{flex-shrink:0;background:var(--red);color:#fff;border-radius:10px;font-size:11px;font-weight:700;min-width:18px;height:18px;line-height:18px;text-align:center;padding:0 5px}
.menu-item .nav-badge[hidden]{display:none}
.mi-badge{background:var(--brand);color:#fff;border-radius:10px;font-size:11px;font-weight:700;padding:1px 7px;min-width:16px;text-align:center}
.side-context{flex:1;min-height:0;display:flex;flex-direction:column;border-top:1px solid var(--divider)}
.bell{position:relative;margin-left:auto;font-size:17px}
.bell .bell-ic{filter:grayscale(.2)}
.notif-badge{position:absolute;top:-3px;right:-4px;background:var(--red);color:#fff;border-radius:10px;
  font-size:10px;font-weight:700;padding:0 5px;min-width:15px;text-align:center;border:2px solid var(--sidebar)}

/* linha de ativação de push */
.push-row{display:flex;align-items:center;gap:10px;padding:10px 12px;margin-bottom:8px;border:1px solid var(--card-line);border-radius:9px;background:var(--rail);font-size:13.5px;color:var(--text)}
.push-row i{font-size:18px;color:var(--muted)}
.push-row span{flex:1;line-height:1.3}
.push-row.on{border-color:rgba(47,158,107,.5)}
.push-row.on i{color:var(--green)}
.push-row.muted{color:var(--muted)}
.push-row .btn.sm{padding:5px 12px;font-size:13px}
/* seletor do som das notificações */
.snd-box{border:1px solid var(--card-line);border-radius:9px;background:var(--rail);padding:10px 12px;margin-bottom:10px}
.snd-h{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--text);margin-bottom:9px}
.snd-h i{font-size:17px;color:var(--muted)}
.snd-opts{display:grid;grid-template-columns:1fr 1fr;gap:6px}
@media(max-width:520px){.snd-opts{grid-template-columns:1fr}}
.snd-opt{display:flex;align-items:center;gap:9px;padding:8px 10px;border:1px solid var(--card-line);border-radius:8px;background:var(--card);cursor:pointer;transition:border-color .15s,background .15s}
.snd-opt:hover{border-color:var(--muted)}
.snd-opt.on{border-color:var(--brand);background:color-mix(in srgb,var(--brand) 10%,transparent)}
.snd-opt.disabled{opacity:.5;cursor:default}
.snd-radio{width:15px;height:15px;border-radius:50%;border:2px solid var(--muted);flex:none;position:relative}
.snd-opt.on .snd-radio{border-color:var(--brand)}
.snd-opt.on .snd-radio::after{content:"";position:absolute;inset:2.5px;border-radius:50%;background:var(--brand)}
.snd-name{flex:1;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.snd-play{width:26px;height:26px;flex:none;border:0;border-radius:50%;background:var(--rail);color:var(--muted);display:grid;place-items:center;cursor:pointer;font-size:12px}
.snd-play:hover{background:var(--brand);color:#fff}
.snd-play:disabled{opacity:.4;cursor:default}
.snd-upload{display:flex;align-items:center;gap:8px;margin-top:9px;padding:9px 11px;border:1px dashed var(--card-line);border-radius:8px;color:var(--muted);font-size:12.5px;cursor:pointer}
.snd-upload:hover{border-color:var(--brand);color:var(--text)}
.snd-upload i{font-size:16px}

/* painel de notificações */
.notif-list{display:flex;flex-direction:column;gap:2px;max-height:56vh;overflow-y:auto}
.notif-item{display:flex;align-items:flex-start;gap:11px;padding:11px 10px;border-radius:8px;cursor:pointer;position:relative}
.notif-item:hover{background:var(--hover)}
.notif-item.unread{background:rgba(215,64,66,.10)}
.notif-item.unread:hover{background:rgba(215,64,66,.16)}
.notif-item .avatar{width:36px;height:36px;font-size:13px}
.notif-body{flex:1;min-width:0}
.notif-title{font-size:14px;font-weight:600;color:var(--bright)}
.notif-text{font-size:13px;color:var(--muted);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.notif-time{font-size:11.5px;color:var(--faint);margin-top:3px}
.notif-dot{width:9px;height:9px;border-radius:50%;background:var(--brand);flex-shrink:0;margin-top:14px}
.icon-btn{background:transparent;border:none;color:var(--muted);font-size:18px;padding:2px 6px;border-radius:999px;line-height:1}
.icon-btn:hover{color:var(--bright)}
.icon-btn.sm{font-size:16px}

.side-scroll{flex:1;overflow-y:auto;padding:14px 0 10px}
.side-section{margin-bottom:16px}
.side-section-head{display:flex;align-items:center;justify-content:space-between;padding:2px 16px 4px;
  font-size:12px;text-transform:uppercase;letter-spacing:.02em;color:var(--muted);font-weight:600;cursor:default}
.side-section-head:hover{color:var(--chan-hover)}
.channel-list{list-style:none;margin:0;padding:0 8px}
.channel-item{display:flex;align-items:center;gap:6px;padding:6px 8px;margin:1px 0;border-radius:4px;cursor:pointer;
  font-size:15px;color:var(--chan);position:relative;user-select:none;font-weight:500}
.channel-item:hover{background:var(--hover);color:var(--chan-hover)}
.channel-item.active{background:var(--active);color:#fff}
.channel-item .ci-hash{opacity:.55;font-size:19px;font-weight:400;line-height:1}
.channel-item .ci-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.channel-item .ci-del{margin-left:auto;flex:none;background:transparent;border:none;color:var(--faint);cursor:pointer;padding:2px 4px;border-radius:4px;font-size:15px;line-height:1;opacity:0;transition:opacity .12s,color .12s}
.channel-item:hover .ci-del{opacity:.8}
.channel-item .ci-del:hover{opacity:1;color:var(--red)}
.channel-item.unread{color:#fff;font-weight:600}
.channel-item .ci-muted{flex:none;opacity:.55;font-size:14px}
.mh-icon.is-muted{color:var(--red)}
.mute-desc{font-size:14px;color:var(--muted);line-height:1.5;margin:2px 0 14px}
.mute-opts{display:flex;flex-direction:column;gap:8px}
.mute-opts .mute-opt{width:100%;justify-content:flex-start;text-align:left}
.mbr-list{display:flex;flex-direction:column;gap:1px;margin-top:.3rem}
#mbrOthers{max-height:34vh;overflow-y:auto}
.mbr-row{display:flex;align-items:center;gap:10px;padding:7px 6px;border-radius:8px}
.mbr-row:hover{background:var(--hover)}
.mbr-row .mbr-name{flex:1;font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.mbr-row .mbr-x{color:var(--muted)}
.mbr-row .mbr-x:hover{color:var(--red)}
.mbr-search{width:100%;background:var(--input);border:1px solid var(--card-line);border-radius:8px;padding:8px 10px;color:var(--text);font:inherit;font-size:14px;margin:.4rem 0 .2rem}
.channel-item.unread::before{content:"";position:absolute;left:-8px;width:4px;height:8px;background:#fff;border-radius:0 4px 4px 0}
.channel-list.muted .channel-item{color:var(--faint)}
.badge{background:var(--red);color:#fff;border-radius:10px;font-size:12px;padding:0 6px;font-weight:700;min-width:16px;text-align:center}
.dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.dot.on{background:var(--green)}.dot.off{background:#80848e}
/* DM / pessoas: avatar (estilo Slack) com indicador de presença ao canto */
.channel-item .ci-av{position:relative;flex:none;display:inline-flex;line-height:0}
.channel-item .ci-av .avatar{width:22px;height:22px;font-size:9px;border-radius:6px}
.channel-item .ci-av .pres{position:absolute;right:-2px;bottom:-2px;width:8px;height:8px;border-radius:50%;box-shadow:0 0 0 2px var(--sidebar)}
.channel-item .ci-av .pres.on{background:var(--green)}
.channel-item .ci-av .pres.off{background:#80848e}
.channel-item.active .ci-av .pres{box-shadow:0 0 0 2px var(--active)}

.avatar{width:32px;height:32px;border-radius:50%;color:#fff;font-weight:600;font-size:13px;
  display:inline-flex;align-items:center;justify-content:center;flex-shrink:0}

.side-me{display:flex;align-items:center;gap:10px;padding:12px 14px;border-top:1px solid var(--card-line);flex-shrink:0}
.side-me .icon-btn{font-size:17px;padding:5px 7px;transition:background .12s,color .12s}
.side-me .icon-btn:hover{background:var(--hover);color:var(--bright)}
.me-info{flex:1;min-width:0}   /* cresce: e isto que encosta os botões à direita */
.me-name{color:var(--bright);font-weight:600;font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-title{color:var(--muted);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.me-status{display:inline-flex;align-items:center;gap:5px;max-width:100%;text-align:left;border:none;cursor:pointer;
  font-family:inherit;font-size:11.5px;line-height:1.35;white-space:nowrap;
  background:var(--input);color:var(--faint);border-radius:999px;padding:2px 8px;margin:4px 0 0;
  transition:background .12s,color .12s}
.me-status:hover{background:var(--hover);color:var(--text)}
.me-status .mst-txt{overflow:hidden;text-overflow:ellipsis}
.me-status.has-status{color:var(--text)}
.me-status .mst-set i{font-size:13px;vertical-align:-1px}
.mst-mini{font-size:12px;margin-left:2px;vertical-align:middle}
.mst-presets{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:4px}
.mst-preset{background:var(--input);border:1px solid var(--card-line);border-radius:99px;padding:6px 12px;cursor:pointer;font-family:inherit;font-size:13.5px;color:var(--text);display:inline-flex;align-items:center;gap:6px}
.mst-preset:hover{border-color:var(--brand)}
.mst-preset .mst-pe{font-size:15px}
.mst-inrow{display:flex;gap:8px}
.mst-inrow #mst_e{width:56px;text-align:center;font-size:16px}
.mst-inrow #mst_t{flex:1}
.me-gear{font-size:18px;flex-shrink:0}
.me-gear:hover{color:var(--bright)}

/* gestão de utilizadores */
.user-list{display:flex;flex-direction:column;gap:2px;max-height:230px;overflow-y:auto;
  background:var(--rail);border-radius:6px;padding:6px}
.user-row{display:flex;align-items:center;gap:10px;padding:7px 8px;border-radius:5px}
.user-row:hover{background:var(--hover)}
.user-row .avatar{width:34px;height:34px}
.user-row-info{flex:1;min-width:0}
.user-row-name{font-size:14px;font-weight:600;color:var(--bright);display:flex;align-items:center;gap:6px}
.user-row-email{font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tag-admin{background:var(--brand);color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;text-transform:uppercase}
.tag-you{background:var(--hover);color:var(--muted);font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;text-transform:uppercase}
.tag-gestor{background:#0e7c7b;color:#fff;font-size:10px;font-weight:700;padding:1px 6px;border-radius:4px;text-transform:uppercase}
.pill.team-marketing{background:rgba(181,23,158,.18);color:#e57bd0}
.pill.team-web{background:rgba(63,55,201,.22);color:#9a92f5}
.pill.team-design{background:rgba(245,179,1,.18);color:#f2c14e}
.pill.team-all{background:rgba(100,116,139,.22);color:#aab6c4}
.user-row-actions{display:flex;gap:6px;margin-left:8px;opacity:.75;transition:opacity .12s}
.user-row:hover .user-row-actions{opacity:1}
.ur-btn{background:var(--sidebar);border:1px solid var(--card-line);color:var(--text);
  font-size:12px;padding:4px 9px;border-radius:999px}
.ur-btn:hover{background:var(--hover);border-color:#4b4e55}
.ur-btn.danger{color:#fb7f83}
.ur-btn.danger:hover{background:var(--red);border-color:var(--red);color:#fff}

/* ---------- MAIN ---------- */
.main{flex:1;display:flex;flex-direction:column;background:var(--chat);min-width:0}
.main-head{display:flex;align-items:center;gap:8px;padding:0 16px;height:48px;flex-shrink:0;
  box-shadow:0 1px 0 rgba(0,0,0,.2),0 1px 2px rgba(0,0,0,.1)}
.main-head h2{margin:0;font-size:16px;color:var(--bright);display:flex;align-items:center;gap:6px}
.main-head h2 .h-hash{color:var(--faint);font-size:22px;font-weight:400}
.main-head .mh-desc{color:var(--muted);font-size:13px;margin-left:10px;font-weight:400;
  padding-left:10px;border-left:1px solid var(--divider)}
.main-head .mh-desc.clickable{cursor:pointer}
.main-head .mh-desc.clickable:hover{color:var(--bright);text-decoration:underline}
.main-head .spacer{flex:1}
.btn{background:var(--brand);color:#fff;border:none;padding:9px 18px;border-radius:999px;font-family:var(--font-head);
  font-weight:600;font-size:12.5px;text-transform:uppercase;letter-spacing:.05em}
.btn:hover{background:var(--brand-d)}
.btn.ghost{background:transparent;color:var(--chan-hover);border:1px solid var(--card-line)}
.btn.ghost:hover{background:var(--hover);border-color:var(--muted)}
.btn.sm{padding:6px 13px;font-size:11.5px}
.proj-chip{display:inline-flex;align-items:center;gap:7px;background:var(--input);border:1px solid var(--card-line);
  color:var(--text);font-size:13px;font-weight:600;padding:5px 11px;border-radius:16px;font-family:var(--font-body);margin-left:8px}
.proj-chip .dot{width:9px;height:9px;border-radius:50%}
.proj-chip .pc-x{color:var(--muted);font-size:12px}
.proj-chip:hover{border-color:var(--muted)}
.proj-chip:hover .pc-x{color:var(--fire-red)}

/* ---- CHAT ---- */
.msg-scroll{flex:1;overflow-y:auto;padding:16px 8px 20px 0}
.msg{display:flex;gap:16px;padding:2px 48px 2px 16px;position:relative}
.msg.grouped{padding-top:1px;padding-bottom:1px}
.msg:hover{background:var(--msg-hover)}
.msg .m-av-slot{width:40px;flex-shrink:0}
.msg .avatar{width:40px;height:40px;font-size:15px;margin-top:2px}
.msg.grouped .m-av-slot{height:0}
.msg-body{min-width:0;flex:1}
.msg-line{display:flex;align-items:baseline;gap:8px}
.msg-user{font-weight:600;font-size:15px;color:var(--bright)}
.msg-time{color:var(--faint);font-size:12px}
.msg-text{font-size:15px;line-height:1.375;word-wrap:break-word;overflow-wrap:anywhere;color:var(--text)}
/* Emojis maiores nas conversas: inline um pouco maiores; mensagens só-emoji em grande. */
.msg-text .emoji{font-size:1.3em;line-height:1;vertical-align:-.12em}
.msg-text.emoji-jumbo .emoji{font-size:2.7rem;vertical-align:-.05em}
.msg-text.emoji-jumbo-sm .emoji{font-size:1.9rem;vertical-align:-.05em}
.msg-text.emoji-jumbo,.msg-text.emoji-jumbo-sm{line-height:1.15}
.msg-text u{text-decoration:underline}
.msg-text blockquote{border-left:3px solid var(--card-line);margin:3px 0;padding:1px 0 1px 12px;color:var(--text)}
.msg-text .md-list{margin:3px 0;padding-left:22px}
.msg-text .md-list li{margin:1px 0}
.msg-text.deleted{color:var(--faint);font-style:italic}
.msg.grouped .msg-time{display:none}
.msg-actions{position:absolute;top:-12px;right:12px;display:none;gap:0;background:var(--sidebar);
  border:1px solid var(--card-line);border-radius:6px;box-shadow:0 2px 8px rgba(0,0,0,.3)}
.msg:hover .msg-actions{display:flex}
.msg-actions button{background:transparent;border:none;padding:5px 9px;font-size:13px;color:var(--muted)}
.msg-actions button:hover{background:var(--hover);color:var(--bright)}
.att{display:inline-flex;align-items:center;gap:11px;margin-top:6px;padding:10px 12px;border:1px solid var(--card-line);
  border-radius:8px;background:var(--sidebar);color:var(--text);font-size:14px;min-width:240px;max-width:340px;cursor:pointer}
.att:hover{border-color:#4b4e55;text-decoration:none}
.att .att-ic{font-size:27px;color:var(--muted);flex-shrink:0}
.att-info{display:flex;flex-direction:column;min-width:0}
.att-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-dl{margin-left:auto;color:var(--muted);font-size:18px;flex-shrink:0}
.att:hover .att-dl{color:var(--bright)}
.att-media{margin-top:6px}
.att-img{display:block;max-width:400px;max-height:320px;border-radius:8px;cursor:zoom-in}
.att-video{display:block;max-width:400px;max-height:320px;border-radius:8px;background:#000}
.att-audio{margin-top:6px;max-width:400px}
.att-audio-name{font-size:13px;color:var(--muted);margin-bottom:4px}
.att-audio audio{width:360px;max-width:100%;height:38px}
.att-size{color:var(--muted);font-size:12px}
/* lightbox / preview no chat */
.lightbox{position:fixed;inset:0;z-index:120;background:rgba(0,0,0,.82);display:flex;flex-direction:column;padding:20px}
.lb-head{display:flex;align-items:center;gap:12px;color:#fff;margin-bottom:12px}
.lb-name{font-size:14px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lb-actions{margin-left:auto;display:flex;gap:6px}
.lb-btn{width:38px;height:38px;border:none;border-radius:999px;background:rgba(255,255,255,.12);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-size:20px;cursor:pointer;text-decoration:none}
.lb-btn:hover{background:rgba(255,255,255,.22)}
.lb-body{flex:1;display:flex;align-items:center;justify-content:center;min-height:0;position:relative}
.lb-img{max-width:100%;max-height:100%;border-radius:8px;box-shadow:0 12px 48px rgba(0,0,0,.5)}
video.lb-img{background:#000}
.lb-count{opacity:.65;font-weight:400;margin-left:8px}
.lb-nav{position:absolute;top:50%;transform:translateY(-50%);width:50px;height:50px;border:none;border-radius:999px;background:rgba(255,255,255,.14);color:#fff;font-size:26px;display:flex;align-items:center;justify-content:center;cursor:pointer;z-index:2}
.lb-nav:hover{background:rgba(255,255,255,.26)}
.lb-prev{left:6px}.lb-next{right:6px}
.lb-frame{width:min(920px,100%);height:100%;border:none;border-radius:8px;background:#fff}

.msg-taskcard{margin-top:4px;border:1px solid var(--card-line);border-left:4px solid var(--brand);
  border-radius:8px;padding:12px 14px;background:var(--sidebar);max-width:440px;cursor:pointer}
.msg-taskcard:hover{background:var(--hover)}
.msg-taskcard .tc-lbl{font-size:11px;color:var(--brand);font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.msg-taskcard .tc-title{font-weight:600;margin:4px 0;color:var(--bright)}
.msg-taskcard .tc-meta{display:flex;gap:8px;align-items:center;font-size:12px;color:var(--muted);margin-top:6px}

.load-more{text-align:center;padding:10px}
.load-more button{background:transparent;border:none;color:var(--link);font-size:13px}
.load-more button:hover{text-decoration:underline}

/* composer */
.typing-ind{padding:2px 18px 4px;font-size:.8rem;color:var(--muted);display:flex;align-items:center;gap:7px}
.typing-dots{display:inline-flex;gap:3px}
.typing-dots span{width:5px;height:5px;border-radius:50%;background:var(--muted);animation:typingBlink 1.2s infinite ease-in-out}
.typing-dots span:nth-child(2){animation-delay:.2s}
.typing-dots span:nth-child(3){animation-delay:.4s}
@keyframes typingBlink{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-2px)}}
.composer{padding:0 16px 20px}
.composer-box{background:var(--input);border:1px solid var(--card-line);border-radius:10px;overflow:hidden}
.composer-box:focus-within{border-color:var(--muted)}
.composer-box.drag{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-a,rgba(215,64,66,.25))}
.composer-box.rich .attach-row{padding:10px 10px 2px}
.attach-row{display:flex;flex-wrap:wrap;gap:8px}
.attach-row:empty{display:none}
.att-prev{position:relative;display:flex;flex-direction:column;width:138px;border:1px solid var(--card-line);border-radius:9px;background:var(--rail);overflow:hidden}
.att-prev.uploading{opacity:.9}
.att-prev.img>img{width:100%;height:86px;object-fit:cover;display:block;background:var(--input)}
.att-prev-ic{height:58px;display:flex;align-items:center;justify-content:center;font-size:28px;color:var(--muted);background:var(--input)}
.att-prev-meta{display:flex;flex-direction:column;padding:5px 8px;gap:1px;min-width:0}
.att-prev-name{font-size:12px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.att-prev-size{font-size:10.5px;color:var(--faint)}
.att-prev-x{position:absolute;top:5px;right:5px;width:20px;height:20px;border:none;border-radius:50%;background:rgba(0,0,0,.62);color:#fff;font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;opacity:0;transition:opacity .1s}
.att-prev:hover .att-prev-x{opacity:1}
.att-bar{position:absolute;left:0;right:0;bottom:0;height:4px;background:rgba(255,255,255,.18)}
.att-bar span{display:block;height:100%;background:var(--brand);width:0;transition:width .12s linear}
.fmt-bar{display:flex;align-items:center;gap:1px;padding:6px 8px;border-bottom:1px solid var(--divider);flex-wrap:wrap}
.fmt-bar.hidden{display:none}
.fmt-btn{background:none;border:none;color:var(--muted);width:30px;height:28px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:17px;cursor:pointer}
.fmt-btn:hover{background:var(--hover);color:var(--bright)}
.fmt-sep{width:1px;height:18px;background:var(--card-line);margin:0 5px}
.composer-input{width:100%;border:none;outline:none;font-size:15px;max-height:200px;overflow-y:auto;line-height:1.45;
  background:transparent;color:var(--text);padding:11px 14px 4px;font-family:var(--font-body);white-space:pre-wrap;word-break:break-word}
.composer-input:empty:before{content:attr(data-ph);color:var(--faint);pointer-events:none}
/* Edição inline de mensagem (estilo Slack, com o aspeto do composer) */
.msg-edit{margin:3px 0 6px;max-width:640px}
.msg-edit .composer-box{background:var(--input)}
.msg-edit-input{min-height:22px}
.msg-edit-actions{display:flex;align-items:center;gap:8px;margin-top:6px}
.msg-edit-hint{font-size:11.5px;color:var(--muted)}
.composer-input strong,.composer-input b{font-weight:700;color:var(--bright)}
.composer-input em,.composer-input i{font-style:italic}
.composer-input u{text-decoration:underline}
.composer-input s,.composer-input strike,.composer-input del{opacity:.75}
.composer-input a{color:var(--brand);text-decoration:underline}
.composer-input code{background:var(--rail);border:1px solid var(--card-line);border-radius:4px;padding:1px 5px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9em}
.composer-input pre{background:var(--rail);border:1px solid var(--card-line);border-radius:8px;padding:9px 11px;margin:5px 0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;white-space:pre-wrap}
.composer-input blockquote{border-left:3px solid var(--card-line);margin:3px 0;padding:1px 0 1px 12px;color:var(--text)}
.composer-input ul,.composer-input ol{margin:3px 0;padding-left:22px}
.composer-input li{margin:1px 0}
.composer-tools{display:flex;align-items:center;gap:1px;padding:4px 8px 8px}
.composer-tools .spacer{flex:1}
.ct-btn{background:none;border:none;color:var(--muted);width:32px;height:30px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:19px;cursor:pointer}
.ct-btn:hover{background:var(--hover);color:var(--bright)}
.ct-btn.recording{color:var(--red)}
/* Barra de gravação de mensagem de voz */
.voice-bar{display:flex;align-items:center;gap:10px;padding:8px 10px;margin:4px 0;background:var(--input);border-radius:10px}
.voice-bar .voice-dot{width:10px;height:10px;border-radius:50%;background:var(--red);flex-shrink:0;animation:voicePulse 1s infinite}
@keyframes voicePulse{0%,100%{opacity:1}50%{opacity:.25}}
.voice-time{font-variant-numeric:tabular-nums;font-weight:700;color:var(--bright);min-width:38px}
.voice-hint{color:var(--muted);font-size:13px;flex:1}
.voice-cancel,.voice-send{background:none;border:none;cursor:pointer;font-size:20px;padding:2px 4px;line-height:1;flex-shrink:0}
.voice-cancel{color:var(--muted)}.voice-cancel:hover{color:var(--red)}
.voice-send{color:var(--brand)}.voice-send:hover{filter:brightness(1.15)}
.send-btn{background:var(--hover);border:none;color:var(--faint);width:36px;height:30px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-size:18px;cursor:pointer;transition:background .12s,color .12s}
.send-btn.ready{background:var(--brand);color:#fff}
.send-btn.ready:hover{background:var(--brand-d)}
.chip{display:inline-flex;align-items:center;gap:6px;background:var(--rail);border-radius:6px;padding:4px 10px;font-size:13px;margin:6px 6px 0 0;color:var(--text)}
.chip button{background:none;border:none;color:var(--muted);cursor:pointer;font-size:15px;padding:0}
.attach-row{display:flex;flex-wrap:wrap}

/* markdown */
.msg-text strong{font-weight:700;color:var(--bright)}
.msg-text em{font-style:italic}
.msg-text del{opacity:.7}
.msg-text code{background:var(--rail);border:1px solid var(--card-line);border-radius:4px;padding:1px 5px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.9em}
.msg-text .code-block{background:var(--rail);border:1px solid var(--card-line);border-radius:8px;padding:10px 12px;margin:5px 0;overflow-x:auto;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;white-space:pre;color:var(--text)}
.mention{background:rgba(111,176,179,.2);color:#9fd0d2;border-radius:4px;padding:0 3px;font-weight:600}
.mention.me{background:rgba(215,64,66,.22);color:#f0a0a1}
.mention.mention-client{background:rgba(217,154,43,.22);color:#e0a838}
.mention-op .mm-role{margin-left:auto;font-size:11px;color:var(--muted)}
/* Menção ao próprio cliente, vista no portal */
.p-mention{background:rgba(217,154,43,.22);color:#b7791a;border-radius:4px;padding:0 3px;font-weight:700}

/* reações */
.reactions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.reaction{display:inline-flex;align-items:center;gap:5px;background:var(--input);border:1px solid var(--card-line);
  border-radius:14px;padding:2px 9px;font-size:13px;color:var(--text);cursor:pointer;line-height:1.4}
.reaction span{font-size:12px;color:var(--muted);font-weight:600}
.reaction.mine{background:var(--water-soft);border-color:var(--water-blue)}
.reaction.mine span{color:var(--water-text)}
.reaction:hover{border-color:var(--muted)}
.reaction.add{color:var(--muted);padding:2px 8px}
.reaction.add:hover{color:var(--bright)}
/* tooltip instantâneo de quem reagiu (sem o atraso do title nativo) */
.reaction[data-tip]{position:relative}
.reaction[data-tip]:hover::after{content:attr(data-tip);position:absolute;bottom:calc(100% + 7px);left:50%;transform:translateX(-50%);background:var(--sidebar);color:var(--bright);border:1px solid var(--card-line);padding:6px 10px;border-radius:8px;font-size:12px;line-height:1.35;white-space:normal;width:max-content;max-width:220px;text-align:center;z-index:60;pointer-events:none;box-shadow:0 6px 20px rgba(0,0,0,.35)}
.reaction[data-tip]:hover::before{content:"";position:absolute;bottom:calc(100% + 2px);left:50%;transform:translateX(-50%);border:5px solid transparent;border-top-color:var(--card-line);z-index:60;pointer-events:none}

/* indicador de thread */
.thread-indicator{display:inline-flex;align-items:center;gap:8px;margin-top:6px;background:none;border:1px solid transparent;
  border-radius:8px;padding:4px 8px 4px 4px;cursor:pointer;color:var(--link);font-size:13px;font-weight:600;font-family:var(--font-body)}
.thread-indicator:hover{background:var(--msg-hover);border-color:var(--card-line)}
.thread-indicator .tr-av{width:22px;height:22px;border-radius:6px;color:#fff;font-weight:700;font-size:10px;display:inline-flex;align-items:center;justify-content:center;margin-right:-6px}
.thread-indicator .tr-last{color:var(--faint);font-weight:400;font-size:12px}

/* emoji picker */
.emoji-pop{position:fixed;z-index:60;background:var(--sidebar);border:1px solid var(--card-line);border-radius:12px;
  box-shadow:0 8px 24px rgba(0,0,0,.4);padding:8px;display:grid;grid-template-columns:repeat(8,1fr);gap:2px;width:296px}
.emoji-op{background:none;border:none;font-size:20px;padding:5px;border-radius:7px;cursor:pointer;line-height:1}
.emoji-op:hover{background:var(--hover)}

/* picker de emojis por categoria */
.emoji-pop2{position:fixed;z-index:140;width:340px;max-width:92vw;background:var(--chat);border:1px solid var(--card-line);
  border-radius:12px;box-shadow:0 14px 44px rgba(0,0,0,.5);overflow:hidden;display:flex;flex-direction:column}
.em-search{display:flex;align-items:center;gap:8px;padding:9px 11px;border-bottom:1px solid var(--divider)}
.em-search i{font-size:16px;color:var(--muted)}
.em-search input{flex:1;border:none;outline:none;background:transparent;color:var(--text);font-size:14px;font-family:var(--font-body)}
.em-search input::placeholder{color:var(--faint)}
.em-tabs{display:flex;gap:1px;padding:5px 6px;border-bottom:1px solid var(--divider);overflow-x:auto}
.em-tab{flex:0 0 auto;background:none;border:none;font-size:18px;width:30px;height:30px;border-radius:7px;cursor:pointer;line-height:1;opacity:.85}
.em-tab:hover{background:var(--hover);opacity:1}
.em-scroll{flex:1;min-height:0;overflow-y:auto;padding:4px 8px 8px}
.em-cat{position:sticky;top:0;background:var(--chat);font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:8px 2px 4px;z-index:1}
.em-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:1px}
.em-op{background:none;border:none;font-size:21px;padding:4px 0;border-radius:7px;cursor:pointer;line-height:1}
.em-op:hover{background:var(--hover)}
.em-empty{text-align:center;color:var(--faint);font-size:13px;padding:24px 8px}

/* menu de menções */
.mention-menu{position:fixed;z-index:60;background:var(--sidebar);border:1px solid var(--card-line);border-radius:10px;
  box-shadow:0 8px 24px rgba(0,0,0,.4);padding:5px;max-height:230px;overflow-y:auto;min-width:220px}
.mention-op{display:flex;align-items:center;gap:9px;width:100%;background:none;border:none;color:var(--text);
  padding:7px 9px;border-radius:7px;font-size:14px;text-align:left;font-family:var(--font-body)}
.mention-op:hover{background:var(--hover)}
.mention-op .mm-role{margin-left:auto;color:var(--faint);font-size:12px}

/* painel de thread */
.thread-body{padding-top:6px}
.thread-parent{padding-bottom:8px;border-bottom:1px solid var(--divider)}
.thread-parent .thread-indicator{display:none}
.thread-sep{font-size:12px;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:12px 0 6px}
.thread-replies .msg,.thread-parent .msg{padding-left:0;padding-right:0}
.thread-composer{padding:12px 18px 16px;border-top:1px solid var(--card-line)}
.thread-composer .composer-box{background:var(--input);border-radius:10px;padding:2px 10px 8px}
.thread-composer textarea{width:100%;border:none;outline:none;resize:none;background:transparent;color:var(--text);font-size:14.5px;padding:9px 0 0;font-family:var(--font-body);max-height:140px}
.msg-actions button .ph{font-size:15px}

/* ---- TASKS (Kanban) ---- */
.board{flex:1;display:flex;gap:14px;padding:18px;overflow-x:auto;align-items:flex-start}
.col{background:var(--col);border-radius:10px;flex:1 1 0;min-width:220px;display:flex;flex-direction:column;max-height:100%}
.col-head{display:flex;align-items:center;gap:8px;padding:12px 14px;font-weight:700;font-size:13px;
  color:var(--bright);text-transform:uppercase;letter-spacing:.02em}
.col-head .cdot{width:9px;height:9px;border-radius:50%}
.col-head .col-count{color:var(--muted);font-weight:600}
.col-body{padding:0 10px 10px;overflow-y:auto;flex:1;min-height:40px}
.col.drag-over{outline:2px dashed var(--brand);outline-offset:-4px}
/* Linha que mostra onde o card vai ficar ao arrastar */
.drop-marker{height:3px;border-radius:3px;background:var(--brand);margin:5px 2px;box-shadow:0 0 0 3px rgba(215,64,66,.18)}
/* Anexos das tarefas */
.task-atts{display:flex;flex-direction:column;gap:8px;margin-bottom:10px}
.task-att{position:relative;background:var(--input);border:1px solid var(--card-line);border-radius:8px;padding:8px 34px 8px 8px}
.task-att .att-media img,.task-att .att-media video{max-width:100%;border-radius:6px;display:block}
.task-att-del{position:absolute;top:6px;right:6px;background:none;border:none;color:var(--muted);cursor:pointer;
  padding:3px;border-radius:999px;line-height:1;font-size:15px}
.task-att-del:hover{background:var(--hover);color:var(--brand)}
.modal.att-drop{outline:2px dashed var(--brand);outline-offset:-6px}
.card.dragging{opacity:.45}
.card{background:var(--chat);border:1px solid var(--card-line);border-radius:8px;padding:11px 12px;margin-bottom:8px;cursor:grab}
.card:hover{border-color:var(--brand)}
.card.dragging{opacity:.4}
.card-prio{height:3px;border-radius:3px;margin:-2px 0 9px}
.card-title{font-weight:500;font-size:14px;line-height:1.35;color:var(--text)}
.card-meta{display:flex;align-items:center;gap:6px;margin-top:9px;flex-wrap:wrap}
.pill{font-size:11px;padding:2px 8px;border-radius:5px;font-weight:600}
.pill.ch{background:var(--rail);color:var(--muted)}
.pill.due{background:rgba(122,162,201,.16);color:#9dc0e0}
.pill.due.late{background:rgba(218,55,60,.15);color:#fb7f83}
.pill.prio-urgent{background:rgba(218,55,60,.15);color:#fb7f83}
.pill.prio-high{background:rgba(240,177,50,.15);color:#f0b132}
.pill.prio-normal{background:rgba(111,176,179,.16);color:#9fd0d2}
.pill.prio-low{background:rgba(139,152,166,.16);color:#aeb8c2}
.card-foot{display:flex;align-items:center;gap:6px;margin-top:10px;color:var(--muted);font-size:12px}
.card-foot .spacer{flex:1}
.card-foot .avatar{width:22px;height:22px;font-size:10px}
.assignee-stack{display:inline-flex;align-items:center}
.assignee-stack .avatar{margin-right:-7px;box-shadow:0 0 0 2px var(--card)}
.assignee-stack .avatar:last-child{margin-right:3px}
/* Seletor de múltiplos responsáveis */
.assignee-picker{display:flex;flex-wrap:wrap;gap:6px}
.ap-chip{display:inline-flex;align-items:center;gap:6px;background:var(--input);border:1px solid var(--card-line);
  color:var(--text);border-radius:16px;padding:3px 11px 3px 4px;font-size:12.5px;font-family:var(--font-body);cursor:pointer;transition:all .12s}
.ap-chip:hover{border-color:var(--muted)}
.ap-chip .avatar{flex-shrink:0}
.ap-chip.on{background:rgba(215,64,66,.16);border-color:var(--brand);color:var(--bright);font-weight:600}

/* ---------- MODAL ---------- */
.modal-back{position:fixed;inset:0;background:rgba(0,0,0,.6);display:flex;align-items:center;
  justify-content:center;z-index:50;padding:20px}
.modal-back[hidden]{display:none}

/* barra de pesquisa nas Conversas */
.convo-search{display:flex;align-items:center;gap:8px;width:calc(100% - 16px);margin:4px 8px 10px;padding:7px 10px;
  background:var(--input);border:1px solid var(--card-line);border-radius:8px;color:var(--muted);cursor:pointer;font-size:13px;font-family:var(--font-body)}
.convo-search:hover{border-color:var(--muted);color:var(--text)}
.convo-search i{font-size:16px}
.convo-search span{flex:1;text-align:left}
.convo-search kbd{font-size:11px;background:var(--rail);border:1px solid var(--card-line);border-radius:4px;padding:1px 5px;color:var(--faint)}

/* botão GIF no composer */
.ct-gif{font-size:11px;font-weight:800;letter-spacing:.02em;width:auto;min-width:34px;padding:0 7px;border:1.5px solid var(--muted);border-radius:6px;color:var(--muted);background:none;height:24px;line-height:1}
.ct-gif:hover{background:var(--hover);color:var(--bright);border-color:var(--bright)}

/* biblioteca de GIFs */
.gif-pop{position:fixed;z-index:140;width:340px;max-width:92vw;background:var(--chat);border:1px solid var(--card-line);border-radius:12px;box-shadow:0 14px 44px rgba(0,0,0,.5);overflow:hidden;display:flex;flex-direction:column}
.gif-head{display:flex;align-items:center;gap:8px;padding:10px 12px;border-bottom:1px solid var(--divider)}
.gif-head i{font-size:17px;color:var(--muted)}
.gif-head input{flex:1;border:none;outline:none;background:transparent;color:var(--text);font-size:14px;font-family:var(--font-body)}
.gif-head input::placeholder{color:var(--faint)}
.gif-grid{flex:1;min-height:0;columns:2;column-gap:6px;padding:8px;overflow-y:auto}
.gif-item{display:block;width:100%;margin:0 0 6px;padding:0;border:none;background:var(--rail);border-radius:8px;overflow:hidden;cursor:pointer;break-inside:avoid}
.gif-item img{display:block;width:100%;height:auto}
.gif-item:hover{outline:2px solid var(--brand);outline-offset:-2px}
.gif-loading,.gif-empty{column-span:all;text-align:center;color:var(--faint);font-size:13px;padding:24px 8px}
.gif-foot{padding:6px 12px;border-top:1px solid var(--divider);font-size:10.5px;color:var(--faint);text-align:right}

/* GIF/imagem inline nas mensagens */
.msg-gif{display:block;max-width:280px;max-height:260px;width:auto;border-radius:10px;margin-top:4px}

/* pesquisa dentro da conversa */
.mh-icon{background:transparent;border:none;color:var(--muted);font-size:19px;width:34px;height:32px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0}
.mh-icon:hover{background:var(--hover);color:var(--bright)}
.chan-search{display:flex;align-items:center;gap:9px;padding:9px 16px;border-bottom:1px solid var(--divider);background:var(--sidebar)}
.chan-search[hidden]{display:none}
.chan-search > i{font-size:17px;color:var(--muted)}
.chan-search input{flex:1;border:none;outline:none;background:transparent;color:var(--text);font-size:14.5px;font-family:var(--font-body)}
.chan-search input::placeholder{color:var(--faint)}
.chan-search-count{font-size:12px;color:var(--faint);white-space:nowrap}
.chan-search-head{padding:10px 16px 4px;font-size:12px;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);font-weight:600}
.chan-search-empty{padding:26px 16px;text-align:center;color:var(--faint);font-size:14px}
mark.search-hit{background:var(--fire-sand,#D99A2B);color:#1a242e;border-radius:3px;padding:0 2px}

/* quick switcher ⌘K */
.cmdk-back{position:fixed;inset:0;z-index:130;background:rgba(0,0,0,.55);display:flex;justify-content:center;align-items:flex-start;padding-top:12vh;backdrop-filter:blur(2px)}
.cmdk{width:560px;max-width:92vw;background:var(--chat);border:1px solid var(--card-line);border-radius:12px;box-shadow:0 18px 60px rgba(0,0,0,.55);overflow:hidden}
.cmdk-head{display:flex;align-items:center;gap:10px;padding:13px 15px;border-bottom:1px solid var(--divider)}
.cmdk-head i{font-size:19px;color:var(--muted)}
.cmdk-head input{flex:1;border:none;outline:none;background:transparent;color:var(--text);font-size:16px;font-family:var(--font-body)}
.cmdk-head input::placeholder{color:var(--faint)}
.cmdk-esc{font-size:11px;background:var(--rail);border:1px solid var(--card-line);border-radius:4px;padding:2px 6px;color:var(--faint)}
.cmdk-list{max-height:52vh;overflow-y:auto;padding:6px}
.cmdk-item{display:flex;align-items:center;gap:11px;padding:9px 11px;border-radius:8px;cursor:pointer}
.cmdk-item.sel{background:var(--hover)}
.cmdk-ic{width:26px;height:26px;flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:16px;color:var(--muted);background:var(--rail);border-radius:6px}
.cmdk-item.sel .cmdk-ic{color:var(--bright)}
.cmdk-name{color:var(--text);font-size:14.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cmdk-dot{width:7px;height:7px;border-radius:50%;background:var(--green);flex-shrink:0}
.cmdk-sub{margin-left:auto;color:var(--faint);font-size:12px;flex-shrink:0}
.cmdk-empty{padding:22px;text-align:center;color:var(--faint);font-size:14px}
.modal{background:var(--chat);border-radius:8px;box-shadow:0 8px 24px rgba(0,0,0,.5);width:520px;max-width:100%;
  max-height:90vh;overflow-y:auto}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:18px 18px 8px}
.modal-head h3{margin:0;font-size:19px;color:var(--bright)}
.modal-body{padding:8px 18px 18px;display:flex;flex-direction:column;gap:14px}
.modal-foot{padding:16px 18px;background:var(--sidebar);display:flex;align-items:center;gap:10px;justify-content:flex-end;border-radius:0 0 8px 8px}
.modal-foot .spacer{flex:1}
.btn.danger{background:transparent;border:1px solid rgba(215,64,66,.5);color:var(--fire-red,#d74042)}
.btn.approve{background:var(--green);border:1px solid var(--green);color:#fff}
.btn.approve:hover{background:#278a5c;border-color:#278a5c}
.btn.danger:hover{background:var(--fire-red,#d74042);border-color:var(--fire-red,#d74042);color:#fff}
.field{display:flex;flex-direction:column;gap:6px}
.field label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.02em;color:var(--muted)}
.field-hint{font-size:11px;color:var(--muted);line-height:1.4}
.check-row{display:flex;gap:22px;flex-wrap:wrap;padding-top:2px}
.field .check{display:inline-flex;align-items:center;gap:8px;cursor:pointer;text-transform:none;font-size:14px;font-weight:500;color:var(--text);letter-spacing:0}
.field .check input[type=checkbox]{width:17px;height:17px;accent-color:var(--brand);cursor:pointer;flex-shrink:0}
.field input,.field textarea,.field select{padding:10px 11px;background:var(--rail);border:1px solid var(--rail);
  border-radius:4px;outline:none;color:var(--text)}
.field input:focus,.field textarea:focus,.field select:focus{border-color:var(--brand)}
.field textarea{resize:vertical;min-height:72px}
.field-row{display:flex;gap:12px}
.field-row .field{flex:1}
.form-err{color:#fb7f83;font-size:13px}

/* task detail */
.td-meta{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px 16px;font-size:14px;align-items:center}
.td-meta .k{color:var(--muted);font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.td-section-title{font-weight:700;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.02em;margin-top:6px}
.comment{display:flex;gap:10px;padding:6px 0}
.comment .avatar{width:30px;height:30px;font-size:12px}
.comment-body{font-size:14px;color:var(--text)}
.comment-head{display:flex;gap:8px;align-items:baseline}
.comment-head{position:relative}
.comment-body{flex:1;min-width:0}
.comment-head .cn{font-weight:600;font-size:14px;color:var(--bright)}
.comment-head .ct{color:var(--faint);font-size:11px}
.comment-acts{margin-left:auto;display:inline-flex;gap:2px;opacity:0;transition:opacity .12s}
.comment:hover .comment-acts,.comment-acts:focus-within{opacity:1}
.comment-acts .icon-btn{font-size:14px;padding:2px 5px}
.comment-acts .icon-btn:hover{color:var(--bright)}
.comment-edit{margin-top:4px}
.cmt-edit-input{width:100%;background:var(--input);border:1px solid var(--card-line);border-radius:6px;padding:8px 10px;color:var(--text);font:inherit;font-size:14px;resize:vertical}
.comment-compose .cc-actions,.comment-edit .cc-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-top:6px}
.comment-compose .cc-hint{color:var(--faint);font-size:11px}
.comment-compose .btn.sm[disabled]{opacity:.55;pointer-events:none}
.select-inline{background:var(--rail);border:1px solid var(--rail);border-radius:4px;padding:5px 8px;font-size:13px;color:var(--text);max-width:100%;min-width:0}
.select-inline:focus{border-color:var(--brand);outline:none}

.empty{color:var(--muted);text-align:center;padding:48px 20px;font-size:15px}
.hidden{display:none!important}

/* ---------- DASHBOARD ---------- */
.dash-scroll{flex:1;overflow-y:auto;padding:28px 32px 40px}
.dash-head{margin-bottom:18px;display:flex;align-items:flex-start;justify-content:space-between;gap:16px}
.dash-hi{font-size:30px;font-weight:800;color:var(--bright);margin:0}
.dash-sub{color:var(--muted);margin:6px 0 0;font-size:15px}
.dash-quickadd{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--card-line);border-radius:14px;padding:13px 16px;margin-bottom:14px}
.qa-plus{width:30px;height:30px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;flex-shrink:0}
.dash-quickadd input{flex:1;background:none;border:none;outline:none;color:var(--text);font-size:15px;font-family:var(--font-body)}
.dash-quickadd input::placeholder{color:var(--faint)}
.dash-blocked{display:flex;align-items:center;gap:10px;background:rgba(215,64,66,.12);border:1px solid rgba(215,64,66,.3);color:#f0a0a1;border-radius:10px;padding:10px 14px;font-size:13.5px;margin-bottom:16px;cursor:pointer}
.dash-blocked b{color:#fff}
.db-dot{width:9px;height:9px;border-radius:50%;background:var(--fire-red);flex-shrink:0;box-shadow:0 0 0 3px rgba(215,64,66,.22)}
.stat-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-bottom:18px}
.stat-row.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.stat-card.danger::after{background:var(--fire-red)}
.stat-card{background:var(--card);border:1px solid var(--card-line);border-radius:14px;padding:18px 20px;position:relative;overflow:hidden}
.stat-card.clickable{cursor:pointer;transition:border-color .12s,transform .12s}
.stat-card.clickable:hover{border-color:var(--brand);transform:translateY(-1px)}
.stat-card::after{content:"";position:absolute;top:0;left:0;width:4px;height:100%;background:var(--muted)}
.stat-card.accent::after{background:var(--fire-sand)}
.stat-card.ok::after{background:var(--green)}
.stat-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700;font-family:var(--font-head)}
.stat-value{font-size:34px;font-weight:800;color:var(--bright);margin-top:6px;font-family:var(--font-head);line-height:1}
.stat-unit{font-size:14px;font-weight:500;color:var(--muted);margin-left:6px}
.dash-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;align-items:start}
@media(max-width:1400px){.dash-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Linha de reunião na Agenda de hoje */
.dash-meetrow{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:8px;cursor:pointer;
  transition:background .1s;min-width:0}
.dash-meetrow:hover{background:var(--hover)}
/* Largura fixa e alinhado à direita: assim "09:30" e "Dia todo" acabam no mesmo
   sítio e os títulos ficam todos alinhados. */
.dash-meetrow .dm-time{flex-shrink:0;font-size:11.5px;font-weight:700;color:var(--water-text,var(--water-blue));
  font-variant-numeric:tabular-nums;width:52px;text-align:right}
.dash-meetrow .dm-title{flex:1;min-width:0;font-size:13px;color:var(--text);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dash-meetrow .dm-meet{flex-shrink:0;font-size:14px;color:var(--muted)}
.dash-meetrow.passou{opacity:.5}
.dash-meetrow.passou .dm-title{text-decoration:line-through}
.dash-panel{background:var(--card);border:1px solid var(--card-line);border-radius:14px;padding:16px 18px;min-width:0}
.dash-panel-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}
.dash-panel-head h3{margin:0;font-size:15px;color:var(--bright);font-weight:700}
.dp-count{margin-left:auto;background:var(--hover);color:var(--muted);border-radius:20px;font-size:12px;padding:1px 9px;font-weight:700}
.linklike{margin-left:auto;background:none;border:none;color:var(--link);font-size:12.5px;cursor:pointer;font-family:var(--font-body)}
.dash-list{display:flex;flex-direction:column;gap:2px}
.dash-taskrow{display:flex;align-items:center;gap:9px;padding:9px 8px;border-radius:8px;cursor:pointer}
.dash-taskrow:hover{background:var(--hover)}
.dtr-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.dtr-title{flex:1;min-width:0;font-size:14px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dtr-blocked{font-size:10px;text-transform:uppercase;background:rgba(215,64,66,.2);color:#ef8486;padding:1px 6px;border-radius:4px;font-weight:700}
.dtr-sub,.dtr-due{font-size:12px;color:var(--muted);flex-shrink:0;white-space:nowrap}
.dtr-due.late{color:#ef8486}
.dash-empty{color:var(--muted);font-size:13.5px;padding:14px 6px;text-align:center}
.proj-list{display:flex;flex-direction:column;gap:13px}
.proj-row{display:flex;align-items:center;gap:10px;font-size:14px}
.proj-dot{width:10px;height:10px;border-radius:3px;flex-shrink:0}
.proj-name{color:var(--text);min-width:78px}
.proj-count{color:var(--faint);font-size:12px}
.proj-bar{flex:1;height:6px;background:var(--input);border-radius:4px;overflow:hidden}
.proj-fill{height:100%;border-radius:4px;transition:width .3s}
.proj-pct{color:var(--muted);font-size:12px;font-weight:600;width:34px;text-align:right}

/* card: bloqueado + subtarefas */
.card-blocked{background:rgba(215,64,66,.15);color:#f0a0a1;border-radius:6px;padding:4px 8px;font-size:11px;font-weight:600;margin:-2px 0 8px}
.card-sub{display:flex;align-items:center;gap:8px;margin-top:9px}
.card-sub-bar{flex:1;height:5px;background:var(--input);border-radius:3px;overflow:hidden}
.card-sub-bar>div{height:100%;background:var(--green);border-radius:3px}
.card-sub>span{font-size:11px;color:var(--muted)}

/* detalhe: bloqueado + subtarefas */
.blk-row{display:flex;align-items:center;gap:8px}
.blk-row input[type=checkbox]{width:16px;height:16px;accent-color:var(--fire-red);flex-shrink:0}
.blk-reason{flex:1}
.subtask-prog{margin:2px 0 8px}
.stp-bar{height:6px;background:var(--input);border-radius:4px;overflow:hidden}
.stp-bar>div{height:100%;background:var(--green);border-radius:4px;transition:width .3s}
.sub-prog-lbl{color:var(--muted);font-weight:600}
.subtask{display:flex;align-items:center;gap:9px;padding:6px;border-radius:7px;cursor:pointer}
.subtask:hover{background:var(--hover)}
.subtask input[type=checkbox]{width:16px;height:16px;accent-color:var(--green);flex-shrink:0}
.subtask .stk-title{flex:1;font-size:14px;color:var(--text)}
.subtask.done .stk-title{text-decoration:line-through;color:var(--muted)}
.stk-del,.stk-edit{background:none;border:none;color:var(--faint);cursor:pointer;font-size:13px;opacity:0;flex-shrink:0}
.subtask:hover .stk-del,.subtask:hover .stk-edit{opacity:1}
.stk-del:hover{color:var(--red)}
.stk-edit:hover{color:var(--brand)}
.stk-edit-input{flex:1;font-size:14px;font-family:inherit;background:var(--input);border:1px solid var(--brand);border-radius:6px;color:var(--bright);padding:4px 8px}
/* Links de tarefa */
.tlink-row{display:flex;align-items:center;gap:9px;padding:6px;border-radius:7px}
.tlink-row:hover{background:var(--hover)}
.tlink-ic{color:var(--faint);flex-shrink:0;font-size:15px}
.tlink-a{flex:1;font-size:14px;color:var(--brand);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.tlink-a:hover{text-decoration:underline}
.tlink-del{background:none;border:none;color:var(--faint);cursor:pointer;font-size:13px;opacity:0;flex-shrink:0}
.tlink-row:hover .tlink-del{opacity:1}
.tlink-del:hover{color:var(--red)}

/* ---------- CLIENTES ---------- */
.pill.client{background:rgba(176,137,104,.18);color:#cda884}
.client-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.client-card{background:var(--card);border:1px solid var(--card-line);border-radius:14px;padding:16px 18px;cursor:pointer;transition:border-color .12s}
.client-card:hover{border-color:var(--brand)}
.cc-top{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.client-card.inactive{opacity:.62}
.client-card.inactive:hover{opacity:.85}
.cc-status{margin-left:auto;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.03em;padding:2px 8px;border-radius:10px}
.cc-status.off{background:rgba(139,152,166,.22);color:var(--muted)}
.cc-status.on{background:rgba(47,158,107,.18);color:#5cc794}
.client-filter{margin:0 0 16px}
.client-filter .seg-count{opacity:.7;font-weight:700;margin-left:2px}
/* Barra: filtros à esquerda + pesquisa ao vivo à direita (Clientes / Banco de Horas) */
.list-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;margin:0 0 16px}
.list-toolbar .client-filter{margin:0}
.list-search{position:relative;display:flex;align-items:center;flex:0 1 260px;min-width:180px}
.list-search i{position:absolute;left:11px;color:var(--muted);font-size:16px;pointer-events:none}
.list-search input{width:100%;background:var(--rail);border:1px solid var(--rail);border-radius:9px;padding:8px 12px 8px 34px;color:var(--text);font-size:14px;outline:none;transition:border-color .12s}
.list-search input::placeholder{color:var(--muted)}
.list-search input:focus{border-color:var(--brand,#D74042)}
.list-search input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;height:14px;width:14px;background:var(--muted);cursor:pointer;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 4l8 8M12 4l-8 8' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4 4l8 8M12 4l-8 8' stroke='black' stroke-width='2' stroke-linecap='round'/%3E%3C/svg%3E") center/contain no-repeat}

/* ---------- ASSISTENTE / WIZARD ---------- */
.wiz-fab{position:fixed;right:22px;bottom:22px;width:56px;height:56px;border-radius:50%;border:none;cursor:pointer;z-index:60;
  background:var(--brand);color:#fff;font-size:24px;display:flex;align-items:center;justify-content:center;
  box-shadow:0 8px 24px rgba(215,64,66,.45);transition:transform .15s,background .15s}
.wiz-fab[hidden]{display:none}   /* o display:flex acima anularia o atributo hidden */
.wiz-fab:hover{background:var(--brand-d);transform:translateY(-2px)}
.wiz-fab.open{background:var(--space-blue)}
.wiz-panel{position:fixed;right:22px;bottom:90px;width:360px;max-width:calc(100vw - 32px);height:520px;max-height:calc(100vh - 130px);
  background:var(--sidebar);border:1px solid var(--card-line);border-radius:16px;z-index:60;display:flex;flex-direction:column;overflow:hidden;
  box-shadow:0 18px 50px rgba(0,0,0,.45)}
.wiz-panel[hidden]{display:none}
.wiz-head{display:flex;align-items:center;gap:8px;padding:12px 14px;background:var(--space-blue);color:#fff;flex-shrink:0}
.wiz-title{font-family:var(--font-head);font-weight:700;font-size:14px;flex:1;display:flex;align-items:center;gap:8px}
.wiz-title .ph-sparkle{color:#ffd36b}
.wiz-head .icon-btn{color:#c7d0d8}
.wiz-msgs{flex:1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:8px}
.wiz-msg{max-width:82%;padding:9px 12px;border-radius:14px;font-size:13.5px;line-height:1.45}
.wiz-msg.bot{align-self:flex-start;background:var(--card);border:1px solid var(--card-line);border-bottom-left-radius:4px;color:var(--text)}
.wiz-msg.user{align-self:flex-end;background:var(--brand);color:#fff;border-bottom-right-radius:4px}
.wiz-sum{font-size:13px}
.wiz-sum-row{display:flex;justify-content:space-between;gap:12px;margin-top:6px;padding-top:6px;border-top:1px solid var(--divider)}
.wiz-sum-row span{color:var(--muted);text-transform:capitalize}
.wiz-sum-row b{color:var(--bright);text-align:right}
.wiz-input{flex-shrink:0;padding:10px 12px;border-top:1px solid var(--card-line);display:flex;flex-wrap:wrap;gap:6px;background:var(--sidebar)}
.wiz-opt{background:var(--brand);color:#fff;border:none;border-radius:999px;padding:9px 15px;font-family:var(--font-head);font-weight:600;
  font-size:12.5px;cursor:pointer;transition:background .12s}
.wiz-opt:hover{background:var(--brand-d)}
.wiz-opt.sm{padding:7px 13px;font-size:12px}
/* Opção não selecionada num passo de seleção múltipla (fica sólida ao escolher) */
.wiz-opt.ghost{background:transparent;color:var(--text);border:1px solid var(--card-line)}
.wiz-opt.ghost:hover{background:transparent;border-color:var(--brand);color:var(--brand)}
.wiz-multi{display:flex;flex-wrap:wrap;gap:6px;width:100%;margin-bottom:2px}
.wiz-skip{background:transparent;border:1px solid var(--card-line);color:var(--muted);border-radius:999px;padding:8px 14px;font-size:12px;cursor:pointer}
.wiz-skip:hover{border-color:var(--muted);color:var(--text)}
.wiz-hint{color:var(--muted);font-size:12px;width:100%}
.wiz-field{display:flex;gap:6px;width:100%}
.wiz-field input{flex:1;background:var(--input);border:1px solid var(--card-line);border-radius:10px;padding:10px 12px;color:var(--text);font-family:var(--font-body);font-size:13.5px}
.wiz-field input:focus{border-color:var(--brand);outline:none}
.wiz-send{background:var(--brand);color:#fff;border:none;border-radius:10px;width:42px;flex-shrink:0;cursor:pointer;font-size:16px}
.wiz-send:hover{background:var(--brand-d)}
@media (max-width:900px){
  .wiz-fab{bottom:78px;right:16px;width:50px;height:50px;font-size:21px}
  .wiz-panel{bottom:138px;right:16px;left:16px;width:auto;max-width:none}
}

/* ---------- ORÇAMENTOS ---------- */
.budget-list{display:flex;flex-direction:column;gap:8px}
.budget-row{display:grid;grid-template-columns:130px 1fr 92px 96px 110px 34px;align-items:center;gap:12px;
  background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:12px 14px;cursor:pointer;transition:border-color .12s}
.budget-row:hover{border-color:var(--brand)}
.br-num{font-family:var(--font-head);font-weight:700;color:var(--bright);font-size:13px;white-space:nowrap}
.br-client{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.br-title{color:var(--muted)}
.br-date{color:var(--muted);font-size:12px;white-space:nowrap}
.br-total{text-align:right;font-weight:700;color:var(--bright);white-space:nowrap}
.br-print{color:var(--muted)}
.br-print:hover{color:var(--brand)}
.pill.bstatus{text-align:center;text-transform:uppercase;font-size:10px;letter-spacing:.03em}
.pill.bstatus.rascunho{background:rgba(139,152,166,.2);color:var(--muted)}
.pill.bstatus.enviado{background:rgba(122,162,201,.18);color:#9dc0e0}
.pill.bstatus.aceite{background:rgba(47,158,107,.2);color:#5cc794}
.pill.bstatus.recusado{background:rgba(215,64,66,.18);color:#ef8486}
.bi-head{display:grid;grid-template-columns:1fr 66px 100px 100px 30px;gap:8px;font-size:11px;text-transform:uppercase;
  letter-spacing:.04em;color:var(--muted);font-weight:700;padding:0 2px 5px}
.bi-head .num{text-align:right}
.bi-row{display:grid;grid-template-columns:1fr 66px 100px 100px 30px;gap:8px;align-items:center;margin-bottom:6px}
.bi-row input{background:var(--input);border:1px solid var(--card-line);border-radius:6px;padding:7px 9px;color:var(--text);font-family:var(--font-body);font-size:13px;width:100%}
.bi-row input:focus{border-color:var(--brand);outline:none}
.bi-row input.num{text-align:right}
.bi-total{text-align:right;font-size:13px;color:var(--text);white-space:nowrap}
.bi-del{color:var(--muted)}
.bi-del:hover{color:var(--fire-red)}
.b-totals{margin:14px 0 14px auto;padding:12px 14px;background:var(--input);border-radius:10px;max-width:300px}
.bt-line{display:flex;justify-content:space-between;font-size:13px;color:var(--muted);padding:3px 0}
.bt-line b{color:var(--text)}
.bt-line.grand{border-top:1px solid var(--card-line);margin-top:6px;padding-top:8px;font-size:15px;color:var(--bright)}
.bt-line.grand b{color:var(--brand);font-weight:800}
@media (max-width:640px){
  .budget-row{grid-template-columns:1fr auto;grid-auto-rows:auto;gap:4px 10px}
  .budget-row .br-num{grid-column:1}
  .budget-row .br-total{grid-column:2;grid-row:1}
  .budget-row .br-client{grid-column:1/3}
  .budget-row .br-date,.budget-row .bstatus{grid-row:3}
  .budget-row .br-print{grid-column:2;grid-row:3;justify-self:end}
}
.cc-av{width:44px;height:44px;border-radius:11px;color:#fff;font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-head)}
.cc-av.lg{width:52px;height:52px;font-size:18px;border-radius:13px}
.cc-name{font-size:16px;font-weight:700;color:var(--bright)}
.cc-company{font-size:13px;color:var(--muted)}
.cc-contact{display:flex;flex-direction:column;gap:5px;margin-bottom:12px;min-height:20px}
.cc-line{font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-foot{display:flex;gap:8px}
.cc-tag{font-size:11.5px;font-weight:600;color:var(--muted);background:var(--input);border-radius:14px;padding:3px 10px}

/* ficha do cliente */
.cd-head{display:flex;align-items:center;gap:14px;margin-bottom:4px}
.cd-id{flex:1}
.cd-name{font-size:19px;font-weight:700;color:var(--bright);font-family:var(--font-head)}
.cd-company{font-size:14px;color:var(--muted)}
.cd-notes{background:var(--input);border-radius:8px;padding:11px 13px;color:var(--text);font-size:14px;line-height:1.5;white-space:pre-wrap;margin-top:4px}
.svc-row{display:flex;align-items:center;gap:10px;padding:8px 4px}
.svc-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.svc-dot.ativo{background:var(--green)}.svc-dot.pausado{background:var(--fire-sand)}.svc-dot.terminado{background:var(--faint)}
.svc-name{flex:1;font-size:14px;color:var(--text)}
.svc-badge{font-size:11px;font-weight:700;padding:2px 9px;border-radius:12px;text-transform:uppercase}
.svc-badge.ativo{background:rgba(47,158,107,.18);color:#5cc999}.svc-badge.pausado{background:rgba(217,154,43,.18);color:#e6b656}.svc-badge.terminado{background:var(--input);color:var(--muted)}
.svc-del{opacity:.6}

/* ---------- AGENDA (Timeline / Mês) ---------- */
.seg{display:inline-flex;background:var(--input);border-radius:999px;padding:3px}
.seg button{display:inline-flex;align-items:center;gap:6px;background:none;border:none;color:var(--muted);font-size:13px;font-weight:600;padding:5px 14px;border-radius:999px;font-family:var(--font-body);cursor:pointer}
.seg button:hover{color:var(--bright)}
.seg button.active{background:var(--brand);color:#fff}
.seg .seg-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
#teamSeg{margin-left:12px}
.nav-arrow{font-size:20px;color:var(--muted)}
.nav-arrow:hover{color:var(--bright)}
.sched{flex:1;display:flex;flex-direction:column;min-height:0}
.sched-body{flex:1;overflow:auto;padding:16px 20px}

/* timeline */
.tl-wrap{overflow-x:auto;padding-bottom:10px}
.tl-grid{min-width:calc(168px + var(--cols)*var(--cellw))}
.tl-row{display:flex;align-items:center;min-height:36px}
.tl-header{position:sticky;top:0;z-index:3;background:var(--chat)}
.tl-label{width:168px;flex-shrink:0;position:sticky;left:0;z-index:2;background:var(--chat);
  padding:6px 12px 6px 4px;font-size:13px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-corner{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:700;font-family:var(--font-head)}
.tl-track{position:relative;flex:1;min-width:calc(var(--cols)*var(--cellw));height:30px;
  background:repeating-linear-gradient(90deg,transparent,transparent calc(var(--gridw, var(--cellw)) - 1px),var(--divider) calc(var(--gridw, var(--cellw)) - 1px),var(--divider) var(--gridw, var(--cellw)))}
.tl-days{display:flex;height:auto;background:none}
.sched-span{background:var(--input);border:1px solid var(--card-line);color:var(--text);border-radius:8px;padding:6px 10px;
  font-family:var(--font-body);font-size:13px;font-weight:600;cursor:pointer;margin-right:8px}
.sched-span:focus{border-color:var(--brand);outline:none}
.tl-mbands{display:flex;height:auto}
.tl-mband{flex-shrink:0;padding:8px 0;text-align:center;font-family:var(--font-head);font-weight:700;font-size:12px;
  color:var(--text);text-transform:uppercase;letter-spacing:.02em;border-right:1px solid var(--divider);overflow:hidden;white-space:nowrap}
.tl-mband.current{color:var(--fire-red);background:rgba(215,64,66,.1)}
.tl-day{width:var(--cellw);flex-shrink:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:6px 0;gap:1px;border-right:1px solid var(--divider)}
.tl-day .tl-wd{font-size:10px;text-transform:uppercase;color:var(--faint);font-weight:600}
.tl-day .tl-dn{font-size:14px;color:var(--text);font-weight:600;font-family:var(--font-head)}
.tl-day.today{background:rgba(215,64,66,.12)}
.tl-day.today .tl-dn{color:var(--fire-red)}
.tl-bar{position:absolute;top:5px;height:20px;border-radius:5px;display:flex;align-items:center;padding:0 8px;cursor:pointer;overflow:hidden}
.tl-bar span{font-size:11px;color:#fff;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-bar.proj{opacity:.92}
.tl-team{cursor:pointer}
.tl-team:hover{color:var(--bright)}
.tl-bar.task.done{opacity:.5}
.tl-bar:hover{filter:brightness(1.12)}
.tl-sec{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:700;font-family:var(--font-head);padding:14px 4px 6px;position:sticky;left:0}

/* calendário mês */
.cal-month{font-size:18px;font-weight:800;color:var(--bright);font-family:var(--font-head);margin-bottom:12px;text-transform:uppercase;letter-spacing:.02em}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.cal-head{margin-bottom:6px}
.cal-wd{font-size:11px;text-transform:uppercase;color:var(--muted);font-weight:700;text-align:center;padding:4px;font-family:var(--font-head)}
.cal-days{gap:6px}
.cal-cell{min-height:104px;background:var(--card);border:1px solid var(--card-line);border-radius:8px;padding:6px;display:flex;flex-direction:column;gap:3px;overflow:hidden}
.cal-cell.out{opacity:.4}
.cal-cell.cal-clickable{cursor:pointer;transition:border-color .1s,background .1s}
.cal-cell.cal-clickable:hover{border-color:var(--brand);background:var(--hover)}
.cal-cell .cal-meet{cursor:pointer}
.cal-cell.today{border-color:var(--fire-red)}
.cal-dn{font-size:12px;color:var(--muted);font-weight:600;align-self:flex-end}
.cal-cell.today .cal-dn{color:var(--fire-red)}
.cal-task{font-size:11px;color:var(--text);background:var(--input);border-left:3px solid var(--brand);border-radius:3px;padding:2px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.cal-task:hover{background:var(--hover)}
.cal-task.done{opacity:.55;text-decoration:line-through}
.cal-more{font-size:10.5px;color:var(--muted);padding:0 6px}
/* Vista semanal: células mais altas e sem corte — numa só semana cabem todos os
   eventos do dia, ao contrário da grelha do mês. overflow:visible deixa a linha
   crescer se um dia tiver muitos. */
.cal-days.cal-week .cal-cell{min-height:190px;overflow:visible}
/* Fim-de-semana esbatido. Tem de ser background-image (camada POR CIMA do
   --card da célula): com `background:` a cor translúcida substituía o --card e
   o fim-de-semana saía mais escuro que os dias úteis, não mais claro. */
.cal-days.cal-week .cal-cell.we{background-image:linear-gradient(rgba(255,255,255,.06),rgba(255,255,255,.06))}
/* Na semana há espaço vertical: o título quebra em vez de ser cortado com "…" */
.cal-days.cal-week .cal-meet{white-space:normal;line-height:1.35;padding:3px 6px}
.cal-wd.is-today{color:var(--fire-red)}

@media(max-width:900px){
  .sched .main-head{flex-wrap:wrap;height:auto;padding:8px 12px;gap:8px}
  .sched-body{padding:10px 8px}
  .tl-label{width:120px}
  .cal-cell{min-height:66px;padding:4px;gap:2px}
  .cal-task{font-size:10px;padding:1px 4px}
  .cal-days{gap:4px}
}

@media(max-width:900px){
  .dash-scroll{padding:18px 14px 24px}
  .dash-hi{font-size:23px}
  #dashNewTask{display:none}
  .stat-row,.stat-row.four{grid-template-columns:1fr 1fr;gap:8px}
  .stat-card{padding:12px 12px}
  .stat-card::after{width:3px}
  .stat-value{font-size:23px}
  .stat-unit{display:none}
  .dash-grid{grid-template-columns:1fr}
}

/* scrollbar */
::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-thumb{background:#1a1b1e;border-radius:6px;border:2px solid transparent;background-clip:padding-box}
.side-scroll::-webkit-scrollbar-thumb{background:#1e1f22;background-clip:padding-box}
::-webkit-scrollbar-track{background:transparent}

/* ---------- BOTTOM NAV (tablet/mobile) ---------- */
.bottom-nav{display:none;position:fixed;left:0;right:0;bottom:0;height:58px;z-index:40;
  background:var(--rail);border-top:1px solid var(--divider);
  padding-bottom:env(safe-area-inset-bottom)}
.bn-item{flex:1;background:none;border:none;display:flex;flex-direction:column;align-items:center;
  justify-content:center;gap:3px;color:var(--muted);font-size:11px;font-weight:600;position:relative}
.bn-item .bn-ic{font-size:23px;line-height:1;opacity:.7}
.bn-item.active{color:#fff}
.bn-item.active .bn-ic{opacity:1}
.bn-badge{position:absolute;top:4px;left:calc(50% + 6px);background:var(--red);color:#fff;border-radius:9px;
  font-size:10px;font-weight:700;padding:0 5px;min-width:15px;text-align:center;border:2px solid var(--rail)}
.mobile-only{display:none}
.mh-back{display:none;background:none;border:none;color:var(--text);font-size:24px;padding:0 8px 0 0;line-height:1}

/* filtros de demandas no topo do board (só aparecem em mobile — ver media query) */
.board-filters{display:none;gap:8px;padding:10px 12px 0;flex-wrap:wrap}
.board-filters button{background:var(--col);border:1px solid var(--card-line);color:var(--muted);
  font-size:13px;font-weight:600;padding:6px 12px;border-radius:16px}
.board-filters button.active{background:var(--brand);border-color:var(--brand);color:#fff}
.board-filters .bf-sep{width:1px;align-self:stretch;background:var(--card-line);margin:2px 2px}
.board-filters .bf-team{display:inline-flex;align-items:center;gap:6px}
.bf-person{display:inline-flex;align-items:center;gap:6px;color:var(--muted)}
.bf-person i{font-size:1.1rem}
.bf-person select{background:var(--col);border:1px solid var(--card-line);color:var(--text);font-size:13px;font-weight:600;padding:6px 10px;border-radius:16px;cursor:pointer}
.bf-person select:hover{border-color:var(--brand)}
.bf-person select:focus{border-color:var(--brand);outline:none}
.board-filters .bf-team .dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}

/* ---------- APP MODE (≤ 900px) ---------- */
@media(max-width:900px){
  .server-rail{display:none}
  .bottom-nav{display:flex}
  .mobile-only{display:flex}
  .mh-back{display:block}

  /* sidebar e main ocupam o ecrã todo (acima da bottom bar); alterna-se por classe no #app */
  .sidebar,.main{position:fixed;top:0;left:0;right:0;bottom:58px;width:auto;height:auto;z-index:5}
  .sidebar{display:none}
  .main{display:none}
  #app.m-chat-list .sidebar{display:flex}
  #app.m-chat-view .main{display:flex}
  #app.m-tasks .main{display:flex}

  .side-menu{display:none}                                 /* nav via bottom-bar */
  .sidebar{border-right:none}
  .side-brand{padding:14px 16px 8px}
  .side-context{border-top:none}
  .side-logo{height:46px}
  .side-scroll{padding-top:8px}
  .channel-item{padding:11px 12px;font-size:16px}          /* alvos de toque maiores */
  .channel-item .ci-hash{font-size:20px}
  .side-me{padding:10px 14px}

  .main-head{height:54px;padding:0 14px}
  .main-head h2{font-size:16px}
  .main-head .mh-desc{display:none}
  .msg{padding:3px 12px}
  .msg-scroll{padding:12px 4px 16px 0}
  .composer{padding:8px 12px 12px}
  .att-img{max-width:100%}

  /* board: uma coluna por ecrã, deslize horizontal (tipo Trello) */
  .board{padding:12px;gap:12px;scroll-snap-type:x mandatory}
  .col{min-width:82vw;max-width:82vw;scroll-snap-align:start}
  .board-filters{display:flex}

  /* modais em ecrã cheio, acima da bottom bar */
  .modal-back{padding:0;align-items:flex-end}
  .modal{width:100%;max-width:100%;max-height:88vh;border-radius:16px 16px 0 0}
  .notif-list{max-height:70vh}

  /* menu (bottom sheet) */
  .menu-profile{display:flex;align-items:center;gap:12px;padding:6px 2px 14px}
  .menu-profile .avatar{width:46px;height:46px;font-size:16px}
  .menu-name{font-weight:700;font-size:16px;color:var(--bright)}
  .menu-role{color:var(--muted);font-size:13px}
  .menu-btn{width:100%;justify-content:flex-start;text-align:left;padding:13px 14px;font-size:15px}
  .menu-btn.danger{background:transparent;color:#fb7f83;border:1px solid var(--divider)}
  .menu-btn.danger:hover{background:var(--red);color:#fff}
}

@media(max-width:420px){
  .col{min-width:88vw;max-width:88vw}
  .bn-item .bn-lbl{font-size:10px}
}

/* ==================== BANCO DE HORAS ==================== */
.cc-id{flex:1;min-width:0}
.cc-id .cc-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-acts{display:inline-flex;gap:2px;align-items:center}
.fld-hint{font-size:12px;color:var(--faint);font-weight:400;text-transform:none;letter-spacing:0}

/* Vista geral */
.hours-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.hours-card{background:var(--card);border:1px solid var(--card-line);border-radius:14px;padding:16px 18px;cursor:pointer;transition:border-color .12s}
.hours-card:hover{border-color:var(--brand)}
.hours-card.inactive{opacity:.6}
.hours-card.inactive:hover{opacity:.85}
.hc-top{display:flex;align-items:center;gap:12px;margin-bottom:13px}
.hc-stats{display:flex;gap:8px;margin-top:13px}
.hc-stat{flex:1;display:flex;flex-direction:column;gap:2px}
.hc-stat .hs-v{font-size:18px;font-weight:800;color:var(--bright);font-family:var(--font-head)}
.hc-stat .hs-k{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.hc-stat:first-child .hs-v{color:var(--water-text)}
.hc-stat.neg .hs-v{color:var(--red)}   /* saldo negativo: horas a vermelho */

/* Barra de progresso */
.hbar{height:8px;border-radius:99px;background:var(--rail);overflow:hidden;margin:2px 0;display:flex}
.hbar-fill{display:block;height:100%;background:var(--green);transition:width .3s,background .3s;flex-shrink:0}
.hbar-used{display:block;height:100%;background:rgba(139,152,166,.32);flex-shrink:0}
.hbar-fill.exceeded{background:repeating-linear-gradient(45deg,var(--red) 0 6px,#9e2b2d 6px 12px)}
.hbar-cap{font-size:10.5px;color:var(--muted);margin-top:3px}
.hbar-fill.low{background:var(--yellow)}
.hbar-fill.depleted{background:var(--red)}

/* Badge de estado */
.hbadge{font-size:11px;font-weight:700;padding:3px 9px;border-radius:99px;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}
.hbadge.ok{background:rgba(47,158,107,.16);color:#4cc38a}
.hbadge.low{background:rgba(217,154,43,.18);color:#e6b053}
.hbadge.depleted{background:rgba(215,64,66,.18);color:#f0787b}

/* Detalhe */
.hd-wrap{max-width:1400px}
.hd-back{background:none;border:none;color:var(--muted);font-family:var(--font-body);font-size:14px;cursor:pointer;display:inline-flex;align-items:center;gap:7px;padding:2px 4px;margin-bottom:16px}
.hd-back:hover{color:var(--bright)}
.hd-head{display:flex;align-items:center;gap:14px;margin-bottom:18px}
.hd-id{flex:1;min-width:0}
.hd-title{font-size:26px;font-weight:800;color:var(--bright);font-family:var(--font-head)}
.hd-totals{display:flex;gap:12px;margin-bottom:12px}
.hd-tot{flex:1;background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:14px 16px;display:flex;flex-direction:column;gap:3px}
.hd-tot .ht-v{font-size:24px;font-weight:800;color:var(--bright);font-family:var(--font-head)}
.hd-tot .ht-k{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.hd-tot.big .ht-v{color:var(--green)}
.hd-tot.big.low .ht-v{color:var(--yellow)}
.hd-tot.big.depleted .ht-v{color:var(--red)}
.hd-alert{margin:14px 0 4px;padding:11px 14px;border-radius:10px;font-size:14px;display:flex;align-items:center;gap:9px}
.hd-alert.low{background:rgba(217,154,43,.14);color:#e6b053;border:1px solid rgba(217,154,43,.3)}
.hd-alert.depleted{background:rgba(215,64,66,.14);color:#f0787b;border:1px solid rgba(215,64,66,.3)}

/* Secções */
.hsec{margin-top:26px}
.hsec-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.hsec-head h3{margin:0;font-size:16px;color:var(--bright);display:flex;align-items:center;gap:8px;font-family:var(--font-head)}
.hsec-head h3 i{color:var(--water-text);font-size:19px}

/* Tabela de registos */
.hlog-scroll{overflow-x:auto;border:1px solid var(--card-line);border-radius:12px}
.hlog-table{width:100%;border-collapse:collapse;font-size:14px;min-width:640px}
.hlog-table th{text-align:left;padding:10px 12px;background:var(--col);color:var(--muted);font-size:11.5px;text-transform:uppercase;letter-spacing:.03em;font-weight:700;white-space:nowrap}
.hlog-table td{padding:11px 12px;border-top:1px solid var(--card-line);color:var(--text);vertical-align:top}
.hlog-table tbody tr:hover{background:var(--msg-hover)}
.hl-date{white-space:nowrap;color:var(--muted)}
.hl-desc{min-width:220px;line-height:1.4}
.hl-site{white-space:nowrap;color:var(--link);font-size:13px}
/* Coluna de ações (editar/apagar) sempre visível, mesmo em tabelas largas (multi-site) */
.hlog-table .col-acts,.hlog-table td.row-acts{position:sticky;right:0;background:var(--card);z-index:2;box-shadow:-9px 0 8px -7px rgba(0,0,0,.45)}
.hlog-table thead .col-acts{background:var(--col)}
.hlog-table tbody tr:hover td.row-acts{background:var(--hover)}
.hl-h{white-space:nowrap;font-weight:700;color:var(--bright)}

.area-tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:6px;letter-spacing:.02em}
.area-tag.WEB{background:rgba(63,55,201,.22);color:#9d97ee}
.area-tag.MKT{background:rgba(181,23,158,.2);color:#e07cd2}
.st-tag{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:99px;white-space:nowrap}
.st-tag.concluido{background:rgba(47,158,107,.16);color:#4cc38a}
.st-tag.em_curso{background:rgba(47,128,237,.16);color:#5b9cf0}
.st-tag.pendente{background:rgba(139,152,166,.16);color:var(--muted)}

/* Horas contratadas (pacotes) */
.pkg-list,.acc-list{display:flex;flex-direction:column;gap:8px}
.pkg-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--card-line);border-radius:10px;padding:11px 14px}
.pkg-h{font-weight:800;color:#4cc38a;font-family:var(--font-head);font-size:15px;white-space:nowrap}
.pkg-lbl{flex:1;color:var(--text);font-size:14px}
.pkg-inv{display:inline-flex;align-items:center;gap:4px;margin-left:6px;padding:1px 8px;border-radius:6px;background:var(--hover);color:var(--muted);font-size:12px;font-weight:600;white-space:nowrap}
.pkg-inv i{font-size:13px}

/* Acessos e contas */
.acc-row{display:flex;align-items:center;gap:11px;background:var(--card);border:1px solid var(--card-line);border-radius:10px;padding:9px 13px}
.cc-av.sm{width:30px;height:30px;font-size:12px;border-radius:8px}
.cc-av.xl{width:88px;height:88px;font-size:30px;border-radius:22px}
/* Imagem de perfil / logótipo: preenche o círculo/quadrado, sem texto */
.avatar.has-img,.cc-av.has-img,.tr-av.has-img{background-size:cover;background-position:center;background-repeat:no-repeat;color:transparent}
.avatar.xs{width:22px;height:22px;font-size:10px}
.avatar.xxs{width:20px;height:20px;font-size:9px}
/* Linha de edição de imagem nos modais */
.avedit{display:flex;align-items:center;gap:14px;margin-bottom:4px}
.acc-name{flex:1;color:var(--text);font-size:14px;display:flex;flex-direction:column;line-height:1.3}
.acc-name .acc-mail{font-size:12px;color:var(--muted)}
.lvl-tag{font-size:11px;font-weight:700;padding:2px 9px;border-radius:99px;text-transform:uppercase;letter-spacing:.02em}
.lvl-tag.view{background:rgba(139,152,166,.16);color:var(--muted)}
.lvl-tag.edit{background:rgba(47,158,107,.16);color:#4cc38a}
.portal-hint{margin-top:10px;font-size:13px;color:var(--muted);display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.portal-hint a{color:var(--link)}

/* Estado "sem banco de horas" (0 contratadas) — neutro */
.hbadge.none{background:rgba(139,152,166,.14);color:var(--muted)}
.hbar-fill.none{background:var(--faint)}
.hd-tot.big.none .ht-v{color:var(--muted)}
.hours-card.is-none{opacity:.66}
.hours-card.is-none:hover{opacity:.92}

/* ---------------- Férias ---------------- */
.dash-head-acts{display:flex;gap:8px;align-items:center}
.vac-balance{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:6px 0 4px}
.vb-item{background:var(--card);border:1px solid var(--card-line);border-radius:var(--radius);padding:16px 14px;display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.vb-item.avail{background:linear-gradient(135deg,rgba(111,176,179,.16),rgba(111,176,179,.05));border-color:rgba(111,176,179,.4)}
.vb-num{font-family:var(--font-head);font-size:26px;font-weight:700;color:var(--bright);line-height:1}
.vb-lbl{font-size:12px;color:var(--muted)}
.vac-blk-info{display:flex;flex-wrap:wrap;gap:6px 8px;align-items:center;font-size:12.5px;color:var(--muted);background:var(--col);border:1px solid var(--card-line);border-radius:var(--radius);padding:9px 12px;margin:10px 0}
.vac-blk-info i{color:var(--fire-sand)}
.vac-blk-info span{color:var(--text)}
.vac-list{display:flex;flex-direction:column;gap:8px}
.vac-req{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--card-line);border-radius:var(--radius);padding:12px 14px}
.vac-req-main{flex:1;min-width:0}
.vac-who{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);margin-bottom:2px}
.vac-who .dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.vac-range{font-weight:600;color:var(--bright)}
.vac-meta{font-size:12.5px;color:var(--muted);margin-top:2px}
.vac-acts{display:flex;gap:6px}
.vac-cancel{color:var(--muted)}
.vac-cancel:hover{color:var(--red)}
.pill.vstatus{font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px;white-space:nowrap}
.pill.vstatus.pend{background:rgba(217,154,43,.18);color:var(--fire-sand)}
.pill.vstatus.appr{background:rgba(47,158,107,.18);color:var(--green)}
.pill.vstatus.rej{background:rgba(215,64,66,.16);color:var(--red)}
.vac-calc{font-size:13px;padding:9px 12px;border-radius:8px;background:var(--col);color:var(--text)}
.vac-calc.ok{background:var(--water-soft);color:var(--water-text)}
.vac-calc.warn{background:rgba(217,154,43,.16);color:var(--fire-sand)}
.dash-empty.sm{padding:8px 6px;font-size:12.5px}
/* Períodos bloqueados (modal de regras) */
.blk-row{display:flex;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--divider)}
.blk-range{font-weight:600;color:var(--bright);font-size:13px}
.blk-label{flex:1;color:var(--muted);font-size:12.5px}
.blk-del{color:var(--muted)}.blk-del:hover{color:var(--red)}
.blk-add{display:grid;grid-template-columns:1fr 1fr 1.4fr auto;gap:8px;margin-top:10px}
.blk-add input{background:var(--input);border:1px solid var(--card-line);border-radius:8px;color:var(--text);padding:8px 10px;font-family:inherit;font-size:13px}
@media(max-width:640px){.vac-balance{grid-template-columns:repeat(2,1fr)}.blk-add{grid-template-columns:1fr 1fr}}

/* Importar do Teamup */
.tu-row{display:grid;grid-template-columns:1fr auto 1.2fr;align-items:center;gap:10px;padding:7px 0;border-bottom:1px solid var(--divider)}
.tu-cal{display:flex;align-items:center;gap:8px;font-weight:600;color:var(--bright);font-size:13.5px;min-width:0}
.tu-cal .dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto}
.tu-arrow{color:var(--muted)}
.tu-user{background:var(--input);border:1px solid var(--card-line);border-radius:8px;color:var(--text);padding:7px 9px;font-family:inherit;font-size:13px;max-width:100%}
.tu-done{margin-top:12px;display:flex;align-items:center;gap:8px;color:var(--green);font-size:13.5px;background:rgba(47,158,107,.14);border:1px solid rgba(47,158,107,.35);border-radius:8px;padding:10px 12px}
@media(max-width:640px){.tu-row{grid-template-columns:1fr auto;row-gap:4px}.tu-user{grid-column:1/-1}}

/* ---------------- Calendário de férias (estilo Teamup) ---------------- */
.vcal{margin:6px 0 4px;background:var(--card);border:1px solid var(--card-line);border-radius:var(--radius);overflow:hidden}
.vcal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:11px 14px}
.vcal-nav{display:flex;align-items:center;gap:6px}
.vcal-title{font-family:var(--font-head);font-weight:700;font-size:17px;color:var(--bright);text-transform:capitalize}
.vcal-legend{display:flex;gap:14px;font-size:12px;color:var(--muted)}
.vcal-legend .lg{display:inline-block;width:11px;height:11px;border-radius:3px;vertical-align:-1px;margin-right:4px}
.vcal-legend .lg.approved{background:var(--water-blue)}
.vcal-legend .lg.pending{background:repeating-linear-gradient(45deg,var(--fire-sand),var(--fire-sand) 3px,rgba(255,255,255,.25) 3px,rgba(255,255,255,.25) 6px)}
.vcal-dowrow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-top:1px solid var(--card-line);border-bottom:1px solid var(--card-line);background:var(--col)}
.vcal-dowrow>div{padding:6px 8px;font-size:11.5px;color:var(--muted);font-weight:600}
.vcal-dowrow>div.we{color:var(--faint)}
.vcal-week{position:relative}
.vcal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr))}
.vcal-cell{min-height:var(--wh);border-right:1px solid var(--divider);border-bottom:1px solid var(--divider);padding:3px 6px}
.vcal-cell:nth-child(7n){border-right:none}
.vcal-cell.we{background:rgba(255,255,255,.055)}
.vcal-cell.out{background:rgba(0,0,0,.13)}
.vcal-cell.out .vcal-dn{opacity:.45}
.vcal-dn{font-size:12px;color:var(--muted)}
.vcal-cell.today .vcal-dn{background:var(--brand);color:#fff;border-radius:999px;padding:1px 6px;font-weight:700}
.vcal.can-book .vcal-cell{cursor:pointer}
.vcal.can-book .vcal-cell:hover{background:var(--hover)}
.vcal-events{position:absolute;inset:0;pointer-events:none}
.vcal-ev{position:absolute;height:18px;line-height:18px;border-radius:5px;font-size:11.5px;color:#fff;padding:0 6px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;pointer-events:auto;background:var(--evc);box-shadow:inset 3px 0 0 rgba(0,0,0,.28);text-shadow:0 1px 1px rgba(0,0,0,.4)}
.vcal-ev:hover{filter:brightness(1.1)}
/* Pendente: tracejado âmbar (aguarda aprovação); ao aprovar fica com a cor sólida da pessoa. */
.vcal-ev.pendente{background:repeating-linear-gradient(45deg,var(--fire-sand,#D99A2B),var(--fire-sand,#D99A2B) 6px,rgba(255,255,255,.35) 6px,rgba(255,255,255,.35) 11px);color:#3a2c0a;text-shadow:none;box-shadow:inset 3px 0 0 rgba(0,0,0,.18)}
.vcal-ev.mine{outline:2px solid rgba(255,255,255,.55);outline-offset:-2px}
/* Aniversário (dia de folga): destaque dourado tracejado para diferenciar das férias */
.vac-bday-tag{display:inline-flex;align-items:center;gap:4px;background:rgba(217,154,43,.18);color:var(--fire-sand,#D99A2B);border-radius:999px;padding:2px 8px;font-size:11.5px;font-weight:700}
.vac-req.bday{border-color:rgba(217,154,43,.5)}
.vac-bday-hint .ph-cake{color:var(--fire-sand,#D99A2B)}
.vcal-ev.bday,.vy-ev.bday{outline:2px dashed var(--fire-sand,#D99A2B);outline-offset:-2px;box-shadow:inset 3px 0 0 var(--fire-sand,#D99A2B)}
@media(max-width:640px){.vcal-ev{font-size:10px;padding:0 4px}.vcal-legend{display:none}.vcal-title{font-size:15px}}

/* ---- Alternador de vista + Vista anual (estilo Teamup "Year") ---- */
.vcal-right{display:flex;align-items:center;gap:14px}
.vcal-viewtoggle{display:inline-flex;background:var(--col);border:1px solid var(--card-line);border-radius:8px;overflow:hidden}
.vcal-viewtoggle .vt{background:transparent;border:none;color:var(--muted);padding:5px 13px;font-family:inherit;font-size:12.5px;cursor:pointer}
.vcal-viewtoggle .vt:hover{color:var(--text)}
.vcal-viewtoggle .vt.active{background:var(--brand);color:#fff}
.vcal-year .vcal-title{text-transform:none}
.vy-scroll{overflow-x:auto}
.vy{min-width:960px}
.vy-headrow,.vy-row{display:grid;grid-template-columns:66px 1fr}
.vy-headrow{background:var(--col);border-bottom:1px solid var(--card-line)}
.vy-row{border-bottom:1px solid var(--divider)}
.vy-row:last-child{border-bottom:none}
.vy-mlabel{font-size:11.5px;color:var(--muted);padding:4px 8px;display:flex;align-items:center;border-right:1px solid var(--card-line);white-space:nowrap;overflow:hidden}
.vy-htrack{display:grid;grid-template-columns:repeat(31,minmax(0,1fr))}
.vy-hd{font-size:9.5px;color:var(--faint);text-align:center;padding:3px 0}
.vy-hd.we{color:var(--muted)}
.vy-track{position:relative}
.vy-cells{display:grid;grid-template-columns:repeat(31,minmax(0,1fr));height:100%}
.vy-d{min-height:var(--yh);border-right:1px solid rgba(255,255,255,.028);text-align:center;padding-top:1px}
.vy-d>span{font-size:9.5px;color:var(--faint)}
.vy-d.empty{background:rgba(0,0,0,.12);border-right-color:transparent}
.vy-d.we{background:rgba(255,255,255,.06)}
.vy-d.hol{background:rgba(224,86,86,.14)}
.vy-d.hol>span{color:var(--brand)}
.vy-d.today>span{background:var(--brand);color:#fff;border-radius:999px;padding:0 4px;font-weight:700}
.vy-events{position:absolute;inset:0;pointer-events:none}
.vy-ev{position:absolute;height:12px;line-height:12px;border-radius:3px;font-size:9px;color:#fff;padding:0 3px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;cursor:pointer;pointer-events:auto;background:var(--evc);text-shadow:0 1px 1px rgba(0,0,0,.45)}
.vy-ev:hover{filter:brightness(1.12)}
.vy-ev.pendente{background:repeating-linear-gradient(45deg,var(--fire-sand,#D99A2B),var(--fire-sand,#D99A2B) 4px,rgba(255,255,255,.38) 4px,rgba(255,255,255,.38) 7px);color:#3a2c0a;text-shadow:none}
.vy-ev.mine{outline:1px solid rgba(255,255,255,.6);outline-offset:-1px}
.vcal.can-book .vy-d[data-date]{cursor:pointer}
.vcal.can-book .vy-d[data-date]:hover{background:var(--hover)}
@media(max-width:640px){.vcal-viewtoggle .vt{padding:5px 10px}.vcal-legend{display:none}}

/* ---------------- Portal do cliente: secções ---------------- */
.p-tabs{display:flex;gap:8px;margin:18px 0 16px;flex-wrap:wrap}
.p-tab{display:inline-flex;align-items:center;gap:7px;background:var(--card);border:1px solid var(--card-line);color:var(--muted);padding:9px 16px;border-radius:999px;cursor:pointer;font-family:inherit;font-size:14px}
.p-tab:hover{color:var(--text)}
.p-tab.active{background:var(--water-blue);border-color:var(--water-blue);color:#12302e}
.p-tabbadge{background:rgba(0,0,0,.25);border-radius:999px;font-size:11px;padding:1px 7px;font-weight:700}
.p-tab.active .p-tabbadge{background:rgba(0,0,0,.18);color:#12302e}
.p-tab:not(.active) .p-tabbadge{background:var(--water-blue);color:#12302e}
.p-empty{color:var(--muted);text-align:center;padding:40px 10px;font-size:14px}
.p-pill{font-size:12px;font-weight:600;padding:3px 11px;border-radius:999px;white-space:nowrap}
.p-tasklist{display:flex;flex-direction:column;gap:10px}
.p-task{background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:14px 16px}
.pt-top{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:9px}
.pt-title{font-weight:600;color:var(--bright);font-size:15px}
.p-pill.st-todo{background:rgba(100,116,139,.2);color:#94a3b8}
.p-pill.st-doing{background:rgba(47,128,237,.2);color:#5b9df0}
.p-pill.st-review{background:rgba(234,179,8,.2);color:#eab308}
.p-pill.st-done{background:rgba(47,158,107,.2);color:#43c088}
.pt-bar{height:7px;background:var(--col);border-radius:99px;overflow:hidden}
.pt-fill{display:block;height:100%;border-radius:99px}
.pt-fill.st-todo{background:#64748b}.pt-fill.st-doing{background:#2f80ed}.pt-fill.st-review{background:#EAB308}.pt-fill.st-done{background:#2f9e6b}
.pt-meta{display:flex;gap:14px;margin-top:8px;font-size:12.5px;color:var(--muted)}
.pt-blocked{color:var(--fire-red)}
.pt-due{margin-left:auto}
.p-aprlist{display:flex;flex-direction:column;gap:16px}
.p-apr{background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:16px;overflow:hidden}
.apr-head{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}
.apr-title{font-weight:700;color:var(--bright);font-size:16px}
.apr-desc{color:var(--muted);font-size:13.5px;margin-top:3px;white-space:pre-wrap}
/* Badges de estado: fundo SÓLIDO (aparecem por cima da imagem do card — com
   transparência ficavam ilegíveis). Texto de alto contraste. */
.p-pill.apr-pend{background:#d99a2b;color:#241700}
.p-pill.apr-appr{background:#2f9e6b;color:#fff}
.p-pill.apr-chg{background:#d74042;color:#fff}
.apr-media{display:block;border-radius:10px;overflow:hidden;border:1px solid var(--card-line);background:var(--col)}
.apr-media img{display:block;max-width:100%;max-height:520px;margin:0 auto}
.apr-file{display:inline-flex;align-items:center;gap:8px;background:var(--col);border:1px solid var(--card-line);border-radius:8px;padding:11px 16px;color:var(--link);text-decoration:none;font-size:14px}
.apr-file:hover{background:var(--hover)}
.apr-actions{margin-top:14px}
.apr-comment{width:100%;background:var(--input);border:1px solid var(--card-line);border-radius:8px;color:var(--text);padding:10px 12px;font-family:inherit;font-size:14px;resize:vertical;min-height:56px}
.apr-btns{display:flex;gap:10px;justify-content:flex-end;margin-top:10px;flex-wrap:wrap}
.apr-err{color:var(--fire-red);font-size:13px;margin-top:6px;text-align:right}
.apr-yourcomment{margin-top:8px;background:var(--col);border-radius:8px;padding:10px 12px;font-size:13.5px;color:var(--text)}
.p-btn{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:10px 18px;font-family:inherit;font-size:14px;font-weight:600;cursor:pointer;border:1px solid transparent}
.p-btn.ok{background:var(--green);color:#fff}
.p-btn.ok:hover{filter:brightness(1.08)}
.p-btn.ghost{background:transparent;border-color:var(--card-line);color:var(--text)}
.p-btn.ghost:hover{background:var(--hover)}
/* cores distintas para as decisões do cliente (não induzir ao erro):
   Aprovar=verde, Alteração de imagem=âmbar, Alteração de copy=azul, Comentar=neutro */
.p-btn.amber{background:#e6a417;color:#3a2600}
.p-btn.amber:hover{filter:brightness(1.06)}
.p-btn.blue{background:#3b82f6;color:#fff}
.p-btn.blue:hover{filter:brightness(1.08)}
.p-btn.slate{background:#475569;color:#fff}
.p-btn.slate:hover{filter:brightness(1.12)}
.p-btn:disabled{opacity:.5;cursor:default}
@media(max-width:560px){.pt-top{flex-direction:column;align-items:flex-start;gap:6px}.apr-head{flex-direction:column}.pt-due{margin-left:0}}

/* Aprovações — lista (lado equipa) */
.apr-list{display:flex;flex-direction:column;gap:8px}
.apr-row{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--card-line);border-radius:var(--radius);padding:12px 14px}
.apr-row-main{flex:1;min-width:0}
.apr-row-title{font-weight:600;color:var(--bright)}
.apr-row-meta{font-size:12.5px;color:var(--muted);margin-top:2px;display:flex;flex-wrap:wrap;gap:5px;align-items:center}
.apr-src{display:inline-flex;align-items:center;gap:4px;color:var(--link);text-decoration:none}
.apr-cmt{color:var(--text);font-style:italic}
.apr-del{color:var(--muted)}.apr-del:hover{color:var(--red)}
.pill.vstatus.chg{background:rgba(215,64,66,.16);color:#f0787a}

/* ---------------- Manutenção de Websites (WP Manager) ---------------- */
.wk-opt{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--muted);text-transform:none;letter-spacing:0}
.wk-sheet{color:var(--link);text-decoration:none}.wk-sheet:hover{text-decoration:underline}
.wk-tasks{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:4px 0 12px}
.wk-tlabel{font-size:12.5px;color:var(--muted);margin-right:4px}
.wk-hint{font-size:12.5px;color:var(--muted);margin:0 0 10px}
.wk-hint b{color:var(--text);font-weight:600}
.wk-report{background:var(--card);border:1px solid var(--card-line);border-left:3px solid var(--brand);border-radius:var(--radius);padding:11px 14px;margin:0 0 12px;font-size:13.5px}
.wk-report code{background:var(--col);padding:2px 6px;border-radius:5px;font-size:12px}
.wk-g{color:var(--green);font-weight:600}.wk-r{color:var(--red);font-weight:600}.wk-w{color:var(--fire-sand);font-weight:600}
.wk-tablewrap{overflow-x:auto;background:var(--card);border:1px solid var(--card-line);border-radius:var(--radius)}
.wk-grid{width:100%;min-width:940px;border-collapse:collapse}
.wk-grid th,.wk-grid td{text-align:left;padding:9px 11px;border-bottom:1px solid var(--divider);font-size:13px;white-space:nowrap}
.wk-grid th{font-size:11px;letter-spacing:.5px;text-transform:uppercase;color:var(--muted);background:var(--col);position:sticky;top:0}
.wk-grid th.wk-c,.wk-grid td.wk-c{text-align:center}
.wk-grid tr:last-child td{border-bottom:0}
.wk-grid tbody tr:hover{background:var(--hover)}
.wk-site{font-weight:600;color:var(--bright)}
.wk-owner{color:var(--muted);font-size:12.5px}
.wk-nourl{color:var(--faint);font-size:12px}
tr.wk-broken td{background:rgba(215,64,66,.14)}
tr.wk-done .wk-site{color:var(--green)}
tr.wk-done .wk-site::before{content:'\e182';font-family:'Phosphor';color:var(--green);margin-right:5px;vertical-align:-1px}
td.wk-c[data-celltask]{cursor:pointer}
td.wk-c[data-celltask]:hover{background:var(--col);outline:1px solid var(--brand)}
.wk-cell{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;font-size:13px}
.wk-cell.s-idle{color:var(--faint)}
.wk-cell.s-run{color:var(--brand)}
.wk-cell.s-ok{color:var(--green)}
.wk-cell.s-fail{color:var(--red)}
.wk-cell.s-risco{color:var(--fire-sand)}
.wk-cell.s-skip{color:var(--muted);opacity:.5}
.wk-act{text-align:right}
.wk-ic{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:999px;border:1px solid var(--card-line);background:transparent;color:var(--muted);cursor:pointer;margin-left:3px;font-size:13px}
.wk-ic:hover{background:var(--hover);color:var(--text)}
.wk-ic.primary{background:var(--brand);border-color:var(--brand);color:#fff}
.wk-ic:disabled{opacity:.4;cursor:default}
.wk-spin{width:11px;height:11px;border:2px solid var(--card-line);border-top-color:var(--brand);border-radius:50%;display:inline-block;animation:wkspin .7s linear infinite}
@keyframes wkspin{to{transform:rotate(360deg)}}
.wk-claude{margin:12px 0;background:var(--card);border:1px solid var(--card-line);border-radius:var(--radius);overflow:hidden}
.wk-ch{padding:9px 14px;border-bottom:1px solid var(--card-line);font-size:11.5px;letter-spacing:.5px;text-transform:uppercase;color:var(--brand)}
.wk-cb{padding:14px;font:400 12.5px/1.6 ui-monospace,Menlo,monospace;color:var(--text);max-height:300px;overflow:auto;white-space:pre-wrap;margin:0}
.wk-rawwrap{margin-top:12px}
.wk-rawwrap summary{cursor:pointer;color:var(--muted);font-size:12px}
.wk-raw{background:var(--col);border:1px solid var(--card-line);border-radius:6px;padding:10px;max-height:220px;overflow:auto;font:400 11px/1.5 ui-monospace,Menlo,monospace;color:var(--muted);margin:6px 0 0;white-space:pre-wrap}
.wk-modal{position:fixed;inset:0;background:rgba(0,0,0,.55);z-index:120;display:flex;align-items:center;justify-content:center;padding:16px}
.wk-modal[hidden]{display:none}
.wk-mcard{background:var(--card);border:1px solid var(--card-line);border-top:3px solid var(--brand);border-radius:var(--radius);padding:22px;min-width:360px;max-width:92vw;box-shadow:0 18px 48px rgba(0,0,0,.4)}
.wk-mcard h3{margin:0 0 4px;font-family:var(--font-head);color:var(--bright)}
.wk-mfld{margin:14px 0 4px;color:var(--muted);font-size:11.5px;letter-spacing:.4px;text-transform:uppercase}
.wk-mpw{display:flex;gap:8px;align-items:center}
.wk-mpw input{flex:1;background:var(--input);border:1px solid var(--card-line);border-radius:8px;color:var(--bright);padding:10px 12px;font:400 15px ui-monospace,Menlo,monospace}
.wk-mcofre{margin-top:12px;font-size:13.5px}
.wk-mrow{display:flex;justify-content:flex-end;margin-top:18px}

/* ---------------- Relatórios (Marketing) ---------------- */
.rep-card{background:var(--card);border:1px solid var(--card-line);border-radius:var(--radius);padding:20px;max-width:620px}
.rep-plats{display:flex;flex-wrap:wrap;gap:10px 18px;padding-top:4px}
.rep-chk{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;color:var(--text)}
.rep-actions{margin-top:16px}
.rep-status{margin-top:14px}
.rep-loading{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--fire-sand);background:rgba(217,154,43,.14);border:1px solid rgba(217,154,43,.3);border-radius:8px;padding:11px 13px}
.rep-done{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;color:var(--green);background:rgba(47,158,107,.14);border:1px solid rgba(47,158,107,.35);border-radius:8px;padding:11px 13px}
.rep-done a{color:var(--link);font-weight:600}

/* ---- Modo Conversas: sidebar dedicada (menu dá lugar aos canais) ---- */
.side-back{display:none;align-items:center;gap:8px;width:calc(100% - 24px);margin:8px 12px 4px;padding:9px 12px;
  background:var(--hover);border:1px solid var(--card-line);border-radius:8px;color:var(--text);
  font-family:var(--font-body);font-size:13.5px;cursor:pointer;flex-shrink:0}
.side-back:hover{background:var(--active);color:var(--bright)}
.side-back i{font-size:16px}
.sidebar.chat-mode .side-menu{display:none}
.sidebar.chat-mode .side-back{display:flex}
.sidebar.chat-mode .side-context{border-top:none}
@media(max-width:900px){.side-back{display:none!important}}   /* mobile usa a bottom-bar */

/* Estado do Google Calendar (Regras de férias) */
.gcal-status{display:flex;align-items:center;gap:8px;font-size:12.5px;border-radius:8px;padding:9px 12px;margin:4px 0 6px}
.gcal-status.on{background:rgba(47,158,107,.14);border:1px solid rgba(47,158,107,.3);color:var(--text)}
.gcal-status.off{background:rgba(217,154,43,.12);border:1px solid rgba(217,154,43,.3);color:var(--text)}
.gcal-status.on i{color:var(--green)}.gcal-status.off i{color:var(--fire-sand)}

/* ============================================================
   TEMA CLARO  (aplicado via <html data-theme="light">)
   Sobrepõe as variáveis semânticas; os componentes seguem-nas.
   ============================================================ */
:root[data-theme="light"]{
  --rail:#e6ebf0; --sidebar:#eef2f6; --chat:#f6f8fa; --input:#ffffff;
  --card:#ffffff; --card-line:#dbe2e9; --col:#eef2f6;
  --hover:#e8edf2; --msg-hover:#eef2f6; --active:#e1e8ef; --active-soft:#e8edf2;
  --text:#2b3a48; --muted:#5f6d7a; --bright:#131c26; --faint:#8794a1;
  --chan:#3c4956; --chan-hover:#131c26;
  --brand:#D74042; --brand-d:#bd3639; --green:#2f9e6b; --red:#D74042; --yellow:#C6890B;
  --link:#227d82; --divider:rgba(20,30,40,.10);
  --water-text:#3C7070; --water-soft:rgba(122,159,159,.20);   /* água legível em fundo claro */
  --todo:#5a6674; --doing:#2f6fe0; --review:#C6890B; --done:#2f9e6b; --standby:#e0910f; --cancelado:#8b9199;
  --low:#7c8894; --normal:#4a8f93; --high:#C6890B; --urgent:#D74042;
  --team-marketing:#B5179E; --team-web:#3F37C9; --team-design:#C98E00; --team-all:#5a6674;
  --client:#8a6a4e; --date:#3f74a6;
}
/* Sombras um pouco mais suaves em fundo claro */
:root[data-theme="light"] .card,
:root[data-theme="light"] .client-card,
:root[data-theme="light"] .hours-card,
:root[data-theme="light"] .modal,
:root[data-theme="light"] .cmdk{box-shadow:0 1px 3px rgba(20,30,40,.08),0 1px 2px rgba(20,30,40,.06)}
/* Em modo claro usa a versão da marca para fundo claro (a cores), em vez de
   achatar o logo branco para preto com um filtro. Mesma arte, mesmo rácio
   (2066x838 vs viewBox 2065x837), por isso troca sem alterar o tamanho. */
:root[data-theme="light"] .side-logo,
:root[data-theme="light"] .login-logo-img,
:root[data-theme="light"] .portal-top img{content:url("nest-logo-light.svg")}
/* Calendário: bordas/sombreados brancos não se veem em claro -> versão escura */
:root[data-theme="light"] .vy-d{border-right-color:rgba(20,30,40,.07)}
:root[data-theme="light"] .vy-d.we,
:root[data-theme="light"] .vcal-cell.we{background:rgba(20,30,40,.075)}
:root[data-theme="light"] .cal-days.cal-week .cal-cell.we{background-image:linear-gradient(rgba(20,30,40,.06),rgba(20,30,40,.06))}
:root[data-theme="light"] .vy-d.empty,
:root[data-theme="light"] .vcal-cell.out{background:rgba(20,30,40,.05)}
:root[data-theme="light"] .vy-d.hol{background:rgba(200,50,50,.12)}
/* Barras de progresso / trilhos: o --rail claro precisa de um trilho visível */
:root[data-theme="light"] .hbar,
:root[data-theme="light"] .pt-bar,
:root[data-theme="light"] .tl-track{background:rgba(20,30,40,.08)}

/* Seletor segmentado (ex: aparência do tema) */
.seg-toggle{display:inline-flex;background:var(--col);border:1px solid var(--card-line);border-radius:999px;overflow:hidden;width:100%}
.seg-toggle .seg{flex:1;background:transparent;border:none;border-right:1px solid var(--card-line);color:var(--muted);padding:7px 10px;font-family:inherit;font-size:13px;cursor:pointer}
.seg-toggle .seg:last-child{border-right:none}
.seg-toggle .seg:hover{color:var(--text)}
.seg-toggle .seg.active{background:var(--brand);color:#fff}

/* ---- Tema claro: correções de contraste ---- */
/* Itens ativos/não-lidos tinham texto branco sobre fundos que em claro são claros */
:root[data-theme="light"] .menu-item.active,
:root[data-theme="light"] .channel-item.active,
:root[data-theme="light"] .channel-item.unread,
:root[data-theme="light"] .bn-item.active{color:var(--bright)}
:root[data-theme="light"] .channel-item.unread::before,
:root[data-theme="light"] .channel-item.unread::after{background:var(--brand)}
/* Badges/pills translúcidos: texto saturado (escuro) para contraste em fundo claro */
:root[data-theme="light"] .hbadge.ok,
:root[data-theme="light"] .st-tag.concluido,
:root[data-theme="light"] .lvl-tag.edit{color:#1f7a4d}
:root[data-theme="light"] .hbadge.low{color:#946510}
:root[data-theme="light"] .hbadge.depleted{color:#c4383a}
:root[data-theme="light"] .st-tag.em_curso{color:#2166c9}
:root[data-theme="light"] .area-tag.WEB,
:root[data-theme="light"] .pill.team-web{color:#3730b0}
:root[data-theme="light"] .area-tag.MKT,
:root[data-theme="light"] .pill.team-marketing{color:#a3168c}
:root[data-theme="light"] .pill.team-design{color:#8a6300}
:root[data-theme="light"] .st-tag.pendente,
:root[data-theme="light"] .lvl-tag.view,
:root[data-theme="light"] .hbadge.none,
:root[data-theme="light"] .pill.team-all{color:#4a5663}

/* Calendário: reuniões/eventos */
.cal-meet{font-size:11px;color:var(--text);background:var(--input);border-left:3px solid var(--water-blue);border-radius:3px;padding:2px 6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer}
.cal-meet:hover{background:var(--hover)}
.cal-meet b{color:var(--bright);font-weight:600;margin-right:2px}
.cal-meet.has-meet{border-left-color:var(--brand)}
.mt-users{display:flex;flex-wrap:wrap;gap:8px;max-height:180px;overflow-y:auto;padding-top:2px}
.mt-users .ap-chip.on{background:var(--brand);border-color:var(--brand);color:#fff}
.mt-times{display:flex;align-items:center;gap:8px}
.mt-times input{flex:1}
.mt-times span{color:var(--muted)}

/* ---------------- Prospeção (pipeline kanban) ---------------- */
.prospect-wrap{display:flex;flex-direction:column;height:100%;padding:16px 20px;gap:12px;overflow:hidden}
.lead-board{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;flex:1;min-height:0}
.lead-col{display:flex;flex-direction:column;min-width:0;background:var(--col);border:1px solid var(--card-line);border-radius:10px;overflow:hidden}
.lead-col.drop{border-color:var(--st,var(--brand))}
.lead-col-head{display:flex;align-items:center;gap:6px;padding:9px 10px;border-bottom:1px solid var(--card-line);font-weight:700;font-size:12px;min-width:0}
.lch-dot{width:8px;height:8px;border-radius:50%;background:var(--st);flex-shrink:0}
.lch-label{color:var(--bright);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.lch-count{background:var(--hover);color:var(--muted);font-size:10.5px;font-weight:700;padding:0 6px;border-radius:9px;flex-shrink:0}
.lead-col-body{display:flex;flex-direction:column;gap:6px;padding:7px;overflow-y:auto;flex:1;min-height:40px}
.lead-col.drop .lead-col-body{background:rgba(88,101,242,.06)}
.lead-empty{color:var(--faint);font-size:11px;text-align:center;padding:8px 0}
.lead-card{background:var(--card);border:1px solid var(--card-line);border-left:3px solid var(--st,var(--brand));border-radius:8px;padding:8px 9px;cursor:pointer;transition:box-shadow .1s,border-color .1s}
.lead-card:hover{border-color:var(--muted);box-shadow:0 3px 10px rgba(0,0,0,.18)}
.lead-card.dragging{opacity:.45}
.lc-name{font-weight:700;color:var(--bright);font-size:12.5px;line-height:1.25;word-break:break-word}
.lc-contact{color:var(--muted);font-size:11px;margin-top:2px;display:flex;align-items:center;gap:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lc-contact i{flex-shrink:0}
.lc-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px}
.lc-tag{font-size:10px;font-weight:600;padding:1px 6px;border-radius:5px;white-space:nowrap}
.lc-tag.svc{background:var(--hover);color:var(--text)}
.lc-tag.val{background:rgba(34,197,94,.14);color:#4ade80}
.lc-foot{display:flex;align-items:center;justify-content:space-between;margin-top:7px;gap:5px}
.lc-owner{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lc-owner.none{font-style:italic;color:var(--faint)}
.lc-won{color:#22c55e;font-size:15px;flex-shrink:0}
/* ecrãs estreitos: permite scroll horizontal com colunas de largura mínima */
@media (max-width:1100px){
  .lead-board{display:flex;overflow-x:auto;overflow-y:hidden}
  .lead-col{flex:0 0 200px}
}

/* ---- Roadmap (kanban de ideias da equipa) ---- */
.rm-wrap{display:flex;flex-direction:column;height:100%;padding:16px 20px;gap:12px;overflow:hidden}
.rm-board{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;flex:1;min-height:0}
.rm-col{display:flex;flex-direction:column;min-width:0;background:var(--col);border:1px solid var(--card-line);border-radius:10px;overflow:hidden}
.rm-col.drop{border-color:var(--rc,var(--brand))}
.rm-col-head{display:flex;align-items:center;gap:6px;padding:10px 11px;border-bottom:1px solid var(--card-line);font-weight:700;font-size:12.5px;min-width:0}
.rm-dot{width:8px;height:8px;border-radius:50%;background:var(--rc);flex-shrink:0}
.rm-col-label{color:var(--bright);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.rm-count{background:var(--hover);color:var(--muted);font-size:10.5px;font-weight:700;padding:0 6px;border-radius:9px;flex-shrink:0}
.rm-col-body{display:flex;flex-direction:column;gap:7px;padding:8px;overflow-y:auto;flex:1;min-height:40px}
.rm-col.drop .rm-col-body{background:rgba(88,101,242,.06)}
.rm-empty{color:var(--faint);font-size:11px;text-align:center;padding:8px 0}
.rm-card{background:var(--card);border:1px solid var(--card-line);border-left:3px solid var(--rc,var(--brand));border-radius:8px;padding:9px 10px;cursor:pointer;transition:box-shadow .1s,border-color .1s}
.rm-board.can-manage .rm-card{cursor:grab}
.rm-card:hover{border-color:var(--muted);box-shadow:0 3px 10px rgba(0,0,0,.18)}
.rm-card.dragging{opacity:.45}
.rm-card-t{font-weight:700;color:var(--bright);font-size:13px;line-height:1.3;word-break:break-word}
.rm-card-d{color:var(--muted);font-size:11.5px;line-height:1.35;margin-top:4px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.rm-card-f{display:flex;align-items:center;gap:5px;margin-top:7px}
.rm-author{font-size:11px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rm-decide{display:flex;gap:6px;margin-top:9px}
.rm-decide button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:4px;font-family:inherit;font-size:11.5px;font-weight:600;padding:5px 6px;border-radius:7px;cursor:pointer;border:1px solid var(--card-line);background:var(--hover);color:var(--text)}
.rm-appr:hover{background:rgba(16,185,129,.16);border-color:#10b981;color:#10b981}
.rm-rej:hover{background:rgba(239,68,68,.14);border-color:#ef4444;color:#ef4444}
.rm-detail-d{color:var(--text);font-size:14px;line-height:1.5;white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:10px}
/* Imagens nas ideias do Roadmap */
.rm-card-f{justify-content:space-between}
.rm-card-imgn{display:inline-flex;align-items:center;gap:3px;color:var(--muted);font-size:11px;font-weight:600;flex-shrink:0}
.rm-thumbs{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:8px}
.rm-thumbs:empty{display:none}
.rm-th{position:relative;width:76px;height:76px;border-radius:8px;overflow:hidden;border:1px solid var(--card-line)}
.rm-th img{width:100%;height:100%;object-fit:cover;display:block}
.rm-th-x{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;border-radius:50%;background:rgba(10,15,22,.7);color:#fff;font-size:15px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center}
.rm-th-x:hover{background:var(--fire-red,#d74042)}
.rm-detail-imgs{display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:8px;margin:4px 0 12px}
.rm-di{display:block;aspect-ratio:1;border-radius:8px;overflow:hidden;cursor:pointer;border:1px solid var(--card-line)}
.rm-di img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .12s}
.rm-di:hover img{transform:scale(1.05)}
.rm-detail-meta{color:var(--muted);font-size:12.5px;border-top:1px solid var(--card-line);padding-top:10px}
@media (max-width:900px){
  .rm-board{display:flex;overflow-x:auto;overflow-y:hidden}
  .rm-col{flex:0 0 230px}
}

/* ---- Arquivo de tarefas (histórico mensal) ---- */
.arc-body{max-height:64vh;overflow-y:auto}
.arc-group{margin-bottom:14px}
.arc-mhead{font-weight:800;color:var(--bright);font-size:13px;text-transform:capitalize;display:flex;align-items:center;gap:8px;margin:2px 0 8px;position:sticky;top:0;background:var(--card);padding:5px 0;z-index:1}
.arc-count{background:var(--hover);color:var(--muted);font-size:11px;font-weight:700;padding:0 7px;border-radius:9px}
.arc-row{display:flex;align-items:center;gap:10px;padding:8px 10px;border:1px solid var(--card-line);border-radius:9px;margin-bottom:6px;cursor:pointer;transition:border-color .1s,background .1s}
.arc-row:hover{border-color:var(--muted);background:var(--hover)}
.arc-check{color:#22c55e;font-size:17px;flex-shrink:0}
.arc-main{display:flex;flex-direction:column;min-width:0;flex:1;gap:2px}
.arc-title{color:var(--bright);font-size:13.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arc-meta{color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.arc-date{color:var(--faint);font-size:11.5px;flex-shrink:0;white-space:nowrap}
/* Modal do Arquivo no Drive */
.arcv-grid{display:flex;flex-direction:column;gap:2px}
.arcv-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:9px 2px;border-bottom:1px solid var(--card-line);font-size:13.5px;color:var(--text)}
.arcv-row:last-child{border-bottom:none}
.arcv-muted{color:var(--muted);font-size:12.5px}
.arcv-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:600;padding:2px 9px;border-radius:99px}
.arcv-chip.ok{background:rgba(16,185,129,.15);color:#10b981}
.arcv-chip.bad{background:rgba(239,68,68,.14);color:#ef4444}
.arcv-note{margin-top:12px;background:var(--hover);border:1px solid var(--card-line);border-radius:9px;padding:10px 12px;font-size:12.5px;line-height:1.5;color:var(--muted)}
.arcv-note code{background:rgba(127,127,127,.18);padding:1px 5px;border-radius:5px;font-size:11.5px}

/* Toast (mensagem transitória) */
.toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(20px);background:var(--card);color:var(--bright);border:1px solid var(--card-line);padding:12px 20px;border-radius:10px;font-size:14px;font-weight:600;box-shadow:0 12px 34px rgba(0,0,0,.4);opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;z-index:9999}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0)}

/* Banner de notificação em tempo real */
#ntoasts{position:fixed;top:18px;right:18px;display:flex;flex-direction:column;gap:10px;z-index:10000;max-width:min(360px,calc(100vw - 36px))}
.ntoast{display:flex;align-items:flex-start;gap:11px;background:var(--card);border:1px solid var(--card-line);border-left:3px solid var(--brand);border-radius:12px;padding:12px 12px 12px 14px;box-shadow:0 16px 40px rgba(0,0,0,.45);opacity:0;transform:translateX(24px);transition:opacity .22s,transform .22s}
.ntoast.show{opacity:1;transform:none}
.ntoast.clickable{cursor:pointer}
.ntoast.clickable:hover{border-color:var(--brand);background:var(--panel-2,var(--card))}
.ntoast .nt-ic{flex:none;width:34px;height:34px;border-radius:9px;background:rgba(239,106,77,.14);color:var(--brand);display:grid;place-items:center;font-size:18px}
.ntoast .nt-body{min-width:0;flex:1}
.ntoast .nt-title{font-weight:700;font-size:13.5px;color:var(--bright);line-height:1.25}
.ntoast .nt-text{font-size:12.5px;color:var(--muted);line-height:1.35;margin-top:2px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ntoast .nt-x{flex:none;background:transparent;border:none;color:var(--faint);cursor:pointer;font-size:15px;padding:2px;border-radius:5px;line-height:1}
.ntoast .nt-x:hover{color:var(--bright)}
@media (max-width:560px){#ntoasts{left:14px;right:14px;top:12px;max-width:none}}

/* ---- Tarefas · vista Clientes (tabela agrupada) --------------------------- */
.ctv{flex:1;min-height:0;overflow-y:auto;border:1px solid var(--card-line);border-radius:12px;margin:12px 16px;background:var(--card)}
.ctv-head{position:sticky;top:0;z-index:2}
.ctv-row{display:grid;grid-template-columns:minmax(200px,2.2fr) 130px 150px 140px 110px minmax(180px,2fr);align-items:center}
.ctv-head{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);border-bottom:1px solid var(--card-line);background:var(--panel)}
.ctv-head>div{padding:10px 14px}
.ctv-grp{display:flex;align-items:center;gap:9px;padding:9px 14px;cursor:pointer;background:var(--panel);border-bottom:1px solid var(--card-line);user-select:none}
.ctv-grp:hover{background:var(--hover)}
.ctv-grp .caret{color:var(--muted);transition:transform .15s;font-size:14px}
.ctv-grp.collapsed .caret{transform:rotate(-90deg)}
.ctv-grp-k{font-size:.66rem;text-transform:uppercase;letter-spacing:.05em;color:var(--faint)}
.ctv-count{margin-left:auto;color:var(--muted);font-size:.82rem;font-weight:600}
.ctv-task{border-bottom:1px solid var(--card-line);cursor:pointer}
.ctv-task:last-child{border-bottom:none}
.ctv-task:hover{background:var(--hover)}
.ctv-task>div{padding:9px 14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.9rem}
.ctv-task .ctv-name{color:var(--bright);font-weight:500}
.ctv-task .ctv-desc{color:var(--muted)}
.ctv-task .ctv-late{color:var(--red);font-weight:600}
.ctv-status-sel{background:var(--rail);border:1px solid var(--rail);border-radius:6px;padding:4px 6px;font-size:.82rem;color:var(--text);max-width:100%;cursor:pointer}
.ctv-status-sel:hover{border-color:var(--brand)}
.ctv-status-sel:focus{border-color:var(--brand);outline:none}
@media (max-width:900px){
  .ctv{overflow-x:auto}
  .ctv-row{min-width:820px}
}

/* ---- Cliente · responsável (chip com foto + nome) ------------------------ */
.cc-foot{display:flex;align-items:center;gap:8px}
.cc-owner{display:inline-flex;align-items:center;gap:6px;margin-left:auto;color:var(--muted);font-size:.82rem;min-width:0}
.cc-owner .cc-oname{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cc-oav{width:22px;height:22px;border-radius:50%;flex:none;display:inline-flex;align-items:center;justify-content:center;font-size:9px;font-weight:700;color:#fff;background-size:cover;background-position:center}
.td-meta .cc-owner{margin-left:0;color:var(--text)}

/* Vista Categorias: mesma tabela, colunas Tarefa/Categoria/Estado/Prazo/Cliente/Descrição */
.ctv-row.ctv-cat{grid-template-columns:minmax(200px,2fr) 140px 130px 110px 150px minmax(180px,2fr)}
@media (max-width:900px){ .ctv-row.ctv-cat{min-width:840px} }

/* ---- Menu Marketing (submenu lateral como as Conversas + landing) --------- */
.sidebar.mkt-mode .side-menu{display:none}
.sidebar.mkt-mode .side-back{display:flex}
.sidebar.mkt-mode .side-context{border-top:none}
.mkt-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:14px;margin-top:14px}
.mkt-card{display:flex;align-items:center;gap:14px;text-align:left;width:100%;padding:16px;border:1px solid var(--card-line);border-radius:14px;background:var(--card);color:var(--text);cursor:pointer;font-family:var(--font-body)}
.mkt-card:hover{background:var(--hover);border-color:var(--brand)}
.mkt-card .mkt-ic{flex:none;width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--brand);color:#fff;font-size:22px}
.mkt-card .mkt-tx{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.mkt-card .mkt-t{font-weight:700;color:var(--bright)}
.mkt-card .mkt-s{color:var(--muted);font-size:.86rem}
/* Marketing — Auditoria de SEO */
.seo-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;margin:14px 0 16px}
.seo-card{background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:11px 13px;display:flex;flex-direction:column;gap:5px}
.seo-card-k{font-size:.7rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.seo-card-v{font-size:1.5rem;font-weight:700;color:var(--bright);line-height:1}
.seo-card-sub{font-size:.68rem;color:var(--muted);margin-top:-1px}
.seo-inline{display:flex;align-items:baseline;gap:4px}
.seo-inline b{color:var(--muted);font-weight:600}
.seo-card input{background:var(--rail);border:1px solid var(--rail);border-radius:6px;padding:5px 8px;color:var(--text);font-size:.95rem;max-width:110px}
.seo-inline input{width:60px}
.seo-card input:focus{border-color:var(--brand);outline:none}
.seo-crit .seo-card-v{color:#ef4444}
.seo-err .seo-card-v{color:#f97316}
.seo-warn .seo-card-v{color:#e0a030}
.seo-pass .seo-card-v{color:#22c55e}
.seo-toolbar{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:0 0 10px}
.seo-sevf,.seo-search{background:var(--rail);border:1px solid var(--rail);border-radius:8px;padding:6px 10px;color:var(--text);font-size:13px}
.seo-search{min-width:180px}
.seo-count{font-size:.8rem;color:var(--muted)}
.seo-table{border:1px solid var(--card-line);border-radius:12px;overflow:hidden;background:var(--card);margin-bottom:16px}
.seo-row{display:grid;grid-template-columns:minmax(220px,3fr) 150px 90px minmax(140px,2fr);align-items:center;border-bottom:1px solid var(--card-line)}
.seo-row:last-child{border-bottom:none}
.seo-row>div{padding:8px 12px;min-width:0}
.seo-head{background:var(--panel);color:var(--muted);font-size:.7rem;text-transform:uppercase;letter-spacing:.04em}
.seo-name{color:var(--bright);font-weight:500;font-size:.9rem}
.seo-sel,.seo-fail,.seo-note{background:var(--rail);border:1px solid var(--rail);border-radius:6px;padding:5px 8px;color:var(--text);font-size:.85rem;width:100%}
.seo-sel{font-weight:600;cursor:pointer}
.seo-fail{max-width:72px}
.seo-sel:hover,.seo-fail:hover,.seo-note:hover{border-color:var(--brand)}
.seo-sel:focus,.seo-fail:focus,.seo-note:focus{border-color:var(--brand);outline:none}
.seo-url{background:var(--rail);border:1px solid var(--rail);border-radius:8px;padding:7px 11px;color:var(--text);font-size:13px;min-width:220px}
.seo-url:focus{border-color:var(--brand);outline:none}
.seo-progress{display:flex;align-items:center;gap:9px;background:var(--card);border:1px solid var(--brand);border-radius:10px;padding:10px 14px;margin:0 0 14px;color:var(--bright);font-size:.9rem}
.seo-progress .ph-check-circle{color:#22c55e;font-size:1.1rem}
.seo-auto,.seo-manual{font-size:.6rem;text-transform:uppercase;letter-spacing:.04em;font-weight:700;padding:1px 5px;border-radius:4px;vertical-align:middle}
.seo-auto{background:#3b82f622;color:#3b82f6}
.seo-manual{background:var(--panel);color:var(--muted)}
.seo-detbtn{background:none;border:0;color:var(--brand);font-size:.72rem;font-weight:700;cursor:pointer;padding:1px 4px;border-radius:4px;white-space:nowrap}
.seo-detbtn:hover{background:var(--panel)}
.seo-detbtn i{transition:transform .12s;display:inline-block}
.seo-detbtn.open i{transform:rotate(180deg)}
.seo-detail{background:var(--panel);border-bottom:1px solid var(--card-line);padding:6px 14px 10px 26px}
.seo-detail ul{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:3px}
.seo-detail li{font-size:.82rem;color:var(--muted);word-break:break-word;padding-left:12px;position:relative}
.seo-detail li::before{content:"•";position:absolute;left:0;color:var(--brand)}
.seo-detail a{color:var(--brand)}
.seo-row.seo-ro{grid-template-columns:minmax(240px,3fr) 160px 90px}
.seo-failv{font-weight:600;color:var(--bright)}
/* Relatórios (histórico) */
.seo-reps{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.seo-rep{display:flex;align-items:center;gap:14px;background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:12px 16px}
.seo-rep-main{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}
.seo-rep-date{font-weight:700;color:var(--bright);display:flex;align-items:center;gap:7px}
.seo-rep-url{color:var(--muted);font-size:.82rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.seo-rep-sum{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.seo-rep-pages{color:var(--muted);font-size:.8rem}
.seo-rep-acts{display:flex;align-items:center;gap:8px;flex-shrink:0}
.seo-rep-del{color:var(--muted)}.seo-rep-del:hover{color:#ef4444}
@media(max-width:760px){.seo-table{overflow-x:auto}.seo-row{min-width:560px}.seo-row.seo-ro{min-width:480px}}
.mkt-card .mkt-go{color:var(--muted);font-size:18px}
/* recurso bloqueado (em construção) — cartão + submenu */
.mkt-card.mkt-locked{opacity:.72}
.mkt-card.mkt-locked .mkt-ic{background:var(--muted)}
.mkt-lock{flex:none;display:inline-flex;align-items:center;gap:5px;font-size:.72rem;font-weight:600;color:var(--muted);background:var(--panel);border:1px solid var(--card-line);border-radius:999px;padding:4px 10px;white-space:nowrap}
.mkt-nav-locked{opacity:.72}
.mkt-nav-lock{margin-left:auto;font-size:13px;opacity:.8}
/* modal "em construção" */
.uc-body{text-align:center;padding:28px 24px}
.uc-ic{font-size:50px;color:var(--brand);margin-bottom:8px}
.uc-h{margin:0 0 6px;font-family:var(--font-head);color:var(--bright)}
.uc-p{color:var(--muted);max-width:340px;margin:0 auto}

/* ---- Marketing · Budget de Ads dos clientes (tabela larga) ---------------- */
.adb-yearlbl{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:.85rem}
.adb-year{width:84px;padding:6px 8px;border:1px solid var(--card-line);border-radius:8px;background:var(--input);color:var(--text)}
.adb-wrap{margin-top:14px;overflow:auto;max-height:calc(100vh - 190px);border:1px solid var(--card-line);border-radius:12px;background:var(--card)}
.adb-table{border-collapse:separate;border-spacing:0;font-size:.8rem;white-space:nowrap}
.adb-table th,.adb-table td{border-right:1px solid var(--card-line);border-bottom:1px solid var(--card-line);padding:0}
.adb-table thead th{position:sticky;top:0;z-index:3;background:var(--panel);color:var(--muted);font-weight:600;text-align:center;padding:6px 8px}
.adb-table tr.adb-h2 th{top:29px;font-weight:500;font-size:.72rem;text-transform:none}
.adb-mgrp{background:var(--panel);color:var(--bright)!important;font-weight:700!important;border-left:2px solid var(--card-line)}
.adb-qgrp{background:var(--hover);color:var(--brand)!important;font-weight:700!important;border-left:2px solid var(--brand)}
.adb-sticky{position:sticky;z-index:2;background:var(--card)}
.adb-col-name{left:0;min-width:170px;max-width:170px}
.adb-col-am{left:170px;min-width:56px;max-width:56px;text-align:center}
.adb-table thead .adb-sticky{z-index:6;background:var(--panel)}
.adb-table thead .adb-col-am{left:170px}
.adb-table tbody tr:hover td{background:var(--hover)}
.adb-table tbody tr:hover .adb-sticky{background:var(--hover)}
.adb-in,.adb-nin,.adb-amin{width:100%;border:none;background:transparent;color:var(--text);padding:6px 7px;font:inherit;text-align:right}
.adb-nin{text-align:left;font-weight:600;color:var(--bright);width:calc(100% - 20px)}
.adb-amin{text-align:center;padding:6px 2px}
.adb-in:focus,.adb-nin:focus,.adb-amin:focus{outline:2px solid var(--brand);outline-offset:-2px;background:var(--input)}
.adb-calc,.adb-cum{text-align:right;padding:6px 8px;color:var(--muted)}
.adb-cum{background:color-mix(in srgb,var(--panel) 60%,transparent);font-weight:600}
.adb-neg{color:var(--red)!important}
.adb-pos{color:var(--green)!important}
.adb-del{border:none;background:transparent;color:var(--muted);cursor:pointer;font-size:15px;line-height:1;padding:0 4px;opacity:0;transition:opacity .12s}
.adb-col-name:hover .adb-del{opacity:1}
.adb-del:hover{color:var(--red)}

/* ---- Marketing · Aprovação de Clientes (conteúdo) ------------------------ */
.ca-camp{margin:6px 0 18px}
.ca-camp-h{font-weight:700;color:var(--bright);margin:10px 0 8px;display:flex;align-items:center;gap:8px}
.ca-camp-n{font-size:.75rem;color:var(--muted);background:var(--panel);border-radius:99px;padding:1px 8px;font-weight:600}
/* Aprovação de Clientes — tabs */
.ca-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:2px 0 18px;border-bottom:1px solid var(--card-line);padding-bottom:0}
.ca-tab{display:inline-flex;align-items:center;gap:7px;background:none;border:0;border-bottom:2px solid transparent;color:var(--muted);font-size:.92rem;font-weight:600;cursor:pointer;padding:8px 10px;margin-bottom:-1px}
.ca-tab:hover{color:var(--bright)}
.ca-tab.on{color:var(--bright);border-bottom-color:var(--brand)}
.ca-tab-n{font-size:.7rem;background:var(--panel);color:var(--muted);border-radius:99px;padding:1px 7px;font-weight:600}
.ca-tab.on .ca-tab-n{background:var(--brand);color:#fff}
.ca-zone-full{max-width:720px}
/* Aprovação de Clientes — pastas / breadcrumb */
.ca-crumbs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin:4px 0 16px}
.ca-crumb{display:inline-flex;align-items:center;gap:6px;background:none;border:0;color:var(--muted);font-size:.9rem;font-weight:600;cursor:pointer;padding:4px 6px;border-radius:8px}
.ca-crumb:hover{color:var(--bright);background:var(--panel)}
.ca-crumb.on{color:var(--bright);cursor:default}
.ca-crumb-sep{color:var(--muted);font-size:.8rem}
.ca-folders{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin-bottom:8px}
.ca-folder{display:flex;flex-direction:column;text-align:left;background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:14px 14px;cursor:pointer;transition:border-color .12s,transform .06s}
.ca-folder:hover{border-color:var(--brand)}
.ca-folder:active{transform:scale(.99)}
.ca-folder-top{display:flex;align-items:center;gap:12px}
.ca-folder-ic{font-size:1.7rem;color:var(--brand);flex-shrink:0}
.ca-folder-b{flex:1;min-width:0}
.ca-folder-t{font-weight:700;color:var(--bright);font-size:.98rem;line-height:1.25;white-space:normal;overflow-wrap:break-word}
.ca-folder-m{font-size:.78rem;color:var(--muted);margin-top:2px}
.ca-folder-p{color:#e0a030;font-weight:600}
.ca-folder-go{color:var(--muted);flex-shrink:0}
.ca-folder-acts{display:flex;justify-content:flex-end;gap:2px;margin-top:12px;padding-top:10px;border-top:1px solid var(--card-line)}
.ca-folder-acts .icon-btn{color:var(--muted);transition:color .12s}
.ca-flink:hover{color:var(--brand)}
.ca-fedit:hover{color:var(--brand)}
.ca-fdel:hover{color:#ef4444}
/* modal do post — upload múltiplo + previews */
.cp-drop{display:inline-flex;align-items:center;gap:8px;background:var(--panel);border:1px dashed var(--card-line);color:var(--muted);border-radius:10px;padding:10px 14px;cursor:pointer;font-weight:600;transition:border-color .12s,color .12s}
.cp-drop:hover{border-color:var(--brand);color:var(--bright)}
/* zona de upload em destaque enquanto se arrastam ficheiros para cima */
#cp_media{border-radius:12px;transition:background .12s,box-shadow .12s;padding:2px}
#cp_media.cp-dragover{background:color-mix(in srgb,var(--brand) 12%,transparent);box-shadow:inset 0 0 0 2px var(--brand)}
#cp_media.cp-dragover .cp-drop{border-color:var(--brand);color:var(--bright)}
.cp-previews{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.cp-previews .cp-empty{color:var(--muted);font-size:.82rem;padding:4px 0}
.cp-thumb{position:relative;width:84px;height:84px;border-radius:10px;overflow:hidden;border:1px solid var(--card-line);background:var(--panel);flex-shrink:0}
.cp-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.cp-thumb.cp-file{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;padding:6px;text-align:center}
.cp-thumb.cp-file i{font-size:1.4rem;color:var(--muted)}
.cp-thumb.cp-file span{font-size:.62rem;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}
.cp-x{position:absolute;top:3px;right:3px;width:20px;height:20px;border:0;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;font-size:14px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2}
.cp-x:hover{background:#ef4444}
/* thumb reordenável: vídeo, ícone de ficheiro, overlay com o nome e estados de arrasto */
.cp-thumb[draggable]{cursor:grab}
.cp-thumb[draggable]:active{cursor:grabbing}
.cp-thumb video{width:100%;height:100%;object-fit:cover;display:block;background:#000}
.cp-thumb .cp-vico{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);font-size:1.6rem;color:#fff;text-shadow:0 1px 4px rgba(0,0,0,.6);pointer-events:none}
.cp-thumb .cp-fileic{font-size:1.7rem;color:var(--muted)}
.cp-fname{position:absolute;left:0;right:0;bottom:0;padding:3px 5px;font-size:.6rem;line-height:1.2;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.78));white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
.cp-thumb.cp-file .cp-fname{position:static;background:none;color:var(--muted);text-align:center;padding:2px 4px 0}
.cp-thumb.cp-drag{opacity:.4}
.cp-thumb.cp-over{outline:2px dashed var(--brand);outline-offset:-2px}
.ca-thumb{position:relative}
.ca-thumb-n{position:absolute;top:8px;right:8px;background:rgba(0,0,0,.62);color:#fff;font-size:.72rem;font-weight:600;padding:2px 8px;border-radius:99px;display:inline-flex;align-items:center;gap:4px}
.ca-detail-media{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px;margin-bottom:8px}
.ca-detail-media a{flex-shrink:0}
.ca-detail-media img{height:200px;border-radius:10px;display:block}
.ca-detail-file{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--card-line);border-radius:10px;padding:10px 14px;color:var(--bright);height:200px}
.ca-detail-vid{flex-shrink:0;display:flex;flex-direction:column;gap:6px;margin:0;cursor:pointer;border:0;background:none;padding:0}
.ca-vid-thumb{position:relative;height:200px;border-radius:10px;overflow:hidden;background:#000;border:1px solid var(--card-line)}
.ca-vid-thumb video{height:100%;width:auto;max-width:360px;object-fit:cover;display:block;pointer-events:none}
.ca-detail-vid:hover .pc-play{background:rgba(0,0,0,.32)}
.ca-vid-name{font-size:12px;color:var(--muted);text-align:center;word-break:break-word;max-width:360px}
/* item de media clicável (abre lightbox) com overlay do nome do ficheiro */
.ca-detail-item{position:relative;flex-shrink:0;cursor:pointer;margin:0;line-height:0}
.ca-detail-item img{height:200px;border-radius:10px;display:block}
.ca-media-name{position:absolute;left:0;right:0;bottom:0;padding:18px 8px 6px;font-size:11px;line-height:1.3;color:#fff;background:linear-gradient(transparent,rgba(0,0,0,.82));border-radius:0 0 10px 10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none}
/* portal — várias imagens do post */
.pc-media{display:flex;gap:8px;overflow-x:auto;margin:8px 0;padding-bottom:4px}
.pc-media .apr-media{flex:0 0 auto;margin:0}
.pc-media.multi .apr-media img{height:200px;width:auto;border-radius:8px}
.pc-media-file{flex:0 0 auto;display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--card-line);border-radius:8px;padding:10px 14px}
.pc-media-vid{flex:0 0 auto;display:flex;flex-direction:column;gap:6px;margin:0;cursor:pointer;border:0;background:none;padding:0}
.pc-vid-thumb{position:relative;border-radius:10px;overflow:hidden;background:#000;border:1px solid var(--card-line)}
.pc-media.multi .pc-vid-thumb{height:200px}
.pc-vid-thumb video{display:block;width:auto;max-width:min(82vw,560px);height:100%;max-height:440px;object-fit:cover;pointer-events:none}
.pc-media:not(.multi) .pc-vid-thumb video{width:min(82vw,560px);height:auto}
.pc-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#fff;font-size:34px;background:rgba(0,0,0,.18);transition:background .15s}
.pc-play i{width:56px;height:56px;border-radius:50%;background:rgba(0,0,0,.55);display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.pc-media-vid:hover .pc-play{background:rgba(0,0,0,.32)}
.pc-media-name{font-size:12.5px;color:var(--muted);text-align:center;word-break:break-word;max-width:min(82vw,560px)}
/* thumbnail de vídeo no card do post (feed) */
.pc-thumb-vid{width:100%;height:100%;object-fit:cover;display:block}
.pc-card-thumb .pc-play{font-size:22px}
.pc-card-thumb .pc-play i{width:40px;height:40px;font-size:18px}
/* lightbox de vídeo (por cima do modal do post) */
.pc-vidlb{position:fixed;inset:0;z-index:1400;background:rgba(0,0,0,.82);display:flex;align-items:center;justify-content:center;padding:20px}
.pc-vidlb[hidden]{display:none}
.pc-vidlb-box{position:relative;display:flex;flex-direction:column;gap:10px;align-items:center;max-width:92vw}
.pc-vidlb-box video{max-width:92vw;max-height:82vh;border-radius:12px;background:#000;box-shadow:0 18px 60px rgba(0,0,0,.5)}
.pc-vidlb-name{color:#e7e7ea;font-size:13px;text-align:center;word-break:break-word;max-width:92vw}
.pc-vidlb-x{position:absolute;top:-14px;right:-14px;width:38px;height:38px;border:0;border-radius:50%;background:#fff;color:#111;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 14px rgba(0,0,0,.4)}
.pc-vidlb-x:hover{background:#ef4444;color:#fff}
/* portal — subpasta data/tema dentro do mês */
.pc-folder{margin:4px 0 14px}
.pc-folder-h{font-size:.82rem;font-weight:600;color:var(--muted);margin:6px 0 8px;padding-left:2px;border-left:3px solid var(--brand);padding-left:8px}
.p-pill.apr-sched{background:#2f6fed;color:#fff}
.p-pill.apr-rev{background:#7c3aed;color:#fff}
.ca-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:14px}
.ca-post{position:relative;background:var(--card);border:1px solid var(--card-line);border-radius:12px;overflow:hidden;cursor:pointer;transition:border-color .12s}
.ca-post:hover{border-color:var(--brand)}
/* botão de copiar link do post (canto superior esquerdo da thumb) */
.ca-plink{position:absolute;top:6px;left:6px;z-index:2;width:28px;height:28px;border:0;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;cursor:pointer;opacity:.85;transition:opacity .12s,background .12s}
.ca-post:hover .ca-plink{opacity:1}
.ca-plink:hover{background:var(--brand)}
.ca-thumb{height:150px;background-size:cover;background-position:center;background-color:var(--panel)}
.ca-thumb.ca-noimg{display:flex;align-items:center;justify-content:center;color:var(--faint);font-size:34px}
.ca-thumb-vid{width:100%;height:100%;object-fit:cover;display:block}
.ca-thumb-play{position:absolute;inset:0;display:grid;place-items:center;background:rgba(0,0,0,.18)}
.ca-thumb-play i{width:44px;height:44px;border-radius:50%;background:rgba(0,0,0,.5);color:#fff;display:grid;place-items:center;font-size:18px}
.ca-post-b{padding:10px 12px}
.ca-post-t{font-weight:600;color:var(--bright);font-size:.92rem;margin-bottom:6px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ca-post-m{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.78rem;margin-bottom:8px;flex-wrap:wrap}
.ca-post-m .pill.sm{font-size:.7rem;padding:1px 7px}
.ca-date{display:inline-flex;align-items:center;gap:4px}
.ca-post-f{display:flex;align-items:center;justify-content:space-between}
.ca-cc{color:var(--muted);font-size:.78rem;display:inline-flex;align-items:center;gap:4px}
.ca-detail-img{max-width:100%;max-height:360px;border-radius:10px;display:block;margin:0 auto 12px;object-fit:contain}
.ca-caption{background:var(--panel);border-radius:8px;padding:10px 12px;color:var(--text);white-space:pre-wrap;margin:10px 0}
.ca-cmts{display:flex;flex-direction:column;gap:8px;margin-bottom:12px;max-height:280px;overflow:auto}
.ca-cmt{border:1px solid var(--card-line);border-radius:10px;padding:8px 10px}
.ca-cmt.ca-client{background:color-mix(in srgb,var(--brand) 8%,transparent);border-color:color-mix(in srgb,var(--brand) 30%,var(--card-line))}
.ca-cmt-h{font-size:.8rem;margin-bottom:3px;display:flex;align-items:center;gap:4px}
.ca-cmt-h span{color:var(--muted);font-size:.72rem;text-transform:uppercase;letter-spacing:.03em}
.ca-cmt-dt{margin-left:auto;text-transform:none!important;letter-spacing:0!important;font-variant-numeric:tabular-nums}
.pc-cmt-dt{color:var(--muted);font-size:.72rem;margin-left:6px;font-variant-numeric:tabular-nums}
.ca-cmt-b{white-space:pre-wrap;font-size:.9rem}
.ca-log{display:flex;align-items:flex-start;gap:9px;padding:3px 2px 3px 4px}
.ca-log-dot{flex:none;width:9px;height:9px;border-radius:50%;margin-top:5px;box-shadow:0 0 0 3px color-mix(in srgb,var(--card) 70%,transparent)}
.ca-log-b{display:flex;align-items:center;gap:7px;flex-wrap:wrap;font-size:.82rem;color:var(--muted)}
.ca-log-b b{color:var(--ink);font-weight:600}
.ca-log-ic{color:var(--muted)}
.ca-log-who{color:var(--muted)}
.ca-cmt-acts{display:inline-flex;gap:1px;margin-left:6px;opacity:0;transition:opacity .12s}
.ca-cmt:hover .ca-cmt-acts,.ca-cmt.editing .ca-cmt-acts{opacity:1}
.ca-cmt-acts .icon-btn{padding:2px 4px;font-size:13px;color:var(--muted);line-height:1}
.ca-cmt-acts .icon-btn:hover{color:var(--text)}
.ca-zones{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px;margin-top:8px}
.ca-zone{background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:12px 14px}
.ca-zone-h{display:flex;align-items:center;justify-content:space-between;font-weight:600;color:var(--bright);margin-bottom:8px}
.ca-zone-h span{display:inline-flex;align-items:center;gap:7px}
.ca-empty{color:var(--muted);font-size:.85rem;padding:6px 0}
.ca-row{display:flex;align-items:center;gap:8px;padding:7px 0;border-top:1px solid var(--card-line);font-size:.88rem}
.ca-row a{color:var(--link);text-decoration:none;display:inline-flex;align-items:center;gap:5px;min-width:0}
.ca-row a:hover{text-decoration:underline}
.ca-row .ca-row-m{color:var(--muted);font-size:.78rem;margin-left:auto;white-space:nowrap}
.ca-row .ca-del{opacity:.5}.ca-row:hover .ca-del{opacity:1}
.ca-row.ca-done{opacity:.55}.ca-row.ca-done label{text-decoration:line-through}
.ca-scrow{align-items:flex-start}
.ca-scmain{min-width:0}.ca-scmain b{color:var(--bright)}
.ca-sc-body{color:var(--muted);font-size:.83rem;white-space:pre-wrap;margin:3px 0}
.ca-scacts{display:flex;gap:2px;flex:none}
.ca-scedit{color:var(--muted)}
.ca-scedit:hover{color:var(--brand)}
.ca-sc-media{margin-top:8px}
.ca-scrow .ca-vid-thumb{height:170px}
.ca-scrow .ca-vid-thumb video{max-width:300px}
.ca-scrow .ca-vid-name{max-width:300px;text-align:left}
.ca-sc-img{display:inline-block}
.ca-sc-img img{max-height:170px;max-width:min(100%,300px);border-radius:8px;display:block;border:1px solid var(--card-line)}
.ca-sc-file{display:inline-flex;align-items:center;gap:6px;color:var(--bright)}
/* portal — media do guião (vídeo/imagem) */
.pc-sc-media{margin-top:8px}
.pc-sc-media .pc-vid-thumb{height:180px;width:max-content;max-width:100%}
.pc-sc-media .pc-vid-thumb video{width:auto;height:180px;max-height:180px;max-width:100%}
.pc-sc-media .pc-media-name{text-align:left;max-width:320px}
.pc-sc-img img{max-height:180px;max-width:min(100%,320px);border-radius:8px;display:block;margin-top:8px;border:1px solid var(--card-line)}

/* ---- Portal · Aprovação de Conteúdo ---------------------------------------- */
.pc-camp{margin-bottom:18px}
.pc-camp-h{font-weight:700;color:var(--bright);font-size:15px;margin:6px 0 10px;padding-bottom:6px;border-bottom:1px solid var(--card-line)}
.pc-caption{white-space:pre-wrap;color:var(--text);background:var(--panel);border-radius:8px;padding:10px 12px;margin:10px 0;font-size:14px}
.pc-cmts{display:flex;flex-direction:column;gap:7px;margin:10px 0}
.pc-cmt{border:1px solid var(--card-line);border-radius:9px;padding:7px 10px;font-size:14px}
.pc-cmt.client{background:color-mix(in srgb,var(--brand) 8%,transparent)}
.pc-cmt b{font-size:13px}.pc-cmt span{color:var(--muted);font-size:11px;text-transform:uppercase;margin-left:4px}
.pc-cmt div{white-space:pre-wrap;margin-top:2px}
.pc-log{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:3px 2px;font-size:12.5px;color:var(--muted)}
.pc-log b{color:var(--text);font-weight:600}
.pc-log-who{color:var(--muted)}
.pc-log .pc-cmt-dt{margin-left:auto}
.pc-cmts{display:flex;flex-direction:column;gap:6px}
.pc-comment,.pc-comment2{width:100%;min-height:56px;border:1px solid var(--card-line);border-radius:9px;background:var(--input);color:var(--text);padding:9px 11px;font:inherit;resize:vertical}
.pc-addcmt{display:flex;gap:8px;align-items:flex-start;margin-top:8px}
.pc-addcmt .pc-comment2{min-height:40px}
.pc-zone{background:var(--card);border:1px solid var(--card-line);border-radius:12px;padding:12px 14px;margin-top:14px}
.pc-zone-h{display:flex;align-items:center;justify-content:space-between;font-weight:700;color:var(--bright);margin-bottom:8px}
.pc-zone-h span{display:inline-flex;align-items:center;gap:7px}
.pc-row{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--card-line);font-size:14px}
.pc-row a{color:var(--link);text-decoration:none;display:inline-flex;align-items:center;gap:5px;min-width:0}
.pc-row a:hover{text-decoration:underline}
.pc-row .pc-by{color:var(--muted);font-size:12px;margin-left:auto;white-space:nowrap}
.pc-row.done{opacity:.55}.pc-row.done span:first-child{text-decoration:line-through}
.pc-del{border:none;background:transparent;color:var(--muted);cursor:pointer;margin-left:auto;padding:2px 4px}
.pc-del:hover{color:var(--red)}
.pc-scrow{align-items:flex-start}.pc-scrow b{color:var(--bright)}
/* Aprovação por documento (portal) */
.pc-doc{border-top:1px solid var(--card-line)}
.pc-doc .pc-row{border-top:none}
.pc-doc .p-pill{margin-left:auto;font-size:11px;padding:3px 9px}
.pc-docdec{display:flex;flex-wrap:wrap;gap:8px;padding:0 0 10px 22px}
.pc-docchg-form{padding:0 0 10px 22px}
.pc-docchg-form[hidden]{display:none}
.pc-docchg-form textarea{width:100%;min-height:64px;background:var(--rail);border:1px solid var(--card-line);border-radius:9px;color:var(--text);font-family:inherit;font-size:13.5px;padding:8px 10px;resize:vertical}
.pc-docchg-a{display:flex;gap:8px;margin-top:6px}
.pc-docnote{padding:0 0 10px 22px;color:var(--muted);font-size:13px}
.pc-docnote b{color:var(--text)}
/* Estado do documento (app da equipa) */
.ca-doc-wrap{border-top:1px solid var(--card-line)}
.ca-doc-wrap .ca-row{border-top:none}
.ca-doc-badge{font-size:11px;font-weight:600;padding:2px 9px;border-radius:999px;white-space:nowrap;margin-left:auto}
.ca-doc-badge.ca-doc-pend{background:rgba(217,154,43,.18);color:#e0a838}
.ca-doc-badge.ca-doc-appr{background:rgba(47,158,107,.18);color:#43c088}
.ca-doc-badge.ca-doc-chg{background:rgba(215,64,66,.18);color:#e5686a}
.ca-doc-badge + .ca-row-m{margin-left:10px}
.ca-doc-note{padding:0 0 8px 24px;color:var(--muted);font-size:12.5px;display:flex;gap:6px;align-items:flex-start}
/* Carregar Ficheiros — portal (cliente) */
.pup-lbl{display:block;font-size:12.5px;color:var(--muted);font-weight:600;margin:12px 0 5px}
.pup-input{width:100%;background:var(--rail);border:1px solid var(--card-line);border-radius:9px;color:var(--text);font-family:inherit;font-size:14px;padding:9px 11px}
.pup-ta{min-height:72px;resize:vertical}
.pup-drop{border:1.5px dashed var(--card-line);border-radius:11px;padding:18px;text-align:center;color:var(--muted);font-size:13.5px;cursor:pointer;transition:border-color .15s,background .15s}
.pup-drop:hover{border-color:var(--water-blue)}
.pup-drop.pup-dragover{border-color:var(--water-blue);background:rgba(122,159,159,.1);color:var(--text)}
.pup-drop .ph{font-size:20px;vertical-align:-3px;margin-right:4px}
.pup-filelist{display:flex;flex-direction:column;gap:5px;margin-top:8px}
.pup-frow{display:flex;align-items:center;gap:8px;font-size:13px;background:var(--rail);border-radius:8px;padding:6px 10px}
.pup-frow span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pup-frdel{border:none;background:none;color:var(--muted);cursor:pointer;padding:0 2px}
.pup-frdel:hover{color:var(--red)}
.pup-actions{display:flex;justify-content:flex-end;margin-top:16px}
.pup-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.pup-item{position:relative;background:var(--card);border:1px solid var(--card-line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.pup-thumb{aspect-ratio:1;background:var(--rail);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer;position:relative;margin:0}
.pup-thumb img,.pup-thumb video{width:100%;height:100%;object-fit:cover}
.pup-thumb.pup-file{font-size:34px;color:var(--muted)}
.pup-vid .pc-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:34px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5)}
.pup-name{padding:7px 9px 0;font-size:12px;font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pup-cap{padding:2px 9px 0;font-size:11.5px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.pup-item .pup-usedbadge{position:absolute;top:6px;left:6px;font-size:10px;padding:2px 8px}
.pup-del{position:absolute;top:6px;right:6px;border:none;background:rgba(0,0,0,.5);color:#fff;border-radius:99px;width:22px;height:22px;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:12px}
.pup-del:hover{background:var(--red)}
.pup-text{padding:10px;min-height:80px}
.pup-textbody{font-size:13px;white-space:pre-wrap}
.pup-item.pup-text .pup-usedbadge{position:static;margin-top:8px;align-self:flex-start}
/* Conteúdos do cliente — app da equipa */
.ca-upfolder{cursor:pointer}
.ca-up-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px}
.ca-up-item{position:relative;background:var(--card);border:1px solid var(--card-line);border-radius:12px;overflow:hidden;display:flex;flex-direction:column}
.ca-up-item.is-used{opacity:.62}
.ca-up-thumb{aspect-ratio:1;background:var(--rail);display:flex;align-items:center;justify-content:center;overflow:hidden;cursor:pointer;position:relative;margin:0}
.ca-up-thumb img,.ca-up-thumb video{width:100%;height:100%;object-fit:cover}
.ca-up-thumb.ca-up-file{font-size:34px;color:var(--muted)}
.ca-up-vid .ca-play{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:34px;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5)}
.ca-up-name{padding:8px 10px 0;font-size:12.5px;font-weight:600;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ca-up-cap{padding:2px 10px 0;font-size:11.5px;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ca-up-foot{padding:8px 10px;margin-top:auto;display:flex;align-items:center;justify-content:space-between;gap:8px}
.ca-up-text{padding:0}.ca-up-textbody{padding:12px;font-size:13px;white-space:pre-wrap;flex:1;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.ca-up-txtclick,.pup-txtclick{cursor:pointer}
.pup-textbody{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden}
.up-fulltext,.pup-fulltext{white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;line-height:1.55;color:var(--text);max-height:64vh;overflow-y:auto}
.ca-up-usedbtn{border:1px solid var(--card-line);background:var(--rail);color:var(--text);border-radius:99px;padding:5px 11px;font-size:12px;font-weight:600;cursor:pointer;display:inline-flex;align-items:center;gap:5px;white-space:nowrap}
.ca-up-usedbtn:hover{border-color:var(--water-blue)}
.ca-up-usedbtn.on{background:rgba(47,158,107,.18);border-color:transparent;color:#43c088}
.pc-scb{color:var(--muted);font-size:13px;white-space:pre-wrap;margin:3px 0}
.pc-addrow{display:flex;gap:8px;align-items:flex-start;margin-top:10px}
.pc-addrow textarea{flex:1;min-height:40px;border:1px solid var(--card-line);border-radius:9px;background:var(--input);color:var(--text);padding:9px 11px;font:inherit;resize:vertical}
.pc-addscript{margin-top:10px;display:flex;flex-direction:column;gap:8px}
.pc-addscript input,.pc-addscript textarea{width:100%;border:1px solid var(--card-line);border-radius:9px;background:var(--input);color:var(--text);padding:9px 11px;font:inherit}
.pc-addscript textarea{min-height:70px;resize:vertical}
.pc-scactions{display:flex;gap:8px;align-items:center;justify-content:flex-end}
.p-empty.sm{padding:6px 0;font-size:13px}


/* Arrastar cards: destacar colunas e evitar seleção de texto */
body.dragging-card{user-select:none}
body.dragging-card .col{transition:background .15s}
body.dragging-card .col.drag-over{background:var(--hover)}

/* Modais: cabeçalho e rodapé sempre acessíveis (o X saía do ecrã em mobile) */
.modal-head{position:sticky;top:0;z-index:2;background:var(--chat)}
.modal-foot{position:sticky;bottom:0;z-index:2}
/* O botão do assistente não deve ficar por cima de um modal aberto */
body.modal-open .wiz-fab{display:none}
/* ---- Vista anual do calendário: 12 mini-calendários ---- */
.yr{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px 16px}
.yr-m{background:var(--card);border:1px solid var(--card-line);border-radius:10px;padding:9px 10px 8px}
.yr-mt{font-size:12px;font-weight:700;color:var(--bright);text-transform:uppercase;letter-spacing:.04em;
       font-family:var(--font-head);margin-bottom:6px}
.yr-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1.5px}
.yr-wd{margin-bottom:4px}
.yr-wd div{font-size:9.5px;color:var(--faint);text-align:center;font-weight:700}
.yr-d{aspect-ratio:1;display:flex;align-items:center;justify-content:center;font-size:10px;
      color:var(--text);border-radius:5px;cursor:pointer;transition:background .1s,color .1s}
.yr-d.out{visibility:hidden;cursor:default}
.yr-d.we{color:var(--faint)}
.yr-d.hol{color:var(--fire-red)}
.yr-d:hover{background:var(--hover)}
/* Densidade: um dia com 1 evento não deve pesar como um com 4 */
.yr-d.ev1{background:rgba(215,64,66,.28);color:var(--bright)}
.yr-d.ev2{background:rgba(215,64,66,.55);color:#fff;font-weight:600}
.yr-d.ev3{background:var(--brand);color:#fff;font-weight:700}
.yr-d.today{box-shadow:inset 0 0 0 1.5px var(--fire-red);font-weight:700;color:var(--bright)}
.yr-leg{display:flex;align-items:center;gap:7px;margin-top:12px;font-size:11px;color:var(--muted)}
.yr-leg i{width:20px;height:20px;font-style:normal;font-size:9.5px;cursor:default}
/* Em ecrãs largos, 6 colunas = um semestre por linha e o ano inteiro sem scroll */
@media(min-width:1600px){.yr{grid-template-columns:repeat(6,minmax(0,1fr))}}
@media(max-width:1250px){.yr{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:900px){.yr{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}}
