.portal-page,.portal-login-page{min-height:100vh;padding-top:var(--nav-h);flex-direction:column;display:flex}.portal-login-box{background:var(--bg-2);border-radius:28px;padding:clamp(40px,6vw,72px) clamp(32px,5vw,64px);position:relative}.portal-login-cols{grid-template-columns:1fr 1fr;align-items:center;gap:clamp(32px,5vw,64px);display:grid}.portal-login-scene{width:500px;min-height:500px;position:absolute;top:-40px;right:-80px}.portal-three{pointer-events:none;filter:sepia()saturate(2)brightness(1.5);width:100%;height:100%;min-height:500px}@media (max-width:680px){.portal-login-cols{grid-template-columns:1fr}.portal-login-scene{display:none}}.portal-login-heading{letter-spacing:-.04em;margin-bottom:20px;font-size:clamp(38px,5.5vw,64px);font-weight:900;line-height:.95}.portal-login-form-wrap{max-width:440px}.portal-login-sub{color:var(--fg-muted);max-width:440px;margin-bottom:36px;font-size:clamp(15px,1.4vw,17px);line-height:1.65}.portal-login-form{flex-direction:column;gap:20px;display:flex}.portal-form-group{flex-direction:column;gap:7px;display:flex}.portal-form-label{color:var(--fg-subtle);font-size:12px;font-weight:600}.portal-login-btn{justify-content:center;width:100%;margin-top:4px}.portal-login-btn:disabled{opacity:.45;cursor:not-allowed}.portal-login-help{color:var(--fg-muted);margin-top:40px;font-size:15px}.portal-login-help a{color:var(--accent);font-weight:600}.portal-login-help a:hover{text-decoration:underline}.portal-header-row{justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.portal-nav-row{justify-content:space-between;align-items:center;gap:16px;margin-bottom:28px;display:flex}.portal-back-link{color:var(--fg-muted);font-size:13px;transition:color .2s}.portal-back-link:hover{color:var(--fg)}.portal-logout-btn{color:var(--fg-muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;margin-top:8px;padding:0;font-family:inherit;font-size:13px;font-weight:600;transition:color .2s}.portal-logout-btn:hover{color:var(--fg)}.portal-project-heading{margin-bottom:16px}.portal-project-meta{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:52px;display:flex}.portal-meta-item{color:var(--fg-muted);font-size:13px}.portal-meta-sep{color:var(--fg-muted);opacity:.3;font-size:13px}.portal-meta-delivered{color:#15803d;font-weight:600}[data-theme=dark] .portal-meta-delivered{color:#86efac}.portal-status{letter-spacing:.06em;text-transform:uppercase;white-space:nowrap;border-radius:100px;flex-shrink:0;align-items:center;padding:3px 10px;font-size:11px;font-weight:700;display:inline-flex}.portal-status--planning{background:var(--bg-2);color:var(--fg-muted)}.portal-status--in-progress{color:#1d4ed8;background:#dbeafe}.portal-status--review{color:#92400e;background:#fef3c7}.portal-status--delivered{color:#15803d;background:#dcfce7}.portal-status--archived{background:var(--bg-2);color:var(--fg-muted);opacity:.6}[data-theme=dark] .portal-status--in-progress{color:#93c5fd;background:#1e3a5f}[data-theme=dark] .portal-status--review{color:#fcd34d;background:#451a03}[data-theme=dark] .portal-status--delivered{color:#86efac;background:#052e16}.portal-projects-grid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:14px;display:grid}.portal-project-card{color:inherit;min-height:320px;text-decoration:none;transition:opacity .2s}.portal-project-card .pkg-name{min-height:120px}.portal-project-card:hover{opacity:.85}.portal-card-progress{align-items:center;gap:10px;margin-top:auto;display:flex}.portal-progress-bar{background:var(--border);border-radius:999px;flex:1;height:4px;overflow:hidden}.portal-progress-fill{background:var(--accent);border-radius:999px;height:100%}.portal-progress-label{color:var(--fg-muted);white-space:nowrap;font-size:11px}.portal-card-files{color:var(--fg-muted);margin-top:8px;font-size:12px}.portal-section{flex-direction:column;gap:16px;margin-top:48px;display:flex}.portal-section:first-of-type{margin-top:0}.portal-section-row{justify-content:space-between;align-items:baseline;gap:16px;display:flex}.portal-section-heading{letter-spacing:.12em;text-transform:uppercase;color:var(--fg-muted);font-size:11px;font-weight:700}.portal-milestone-count{color:var(--fg-muted);font-size:12px}.portal-brief{color:var(--fg-subtle);background:var(--bg-2);border-left:3px solid var(--accent);border-radius:12px;padding:20px 24px;font-size:15px;line-height:1.7}.portal-milestones{flex-direction:column;gap:3px;list-style:none;display:flex}.portal-milestone{background:var(--bg-2);border-radius:10px;align-items:center;gap:14px;padding:12px 16px;display:flex}.portal-milestone.done{opacity:.65}.portal-milestone-check{border:1.5px solid var(--border);color:#15803d;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;display:flex}.portal-milestone.done .portal-milestone-check{background:#dcfce7;border-color:#bbf7d0}[data-theme=dark] .portal-milestone.done .portal-milestone-check{color:#86efac;background:#052e16;border-color:#166534}.portal-milestone-title{flex:1;font-size:14px;line-height:1.4}.portal-milestone.done .portal-milestone-title{color:var(--fg-muted);text-decoration:line-through}.portal-milestone-date{color:var(--fg-muted);white-space:nowrap;font-size:11px}.portal-files-grid{flex-direction:column;gap:8px;display:flex}.portal-file-card{background:var(--bg-2);border:1px solid var(--border);border-radius:12px;align-items:center;gap:16px;padding:16px 20px;display:flex}.portal-file-icon{background:var(--fg);width:46px;height:46px;color:var(--bg);border-radius:10px;flex-shrink:0;justify-content:center;align-items:center;display:flex}.portal-file-type-label{letter-spacing:.06em;font-size:9px;font-weight:800}.portal-file-info{flex:1;min-width:0}.portal-file-name{margin-bottom:2px;font-size:14px;font-weight:600}.portal-file-desc{color:var(--fg-muted);white-space:nowrap;text-overflow:ellipsis;margin-bottom:5px;font-size:12px;overflow:hidden}.portal-file-meta{color:var(--fg-muted);gap:6px;font-size:11px;display:flex}.portal-file-download{border:1px solid var(--border);color:var(--fg);white-space:nowrap;border-radius:100px;flex-shrink:0;align-items:center;gap:6px;padding:8px 16px;font-size:12px;font-weight:600;transition:background .2s,border-color .2s;display:inline-flex}.portal-file-download:hover{background:var(--bg);border-color:var(--fg-muted)}@media (max-width:540px){.portal-projects-grid{grid-template-columns:1fr}.portal-file-card{flex-wrap:wrap}.portal-file-download{margin-left:62px}.portal-header-row{flex-direction:column;gap:4px}.portal-header-row .portal-logout-btn{margin-top:0}}
