:root{--portal-bg:#f8fafc;--portal-surface:#fff;--portal-surface-muted:#eef2f7;--portal-line:#d8e0ea;--portal-line-strong:#b8c4d4;--portal-text:#172033;--portal-muted:#5d6b80;--portal-dim:#8190a4;--portal-primary:#2563eb;--portal-primary-hover:#1d4ed8;--portal-success:#166534;--portal-warn:#92400e;--portal-display:"Geist", "Geist Sans", "GeistSans", sans-serif;--portal-body:"Geist", "Geist Sans", "GeistSans", sans-serif;--portal-mono:"Geist Mono", monospace;font-family:var(--portal-body);color:var(--portal-text);background:var(--portal-bg)}*{box-sizing:border-box}html,body,#portal-app{min-height:100%;margin:0}body{background:var(--portal-bg);color:var(--portal-text)}button,input{font:inherit}button{cursor:pointer}.portal-shell{grid-template-rows:auto 1fr;min-height:100vh;display:grid}.portal-header{border-bottom:1px solid var(--portal-line);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#ffffffdb;justify-content:space-between;align-items:center;gap:1rem;padding:1rem clamp(1rem,4vw,3rem);display:flex}.portal-brand{font-family:var(--portal-display);align-items:center;gap:.75rem;font-weight:800;display:flex}.portal-brand-logo{width:clamp(7.75rem,18vw,10rem);height:auto;display:block}.portal-main{width:min(70rem,100%);margin:0 auto;padding:clamp(1.2rem,4vw,3rem)}.portal-login{place-items:center;min-height:calc(100vh - 5rem);display:grid}.portal-panel{border:1px solid var(--portal-line);background:var(--portal-surface);border-radius:8px;width:min(34rem,100%);padding:2rem;box-shadow:0 18px 48px #0f172a14}.portal-panel h1,.portal-documents h1{font-family:var(--portal-display);letter-spacing:0;margin:0;font-size:clamp(2rem,5vw,3.4rem);line-height:.98}.portal-panel p,.portal-documents p{color:var(--portal-muted);line-height:1.55}.portal-form{gap:.8rem;margin-top:1.4rem;display:grid}.portal-form label{color:var(--portal-muted);gap:.35rem;font-size:.92rem;font-weight:600;display:grid}.portal-form input{border:1px solid var(--portal-line-strong);min-height:2.7rem;color:var(--portal-text);background:#fff;border-radius:6px;padding:.55rem .7rem}.portal-form input:focus{border-color:var(--portal-primary);outline:none;box-shadow:0 0 0 3px #2563eb24}.portal-button{border:1px solid var(--portal-primary);background:var(--portal-primary);color:#fff;border-radius:6px;min-height:2.55rem;padding:.58rem .9rem;font-weight:800}.portal-button:hover{background:var(--portal-primary-hover)}.portal-button.secondary{background:var(--portal-surface);color:var(--portal-text);border-color:var(--portal-line-strong)}.portal-access-request{margin:1rem 0 0;font-size:.92rem}.portal-access-request a{color:var(--portal-primary);font-weight:800;text-decoration:none}.portal-access-request a:hover{color:var(--portal-primary-hover);text-decoration:underline}.portal-status{border:1px solid var(--portal-line);background:var(--portal-surface-muted);color:var(--portal-muted);border-radius:6px;margin-top:1rem;padding:.85rem 1rem}.portal-status.success{color:var(--portal-success);background:#22c55e1a;border-color:#1665343d}.portal-status.error{color:var(--portal-warn);background:#f59e0b1a;border-color:#92400e47}.portal-document-header{justify-content:space-between;align-items:end;gap:1rem;margin-bottom:1.5rem;display:flex}.portal-user{color:var(--portal-muted);text-align:right;font-size:.9rem}.portal-document-list{gap:.75rem;display:grid}.portal-document-row{border:1px solid var(--portal-line);background:var(--portal-surface);border-radius:8px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1rem;padding:1rem;display:grid}.portal-document-row h2{font-family:var(--portal-display);margin:0;font-size:1.05rem;line-height:1.25}.portal-document-row p{margin:.35rem 0 0}.portal-meta{color:var(--portal-dim);font-family:var(--portal-mono);margin-top:.55rem;font-size:.75rem}.portal-empty{border:1px dashed var(--portal-line-strong);color:var(--portal-muted);text-align:center;border-radius:8px;padding:2rem}@media (width<=720px){.portal-header,.portal-document-header,.portal-document-row{flex-direction:column;align-items:stretch}.portal-document-row{grid-template-columns:1fr}.portal-user{text-align:left}}
