/* ═══════════════════════════════════════════════════════════════
   style-portal.css — Layout compartilhado: sidebar + topbar + wrapper
   Usado por todas as páginas públicas standalone (via sidebar.js)
   ═══════════════════════════════════════════════════════════════ */

/* ── Layout ── */
body { background:var(--color-bg); color:var(--color-text); transition:background .2s, color .2s; }
.portal-wrapper { display:flex; min-height:100vh; }

/* ── Sidebar ── */
.portal-sidebar {
    width:220px; flex-shrink:0; background:var(--color-bg);
    border-right:1px solid var(--color-border);
    padding:0; position:sticky; top:56px; height:calc(100vh - 56px);
    overflow:hidden; transition:width .3s ease, padding .3s ease, border .3s ease;
    display:flex; flex-direction:column;
}
.side-nav {
    flex:1; overflow-y:auto; padding:16px 0;
}
.side-section-label {
    font-size:10px; font-weight:var(--font-w-semibold); text-transform:uppercase;
    letter-spacing:0.06em; color:var(--color-text-mid); padding:12px 20px 4px; margin-top:4px;
}
.side-link {
    display:flex; align-items:center; gap:10px; padding:9px 20px;
    font-size:13px; color:var(--color-text); text-decoration:none;
    border-radius:0; transition:all .15s;
}
.side-link:hover { background:var(--color-surface); color:var(--color-text); }
.side-link.active { background:var(--color-primary-light); color:var(--color-primary); font-weight:var(--font-w-medium); border-right:3px solid var(--color-primary); }
.side-link i { font-size:16px; width:20px; text-align:center; }
.side-sep { height:1px; background:var(--color-border); margin:8px 16px; }

/* ── Sidebar footer ── */
.side-footer {
    flex-shrink:0; padding:12px 20px 16px;
    border-top:1px solid var(--color-border);
}
.side-footer-link {
    display:block; font-size:12px; color:var(--color-text-mid);
    text-decoration:none; margin-bottom:6px;
}
.side-footer-link:hover { text-decoration:underline; color:var(--color-primary); }
.side-footer-text {
    display:block; font-size:10px; color:var(--color-text-muted);
    line-height:1.4;
}

/* ── Topbar ── */
.portal-topbar {
    position:sticky; top:0; z-index:100; background:var(--color-bg);
    border-bottom:1px solid var(--color-border);
    display:flex; align-items:center; padding:0 20px; height:56px; gap:12px;
}
.topbar-logos { display:flex; align-items:center; gap:8px; flex-shrink:0; }
.topbar-logos img { height:28px; }
.topbar-search {
    flex:1; max-width:480px; margin:0 16px; position:relative;
}
.topbar-search i { position:absolute; left:12px; top:50%; transform:translateY(-50%); color:var(--color-text-mid); font-size:14px; }
.topbar-search input {
    width:100%; padding:8px 12px 8px 36px; border:0.5px solid var(--color-border);
    border-radius:var(--radius-md); font-size:13px; font-family:var(--font-main);
    background:var(--color-surface); color:var(--color-text); outline:none; transition:all .2s;
}
.topbar-search input:focus { border-color:var(--color-primary); background:var(--color-bg); box-shadow:0 0 0 3px rgba(46,125,50,0.08); }
.topbar-right { display:flex; align-items:center; gap:10px; margin-left:auto; flex-shrink:0; order:99; }
.btn-entrar {
    display:inline-flex; align-items:center; gap:6px; padding:7px 18px;
    background:var(--color-primary); color:#fff; border:none; border-radius:var(--radius-md);
    font-size:13px; font-family:var(--font-main); font-weight:var(--font-w-medium);
    cursor:pointer; transition:all .15s; text-decoration:none;
}
.btn-entrar:hover { background:var(--color-primary-hover); }
.btn-entrar i { font-size:14px; }

/* ── Main content ── */
.portal-main { flex:1; min-width:0; padding:20px 24px 60px; transition:all .3s ease; }
.portal-content { flex:1; min-width:0; }

/* ── Search results overlay ── */
.search-results {
    position:absolute; top:100%; left:0; right:0; z-index:200;
    background:var(--color-bg); border:0.5px solid var(--color-border);
    border-radius:0 0 var(--radius-md) var(--radius-md);
    box-shadow:var(--shadow-md); max-height:400px; overflow-y:auto;
    display:none;
}
.search-results.open { display:block; }
.search-result-item {
    display:block; padding:10px 16px; text-decoration:none;
    border-bottom:1px solid var(--color-border); transition:background .1s;
}
.search-result-item:hover { background:var(--color-surface); }
.search-result-item:last-child { border:none; }
.sr-title { font-size:13px; color:var(--color-text); font-weight:var(--font-w-medium); }
.sr-path { font-size:11px; color:var(--color-text-mid); }

