/* Shared visual primitives; navigation and content are scoped by role. Mobile first. */
.dashboard-page { background:#f8faf8; color:#183c34; }
.db-icon { width:22px; height:22px; flex:0 0 22px; vertical-align:middle; }
.db-header { height:76px; padding:0 5%; display:flex; align-items:center; justify-content:space-between; gap:16px; background:#fff; border-bottom:1px solid #e5ece7; }
.db-logo { color:#0f766e; font-size:27px; font-weight:800; letter-spacing:-1px; line-height:1; }
.db-logo span { display:block; margin-top:7px; font-size:10px; font-weight:500; letter-spacing:1px; }
.db-header-actions,.db-account,.db-explore { display:flex; align-items:center; gap:12px; }
.db-account { font-size:13px; font-weight:500; }
.db-account .db-avatar { width:38px; height:38px; }
.db-explore { min-height:44px; padding:10px; color:#0f766e; }
.db-explore span,.db-account>span:not(.db-avatar) { display:none; }
.db-avatar { width:52px; height:52px; flex:0 0 52px; border-radius:50%; object-fit:cover; background:#e0eee6; }
.db-initial { display:grid; place-items:center; font-size:19px; font-weight:600; color:#0f655b; }
.db-main { padding:28px 20px 110px; min-width:0; max-width:1200px; }
.db-main h1 { font-size:27px; line-height:1.3; letter-spacing:-.9px; font-weight:600; }
.db-main h2,.db-contact h2 { font-size:19px; font-weight:600; line-height:1.5; letter-spacing:-.35px; }
.db-main h3 { font-size:15px; font-weight:600; line-height:1.45; }
.db-heading { display:flex; justify-content:space-between; gap:16px; margin-bottom:26px; }
.db-heading p { color:#60736b; margin-top:8px; font-size:13px; }
.db-eyebrow { font-size:10px; letter-spacing:1.7px; font-weight:600; text-transform:uppercase; color:#456f5e; }
.db-sidebar>.db-eyebrow,.db-sidebar-bottom { display:none; }
.db-nav { position:fixed; bottom:0; left:0; right:0; display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); padding:7px 6px calc(7px + env(safe-area-inset-bottom)); background:#fffffff5; backdrop-filter:blur(14px); border-top:1px solid #dfe9e3; z-index:40; }
.db-nav a { display:flex; align-items:center; justify-content:center; flex-direction:column; gap:4px; min-height:54px; font-size:10px; color:#62736c; border-radius:14px; }
.db-nav a.is-active { color:#0b665b; background:#e7f3ec; font-weight:600; }
.db-button { display:inline-flex; align-items:center; justify-content:center; gap:10px; min-height:46px; padding:12px 20px; border-radius:28px; background:#0f766e; color:#fff; font:500 13px/1.5 Poppins,Arial,sans-serif; text-align:center; transition:background .15s; border:1px solid transparent; }
.db-button:hover { background:#0b5b55; }
.db-button.is-secondary { background:#fff; border-color:#dce7df; color:#285447; }
.db-button.is-secondary:hover { background:#eef6f0; }
.db-button .db-icon { width:18px; height:18px; flex-basis:18px; }
.db-welcome { display:flex; justify-content:space-between; align-items:center; overflow:hidden; position:relative; padding:28px 24px; border-radius:26px; background:linear-gradient(120deg,#e2f2e5,#cde7dc); margin-bottom:22px; }
.db-welcome>div:first-child { z-index:1; }
.db-welcome h2 { font-size:31px; line-height:1.25; letter-spacing:-1px; margin:12px 0; }
.db-welcome p { max-width:300px; color:#43695a; font-size:13px; margin-bottom:22px; }
.db-welcome .db-button { font-size:12px; padding-inline:16px; }
.db-welcome-art { display:none; }
.db-stats { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:24px 0 30px; }
.db-stats article { padding:15px 10px; border:1px solid #e3eae4; background:#fff; border-radius:18px; }
.db-stats article>.db-icon { color:#487c68; margin-bottom:9px; width:20px; height:20px; }
.db-stats strong { display:block; font-size:25px; line-height:1.3; font-weight:600; }
.db-stats span { display:block; font-size:10px; line-height:1.55; margin-top:5px; color:#63736b; }
.db-section-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin:0 0 16px; }
.db-section-head>a,.db-goal>a { display:inline-flex; align-items:center; gap:6px; color:#0f766e; font-size:12px; font-weight:500; min-height:44px; }
.db-section-head .db-icon,.db-goal>a .db-icon { width:16px; height:16px; flex-basis:16px; }
.db-section-head p { font-size:12px; color:#60736b; margin-top:4px; }
.db-columns { display:grid; gap:20px; margin-bottom:32px; }
.db-lesson,.db-panel { background:#fff; border:1px solid #e0e9e2; border-radius:22px; padding:20px; min-width:0; }
.db-lesson.is-featured { border-color:#b9d7c8; }
.db-lesson-top { display:flex; justify-content:space-between; align-items:center; gap:8px; margin-bottom:22px; }
.db-lesson-top>span:first-child { display:flex; align-items:center; gap:7px; font-size:11px; font-weight:500; }
.db-lesson-top .db-icon { width:16px; height:16px; flex-basis:16px; }
.db-badge { display:inline-block; font-size:10px; padding:5px 9px; border-radius:20px; color:#216a4c; background:#e7f4eb; white-space:nowrap; }
.db-badge.is-pending { color:#805311; background:#fff1d5; }
.db-badge.is-muted { color:#69615f; background:#f0edeb; }
.db-person { display:flex; align-items:center; gap:13px; }
.db-person p { font-size:11px; color:#60736b; margin-top:5px; }
.db-lesson-bottom { border-top:1px solid #edf1ec; margin-top:22px; padding-top:16px; display:flex; align-items:center; justify-content:space-between; gap:10px; }
.db-lesson-bottom>span { font-size:11px; font-weight:500; }
.db-goal { padding:24px; border-radius:22px; background:#f4eedf; }
.db-icon-tile { display:inline-grid; place-items:center; width:42px; height:42px; flex:0 0 42px; border-radius:13px; background:#e9f1e8; color:#426d51; }
.db-goal .db-icon-tile { background:#e9dfc4; margin-bottom:12px; }
.db-goal p { margin:8px 0; font-size:13px; color:#6a6855; }
.db-teachers { display:grid; grid-template-columns:1fr; gap:20px; }
.db-teacher { border-radius:22px; border:1px solid #e3eae4; overflow:hidden; background:white; position:relative; }
.db-teacher>a>img { width:100%; height:230px; object-fit:cover; object-position:50% 30%; }
.db-teacher-copy { padding:18px; }
.db-teacher-copy>span { font-size:11px; color:#63736b; }
.db-teacher-copy h3 { margin:4px 0 8px; font-size:21px; }
.db-teacher-copy p { font-size:12px; color:#60736b; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; min-height:39px; }
.db-teacher-copy>strong { display:block; margin-top:16px; font-size:15px; }
.db-teacher-copy small { font-weight:400; color:#60736b; }
.db-save { position:absolute; top:13px; right:13px; width:44px; height:44px; border-radius:50%; background:#fff; display:grid; place-items:center; box-shadow:0 2px 8px #183c3410; }
.db-save.is-saved .db-icon { fill:#0f766e; color:#0f766e; }
.db-lesson-grid { display:grid; gap:18px; margin-bottom:28px; }
.db-tabs { display:flex; gap:8px; margin-bottom:22px; }
.db-tabs button { padding:12px 20px; min-height:44px; border-radius:24px; background:white; color:#60736b; border:1px solid #dce7df; }
.db-tabs button[aria-pressed=true] { background:#183c34; color:#fff; border-color:#183c34; }
.db-empty { grid-column:1/-1; text-align:center; padding:40px 20px; background:#fff; border:1px dashed #d5e3d9; border-radius:22px; }
.db-empty>.db-icon { width:38px; height:38px; color:#739581; margin-bottom:16px; }
.db-empty p { color:#60736b; font-size:13px; max-width:380px; margin:10px auto 22px; }
.db-panel>p { font-size:13px; color:#60736b; }
.db-request-text { padding-block:18px; }
.db-actions { display:flex; flex-wrap:wrap; gap:10px; margin-top:20px; }
.db-row { display:flex; align-items:center; gap:14px; padding:18px 0; border-bottom:1px solid #e8eee8; }
.db-row:last-child { border-bottom:0; }
.db-row>div { flex:1; min-width:0; }
.db-row p,.db-row small { font-size:12px; color:#60736b; }
.db-user-row { flex-wrap:wrap; }
.db-user-row>.db-button { margin-left:auto; }
.db-inbox { background:#fff; border:1px solid #e0e9e2; border-radius:22px; overflow:hidden; }
.db-thread-list { display:flex; overflow:auto; padding:10px; gap:8px; border-bottom:1px solid #e0e9e2; }
.db-thread-list button { display:flex; align-items:center; gap:10px; text-align:left; padding:12px; border-radius:16px; flex:0 0 auto; min-width:180px; }
.db-thread-list button[aria-current=true] { background:#eaf5ef; }
.db-thread-list .db-avatar { width:40px; height:40px; flex-basis:40px; }
.db-thread-list strong { display:block; font-size:12px; }
.db-thread-list small { color:#60736b; font-size:10px; }
.db-dot { width:7px; height:7px; border-radius:50%; background:#0f766e; }
.db-conversation { min-width:0; }
.db-conversation>header { padding:18px 20px; border-bottom:1px solid #edf1ec; }
.db-conversation>header h2 { font-size:16px; }
.db-conversation>header span { font-size:11px; color:#60736b; }
.db-message-list { padding:24px 16px; display:flex; flex-direction:column; gap:16px; max-height:450px; min-height:220px; overflow:auto; }
.db-message { max-width:90%; align-self:flex-start; background:#f0f3ee; padding:16px; border-radius:4px 18px 18px; }
.db-message.is-own { align-self:flex-end; background:#e0f0e6; border-radius:18px 4px 18px 18px; }
.db-message p { font-size:13px; white-space:pre-wrap; }
.db-message small { display:block; margin-top:8px; font-size:10px; color:#60736b; }
.db-message-form { padding:18px; border-top:1px solid #edf1ec; }
.db-message-form>label { display:block; font-size:12px; margin-bottom:6px; font-weight:500; }
.db-message-form>div { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:12px; align-items:center; margin-top:12px; }
.db-message-form small { font-size:10px; color:#60736b; flex:1 1 150px; }
.db-form { display:grid; gap:18px; margin-top:24px; }
.db-form label { display:grid; gap:7px; font-size:12px; font-weight:500; }
.db-form input,.db-form textarea,.db-form select,.db-message-form textarea,.db-search input { width:100%; min-width:0; border:1px solid #d7e3da; border-radius:13px; background:#fff; padding:13px 14px; color:#183c34; font:400 16px/1.6 Poppins,Arial,sans-serif; }
.db-form textarea,.db-message-form textarea { resize:vertical; min-height:90px; }
.db-form input::placeholder,.db-form textarea::placeholder,.db-message-form textarea::placeholder { color:#7c8981; font-size:13px; }
.db-form .db-button { justify-self:start; }
.db-hint { color:#63736b; font-size:11px; }
.db-profile-panel { max-width:680px; }
.db-signout { display:inline-flex; align-items:center; gap:8px; min-height:44px; margin-top:26px; color:#60736b; font-size:12px; }
.db-stats span { overflow-wrap:anywhere; }
.db-form-pair { display:grid; gap:16px; grid-template-columns:1fr 1fr; }
.db-search { display:flex; align-items:center; gap:12px; max-width:550px; margin-bottom:20px; }
.db-dialog { width:min(560px,calc(100% - 32px)); max-height:calc(100dvh - 40px); border:0; border-radius:26px; padding:34px 24px; color:#183c34; box-shadow:0 24px 100px #0e312d30; }
.db-dialog::backdrop { background:#12382e66; backdrop-filter:blur(3px); }
.db-dialog h2 { font-size:22px; margin:8px 25px 16px 0; line-height:1.4; }
.db-dialog h3 { font-size:15px; margin:16px 0 8px; }
.db-dialog p { font-size:13px; color:#60736b; }
.db-close { position:absolute; right:10px; top:10px; width:44px; height:44px; border-radius:50%; font-size:26px; }
.db-close:hover { background:#edf5ef; }
.db-detail-status { margin-top:14px; }
.db-toast { position:fixed; left:20px; right:20px; bottom:95px; max-width:520px; margin:auto; padding:16px 22px; background:#183c34; color:#fff; border-radius:16px; box-shadow:0 8px 30px #183c3426; z-index:70; font-size:12px; }
.db-contact { max-width:1040px; margin:auto; padding:30px 20px 60px; }
.db-contact h1 { font-size:30px; line-height:1.3; letter-spacing:-1px; }
.db-back { display:inline-block; min-height:44px; margin-bottom:16px; font-size:12px; color:#0f766e; }
.db-contact-grid { display:grid; gap:24px; }
.db-contact-teacher .db-avatar { width:90px; height:90px; margin-bottom:16px; }
.db-contact-teacher>strong { display:block; font-size:24px; margin:18px 0; }
.db-contact-teacher>strong small { font-size:13px; font-weight:400; }
.db-contact-teacher hr { border:0; border-top:1px solid #e1e9e2; margin:24px 0; }
.db-contact-teacher p:has(.db-icon) { display:flex; gap:10px; margin-top:14px; align-items:center; }
#contact-status a { display:block; text-decoration:underline; color:#0f766e; margin-top:8px; }
.db-access { min-height:100dvh; display:grid; place-items:center; padding:24px; background:linear-gradient(150deg,#f6faf5,#d7ebdf); }
.db-access-card { width:min(440px,100%); padding:32px; border-radius:28px; background:#fff; box-shadow:0 12px 60px #15382d0c; }
.db-access-card h1 { font-size:28px; line-height:1.3; margin:30px 0 12px; letter-spacing:-.8px; }
.db-access-card>p { font-size:13px; color:#60736b; }
.db-access-card .db-button { width:100%; margin:24px 0 12px; }
.db-access-card>a:last-child { display:block; font-size:12px; padding:12px 0; }
@media (min-width:600px) {
  .db-main { padding:36px 32px 110px; }
  .db-teachers { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .db-welcome-art { display:block; position:relative; width:230px; height:200px; flex:0 0 230px; }
  .db-art-orbit { position:absolute; inset:0; border:1px solid #acd1b9; border-radius:50%; transform:rotate(-20deg) scaleY(.7); }
  .db-art-book { position:absolute; top:32px; left:60px; display:grid; place-items:center; width:110px; height:125px; border-radius:26px; background:#fffdf6; box-shadow:8px 8px 0 #a5c7ae; transform:rotate(-12deg); }
  .db-art-book .db-icon { width:64px; height:64px; color:#285e48; }
  .db-art-star { position:absolute; top:0; right:15px; font-size:56px; color:#3e785d; }
  .db-art-note { position:absolute; bottom:0; left:22px; font-size:10px; background:#fff8df; padding:10px 16px; border-radius:20px; transform:rotate(6deg); }
  .db-welcome h2 { font-size:36px; }
  .db-stats article { display:flex; align-items:center; gap:16px; padding:20px; }
  .db-stats article>.db-icon { margin:0; }
  .db-stats span { font-size:11px; }
  .db-lesson-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .db-explore span,.db-account>span:not(.db-avatar) { display:block; }
  .db-header-actions { gap:28px; }
}
@media (min-width:1024px) {
  .db-header { padding:0 40px; height:88px; }
  .db-layout { display:grid; grid-template-columns:220px minmax(0,1fr); max-width:1480px; margin:auto; }
  .db-sidebar { padding:36px 20px; border-right:1px solid #e3eae4; display:flex; flex-direction:column; min-height:calc(100vh - 88px); }
  .db-sidebar>.db-eyebrow { display:block; padding:0 15px; margin-bottom:22px; }
  .db-nav { position:sticky; top:24px; display:flex; flex-direction:column; border:0; background:none; padding:0; gap:6px; backdrop-filter:none; }
  .db-nav a { flex-direction:row; justify-content:flex-start; gap:14px; padding:14px 16px; min-height:52px; font-size:13px; }
  .db-sidebar-bottom { display:flex; flex-direction:column; gap:16px; margin-top:auto; padding:100px 15px 0; font-size:12px; color:#63736b; }
  .db-sidebar-bottom a { min-height:44px; display:flex; align-items:center; gap:12px; }
  .db-main { padding:36px 40px 60px; }
  .db-main h1 { font-size:31px; }
  .db-columns { grid-template-columns:minmax(0,1.5fr) minmax(0,1fr); align-items:stretch; gap:24px; }
  .db-columns>section:first-child { display:flex; flex-direction:column; }
  .db-columns .db-lesson { flex:1; }
  .db-goal { padding:26px; }
  .db-teachers { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .db-teacher>a>img { height:205px; }
  .db-welcome { padding:32px; }
  .db-inbox { display:grid; grid-template-columns:235px minmax(0,1fr); }
  .db-thread-list { display:flex; flex-direction:column; border-right:1px solid #e0e9e2; border-bottom:0; }
  .db-toast { bottom:28px; }
  .db-contact { padding-top:40px; }
  .db-contact-grid { grid-template-columns:350px minmax(0,1fr); align-items:start; }
  .db-contact-teacher { position:sticky; top:24px; }
}
@media (prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } .db-button { transition:none; } }
.admin-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); }
.admin-metrics article { display:block; }
.admin-metrics strong { font-size:24px; }
.admin-metrics small { display:block; font-size:10px; color:#60736b; margin-top:8px; }
.admin-filters { display:flex; flex-wrap:wrap; gap:12px; margin-bottom:20px; align-items:center; }
.admin-filters .admin-filters { margin:0; }
.admin-filters .db-search { margin:0; flex:1 1 220px; }
.admin-filters select { min-height:48px; padding:10px 14px; background:white; border:1px solid #d7e3da; border-radius:13px; font:inherit; }
.admin-queue { display:flex; justify-content:space-between; gap:10px; padding:18px 0; border-bottom:1px solid #e0e9e2; font-size:13px; }
.admin-queue strong { color:#0f766e; }
.admin-bar { margin-top:20px; }
.admin-bar label { display:flex; justify-content:space-between; font-size:13px; margin-bottom:7px; }
.admin-bar meter { width:100%; height:18px; accent-color:#0f766e; }
.admin-bar meter::-webkit-meter-bar { background:#e7efe8; border:0; }
.admin-bar meter::-webkit-meter-optimum-value { background:#0f766e; }
.admin-conversation { max-height:60dvh; }
.admin-conversation .db-message { max-width:100%; width:100%; }
.admin-moderate { display:block; min-height:44px; margin-top:6px; font-size:11px; text-decoration:underline; }
@media(min-width:1100px){.admin-metrics { grid-template-columns:repeat(4,minmax(0,1fr)); }}
@media(max-width:1023px){[data-dashboard-page=admin] .db-nav { display:flex; overflow-x:auto; }[data-dashboard-page=admin] .db-nav a { flex:0 0 76px; }}

/* Avisos, avaliações e perfil */
.db-notice { display:flex; align-items:center; justify-content:space-between; gap:14px; flex-wrap:wrap; margin:0 0 22px; padding:16px 18px; border-radius:18px; background:#fff6dd; border:1px solid #f0dca4; color:#5e4710; font-size:13px; }
.db-notice.is-warning { background:#fdecea; border-color:#f1c4bf; color:#7a2a24; }
.db-notice a { text-decoration:underline; text-underline-offset:3px; }
.db-notice .db-button { min-height:40px; padding:8px 16px; }
.db-stars { color:#e0a526; letter-spacing:1px; font-size:15px; white-space:nowrap; }
.db-rating { border:0; padding:0; margin:0; display:flex; flex-direction:row-reverse; justify-content:flex-end; gap:4px; }
.db-rating legend { float:left; width:100%; margin-bottom:10px; font-size:12px; font-weight:500; }
.db-rating input { position:absolute; opacity:0; width:1px; height:1px; }
.db-rating label { font-size:36px; line-height:1; color:#cfd9d2; cursor:pointer; padding:4px; min-width:44px; min-height:44px; text-align:center; }
.db-rating input:checked ~ label, .db-rating label:hover, .db-rating label:hover ~ label { color:#e0a526; }
.db-rating input:focus-visible + label { outline:2px solid #0f766e; border-radius:8px; }
.db-photo-fallback { display:grid; place-items:center; width:100%; height:230px; background:#e0eee6; color:#0f655b; font-size:64px; font-weight:600; }
.db-avatar-edit { align-items:flex-start; }
.db-avatar-edit .db-avatar { width:76px; height:76px; flex-basis:76px; }
.db-avatar-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.db-avatar-actions .db-button { min-height:40px; padding:8px 16px; }
.db-file { cursor:pointer; }
.db-file:focus-within { outline:2px solid #0f766e; outline-offset:2px; }
.admin-subhead { margin:34px 0 16px; }
.db-profile-panel + .db-profile-panel { margin-top:20px; }
.db-form .db-hint { margin:0; font-weight:400; }
.db-panel .db-form + .db-hint, .db-heading + .db-notice { margin-top:0; }
.db-notice + .db-profile-panel, .db-heading + .db-profile-panel { margin-top:0; }
.db-loading { padding:40px 20px; text-align:center; color:#60736b; }

/* Primeiros passos do professor: sem navegação até o perfil ser enviado */
.is-onboarding .db-sidebar { display:none; }
.is-onboarding .db-layout { display:block; }
.is-onboarding .db-main { max-width:744px; margin-inline:auto; }
.db-steps { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; margin:0 0 26px; padding:0; list-style:none; counter-reset:step; }
.db-steps li { counter-increment:step; padding-top:10px; border-top:3px solid #dce7df; color:#7c8981; font-size:11px; font-weight:500; }
.db-steps li::before { content:counter(step) '. '; }
.db-steps li.is-done { border-color:#89b79b; color:#285447; }
.db-steps li[aria-current] { border-color:#0f766e; color:#183c34; }
.db-onboarding .db-form { margin-top:0; }
.db-step { display:grid; gap:18px; }
.db-step>p { margin-top:-12px; font-size:13px; color:#60736b; }
.db-onboarding .db-actions { margin-top:6px; }
.db-onboarding-done .auth-success { margin:0 0 20px; }
.db-onboarding-done p { margin-top:12px; font-size:14px; line-height:1.7; }

/* Administração: perfil completo do professor antes da decisão */
.admin-profile-head { display:flex; align-items:center; gap:16px; margin-bottom:8px; }
.admin-profile-head .db-avatar { width:84px; height:84px; flex-basis:84px; font-size:30px; }
.admin-details { display:grid; grid-template-columns:minmax(110px,32%) minmax(0,1fr); gap:10px 16px; margin:18px 0 0; font-size:13px; }
.admin-details dt { color:#60736b; }
.admin-details dd { margin:0; white-space:pre-line; overflow-wrap:anywhere; }
