@font-face{font-family:Syne;font-style:normal;font-weight:400 800;font-display:swap;src:local("Syne"),url(/fonts/syne-latin-400-800.woff2) format("woff2")}@font-face{font-family:DM Sans;font-style:normal;font-weight:400 700;font-display:swap;src:local("DM Sans"),url(/fonts/dm-sans-latin-400-700.woff2) format("woff2")}@font-face{font-family:DM Mono;font-style:normal;font-weight:400;font-display:swap;src:local("DM Mono"),url(/fonts/dm-mono-latin-400.woff2) format("woff2")}@font-face{font-family:DM Mono;font-style:normal;font-weight:500;font-display:swap;src:local("DM Mono Medium"),url(/fonts/dm-mono-latin-500.woff2) format("woff2")}:root{--kelly: #0FA254;--kelly-lifted: #17C168;--kelly-deep: #0A703A;--field: #06261A;--deeper: #041B12;--tile: #0C3B26;--paper: #FFFFFF;--near-black: #04160E;--off-white: #F4F1E9;--font-display: "Syne", system-ui, sans-serif;--font-body: "DM Sans", system-ui, sans-serif;--font-mono: "DM Mono", ui-monospace, monospace;--fs-body: 18px;--fs-sm: 15px;--fs-label: 14px;--fs-h3: 22px;--fs-h2: 26px;--fs-h1: 31px;--lh-body: 1.55;--lh-tight: 1.3;--track-label: .12em;--measure: 720px;--r-sm: 8px;--r-md: 12px;--r-lg: 16px;--r-pill: 100px;--tap: 44px;--ease-brand: cubic-bezier(.2, .7, .2, 1);--focus-ring: 0 0 0 2px var(--focus-ground, var(--bg)), 0 0 0 4px var(--accent);--scrim: color-mix(in srgb, var(--near-black) 62%, transparent)}:root,:root[data-theme=light]{--bg: var(--paper);--bg-soft: var(--off-white);--bg-raised: #FFFFFF;--bg-sunken: #ECE8DE;--text-1: var(--near-black);--text-2: rgba(4, 22, 14, .72);--text-3: rgba(4, 22, 14, .62);--line: rgba(4, 22, 14, .14);--accent: var(--kelly);--accent-ink: var(--kelly-deep);--accent-soft: rgba(15, 162, 84, .12);--on-accent: #FFFFFF;--danger: #B4433A;--frame: #ECE8DE;--rail: var(--off-white);--edge: rgba(4, 22, 14, .12);--motion: var(--kelly)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: var(--field);--bg-soft: #07301F;--bg-raised: var(--tile);--bg-sunken: var(--near-black);--text-1: var(--off-white);--text-2: rgba(244, 241, 233, .74);--text-3: rgba(244, 241, 233, .6);--line: rgba(244, 241, 233, .16);--accent: var(--kelly-lifted);--accent-ink: var(--accent);--accent-soft: rgba(23, 193, 104, .16);--on-accent: var(--near-black);--danger: #E6877F;--frame: #020D07;--rail: var(--near-black);--edge: rgba(244, 241, 233, .09);--motion: #4FEFA0}}:root[data-theme=dark]{--bg: var(--field);--bg-soft: #07301F;--bg-raised: var(--tile);--bg-sunken: var(--near-black);--text-1: var(--off-white);--text-2: rgba(244, 241, 233, .74);--text-3: rgba(244, 241, 233, .6);--line: rgba(244, 241, 233, .16);--accent: var(--kelly-lifted);--accent-ink: var(--accent);--accent-soft: rgba(23, 193, 104, .16);--on-accent: var(--near-black);--danger: #E6877F;--frame: #020D07;--rail: var(--near-black);--edge: rgba(244, 241, 233, .09);--motion: #4FEFA0}html{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);background:var(--bg);color:var(--text-1)}.display{font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:-.03em;line-height:.92}.label-mono{font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--track-label)}:root{--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 32px;--space-2xl: 48px;--space-3xl: 64px;--radius-sm: var(--r-sm);--radius-md: var(--r-md);--radius-lg: var(--r-md);--radius-xl: var(--r-lg);--radius-full: var(--r-pill)}*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scrollbar-width:thin;scrollbar-color:var(--line) transparent}body{font-family:var(--font-body);font-size:var(--fs-body);line-height:var(--lh-body);background:var(--bg);color:var(--text-1);min-height:100vh}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:-.03em;line-height:var(--lh-tight)}::selection{background:var(--accent-soft);color:var(--text-1)}:focus-visible{outline:2px solid transparent;outline-offset:0;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}a{color:var(--accent-ink);text-underline-offset:3px}.auth-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-xl);background:var(--bg)}.auth-card{width:100%;max-width:420px}.auth-lockup{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:var(--space-2xl)}.auth-title{font-family:var(--font-display);font-size:var(--fs-h1);font-weight:800;text-transform:uppercase;letter-spacing:-.03em;line-height:.92;margin-bottom:var(--space-sm);text-align:center;color:var(--text-1)}.auth-subtitle{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-3);text-align:center;margin-bottom:var(--space-2xl)}.auth-divider{display:flex;align-items:center;gap:var(--space-md);margin:var(--space-xl) 0}.auth-divider:before,.auth-divider:after{content:"";flex:1;height:1px;background:var(--line)}.auth-divider span{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-3)}.auth-btn-google{width:100%;min-height:var(--tap);padding:var(--space-sm) var(--space-lg);border:1px solid var(--line);border-radius:var(--radius-full);background:transparent;color:var(--text-1);font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--track-label);text-transform:uppercase;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--space-sm);transition:border-color .35s var(--ease-brand),background .35s var(--ease-brand)}.auth-btn-google:hover{border-color:var(--accent);background:var(--accent-soft)}.auth-btn-google:disabled{opacity:.5;cursor:not-allowed}.auth-input{width:100%;min-height:var(--tap);padding:var(--space-sm) var(--space-lg);border:1px solid var(--line);border-radius:var(--radius-full);background:var(--bg-raised);color:var(--text-1);font-family:var(--font-body);font-size:var(--fs-sm);outline:none;margin-bottom:var(--space-md);transition:border-color .35s var(--ease-brand)}.auth-input:focus-visible{border-color:var(--accent)}.auth-input::placeholder{color:var(--text-3)}.auth-input:disabled{opacity:.5}.auth-btn-primary{width:100%;min-height:var(--tap);padding:var(--space-sm) var(--space-lg);border:none;border-radius:var(--radius-full);background:var(--accent-ink);color:var(--on-accent);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:opacity .35s var(--ease-brand)}.auth-btn-primary:hover{opacity:.88}.auth-btn-primary:disabled{opacity:.5;cursor:not-allowed}.auth-error{color:var(--danger);font-size:var(--fs-sm);text-align:center;margin-top:var(--space-lg)}.auth-success{color:var(--accent-ink);font-size:var(--fs-sm);text-align:center;margin-top:var(--space-lg)}.auth-label{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-3);text-align:center;margin-top:var(--space-sm);text-transform:uppercase;letter-spacing:var(--track-label)}.lockup{display:inline-flex;align-items:center;gap:12px}.lockup__mark{flex:none;width:32px;height:32px}.lockup__name{font-family:var(--font-display);font-weight:800;text-transform:uppercase;letter-spacing:-.03em;line-height:1;font-size:var(--fs-h3);white-space:nowrap;color:var(--text-1)}.dashboard{padding:var(--space-xl) var(--space-2xl);max-width:1200px;margin:0 auto}.dashboard__header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-md);flex-wrap:wrap;margin-bottom:var(--space-2xl)}.dashboard__title{font-family:var(--font-display);font-size:var(--fs-h1);font-weight:800;text-transform:uppercase;letter-spacing:-.03em;line-height:.92}.dashboard__user{display:flex;align-items:center;gap:var(--space-md)}.dashboard__email{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.dashboard__role{display:inline-block;padding:4px 10px;border-radius:var(--radius-sm);background:var(--bg-sunken);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label)}.dashboard__role--admin{color:var(--accent-ink);box-shadow:inset 0 -2px 0 var(--accent)}.dashboard__role--client{color:var(--text-2);box-shadow:inset 0 -2px 0 var(--line)}.dashboard__logout{background:transparent;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-2);min-height:var(--tap);padding:var(--space-xs) var(--space-md);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:border-color .35s var(--ease-brand),background .35s var(--ease-brand),color .35s var(--ease-brand)}.dashboard__logout:hover{border-color:var(--accent);color:var(--text-1);background:var(--accent-soft)}.pickers{display:flex;gap:var(--space-lg);margin-bottom:var(--space-xl)}.picker{flex:1}.picker__label{display:block;font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2);margin-bottom:var(--space-xs)}.picker__select{width:100%;min-height:var(--tap);padding:var(--space-sm) var(--space-md);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg-raised);color:var(--text-1);font-family:var(--font-body);font-size:var(--fs-sm);cursor:pointer;outline:none;transition:border-color .35s var(--ease-brand);-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:36px}.picker__select,.modal__select,.filter-bar__select{background-image:linear-gradient(45deg,transparent 50%,currentColor 50%),linear-gradient(135deg,currentColor 50%,transparent 50%);background-position:calc(100% - 19px) calc(50% + 1px),calc(100% - 14px) calc(50% + 1px);background-size:5px 5px,5px 5px;background-repeat:no-repeat}.picker__select:focus-visible{border-color:var(--accent)}.picker__select:disabled{opacity:.4;cursor:not-allowed}.picker__select option{background:var(--bg-raised);color:var(--text-1)}.section-header{display:flex;align-items:baseline;gap:var(--space-sm);margin-bottom:var(--space-md)}.section-header__title{font-family:var(--font-display);font-size:var(--fs-h3);font-weight:800;text-transform:uppercase;letter-spacing:-.02em;color:var(--text-1)}.section-header__count{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.upload-zone-wrapper{margin-bottom:var(--space-xl)}.upload-zone{border:2px dashed var(--line);border-radius:var(--radius-lg);background:var(--bg-soft);padding:var(--space-2xl) var(--space-xl);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-sm);cursor:pointer;transition:border-color .35s var(--ease-brand),background .35s var(--ease-brand);outline:none}.upload-zone:hover{border-color:var(--accent);background:var(--accent-soft)}.upload-zone:focus-visible{border-color:var(--accent);box-shadow:var(--focus-ring)}.upload-zone--active{border-color:var(--accent);background:var(--accent-soft)}.upload-zone--uploading{opacity:.6;pointer-events:none}.upload-zone__icon{color:var(--text-3);margin-bottom:var(--space-xs)}.upload-zone__text{font-size:var(--fs-sm);color:var(--text-2)}.upload-zone__hint{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-3);text-transform:uppercase;letter-spacing:var(--track-label)}.upload-progress-list{margin-top:var(--space-md)}.upload-progress-list__header{display:flex;justify-content:space-between;align-items:center;margin-bottom:var(--space-sm)}.upload-progress-list__title{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2)}.upload-progress-list__clear{background:none;border:none;color:var(--text-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;text-decoration:underline;min-height:var(--tap);padding:0 var(--space-xs);transition:color .35s var(--ease-brand)}.upload-progress-list__clear:hover{color:var(--text-1)}.upload-progress{padding:var(--space-sm) 0;border-bottom:1px solid var(--edge)}.upload-progress:last-child{border-bottom:none}.upload-progress__header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-xs)}.upload-progress__filename{font-size:var(--fs-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:80%}.upload-progress__status-icon{font-size:var(--fs-sm)}.upload-progress__spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}.upload-progress__check{color:var(--accent-ink)}.upload-progress__error-icon{color:var(--danger)}.upload-progress__bar{height:4px;background:var(--bg-sunken);border-radius:2px;overflow:hidden}.upload-progress__fill{height:100%;border-radius:2px;transition:width .35s var(--ease-brand)}.upload-progress__fill--uploading,.upload-progress__fill--success{background:var(--accent)}.upload-progress__fill--error{background:var(--danger)}.upload-progress__footer{margin-top:2px;font-family:var(--font-mono);font-size:var(--fs-label)}.upload-progress__percent{color:var(--text-2)}.upload-progress__done{color:var(--accent-ink)}.upload-progress__error-text{color:var(--danger)}.file-list{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-raised);overflow:hidden}.file-list__error{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--bg-sunken);color:var(--danger);font-size:var(--fs-sm)}.file-list__error-dismiss{background:none;border:none;color:inherit;font-family:var(--font-mono);font-size:var(--fs-label);cursor:pointer;text-decoration:underline;text-transform:uppercase;letter-spacing:var(--track-label);min-height:var(--tap);padding:0 var(--space-xs)}.file-list__header-row{display:grid;grid-template-columns:minmax(0,2fr) 90px 110px minmax(0,1.5fr) 150px 240px;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--bg-sunken);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2)}.file-list__row{display:grid;grid-template-columns:minmax(0,2fr) 90px 110px minmax(0,1.5fr) 150px 240px;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);align-items:center;border-top:1px solid var(--edge);transition:background .2s var(--ease-brand)}.file-list__row:hover{background:var(--accent-soft)}.file-list__col--name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:var(--fs-sm)}.file-list__col--size{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.file-list__col--type{font-size:var(--fs-label)}.file-list__type-badge{display:inline-block;padding:3px 10px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label);background:var(--bg-sunken);color:var(--text-2)}.file-list__col--uploader{font-size:var(--fs-label);color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.file-list__col--date{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.file-list__col--actions{display:flex;gap:var(--space-xs);justify-content:flex-end}.file-list__action{display:inline-flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border:1px solid var(--line);border-radius:var(--radius-sm);background:transparent;color:var(--text-2);cursor:pointer;transition:border-color .35s var(--ease-brand),background .35s var(--ease-brand),color .35s var(--ease-brand)}.file-list__action:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft);color:var(--text-1)}.file-list__action:disabled{opacity:.35;cursor:not-allowed}.file-list__action--danger:hover:not(:disabled),.file-list__action--delete:hover:not(:disabled){border-color:var(--danger);background:var(--bg-sunken);color:var(--danger)}.admin-table__actions{display:flex;gap:var(--space-xs)}.file-list__action--confirm-yes,.file-list__action--confirm-no{width:auto;min-width:var(--tap);padding:0 var(--space-sm);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label)}.file-list__action--confirm-yes{border-color:var(--danger);color:var(--danger)}.file-list__action--confirm-no{border-color:var(--line)}.file-list__confirm{display:flex;gap:var(--space-xs)}.file-list__action-spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}.file-list__empty{display:flex;flex-direction:column;align-items:center;gap:var(--space-sm);padding:var(--space-3xl) var(--space-xl);color:var(--text-2)}.file-list__empty p{font-size:var(--fs-sm)}.file-list__empty-hint{font-family:var(--font-mono);font-size:var(--fs-label)!important;text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-3)}.dashboard__loading{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xl);color:var(--text-2);font-size:var(--fs-sm)}.dashboard__loading-spinner{display:inline-block;width:20px;height:20px;border:2px solid var(--line);border-top-color:var(--accent);border-radius:50%;animation:spin .6s linear infinite}.dashboard__error{padding:var(--space-md);background:var(--bg-sunken);border:1px solid var(--danger);border-radius:var(--radius-lg);color:var(--danger);font-size:var(--fs-sm);margin-bottom:var(--space-lg)}.dashboard__placeholder{text-align:center;padding:var(--space-3xl);color:var(--text-2);font-size:var(--fs-sm)}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:900px){.dashboard{padding:var(--space-md)}.pickers{flex-direction:column;gap:var(--space-md)}.file-list__header-row{display:none}.file-list__row{display:flex;flex-wrap:wrap;gap:var(--space-xs);padding:var(--space-md)}.file-list__col--name{width:100%;font-weight:500}.file-list__col--uploader{display:none}.file-list__col--actions{margin-left:auto}}.app-layout{display:grid;grid-template-columns:300px 1fr;min-height:100vh;background:var(--frame)}.app-layout__sidebar{position:sticky;top:0;height:100vh;overflow-y:auto;background:var(--rail);scrollbar-color:var(--edge) transparent}.app-layout__main{min-height:100vh;background:var(--bg)}.app-layout--client{display:block;background:var(--bg)}.sidebar{display:flex;flex-direction:column;height:100%;background:var(--rail);border-right:1px solid var(--edge);padding:var(--space-lg) 0;font-family:var(--font-body);--focus-ground: var(--rail)}.sidebar__brand{padding:0 var(--space-lg) var(--space-lg);border-bottom:1px solid var(--edge);margin-bottom:var(--space-md)}.sidebar__nav{flex:1;padding:var(--space-sm);display:flex;flex-direction:column;gap:2px}.sidebar__link{display:flex;align-items:center;gap:12px;min-height:var(--tap);padding:10px var(--space-md);border-radius:var(--radius-md);border-left:2px solid transparent;color:var(--text-2);text-decoration:none;font-family:var(--font-mono);font-size:var(--fs-label);letter-spacing:var(--track-label);text-transform:uppercase;transition:color .35s var(--ease-brand),background .35s var(--ease-brand),border-color .35s var(--ease-brand)}.sidebar__link:hover{color:var(--text-1);background:var(--bg-sunken)}.sidebar__link--active{color:var(--text-1);background:var(--accent-soft);border-left-color:var(--accent);font-weight:500}.sidebar__link--active:hover{background:var(--accent-soft)}.sidebar__link-icon{width:20px;height:20px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.sidebar__footer{padding:var(--space-md) var(--space-lg);border-top:1px solid var(--edge)}.sidebar__user-email{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2);margin-bottom:var(--space-sm);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar__logout{background:transparent;border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-2);min-height:var(--tap);padding:var(--space-xs) var(--space-md);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;width:100%;transition:border-color .35s var(--ease-brand),background .35s var(--ease-brand),color .35s var(--ease-brand)}.sidebar__logout:hover{border-color:var(--accent);background:var(--accent-soft);color:var(--text-1)}.sidebar__toggle{display:none;position:fixed;top:var(--space-md);left:var(--space-md);z-index:1001;width:var(--tap);height:var(--tap);align-items:center;justify-content:center;background:var(--rail);border:1px solid var(--line);border-radius:var(--radius-sm);color:var(--text-1);font-size:var(--fs-h3);cursor:pointer}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:var(--space-md);background:var(--scrim);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:fadeIn .35s var(--ease-brand)}.modal{width:100%;max-width:520px;max-height:85vh;overflow-y:auto;background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius-xl);animation:slideUp .35s var(--ease-brand);--focus-ground: var(--bg-raised)}.modal__header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);padding:var(--space-lg);border-bottom:1px solid var(--line)}.modal__title{font-family:var(--font-display);font-size:var(--fs-h3);font-weight:800;text-transform:uppercase;letter-spacing:-.02em}.modal__close{background:none;border:none;color:var(--text-2);font-size:var(--fs-h3);cursor:pointer;width:var(--tap);height:var(--tap);flex:none;border-radius:var(--radius-sm);transition:color .35s var(--ease-brand),background .35s var(--ease-brand)}.modal__close:hover{color:var(--text-1);background:var(--bg-sunken)}.modal__body{padding:var(--space-lg)}.modal__footer{display:flex;justify-content:flex-end;gap:var(--space-sm);padding:var(--space-md) var(--space-lg);border-top:1px solid var(--line)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes slideUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal__field{margin-bottom:var(--space-lg)}.modal__label{display:block;font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2);margin-bottom:var(--space-xs)}.modal__input{width:100%;min-height:var(--tap);padding:var(--space-sm) var(--space-md);border:1px solid var(--line);border-radius:var(--radius-md);background:var(--bg);color:var(--text-1);font-family:var(--font-body);font-size:var(--fs-sm);outline:none;transition:border-color .35s var(--ease-brand)}.modal__input:focus-visible{border-color:var(--accent)}.modal__input::placeholder{color:var(--text-3)}.modal__select{width:100%;min-height:var(--tap);padding:var(--space-sm) var(--space-md);border:1px solid var(--line);border-radius:var(--radius-md);background-color:var(--bg);color:var(--text-1);font-family:var(--font-body);font-size:var(--fs-sm);outline:none;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:36px}.modal__select option{background:var(--bg-raised);color:var(--text-1)}.modal__btn{min-height:var(--tap);padding:var(--space-sm) var(--space-lg);border-radius:var(--radius-md);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:opacity .35s var(--ease-brand),background .35s var(--ease-brand),border-color .35s var(--ease-brand)}.modal__btn:disabled{opacity:.4;cursor:not-allowed}.modal__btn--primary{background:var(--accent-ink);color:var(--on-accent);border:1px solid transparent}.modal__btn--primary:hover:not(:disabled){opacity:.88}.modal__btn--secondary{background:transparent;color:var(--text-1);border:1px solid var(--line)}.modal__btn--danger{background:var(--danger);color:var(--on-accent);border:1px solid transparent}.modal__btn--danger:hover:not(:disabled){opacity:.88}.modal__text{font-size:var(--fs-sm);line-height:var(--lh-body);color:var(--text-2);margin:0 0 var(--space-lg)}.modal__text strong{color:var(--text-1)}.modal__actions{display:flex;justify-content:flex-end;gap:var(--space-sm)}.modal__btn--secondary:hover:not(:disabled){border-color:var(--accent);background:var(--accent-soft)}.modal__error{color:var(--danger);font-size:var(--fs-sm);margin-top:var(--space-sm)}.modal__success{color:var(--accent-ink);font-size:var(--fs-sm);margin-top:var(--space-sm)}.share-modal__result{padding:var(--space-md);background:var(--bg-sunken);border:1px solid var(--accent);border-radius:var(--radius-lg);margin-top:var(--space-md)}.share-modal__result-label{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2);margin-bottom:var(--space-xs)}.share-modal__result-url{display:flex;gap:var(--space-sm);align-items:center}.share-modal__url-text{flex:1;padding:var(--space-sm);background:var(--bg-raised);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--fs-label);word-break:break-all;color:var(--text-1)}.share-modal__copy-btn{background:transparent;border:1px solid var(--accent);border-radius:var(--radius-sm);color:var(--accent-ink);min-height:var(--tap);padding:var(--space-xs) var(--space-md);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;white-space:nowrap;transition:background .35s var(--ease-brand)}.share-modal__copy-btn:hover{background:var(--accent-soft)}.share-modal__checkbox{display:flex;align-items:center;gap:var(--space-sm);min-height:var(--tap);font-size:var(--fs-sm);color:var(--text-2);cursor:pointer;margin-top:var(--space-xs)}.share-modal__checkbox input[type=checkbox]{width:18px;height:18px;accent-color:var(--accent);cursor:pointer}.share-page{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:var(--space-xl);background:var(--bg)}.share-page__card{width:100%;max-width:460px;text-align:center}.share-page__lockup{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:var(--space-2xl)}.share-page__title{font-family:var(--font-display);font-size:var(--fs-h1);font-weight:800;text-transform:uppercase;letter-spacing:-.03em;line-height:.92;margin-bottom:var(--space-sm)}.share-page__subtitle{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-3);margin-bottom:var(--space-2xl)}.share-page__file-info{padding:var(--space-lg);border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-raised);margin-bottom:var(--space-lg)}.share-page__filename{font-size:var(--fs-h3);font-weight:500;margin-bottom:var(--space-xs)}.share-page__filetype{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2)}.share-page__download-btn{display:inline-flex;align-items:center;gap:var(--space-sm);min-height:var(--tap);padding:var(--space-sm) var(--space-2xl);background:var(--accent-ink);color:var(--on-accent);border:none;border-radius:var(--radius-full);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:opacity .35s var(--ease-brand)}.share-page__download-btn:hover{opacity:.88}.share-page__expired{padding:var(--space-2xl);text-align:center}.share-page__expired-icon{display:flex;justify-content:center;margin-bottom:var(--space-md);color:var(--text-3)}.share-page__expired-title{font-family:var(--font-display);font-size:var(--fs-h2);font-weight:800;text-transform:uppercase;letter-spacing:-.02em;margin-bottom:var(--space-sm)}.share-page__expired-text{font-size:var(--fs-sm);color:var(--text-2)}.share-page__loading{display:flex;flex-direction:column;align-items:center;gap:var(--space-md);padding:var(--space-2xl)}.admin-page{padding:var(--space-xl) var(--space-2xl);max-width:1200px;margin:0 auto}.admin-page__header{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--space-md);flex-wrap:wrap;margin-bottom:var(--space-xl)}.admin-page__header-text{display:flex;flex-direction:column;gap:6px}.admin-page__title{font-family:var(--font-display);font-size:var(--fs-h1);font-weight:800;text-transform:uppercase;letter-spacing:-.03em;line-height:.92;color:var(--text-1)}.admin-page__subtitle{font-family:var(--font-mono);font-size:var(--fs-label);font-weight:400;text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2)}.admin-table{width:100%;border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-raised);overflow:hidden}.admin-table__header{display:grid;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--bg-sunken);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2)}.admin-table__row{display:grid;gap:var(--space-sm);padding:var(--space-xs) var(--space-md);align-items:center;border-top:1px solid var(--edge);font-size:var(--fs-sm);transition:background .2s var(--ease-brand)}.admin-table__row:hover{background:var(--accent-soft)}.admin-table__badge{display:inline-block;padding:4px 10px;border-radius:var(--radius-sm);background:var(--bg-sunken);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label)}.admin-table__badge--admin{color:var(--accent-ink);box-shadow:inset 0 -2px 0 var(--accent)}.admin-table__badge--client{color:var(--text-2);box-shadow:inset 0 -2px 0 var(--line)}.admin-table__empty{padding:var(--space-2xl);text-align:center;color:var(--text-2);font-size:var(--fs-sm)}.admin-table--team .admin-table__header,.admin-table--team .admin-table__row{grid-template-columns:minmax(0,2fr) 150px 110px}.admin-table--clients .admin-table__header,.admin-table--clients .admin-table__row{grid-template-columns:minmax(0,1.5fr) minmax(0,2fr) 150px 110px}.admin-table--audit .admin-table__header,.admin-table--audit .admin-table__row{grid-template-columns:150px 130px minmax(0,1.5fr) minmax(0,2fr) minmax(0,1fr)}.admin-table__action-badge{display:inline-block;padding:3px 10px;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label);background:var(--bg-sunken);color:var(--text-2)}.admin-table__metadata{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filter-bar{display:flex;flex-wrap:wrap;gap:var(--space-md);align-items:flex-end;margin-bottom:var(--space-xl);padding:var(--space-md);background:var(--bg-soft);border:1px solid var(--line);border-radius:var(--radius-lg)}.filter-bar__group{display:flex;flex-direction:column;gap:4px}.filter-bar__label{font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);color:var(--text-2)}.filter-bar__input,.filter-bar__select{min-height:var(--tap);padding:var(--space-xs) var(--space-sm);border:1px solid var(--line);border-radius:var(--radius-sm);background-color:var(--bg-raised);color:var(--text-1);font-family:var(--font-body);font-size:var(--fs-sm);outline:none;transition:border-color .35s var(--ease-brand)}.filter-bar__input:focus-visible,.filter-bar__select:focus-visible{border-color:var(--accent)}.filter-bar__select{-webkit-appearance:none;-moz-appearance:none;appearance:none;cursor:pointer;padding-right:32px}.filter-bar__select option{background:var(--bg-raised);color:var(--text-1)}.entity-section{margin-bottom:var(--space-2xl)}.entity-section__header{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-md)}.entity-section__title{font-family:var(--font-display);font-size:var(--fs-h3);font-weight:800;text-transform:uppercase;letter-spacing:-.02em}.entity-section__list{border:1px solid var(--line);border-radius:var(--radius-lg);background:var(--bg-raised);overflow:hidden}.entity-section__item{display:flex;justify-content:space-between;align-items:center;gap:var(--space-sm);min-height:var(--tap);padding:var(--space-xs) var(--space-md);border-top:1px solid var(--edge);font-size:var(--fs-sm)}.entity-section__item:first-child{border-top:none}.entity-section__item:hover{background:var(--accent-soft)}.entity-section__item--selected{background:var(--accent-soft);box-shadow:inset 2px 0 0 var(--accent)}.entity-section__item--selected .entity-section__item-meta{color:var(--text-2)}.entity-section__item-name{font-weight:500}.entity-section__item-meta{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.entity-section__item-right{display:flex;align-items:center;gap:var(--space-sm)}.entity-section__actions{display:flex;gap:var(--space-xs);opacity:0;transition:opacity .35s var(--ease-brand)}.entity-section__item:hover .entity-section__actions,.entity-section__item:focus-within .entity-section__actions{opacity:1}.entity-section__empty{padding:var(--space-lg);text-align:center;color:var(--text-2);font-size:var(--fs-sm)}.scope-builder{border:1px solid var(--line);border-radius:var(--radius-md);padding:var(--space-md)}.scope-builder__entries{margin-bottom:var(--space-sm)}.scope-builder__entry{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) 0;font-size:var(--fs-sm)}.scope-builder__entry-text{flex:1;color:var(--text-2)}.scope-builder__remove{background:none;border:none;color:var(--danger);cursor:pointer;font-size:var(--fs-sm);width:var(--tap);height:var(--tap);flex:none;border-radius:var(--radius-sm);transition:background .35s var(--ease-brand)}.scope-builder__remove:hover{background:var(--bg-sunken)}.scope-builder__add{display:flex;gap:var(--space-sm);align-items:flex-end}.scope-builder__add-btn{min-height:var(--tap);padding:var(--space-sm) var(--space-md);border:1px dashed var(--line);border-radius:var(--radius-sm);background:transparent;color:var(--text-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:color .35s var(--ease-brand),border-color .35s var(--ease-brand)}.scope-builder__add-btn:hover{border-color:var(--accent);color:var(--text-1)}.scope-builder__hint{margin:var(--space-xs) 0 0;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.load-more{display:block;width:100%;min-height:var(--tap);padding:var(--space-md);border:1px dashed var(--line);border-radius:var(--radius-lg);background:transparent;color:var(--text-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:color .35s var(--ease-brand),border-color .35s var(--ease-brand);margin-top:var(--space-md)}.load-more:hover{color:var(--text-1);border-color:var(--accent)}.load-more:disabled{cursor:not-allowed}.inline-create{display:flex;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);border-top:1px solid var(--edge)}.inline-create__input{flex:1;min-height:var(--tap);padding:var(--space-xs) var(--space-sm);border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--bg);color:var(--text-1);font-family:var(--font-body);font-size:var(--fs-sm);outline:none;transition:border-color .35s var(--ease-brand)}.inline-create__input:focus-visible{border-color:var(--accent)}.inline-create__input::placeholder{color:var(--text-3)}.inline-create__btn{min-height:var(--tap);padding:var(--space-xs) var(--space-md);background:var(--accent-ink);color:var(--on-accent);border:none;border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:var(--fs-label);font-weight:500;text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:opacity .35s var(--ease-brand)}.inline-create__btn:hover{opacity:.88}.inline-create__btn:disabled{opacity:.4;cursor:not-allowed}@media(max-width:900px){.app-layout{display:block}.app-layout__sidebar{position:fixed;left:-320px;top:0;width:300px;z-index:1000;transition:left .35s var(--ease-brand)}.app-layout__sidebar--open{left:0}.sidebar__toggle{display:flex}.admin-page{padding:var(--space-md);padding-top:var(--space-3xl)}.admin-page__header{flex-direction:column;gap:var(--space-sm);align-items:flex-start}.admin-table--team .admin-table__header,.admin-table--team .admin-table__row{grid-template-columns:minmax(0,1fr) 110px}.admin-table--team .admin-table__header>:nth-child(2),.admin-table--team .admin-table__row>:nth-child(2){display:none}.admin-table--clients .admin-table__header,.admin-table--clients .admin-table__row{grid-template-columns:minmax(0,1fr) 110px}.admin-table--clients .admin-table__header>:nth-child(2),.admin-table--clients .admin-table__row>:nth-child(2),.admin-table--clients .admin-table__header>:nth-child(3),.admin-table--clients .admin-table__row>:nth-child(3){display:none}.admin-table--audit .admin-table__header,.admin-table--audit .admin-table__row{grid-template-columns:120px 100px minmax(0,1fr)}.admin-table--audit .admin-table__header>:nth-child(4),.admin-table--audit .admin-table__row>:nth-child(4),.admin-table--audit .admin-table__header>:nth-child(5),.admin-table--audit .admin-table__row>:nth-child(5){display:none}.filter-bar{flex-direction:column;align-items:stretch}.share-page{padding:var(--space-md)}}.drive-import-btn{display:inline-flex;align-items:center;gap:var(--space-xs);min-height:var(--tap);padding:var(--space-xs) var(--space-md);background:transparent;border:1px solid var(--line);border-radius:var(--radius-md);color:var(--text-2);font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);cursor:pointer;transition:background .35s var(--ease-brand),border-color .35s var(--ease-brand),color .35s var(--ease-brand);margin-top:var(--space-sm);margin-bottom:var(--space-lg)}.drive-import-btn:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--text-1)}.drive-picker{display:flex;flex-direction:column;gap:var(--space-md);min-height:400px}.drive-picker__toolbar{display:flex;flex-direction:column;gap:var(--space-sm)}.drive-picker__search{display:flex;gap:var(--space-sm)}.drive-picker__search .modal__input{flex:1}.drive-picker__sort{background:var(--bg);color:var(--text-2);border:1px solid var(--line);border-radius:var(--radius-sm);min-height:var(--tap);padding:6px var(--space-sm);font-size:var(--fs-label);font-family:var(--font-mono);letter-spacing:var(--track-label);cursor:pointer;align-self:flex-end;transition:border-color .35s var(--ease-brand)}.drive-picker__sort:hover{border-color:var(--accent)}.drive-picker__sort:disabled{opacity:.5;cursor:not-allowed}.drive-picker__breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:2px;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.drive-picker__breadcrumb-sep{margin:0 4px;color:var(--text-3)}.drive-picker__breadcrumb-btn{background:none;border:none;color:var(--text-2);cursor:pointer;padding:4px 6px;border-radius:var(--radius-sm);font-size:var(--fs-label);font-family:var(--font-mono);transition:background .35s var(--ease-brand),color .35s var(--ease-brand)}.drive-picker__breadcrumb-btn:hover:not(:disabled){background:var(--bg-sunken);color:var(--text-1)}.drive-picker__breadcrumb-btn--active{color:var(--text-1);font-weight:500}.drive-picker__list{flex:1;max-height:350px;overflow-y:auto;border:1px solid var(--line);border-radius:var(--radius-md)}.drive-picker__loading,.drive-picker__empty{padding:var(--space-xl);text-align:center;color:var(--text-2);font-size:var(--fs-sm)}.drive-picker__item{display:flex;align-items:center;gap:var(--space-sm);min-height:var(--tap);padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--edge);cursor:pointer;transition:background .2s var(--ease-brand);font-size:var(--fs-sm)}.drive-picker__item:hover{background:var(--bg-sunken)}.drive-picker__item--selected{background:var(--accent-soft);color:var(--text-1)}.drive-picker__item--selected .drive-picker__item-meta,.drive-picker__item--folder .drive-picker__item-name{color:var(--text-2)}.drive-picker__item--folder:hover .drive-picker__item-name{color:var(--text-1)}.drive-picker__checkbox{flex-shrink:0;width:18px;height:18px;accent-color:var(--accent)}.drive-picker__folder-icon{flex-shrink:0;color:var(--text-3);display:flex;align-items:center}.drive-picker__file-icon{flex-shrink:0;color:var(--text-3)}.drive-picker__item-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drive-picker__item-meta{display:flex;gap:var(--space-md);flex-shrink:0;font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.drive-picker__load-more{display:block;width:100%;min-height:var(--tap);padding:var(--space-sm);background:none;border:none;color:var(--accent-ink);cursor:pointer;font-family:var(--font-mono);font-size:var(--fs-label);text-transform:uppercase;letter-spacing:var(--track-label);text-align:center;transition:background .35s var(--ease-brand)}.drive-picker__load-more:hover{background:var(--bg-sunken)}.drive-picker__footer{display:flex;align-items:center;justify-content:space-between;gap:var(--space-sm);padding-top:var(--space-md);border-top:1px solid var(--line)}.drive-picker__count{font-family:var(--font-mono);font-size:var(--fs-label);color:var(--text-2)}.drive-picker__footer-actions{display:flex;gap:var(--space-sm)}.drive-picker__results{display:flex;flex-direction:column;gap:var(--space-md)}.drive-picker__results-summary{font-size:var(--fs-sm);font-weight:500}.drive-picker__results-list{display:flex;flex-direction:column;gap:var(--space-xs)}.drive-picker__result-item{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-xs) var(--space-sm);border-radius:var(--radius-sm);font-size:var(--fs-sm)}.drive-picker__result-item--success{color:var(--accent-ink)}.drive-picker__result-item--error{color:var(--danger)}.drive-picker__result-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.drive-picker__result-error{color:var(--text-2);font-size:var(--fs-label)}.drive-picker__auth-error{text-align:center;padding:var(--space-xl)}.drive-picker__auth-error p{margin-bottom:var(--space-lg);color:var(--text-2)}.file-list__success{display:flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) var(--space-md);background:var(--bg-sunken);border:1px solid var(--accent);border-radius:var(--radius-lg);color:var(--text-1);font-size:var(--fs-sm);margin-bottom:var(--space-md)}.file-list__success a{color:var(--accent-ink);text-decoration:underline}.file-list__action--drive{color:var(--text-2)}