/* ── Sidebar collapse ── */
.portal-sidebar.collapsed { width:0; padding:0; overflow:hidden; border:none; flex-shrink:0; }
.sidebar-toggle {
    position:fixed; left:220px; top:72px; z-index:101; width:20px; height:36px;
    background:var(--color-surface); border:1px solid var(--color-border);
    border-left:none; border-radius:0 var(--radius-sm) var(--radius-sm) 0;
    cursor:pointer; display:flex; align-items:center; justify-content:center;
    font-size:12px; color:var(--color-text-mid); transition:left .3s ease;
}
.sidebar-toggle:hover { color:var(--color-text); background:var(--color-surface-alt); }
.sidebar-toggle.collapsed { left:0; }

/* ── Mobile ── */
.mobile-menu-btn { display:none; align-items:center; justify-content:center; }
.sidebar-close-btn { display:none; }
.btn-entrar-icon { display:none; }
.portal-avatar-slot { display:none; }

/* ── Dark mode ── */
html.darkmode .portal-topbar,
html.darkmode .portal-sidebar { background:var(--color-bg); border-color:var(--color-border-light); }
html.darkmode .side-link { color:var(--color-text-mid); }
html.darkmode .side-link:hover { background:var(--color-surface); color:var(--color-text); }
html.darkmode .side-link.active { background:var(--color-primary-light); color:var(--color-primary); }
html.darkmode .topbar-search input { background:var(--color-surface); color:var(--color-text); border-color:var(--color-border); }
html.darkmode .topbar-search input:focus { box-shadow:0 0 0 3px rgba(78,201,176,0.12); }
html.darkmode .btn-entrar { background:rgba(78,201,176,0.12); color:#4EC9B0; border:1px solid rgba(78,201,176,0.30); }
html.darkmode .btn-entrar:hover { background:rgba(78,201,176,0.20); color:#5ED5BC; }
html.darkmode .search-results { border-color:var(--color-border); }

/* ── Dark mode — logos ── */
.topbar-logos img[alt="Escola de Pós"] { filter:brightness(0); }
html.darkmode .topbar-logos img { filter:invert(1); }
html.darkmode .topbar-logos img[alt="Escola de Pós"] { filter:brightness(0) invert(1); }

/* ── Dark mode — sidebar ── */
html.darkmode .portal-sidebar { border-color:var(--color-border); }

/* ── Mobile (max-width:900px) ── */
@media (max-width:900px) {
    .portal-sidebar { display:none; }
    .portal-sidebar.open { display:block; position:fixed; left:0; top:56px; bottom:0; z-index:200; width:260px; box-shadow:var(--shadow-md); }
    .mobile-menu-btn { display:flex; }
    .sidebar-close-btn {
        display:flex; align-items:center; gap:6px;
        width:100%; padding:10px 20px;
        background:none; border:none; border-bottom:1px solid var(--color-border);
        font-family:var(--font-main); font-size:13px; font-weight:var(--font-w-medium);
        color:var(--color-text); cursor:pointer; transition:all .15s;
    }
    .sidebar-close-btn:hover { background:var(--color-surface); color:var(--color-text); }
    .sidebar-close-btn i { font-size:14px; }
    html.darkmode .sidebar-close-btn { color:var(--color-text-mid); border-color:var(--color-border); }
    html.darkmode .sidebar-close-btn:hover { color:var(--color-text); }
    .sidebar-toggle { display:none; }
    .portal-main { padding:16px 16px 60px; }
}

/* ── Mobile (max-width:480px) ── */
@media (max-width:480px) {
    .mobile-menu-btn { display:flex !important; }
    .btn-entrar-desktop { display:none; }
    .btn-entrar-icon {
        display:inline-flex; align-items:center; justify-content:center;
        background:none; border:none; color:var(--color-text-mid) !important;
        font-size:18px; text-decoration:none; flex-shrink:0;
        padding:4px;
    }
    .portal-avatar-slot { display:block; }
    .portal-avatar-slot:empty { display:none; }
    .topbar-logos img[style*="height:26px"] { display:none; }
}

/* ── Mobile (max-width:600px) ── */
@media (max-width:600px) {
    .portal-main { padding:12px 12px 40px; }
    .topbar-search { display:none; }
}

/* ── Mobile (max-width:389px) ── */
@media (max-width:389px) {
    .portal-topbar { padding:0 8px; gap:6px; height:48px; }
    .topbar-logos { gap:4px; }
    .topbar-logos img { height:20px; }
    .topbar-logos img[style*="height:32px"] { height:24px !important; }
    .topbar-logos img[style*="height:26px"] { height:18px !important; }
    .btn-entrar { padding:6px 10px; font-size:11px; gap:4px; min-height:36px; }
    .btn-entrar i { font-size:12px; }
    .darkmode-toggle { min-width:36px; max-width:36px; font-size:15px; padding:4px; }
    .topbar-right { gap:4px; }

    .portal-sidebar.open { width:100vw; max-width:100vw; }
    .side-link { padding:10px 16px; font-size:14px; min-height:44px; }
    .side-section-label { padding:10px 16px 4px; }

    .portal-main { padding:10px 10px 40px; }
    .mobile-menu-btn { min-width:40px; min-height:40px; }
    .mobile-subbar { top:48px; }

    .search-results { max-height:300px; }
    .search-result-item { padding:8px 12px; min-height:44px; display:flex; flex-direction:column; justify-content:center; }
    .sr-title { font-size:12px; word-break:break-word; }
}
