@keyframes dwMsgIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes dwTyping{0%,80%,to{transform:translateY(0);opacity:.4}40%{transform:translateY(-6px);opacity:1}}@keyframes doriQuickUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes doriFloat{0%,to{transform:translateY(0) rotate(0deg)}25%{transform:translateY(-1px) rotate(1.5deg)}50%{transform:translateY(-2px) rotate(0deg)}75%{transform:translateY(-1px) rotate(-1.5deg)}}@keyframes dwBlink{0%,to{opacity:1}50%{opacity:0}}.dori-widget,.dori-widget-overlay{position:fixed;opacity:0;visibility:hidden}.dori-widget{top:0;left:var(--menu-groups-width, 112px);bottom:0;width:400px;background:var(--surface);border-right:1px solid var(--border);box-shadow:4px 0 24px rgba(0,0,0,.12),1px 0 0 var(--border);display:flex;flex-direction:column;z-index:9990;transform:translateX(-100%);transition:transform .35s cubic-bezier(.4,0,.2,1),opacity .3s ease,visibility .3s ease}.dori-widget.active{transform:translateX(0)}.dori-widget-overlay{inset:0;background:rgba(0,0,0,.3);z-index:9989;transition:opacity .3s ease,visibility .3s ease}.dori-widget-overlay.active,.dori-widget.active{opacity:1;visibility:visible}.dori-widget-header{display:flex;align-items:center;gap:12px;padding:0 20px;height:var(--menu-groups-width, 112px);background:var(--primary);color:var(--primary-contrast);flex-shrink:0}.dori-widget-header-icon{width:56px;height:56px;border-radius:var(--radius-lg, 12px);background:repeating-linear-gradient(0deg,transparent,transparent 4px,rgba(0,0,0,.03) 4px,rgba(0,0,0,.03) 5px),repeating-linear-gradient(90deg,transparent,transparent 4px,rgba(0,0,0,.03) 4px,rgba(0,0,0,.03) 5px),#4d9a45;display:flex;align-items:center;justify-content:center;font-size:20px;flex-shrink:0;position:relative;border:2px solid transparent}.dori-widget-header-icon svg{width:28px;height:28px;animation:doriFloat 3s ease-in-out infinite;stroke:#000}.dori-widget-header-icon::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:2.5px;background:conic-gradient(from 180deg,#00bfa5 0deg,#ffc107 100deg,#2196f3 200deg,#00bfa5 360deg);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;opacity:.85;pointer-events:none;z-index:1}.dori-widget-header-info{flex:1;min-width:0}.dori-widget-header-info h4{margin:0;font-size:16px;font-weight:600;line-height:1.2}.dori-widget-header-info span{font-size:12px;opacity:.85}.dori-widget-close,.dori-widget-flip{background:0 0;border:0;color:var(--primary-contrast);cursor:pointer;width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:background .2s;flex-shrink:0}.dori-widget-close:hover,.dori-widget-flip:hover{background:rgba(255,255,255,.2)}.dori-widget-flip{transition:background .2s,transform .3s ease}.dori-widget--right .dori-widget-flip{transform:scaleX(-1)}.dori-widget-messages{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;gap:12px;background:var(--bg)}.dori-widget-messages::-webkit-scrollbar{width:6px}.dori-widget-messages::-webkit-scrollbar-track{background:0 0}.dori-widget-messages::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:3px}.dori-widget-messages::-webkit-scrollbar-thumb:hover{background:var(--muted)}.dori-widget .dw-msg{max-width:85%;padding:12px 16px;border-radius:16px;font-size:14px;line-height:1.6;word-wrap:break-word;animation:dwMsgIn .3s ease}.dori-widget .dw-msg-dori{align-self:flex-start;background:var(--surface);color:var(--text);border:1px solid var(--border);border-bottom-left-radius:4px}.dori-widget .dw-msg-user{align-self:flex-end;background:var(--primary);color:var(--primary-contrast);border-bottom-right-radius:4px}.dori-widget .dw-msg-dori a{color:var(--primary);text-decoration:underline;font-weight:500;transition:color .2s}.dori-widget .dw-msg-dori a:hover{color:var(--primary-hover)}.dori-widget .curso-item{background:var(--bg-2);border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin:6px 0}.dori-widget .curso-item .titulo{font-weight:600;font-size:14px;color:var(--text);margin-bottom:4px}.dori-widget .curso-item .meta{font-size:13px;color:var(--muted);line-height:1.5}.dori-widget .progress-bar{height:6px;background:var(--border);border-radius:3px;overflow:hidden;margin-top:6px}.dori-widget .progress-fill{height:100%;background:var(--primary);border-radius:3px;transition:width .4s ease}.dori-widget .dw-typing{align-self:flex-start;display:flex;gap:5px;padding:12px 18px;background:var(--surface);border:1px solid var(--border);border-radius:16px;border-bottom-left-radius:4px}.dori-widget .dw-typing span{width:8px;height:8px;background:var(--muted);border-radius:50%;animation:dwTyping 1.2s infinite ease-in-out}.dori-widget .dw-typing span:nth-child(2){animation-delay:.2s}.dori-widget .dw-typing span:nth-child(3){animation-delay:.4s}.dori-widget-quick{position:relative;padding:8px 16px 0;background:var(--surface);flex-shrink:0}.dori-quick-menu button,.dori-quick-trigger{display:flex;align-items:center;width:100%;font-size:14px;font-family:inherit;cursor:pointer}.dori-quick-menu,.dori-quick-trigger{border:1px solid var(--border);border-radius:12px}.dori-quick-trigger{justify-content:space-between;padding:10px 14px;color:var(--text-2);background:var(--bg);outline:0;transition:border-color .2s,box-shadow .2s,background .2s}.dori-quick-trigger:hover{border-color:var(--primary);color:var(--primary)}.dori-quick-trigger.open{border-color:var(--primary);box-shadow:0 0 0 3px var(--focus)}.dori-quick-trigger svg{flex-shrink:0;transition:transform .25s ease;opacity:.6}.dori-quick-trigger.open svg{transform:rotate(180deg);opacity:1}.dori-quick-menu{position:absolute;left:16px;right:16px;bottom:100%;margin-bottom:6px;background:var(--surface);box-shadow:0-8px 24px rgba(0,0,0,.15);padding:6px;display:none;flex-direction:column;z-index:10;max-height:280px;overflow-y:auto}.dori-quick-menu.open{display:flex;animation:doriQuickUp .2s ease}.dori-quick-menu button{gap:8px;padding:9px 12px;color:var(--text);background:0 0;border:0;border-radius:8px;transition:background .15s,color .15s;text-align:left}.dori-quick-menu button:hover{background:var(--primary-light, rgba(13, 148, 136, .1));color:var(--primary)}.dori-quick-menu::-webkit-scrollbar{width:5px}.dori-quick-menu::-webkit-scrollbar-track{background:0 0}.dori-quick-menu::-webkit-scrollbar-thumb{background:var(--border-2);border-radius:3px}.dori-widget-input{display:flex;align-items:center;gap:10px;padding:14px 16px;border-top:1px solid var(--border);background:var(--surface);flex-shrink:0}.dori-widget-input input{flex:1;border:1px solid var(--border);border-radius:24px;padding:10px 18px;font-size:14px;background:var(--bg);color:var(--text);outline:0;transition:border-color .2s,box-shadow .2s}.dori-widget-input input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--focus)}.dori-widget-input input::placeholder{color:var(--muted)}.dori-menu-btn,.dori-widget-input button{display:flex;align-items:center;justify-content:center;cursor:pointer}.dori-widget-input button{width:40px;height:40px;border-radius:50%;border:0;background:var(--primary);color:var(--primary-contrast);font-size:17px;transition:background .2s,transform .1s;flex-shrink:0}.dori-widget-input button:hover{background:var(--primary-hover)}.dori-widget-input button:active{transform:scale(.93)}.dori-menu-btn{position:relative;width:56px;flex:0 1 56px;min-height:40px;border-radius:var(--radius-lg, 12px);background:0 0;border:2px solid transparent;transition:background .25s ease,color .25s ease,border-color .25s ease,box-shadow .25s ease;color:var(--menu-dark-text, #a1a1aa)}.dori-menu-btn.active,.dori-menu-btn:hover{background:repeating-linear-gradient(0deg,transparent,transparent 4px,rgba(0,0,0,.03) 4px,rgba(0,0,0,.03) 5px),repeating-linear-gradient(90deg,transparent,transparent 4px,rgba(0,0,0,.03) 4px,rgba(0,0,0,.03) 5px),#4d9a45;color:#000;border-color:transparent}.dori-menu-btn.active{box-shadow:0 0 12px rgba(13,148,136,.4)}.dori-menu-btn svg{width:28px;height:28px;animation:doriFloat 3s ease-in-out infinite}.dori-menu-btn .dori-eye,.dori-widget-header-icon .dori-eye{transition:opacity .06s ease}.dori-menu-btn .dori-eye.blink,.dori-widget-header-icon .dori-eye.blink{opacity:0}.dori-menu-btn .dori-arm-l,.dori-widget-header-icon .dori-arm-l{transform-origin:right center;transition:transform .3s ease-in-out}.dori-menu-btn .dori-arm-r,.dori-widget-header-icon .dori-arm-r{transform-origin:left center;transition:transform .3s ease-in-out}.dori-menu-btn::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:2.5px;background:conic-gradient(from 180deg,#00bfa5 0deg,#ffc107 100deg,#2196f3 200deg,#00bfa5 360deg);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;opacity:0;pointer-events:none;z-index:1;transition:opacity .25s ease}.dori-menu-btn:hover::before{opacity:.8}.dori-menu-btn.active::before{opacity:1}.dori-menu-btn .dori-tooltip{display:none;position:absolute;left:calc(100% + 10px);top:50%;transform:translateY(-50%);background:var(--surface);color:var(--text);font-size:13px;font-weight:500;padding:6px 12px;border-radius:8px;box-shadow:var(--shadow-md);border:1px solid var(--border);white-space:nowrap;pointer-events:none;z-index:9999}.admin-menu.is-collapsed .dori-menu-btn:hover .dori-tooltip{display:block}.dori-menu-btn .dori-online-dot{position:absolute;top:2px;right:2px;width:8px;height:8px;border-radius:50%;background:var(--success, #22c55e);border:2px solid var(--menu-dark-bg, #18181b);z-index:2}.dori-widget--right{left:auto;right:0;border-right:none;border-left:1px solid var(--border);box-shadow:-4px 0 24px rgba(0,0,0,.12),-1px 0 0 var(--border);transform:translateX(100%)}.dori-widget--right.active{transform:translateX(0)}.menu-right .dori-widget:not(.dori-widget--right){left:auto;right:var(--menu-groups-width, 112px);border-right:none;border-left:1px solid var(--border);box-shadow:-4px 0 24px rgba(0,0,0,.12),-1px 0 0 var(--border);transform:translateX(100%)}.menu-right .dori-widget:not(.dori-widget--right).active{transform:translateX(0)}.menu-right .dori-widget--right{right:var(--menu-groups-width, 112px)}.menu-right .dori-menu-btn .dori-tooltip{left:auto;right:calc(100% + 10px)}@media (min-width:1600px){.dori-widget{width:480px}}@media (max-width:1024px){.dori-widget{width:360px}}@media (max-width:768px){.dori-widget,.menu-right .dori-widget,.menu-right .dori-widget--right{left:0;right:auto;width:100%;border-left:none;border-right:none;border-radius:0}.dori-widget .dori-widget-header{padding-top:env(safe-area-inset-top,0px)}.dori-mobile-fab{display:none!important}}.dori-mobile-fab{display:none;position:fixed;bottom:74px;right:16px;width:52px;height:52px;border-radius:50%;background:var(--primary);color:var(--primary-contrast);border:0;cursor:pointer;align-items:center;justify-content:center;box-shadow:var(--shadow-lg);z-index:9989;font-size:22px;transition:transform .2s,box-shadow .2s}.dori-mobile-fab:hover{transform:scale(1.08);box-shadow:0 6px 20px rgba(13,148,136,.4)}.dori-mobile-fab.active{background:var(--danger, #ef4444)}.dw-msg-historico{opacity:.65}.dw-separator{text-align:center;color:rgba(255,255,255,.3);font-size:11px;padding:8px 0;margin:4px 0 8px;border-bottom:1px solid rgba(255,255,255,.08)}.dw-feedback{display:flex;gap:4px;margin-top:6px;padding-top:4px;border-top:1px solid rgba(255,255,255,.06);font-size:12px;color:rgba(255,255,255,.4);align-items:center}.dw-fb-btn{background:0 0;border:1px solid rgba(255,255,255,.1);border-radius:12px;padding:2px 8px;font-size:13px;cursor:pointer;opacity:.5;transition:opacity .2s,background .2s,transform .15s}.dw-fb-btn:hover{opacity:1;background:rgba(255,255,255,.08);transform:scale(1.15)}.dw-fb-enviado{font-size:11px;opacity:.6;border-top:none;padding-top:2px}.dw-sugestoes{display:flex;flex-wrap:wrap;gap:6px;padding:8px 4px;justify-content:center}.dw-sugestao-chip{background:rgba(167,139,250,.12);border:1px solid rgba(167,139,250,.25);color:#c4b5fd;border-radius:16px;padding:5px 12px;font-size:12px;cursor:pointer;transition:background .2s,transform .15s;white-space:nowrap}.dori-action-btn:hover,.dw-sugestao-chip:hover{background:rgba(167,139,250,.25);transform:scale(1.05)}.dw-tw-texto{display:block;margin-bottom:10px}.dw-msg-streaming::after{content:"▊";animation:dwBlink .6s infinite;color:var(--primary);font-weight:300}.dori-action-btn{display:inline-block;background:rgba(167,139,250,.12);border:1px solid rgba(167,139,250,.3);color:#c4b5fd;padding:7px 14px;border-radius:18px;font-size:12.5px;font-weight:500;font-family:inherit;cursor:pointer;transition:background .2s,transform .15s,opacity .2s;margin:3px 4px 3px 0;text-decoration:none;line-height:1.3;white-space:nowrap}.dori-action-btn:hover{transform:scale(1.03)}.dori-action-btn:active{transform:scale(.97)}.dori-action-btn:disabled{cursor:not-allowed;opacity:.5;transform:none}.dori-action-btn--link{background:rgba(46,204,113,.12);border-color:rgba(46,204,113,.3);color:#6ee7b7}.dori-action-btn--link:hover{background:rgba(46,204,113,.25)}.dori-widget .dw-msg-humano{align-self:flex-start;background:#dbeafe;color:#1e3a5f;border:1px solid #93c5fd;border-bottom-left-radius:4px}.dori-widget .dw-msg-humano::before{content:"🧑‍💼 Atendente";display:block;font-size:11px;font-weight:600;color:#3b82f6;margin-bottom:4px}.dori-human-btn{margin-top:4px;padding-top:10px!important;border-top:1px solid var(--border)!important;border-radius:0 0 8px 8px!important;color:#f59e0b!important}.dori-human-btn:hover{background:#fef3c7!important;color:#92400e!important}@media (prefers-reduced-motion:reduce){.dori-menu-btn svg,.dori-widget-header-icon{animation:none!important}.dori-action-btn:hover{transform:none}}
@media (min-width:769px){body.dori-aberta{overflow:visible!important}body.dori-aberta .main-content{transition:margin-left .35s cubic-bezier(.4,0,.2,1),margin-right .35s cubic-bezier(.4,0,.2,1)!important}body.dori-aberta:not(.dori-direita) .main-content{margin-left:calc(var(--menu-groups-width, 112px) + 400px)!important;margin-right:0!important}body.dori-aberta.dori-direita .main-content{margin-left:var(--menu-width-expanded)!important;margin-right:calc(var(--menu-groups-width, 112px) + 400px)!important}html.menu-right body.dori-aberta .main-content{margin-left:0!important;margin-right:calc(var(--menu-groups-width, 112px) + 400px)!important}body.dori-aberta .dori-widget-overlay{opacity:0!important;background:transparent!important;pointer-events:none!important}}
@media (min-width:1600px){body.dori-aberta:not(.dori-direita) .main-content{margin-left:calc(var(--menu-groups-width, 112px) + 480px)!important}body.dori-aberta.dori-direita .main-content{margin-right:calc(var(--menu-groups-width, 112px) + 480px)!important}html.menu-right body.dori-aberta .main-content{margin-right:calc(var(--menu-groups-width, 112px) + 480px)!important}}
@media (min-width:769px) and (max-width:1024px){body.dori-aberta:not(.dori-direita) .main-content{margin-left:calc(var(--menu-groups-width, 112px) + 360px)!important}body.dori-aberta.dori-direita .main-content{margin-right:calc(var(--menu-groups-width, 112px) + 360px)!important}html.menu-right body.dori-aberta .main-content{margin-right:calc(var(--menu-groups-width, 112px) + 360px)!important}}

/* ========================================================================
   TIPOGRAFIA ESTILO WHATSAPP — leitura mais leve, contraste real no <strong>
   Aplica nas bubbles de mensagem (Dori, usuario, humano, historico)
   ======================================================================== */
.dori-widget .dw-msg {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 14.2px;
    line-height: 19px;
    font-weight: 400;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}
.dori-widget .dw-msg-dori { color: #111b21; }
[data-theme=dark] .dori-widget .dw-msg-dori { color: #e9edef; }
.dori-widget .dw-msg p { margin: 0 0 6px; }
.dori-widget .dw-msg p:last-child { margin-bottom: 0; }
.dori-widget .dw-msg strong,
.dori-widget .dw-msg b { font-weight: 600; }
.dori-widget .dw-msg-dori a { font-weight: 400; }

/* ========================================================================
   MARKDOWN RICO da Dori (h2/h3/blockquote/tabela/code/mermaid)
   Cores via vars do tema — funciona em tema claro e escuro automaticamente
   ======================================================================== */
.dori-widget .dw-md-h2 {
    margin: 14px 0 6px;
    font-size: 15.5px;
    font-weight: 700;
    color: var(--text);
    border-bottom: 1px solid var(--border);
    padding-bottom: 4px;
}
.dori-widget .dw-md-h3 {
    margin: 10px 0 4px;
    font-size: 14px;
    font-weight: 600;
    color: var(--text);
}
.dori-widget .dw-md-ul,
.dori-widget .dw-md-ol {
    margin: 4px 0;
    padding-left: 20px;
    color: var(--text);
}
.dori-widget .dw-md-ul li,
.dori-widget .dw-md-ol li {
    margin: 2px 0;
}
.dori-widget .dw-md-blockquote {
    margin: 8px 0;
    padding: 10px 14px;
    border-left: 3px solid var(--primary);
    background: var(--primary-light, rgba(13, 148, 136, .08));
    border-radius: 0 6px 6px 0;
    color: var(--text);
}
.dori-widget .dw-md-blockquote strong { color: var(--text); }

.dori-widget .dw-md-link {
    color: var(--primary);
    text-decoration: underline;
    font-weight: 500;
}
.dori-widget .dw-md-link:hover { color: var(--primary-hover, var(--primary)); }

.dori-widget .dw-md-code-inline {
    background: var(--bg-2, var(--bg));
    color: var(--primary);
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 0.9em;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    border: 1px solid var(--border);
}
.dori-widget .dw-md-pre {
    background: var(--bg-2, var(--bg));
    color: var(--text);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 10px 12px;
    margin: 8px 0;
    overflow-x: auto;
    font-size: 12.5px;
}
.dori-widget .dw-md-code {
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    color: inherit;
    background: transparent;
    padding: 0;
    border: 0;
}

.dori-widget .dw-md-table {
    width: 100%;
    border-collapse: collapse;
    margin: 8px 0;
    font-size: 13px;
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 6px;
    overflow: hidden;
}
.dori-widget .dw-md-table thead th {
    background: var(--primary);
    color: var(--primary-contrast);
    padding: 8px 10px;
    text-align: left;
    font-weight: 600;
    border-bottom: 2px solid var(--primary-hover, var(--primary));
}
.dori-widget .dw-md-table tbody td {
    padding: 7px 10px;
    border-bottom: 1px solid var(--border);
    color: var(--text);
}
.dori-widget .dw-md-table tbody tr:last-child td { border-bottom: 0; }
.dori-widget .dw-md-table tbody tr:nth-child(even) td {
    background: var(--bg-2, transparent);
}

.dori-widget .dw-md-mermaid {
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: 12px;
    margin: 8px 0;
    overflow-x: auto;
    text-align: center;
}
.dori-widget .dw-md-mermaid svg { max-width: 100%; height: auto; }

/* ========================================================================
   BOTAO TTS — "Ouvir" para exemplos de frase no idioma alvo (modo Professora)
   Marker 🔊[lang|texto] vira <button class="dw-tts-btn"> via _doriTtsEnhance
   ======================================================================== */
.dori-widget .dw-tts-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--primary-light, rgba(13, 148, 136, .12));
    border: 1px solid var(--primary);
    color: var(--primary);
    padding: 3px 10px;
    border-radius: 14px;
    font-size: 12.5px;
    font-weight: 500;
    font-family: inherit;
    cursor: pointer;
    margin: 0 0 0 4px;
    line-height: 1.4;
    vertical-align: baseline;
    transition: background .15s, transform .1s, color .15s;
    white-space: nowrap;
}
.dori-widget .dw-tts-btn:hover {
    background: var(--primary);
    color: var(--primary-contrast);
    transform: scale(1.04);
}
.dori-widget .dw-tts-btn:active { transform: scale(.96); }
.dori-widget .dw-tts-btn.dw-tts-loading,
.dori-widget .dw-tts-btn.dw-tts-playing {
    cursor: wait;
    opacity: .75;
}
.dori-widget .dw-tts-btn.dw-tts-playing {
    background: var(--primary);
    color: var(--primary-contrast);
}
/* ========================================================================
   TUTORA DA AULA (F2 — docs/tarefas/dori-tutora-estudo.md §5.2)
   O cartao de abertura do painel quando o aluno entra pelo botao
   "Tirar duvida" da topbar do player: diz QUAL aula a Dori esta lendo.
   Cor so por token (docs/design.md) — o widget vive nos 2 temas.
   ======================================================================== */
.dori-widget .dw-tutora-cab {
    border-left: 3px solid var(--primary);
    padding: 2px 0 2px 10px;
    margin-bottom: 10px;
}
.dori-widget .dw-tutora-tag {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: var(--primary);
    margin-bottom: 3px;
}
.dori-widget .dw-tutora-aula {
    font-size: 14.5px;
    font-weight: 600;
    color: var(--text);
    line-height: 1.3;
}
.dori-widget .dw-tutora-curso {
    font-size: 12px;
    color: var(--muted);
    margin-top: 2px;
}

/* O CONVITE DA REVISAO EM QUADRINHOS (docs/gibi.md §15): so aparece quando a aula
   tem gibi publicado. Cartao clicavel inteiro — nao e um link de rodape, e a segunda
   porta do material extra (a primeira e o fechamento da aula). Cor por token: no
   widget o roxo do gibi nao existe como token, entao o destaque vem do --primary. */
/* `.dw-msg-dori a` (regra antiga do widget) sublinha TODO link dentro da bolha — no
   cartao inteiro isso vira duas linhas sublinhadas. Especificidade maior desliga so aqui. */
.dori-widget .dw-msg-dori a.dw-tutora-gibi,
.dori-widget .dw-tutora-gibi {
    display: block;
    margin: 4px 0 2px;
    padding: 11px 13px;
    border: 1px solid var(--primary);
    border-left-width: 4px;
    border-radius: var(--radius-lg);
    background: var(--primary-light);
    text-decoration: none !important;
    transition: transform .15s ease, box-shadow .15s ease;
}
.dori-widget .dw-tutora-gibi:hover {
    transform: translateY(-1px);
    box-shadow: var(--shadow-md);
}
.dori-widget .dw-tutora-gibi-rotulo {
    display: block;
    font-size: 13px;
    font-weight: 700;
    color: var(--primary);
    margin-bottom: 3px;
}
.dori-widget .dw-tutora-gibi-txt {
    display: block;
    font-size: 12.5px;
    line-height: 1.4;
    color: var(--text-2);
}
/* AS TIRAS: paineis de verdade do gibi (miniaturas de 360px geradas pelo
   GibiMiniaturaService). Quadrinho se vende pelo desenho — o cartao so-texto nao
   dizia que tem arte do outro lado. Levemente tortas, como gibi na banca; endireitam
   e sobem no hover. */
.dori-widget .dw-tutora-gibi-tiras {
    display: flex;
    gap: 6px;
    margin-bottom: 9px;
}
.dori-widget .dw-tutora-gibi-mini {
    flex: 1 1 0;
    min-width: 0;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    border-radius: 8px;
    border: 1px solid var(--border);
    background: var(--bg-2);
    box-shadow: var(--shadow-sm);
    transition: transform .25s cubic-bezier(.34, 1.56, .64, 1);
}
.dori-widget .dw-tutora-gibi-mini:nth-child(1) { transform: rotate(-1.6deg); }
.dori-widget .dw-tutora-gibi-mini:nth-child(3) { transform: rotate(1.6deg); }
.dori-widget .dw-tutora-gibi:hover .dw-tutora-gibi-mini {
    transform: rotate(0) translateY(-2px);
}
.dori-widget .dw-tutora-gibi-cta {
    display: inline-block;
    margin-top: 8px;
    font-size: 12px;
    font-weight: 600;
    color: var(--primary);
    transition: transform .2s ease;
}
.dori-widget .dw-tutora-gibi:hover .dw-tutora-gibi-cta {
    transform: translateX(3px);
}
@media (prefers-reduced-motion: reduce) {
    .dori-widget .dw-tutora-gibi,
    .dori-widget .dw-tutora-gibi-mini,
    .dori-widget .dw-tutora-gibi-cta { transition: none; }
    .dori-widget .dw-tutora-gibi-mini { transform: none !important; }
}

/* Os chips da tutora carregam o NOME do conceito da aula ("Me explica: Fatores
   Multiplicantes"), que e longo. O chip padrao tem white-space:nowrap e vazaria
   a largura do painel — aqui ele pode quebrar e alinhar a esquerda. */
.dori-widget .dw-sugestoes { justify-content: flex-start; }
.dori-widget .dw-sugestoes .dw-sugestao-chip {
    white-space: normal;
    text-align: left;
    max-width: 100%;
    line-height: 1.35;
}
