.portal-shell { --navy:#074d65; --lime:#b3d957; --yellow:#ffd448; --cream:#fffdf5; color:var(--navy); font-size:16px; }
.portal-shell *, .portal-shell *::before, .portal-shell *::after { box-sizing:border-box; }
.portal-auth { max-width:760px; margin:3rem auto; padding:1rem; display:grid; gap:1.25rem; }
.portal-auth-intro { padding:1.5rem; border-radius:24px; background:var(--navy); color:var(--cream); }
.portal-auth-card, .portal-card, .portal-link-card { background:#fff; border:1px solid rgba(7,77,101,.12); box-shadow:0 12px 32px rgba(7,77,101,.08); border-radius:18px; padding:1.25rem; }
.portal-page-title { margin:0; font-size:clamp(1.55rem,3vw,2.2rem); line-height:1.15; }
.portal-kicker { display:block; margin-bottom:.35rem; color:var(--lime); font-size:.78rem; font-weight:800; letter-spacing:.1em; text-transform:uppercase; }
.portal-form { display:grid; gap:.9rem; }
.portal-field { display:grid; gap:.35rem; color:var(--navy); font-size:14px; font-weight:700; }
.portal-label { min-height:1.1rem; }
.portal-field input, .portal-field select, .portal-field textarea, .portal-link-card input { width:100%; min-height:44px; border:1px solid rgba(7,77,101,.28); border-radius:10px; background:var(--cream); color:var(--navy); padding:.65rem .75rem; font:inherit; font-size:16px; }
.portal-field textarea { min-height:96px; resize:vertical; }
.portal-field input:focus, .portal-field select:focus, .portal-field textarea:focus, .portal-link-card input:focus, .portal-button:focus-visible, .portal-nav-item:focus-visible { outline:3px solid var(--yellow); outline-offset:2px; }
.portal-button { min-height:42px; border:1px solid var(--navy); border-radius:10px; padding:.55rem .9rem; background:#fff; color:var(--navy); font:inherit; font-size:14px; font-weight:800; cursor:pointer; text-align:center; text-decoration:none; }
.portal-button:hover { background:#edf7df; }
.portal-button:disabled { cursor:wait; opacity:.65; }
.portal-button-primary { background:var(--navy); color:#fff; }
.portal-button-primary:hover { background:#063b4e; }
.portal-button-quiet { border-color:rgba(7,77,101,.26); }
.portal-button-danger { border-color:#aa3434; color:#8a2020; }
.portal-demo { display:flex; flex-wrap:wrap; gap:.6rem; align-items:center; margin-top:1rem; padding-top:1rem; border-top:1px solid rgba(7,77,101,.14); }
.portal-demo-label { flex-basis:100%; margin:0; color:#536d75; font-size:14px; }
.portal-status { min-height:1.2rem; margin:.65rem 0 0; color:#536d75; font-size:14px; }
.portal-status[data-kind="error"] { color:#9b2226; }.portal-status[data-kind="success"] { color:#36723a; }
.portal-workspace { min-height:520px; display:grid; grid-template-columns:235px minmax(0,1fr); background:var(--cream); border:1px solid rgba(7,77,101,.12); }
.portal-sidebar { min-height:100%; display:flex; flex-direction:column; gap:1rem; padding:1.1rem; background:var(--navy); color:#fff; }
.portal-identity { display:grid; gap:.25rem; padding:.5rem .5rem 1rem; border-bottom:1px solid rgba(255,255,255,.18); }.portal-identity .portal-kicker { margin:0; }
.portal-nav { display:grid; gap:.25rem; }.portal-nav-item { width:100%; border:0; border-radius:8px; padding:.65rem .7rem; background:transparent; color:#e8f4f5; font:inherit; font-size:14px; font-weight:700; text-align:start; cursor:pointer; }.portal-nav-item:hover,.portal-nav-item.is-active { background:rgba(179,217,87,.2); color:#fff; }
.portal-sidebar > .portal-button { border-color:rgba(255,255,255,.5); background:transparent; color:#fff; }
.portal-main { min-width:0; padding:clamp(1rem,3vw,2rem); }.portal-main-header { display:flex; justify-content:space-between; gap:1rem; align-items:baseline; padding-bottom:1rem; border-bottom:1px solid rgba(7,77,101,.13); }.portal-user-line { margin:0; color:#536d75; font-size:14px; }.portal-body { display:grid; gap:1rem; }.portal-grid { display:grid; gap:1rem; }.portal-grid-3 { grid-template-columns:repeat(3,minmax(0,1fr)); }.portal-grid-2 { grid-template-columns:repeat(2,minmax(0,1fr)); }
.portal-card-title { margin:0 0 .85rem; font-size:1rem; }.portal-summary-value { margin:.2rem 0; font-size:1.35rem; font-weight:800; }.portal-muted { margin:.25rem 0 0; color:#536d75; font-size:14px; }.portal-empty { margin:0; padding:1rem; border-radius:10px; background:#f1f5ec; color:#536d75; font-size:14px; }
.portal-filter-bar { display:flex; flex-wrap:wrap; gap:.75rem; align-items:end; padding:1rem; border:1px solid rgba(7,77,101,.12); border-radius:14px; background:#fff; }.portal-filter-bar .portal-field { min-width:min(100%,210px); flex:1; }
.portal-list { display:grid; gap:.7rem; }.portal-list-item,.portal-family-row,.portal-application-row { display:flex; align-items:center; gap:.85rem; padding:1rem; border:1px solid rgba(7,77,101,.12); border-radius:13px; background:#fff; }.portal-list-copy { flex:1; min-width:0; }.portal-list-copy h3 { margin:.15rem 0; font-size:1rem; }.portal-date-chip,.portal-type-badge { flex:0 0 auto; display:inline-block; border-radius:99px; padding:.28rem .55rem; background:#eaf4d5; color:var(--navy); font-size:.78rem; font-weight:800; }.portal-type-badge { background:#e5f1f3; }.portal-content-body { margin:.45rem 0 0; white-space:pre-wrap; color:#36545d; font-size:14px; }.portal-album-gallery { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:.55rem; margin-top:.8rem; }.portal-album-gallery img { display:block; width:100%; aspect-ratio:4/3; border-radius:10px; object-fit:cover; background:#edf4ea; }.portal-family-row { justify-content:space-between; }.portal-family-row > div:first-child { display:grid; gap:.2rem; }.portal-row-actions { display:flex; flex-wrap:wrap; gap:.45rem; justify-content:flex-end; }.portal-audience-summary,.portal-existing-files { margin:0; padding:.7rem .8rem; border-radius:10px; background:#edf5dc; color:var(--navy); font-size:14px; font-weight:700; }.portal-existing-files { background:#eef4f5; font-weight:600; overflow-wrap:anywhere; }.portal-link-card { display:grid; grid-template-columns:auto minmax(0,1fr) auto; gap:.65rem; align-items:center; border-color:var(--lime); }.portal-link-card .portal-muted { grid-column:1 / -1; }.portal-application-row { justify-content:space-between; }.portal-application-row select { min-height:40px; border:1px solid rgba(7,77,101,.28); border-radius:8px; background:var(--cream); color:var(--navy); padding:.3rem; font:inherit; font-size:14px; }
@media (max-width:760px) { .portal-workspace { grid-template-columns:1fr; }.portal-sidebar { min-height:auto; }.portal-nav { grid-template-columns:repeat(3,minmax(0,1fr)); }.portal-nav-item { text-align:center; font-size:13px; }.portal-sidebar > .portal-button { margin-top:0; }.portal-grid-3,.portal-grid-2 { grid-template-columns:1fr; }.portal-main-header { display:grid; }.portal-link-card { grid-template-columns:1fr; }.portal-link-card .portal-muted { grid-column:auto; } }
@media (max-width:430px) { .portal-nav { grid-template-columns:repeat(2,minmax(0,1fr)); }.portal-list-item,.portal-family-row,.portal-application-row { align-items:flex-start; flex-direction:column; }.portal-row-actions { justify-content:flex-start; }.portal-list-item > .portal-button { width:100%; }.portal-main { padding:1rem; } }
.portal-state{display:inline-flex;align-self:start;padding:.18rem .5rem;border-radius:99px;background:#edf5dc;color:#174f62;font-size:12px;font-weight:800}.portal-state+*{margin-top:.2rem}.portal-field input:focus,.portal-field select:focus,.portal-field textarea:focus,.portal-link-card input:focus,.portal-button:focus-visible,.portal-nav-item:focus-visible{outline:3px solid #fff;outline-offset:2px;box-shadow:0 0 0 5px #8a4a00}

.storage-file-row{display:flex;gap:14px;align-items:start;padding:16px 0;border-bottom:1px solid var(--line)}.storage-file-row input{width:20px;height:20px;flex-shrink:0}.storage-file-info{display:grid;gap:4px;min-width:0;overflow-wrap:anywhere}.storage-preview{margin-top:20px}.storage-preview li{overflow-wrap:anywhere}.storage-file-row:last-of-type{margin-bottom:18px}
