.portal-main [hidden]{display: none !important}.portal-main{padding: clamp(20px,3vw,40px) var(--edge) 72px}.portal-wrap{width: 100%;max-width: 860px;margin: 0 auto}.portal-wrap--wide{max-width: 1160px}.portal-head{display: flex;align-items: flex-end;justify-content: space-between;gap: 20px 32px;flex-wrap: wrap;padding-bottom: 26px;margin-bottom: 8px;border-bottom: 1px solid var(--hairline)}.portal-head-text{min-width: 0}.portal-kicker{font-size: 13px;font-weight: 600;color: var(--brand);margin: 0 0 10px}.portal-head h1{font-size: clamp(28px,3.4vw,40px);line-height: 1.08;letter-spacing: -1.2px;font-weight: 800;color: var(--text);margin: 0 0 10px;text-wrap: balance;overflow-wrap: anywhere}.portal-meta{font-size: 14.5px;line-height: 1.5;color: var(--text-muted);margin: 0}.portal-meta strong{color: var(--text-soft);font-weight: 600}.portal-status{min-height: 0;font-size: 14px}.portal-status:not(:empty){margin: 18px 0 0}.portal-section{margin-top: 34px}.portal-section-head{display: flex;align-items: baseline;justify-content: space-between;gap: 16px;margin-bottom: 12px}.portal-main :is(h2,h3,h4){text-align: left}.portal-main :is(h2,h3){font-size: 18px;font-weight: 700;letter-spacing: -0.3px;color: var(--text);margin: 0}.portal-section > h2{margin-bottom: 12px}.portal-count{font-size: 13px;color: var(--text-muted);margin: 0;font-variant-numeric: tabular-nums}.portal-card{background: color-mix(in oklab,var(--surface) 86%,transparent);border: 1px solid var(--keyline);border-radius: 14px}.portal-card--form{padding: 22px 22px 24px}.portal-empty{font-size: 14.5px;line-height: 1.55;color: var(--text-muted);margin: 0;padding: 26px 22px}.portal-empty--rail{padding: 4px 0 12px}.portal-notice{font-size: 14px;line-height: 1.5;color: var(--text-soft);margin: 22px 0 0;padding: 13px 16px;background: var(--brand-soft);border: 1px solid var(--brand-border);border-radius: 10px}.portal-help{font-size: 14px;line-height: 1.55;color: var(--text-muted);margin: 34px 0 0}.btn-small,a.btn-small{display: inline-flex;align-items: center;justify-content: center;gap: 6px;min-height: 36px;padding: 7px 14px;border-radius: 8px;font-size: 13px;font-weight: 600;line-height: 1.2;white-space: nowrap;color: var(--text);background: transparent;border: 1px solid var(--hairline-strong);transition: background .15s ease,border-color .15s ease}.btn-small:hover,a.btn-small:hover{color: var(--text);background: rgba(255,255,255,0.07);border-color: #FFFFFF}.btn-small[disabled]{opacity: 0.55;cursor: default}.btn-small--brand,.btn-small--brand:hover{color: var(--brand-ink);background: var(--brand);border-color: var(--brand)}.btn-small--brand:hover{filter: brightness(1.06)}.btn-small--danger{color: #FCA5A5;border-color: rgba(252,165,165,0.45)}.btn-small--danger:hover{color: #FFFFFF;background: rgba(220,38,38,0.30);border-color: #FCA5A5}.btn-small--confirm,.btn-small--confirm:hover{color: #FFFFFF;background: #B91C1C;border-color: #B91C1C}.btn-small--confirm:hover{filter: brightness(1.12)}.form-card:has(.portal-login) .form-title{text-align: left}.portal-login{margin-top: 20px}.password-row{position: relative}.password-row input{padding-right: 76px}.password-toggle{position: absolute;top: 50%;right: 6px;transform: translateY(-50%);min-width: 56px;min-height: 32px;padding: 4px 10px;border-radius: 6px;font-size: 12.5px;font-weight: 600;color: var(--text-soft)}.password-toggle:hover{color: var(--text);background: rgba(255,255,255,0.07)}.portal-login .submit-btn[disabled],.password-form button[disabled]{opacity: 0.7;cursor: default;transform: none;box-shadow: none}.password-form{max-width: 420px}.password-form .field:last-of-type{margin-bottom: 6px}.password-form .btn-small{margin-top: 12px}.password-form .field-hint{margin: 0}.file-list,.login-list,.client-list,.upload-queue{list-style: none;margin: 0;padding: 0}.file-list > li,.login-list > li{display: grid;grid-template-columns: auto minmax(0,1fr) auto;align-items: center;gap: 12px 16px;padding: 15px 18px}.login-list > li{grid-template-columns: minmax(0,1fr) auto}.file-list > li + li,.login-list > li + li{border-top: 1px solid var(--hairline)}.file-badge{display: inline-flex;align-items: center;justify-content: center;width: 46px;min-height: 40px;padding: 2px 3px;border-radius: 8px;background: var(--surface-2);border: 1px solid var(--hairline);font-size: 10.5px;font-weight: 700;letter-spacing: 0.04em;color: var(--text-soft)}.file-name,.login-name{font-size: 15px;font-weight: 600;line-height: 1.35;color: var(--text);margin: 0 0 3px;overflow-wrap: anywhere}.file-meta,.login-meta{display: flex;flex-wrap: wrap;gap: 2px 16px;font-size: 13px;line-height: 1.45;color: var(--text-muted);margin: 0;font-variant-numeric: tabular-nums}.login-meta span:first-child{overflow-wrap: anywhere}.row-actions{display: flex;flex-wrap: wrap;justify-content: flex-end;gap: 8px}.admin-grid{display: grid;grid-template-columns: 280px minmax(0,1fr);gap: 40px;align-items: start;margin-top: 30px}.admin-rail h2{margin-bottom: 12px}.admin-detail > .portal-card{margin-top: 38px}.client-list{display: flex;flex-direction: column;gap: 4px;margin-bottom: 22px}.client-list:empty{margin-bottom: 0}.client-button{display: block;width: 100%;text-align: left;padding: 11px 13px;border-radius: 10px;border: 1px solid transparent;color: var(--text-soft);transition: background .15s ease,border-color .15s ease}.client-button:hover{background: rgba(255,255,255,0.05)}.client-button[aria-current="true"]{background: var(--brand-soft);border-color: var(--brand-border)}.client-button-name{display: block;font-size: 14.5px;font-weight: 600;line-height: 1.3;color: var(--text);overflow-wrap: anywhere}.client-button-meta{display: block;font-size: 12.5px;line-height: 1.4;color: var(--text-muted);margin-top: 2px;font-variant-numeric: tabular-nums}.rail-form{padding-top: 20px;border-top: 1px solid var(--hairline);display: flex;flex-direction: column;gap: 8px;align-items: flex-start}.rail-form .form-status:not(:empty){margin: 0}.detail-head{display: flex;align-items: center;justify-content: space-between;gap: 12px 20px;flex-wrap: wrap}.detail-head h2{font-size: 24px;letter-spacing: -0.6px;overflow-wrap: anywhere;min-width: 0}.detail-actions{display: flex;flex-wrap: wrap;gap: 8px}.rename-form{margin-top: 16px;display: flex;flex-direction: column;gap: 8px}.inline-row{display: flex;flex-wrap: wrap;gap: 8px}.inline-row input{flex: 1 1 220px;width: auto}.dropzone{display: flex;flex-direction: column;align-items: center;text-align: center;padding: 28px 22px 26px;margin-bottom: 14px;border: 1.5px dashed var(--hairline-strong);border-radius: 14px;background: rgba(255,255,255,0.025);transition: background .15s ease,border-color .15s ease}.dropzone.is-over{border-color: var(--brand);background: var(--brand-soft)}.dropzone-icon{color: var(--brand);margin-bottom: 10px}.dropzone-title{font-size: 15.5px;font-weight: 600;line-height: 1.4;color: var(--text);margin: 0 0 5px;overflow-wrap: anywhere}.dropzone-hint{font-size: 13.5px;line-height: 1.55;color: var(--text-muted);margin: 0;max-width: 46ch}.dropzone-choose{font-size: inherit;font-weight: 600;letter-spacing: 0;color: var(--brand);text-decoration: underline;text-underline-offset: 0.18em;cursor: pointer;display: inline-block;padding: 4px 0}.dropzone-choose:hover{text-decoration-thickness: 2px}.dropzone:has(input:focus-visible) .dropzone-choose{outline: 3px solid var(--brand);outline-offset: 3px;border-radius: 4px}.upload-queue{display: flex;flex-direction: column;gap: 6px;margin-bottom: 14px}.upload-queue:empty{margin-bottom: 0}.upload-queue li{display: flex;justify-content: space-between;gap: 16px;font-size: 13.5px;line-height: 1.45;padding: 9px 14px;border: 1px solid var(--hairline);border-radius: 9px;color: var(--text-soft)}.upload-queue .upload-name{overflow-wrap: anywhere;min-width: 0}.upload-queue .upload-state{flex: 0 0 auto;color: var(--text-muted)}.upload-queue .is-done .upload-state{color: #86EFAC}.upload-queue .is-error{border-color: rgba(252,165,165,0.5)}.upload-queue .is-error .upload-state{color: #FCA5A5;flex: 0 1 auto;text-align: right}.login-form{margin-top: 18px}.login-form h4{font-size: 14px;font-weight: 600;color: var(--text-soft);margin: 0 0 10px}.login-form-row{display: grid;grid-template-columns: minmax(0,1fr) minmax(0,1.3fr) auto;gap: 12px;align-items: end}.login-form-row .field{margin-bottom: 0}.login-form-row .btn-small{min-height: 44px}.credential{padding: 18px 20px;margin-bottom: 14px;border-radius: 12px;background: var(--surface-2);border: 1px solid var(--brand)}.credential-title{font-size: 15px;font-weight: 700;color: var(--text);margin: 0 0 12px;overflow-wrap: anywhere}.credential-line{display: flex;flex-wrap: wrap;align-items: baseline;gap: 4px 14px;margin: 0 0 6px}.credential-label{flex: 0 0 76px;font-size: 13px;color: var(--text-muted)}.credential code{font-family:'JetBrains Mono',ui-monospace,monospace;font-size: 15px;color: var(--text);user-select: all;overflow-wrap: anywhere}.credential-actions{display: flex;flex-wrap: wrap;align-items: center;gap: 8px 10px;margin: 14px 0 12px}.credential-copied{font-size: 13px;color: #86EFAC}.credential-note{font-size: 13px;line-height: 1.55;color: var(--text-muted);margin: 0;max-width: 62ch}@media (max-width: 900px){.admin-grid{grid-template-columns: 1fr;gap: 30px}}@media (max-width: 640px){.file-list > li{grid-template-columns: auto minmax(0,1fr)}.file-list > li > .row-actions,.login-list > li > .row-actions{grid-column: 1 / -1;justify-content: flex-start}.login-list > li{grid-template-columns: 1fr}.login-form-row{grid-template-columns: 1fr;align-items: stretch}.login-form-row .btn-small{justify-self: start}.portal-empty{padding: 22px 18px}.file-list > li,.login-list > li{padding: 14px 16px}}