:root{--ink:#17212b;--muted:#718096;--blue:#356df3;--line:#e6eaf0;--soft:#f6f8fc}*{box-sizing:border-box}body{margin:0;background:var(--soft);color:var(--ink);font:15px Inter,Segoe UI,Arial,sans-serif}a{color:var(--blue);text-decoration:none}.landing{min-height:100vh;background:radial-gradient(circle at 75% 20%,#dfe8ff,transparent 35%),#f7f9ff}.hero{max-width:900px;margin:auto;padding:16vh 8vw}.eyebrow{letter-spacing:.18em;color:var(--blue);font-weight:700;font-size:12px}.hero h1{font-size:clamp(48px,9vw,92px);line-height:1.04;margin:20px 0}.hero h1 span{color:var(--blue)}.lede{color:var(--muted);font-size:20px;max-width:430px}.actions{display:flex;gap:12px;margin-top:35px}.button{border:0;border-radius:10px;padding:13px 20px;font-weight:700;cursor:pointer;display:inline-block}.primary{background:var(--blue);color:#fff}.ghost{background:#fff;color:var(--ink);border:1px solid var(--line)}.auth-card{background:#fff;width:min(440px,calc(100% - 32px));margin:8vh auto;padding:42px;border-radius:18px;box-shadow:0 12px 40px #25365d12}.brand{font-weight:800;color:var(--ink);font-size:18px}.auth-card h1{margin-top:55px;margin-bottom:8px}.muted{color:var(--muted)}form{display:grid;gap:18px;margin:28px 0}label{display:grid;gap:7px;font-weight:600}input{border:1px solid var(--line);border-radius:8px;padding:13px;font:inherit}.topbar{height:72px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 6vw}.dashboard{max-width:1000px;margin:50px auto;padding:0 20px}.welcome{display:flex;justify-content:space-between;align-items:end;margin-bottom:35px}.welcome h1{margin:6px 0;font-size:38px}.upload-button input{display:none}.drop-zone{border:2px dashed #b9c9f8;background:#f2f6ff;padding:42px;text-align:center;border-radius:14px;color:var(--blue)}.drop-zone span,.drop-zone strong{display:block}.drop-zone span{color:var(--muted);margin-top:8px}.files-head{display:flex;align-items:center;justify-content:space-between;margin-top:50px}.files-head input{width:230px}.file-list{background:#fff;border:1px solid var(--line);border-radius:14px;overflow:hidden}.file-row{display:flex;align-items:center;gap:14px;padding:18px 20px;border-bottom:1px solid var(--line)}.file-row:last-child{border-bottom:0}.file-icon{background:#e8efff;color:var(--blue);padding:10px;border-radius:8px;font-size:11px;font-weight:800}.file-info{flex:1;display:grid;gap:5px}.file-info span{color:var(--muted);font-size:13px}.file-action{background:none;border:0;color:var(--blue);cursor:pointer;font:inherit}.danger{color:#d14343}.message{color:#c53d48;min-height:20px}.empty{padding:28px;text-align:center}@media(max-width:600px){.auth-card{padding:28px}.welcome{display:block}.upload-button{margin-top:20px}.files-head{display:block}.files-head input{width:100%;margin-bottom:14px}.file-row{flex-wrap:wrap}.file-info{min-width:50%}}

.dashboard-page{
  --dash-bg:#f3f6fb;
  --dash-surface:#fff;
  --dash-surface-soft:#f8faff;
  --dash-sidebar:#111d36;
  --dash-sidebar-muted:#9ba9c4;
  --dash-text:#19243a;
  --dash-muted:#77839a;
  --dash-line:#e7ebf2;
  --dash-blue:#3974f6;
  --dash-blue-soft:#eaf1ff;
  --dash-shadow:0 10px 28px rgba(27,48,88,.055);
  min-height:100vh;
  background:var(--dash-bg);
  color:var(--dash-text);
  font-family:Inter,"Segoe UI",Arial,sans-serif;
}
.dashboard-page button,.dashboard-page input,.dashboard-page select{font:inherit}
.dashboard-page button{color:inherit}
.dashboard-page button:disabled{cursor:not-allowed;opacity:.58}
.dashboard-page button:focus-visible,.dashboard-page input:focus-visible,.dashboard-page select:focus-visible,.dashboard-page a:focus-visible{outline:3px solid #78a1ff;outline-offset:3px}
.dashboard-shell{min-height:100vh}
.sidebar{position:fixed;inset:0 auto 0 0;z-index:20;display:flex;width:252px;flex-direction:column;padding:30px 18px 20px;background:var(--dash-sidebar);color:#fff}
.dashboard-brand{display:flex;align-items:center;gap:11px;margin:0 8px 48px;color:#fff;font-size:21px;font-weight:800;letter-spacing:-.04em}
.brand-mark{display:grid;width:35px;height:35px;place-items:center;border-radius:11px;background:linear-gradient(145deg,#69a1ff,#3974f6);box-shadow:0 5px 14px #3974f655;font-size:19px}
.brand-accent{color:#86b0ff}
.sidebar-label{margin:0 10px 11px;color:#7888a7;font-size:10px;font-weight:800;letter-spacing:.15em}
.sidebar-nav{display:grid;gap:5px}
.nav-link{display:flex;min-height:44px;align-items:center;gap:12px;width:100%;padding:0 12px;border:0;border-radius:10px;background:transparent;color:var(--dash-sidebar-muted)!important;text-align:left;font-size:13px;font-weight:600;cursor:pointer;transition:background .18s ease,color .18s ease}
.nav-link:hover{background:#ffffff0d;color:#fff!important}
.nav-link.is-active{background:#3974f6;color:#fff!important;box-shadow:0 7px 16px #0e132b38}
.nav-icon{display:inline-grid;width:20px;place-items:center;color:inherit;font-size:19px;line-height:1}
.sidebar-bottom{margin-top:auto}
.sidebar-note{display:flex;align-items:flex-start;gap:10px;margin:0 4px 15px;padding:13px 11px;border:1px solid #ffffff12;border-radius:12px;background:#ffffff08}
.note-icon{color:#82aaff;font-size:18px}
.sidebar-note p{margin:1px 0 0;color:#aab7cf;font-size:11px;line-height:1.55}
.signout-link{margin-top:5px}
.workspace{min-height:100vh;margin-left:252px}
.workspace-header{position:sticky;top:0;z-index:10;display:flex;height:72px;align-items:center;justify-content:space-between;gap:20px;padding:0 clamp(22px,4vw,54px);border-bottom:1px solid var(--dash-line);background:var(--dash-surface);box-shadow:0 2px 10px rgba(18,34,63,.025)}
.global-search{display:flex;width:min(490px,62%);height:42px;align-items:center;gap:10px;padding:0 12px;border:1px solid var(--dash-line);border-radius:11px;background:var(--dash-surface-soft);color:var(--dash-muted)}
.search-icon{font-size:21px;line-height:1}
.global-search input{width:100%;min-width:0;padding:0;border:0;outline:0!important;background:transparent;color:var(--dash-text);font-size:13px}
.global-search input::placeholder{color:var(--dash-muted)}
.global-search kbd{padding:2px 6px;border:1px solid var(--dash-line);border-radius:5px;background:var(--dash-surface);color:var(--dash-muted);font-size:11px}
.header-actions,.heading-actions{display:flex;align-items:center;gap:11px}
.icon-button{display:grid;width:39px;height:39px;place-items:center;border:1px solid var(--dash-line);border-radius:10px;background:var(--dash-surface);color:var(--dash-muted)!important;font-size:20px;cursor:pointer;transition:background .18s,color .18s}
.icon-button:hover{background:var(--dash-blue-soft);color:var(--dash-blue)!important}
.avatar{display:grid;width:38px;height:38px;place-items:center;border:0;border-radius:50%;background:#e5edff;color:#3267d6!important;font-size:12px;font-weight:800;cursor:default}
.mobile-menu-button,.sidebar-scrim{display:none}
.page-content{width:min(1360px,100%);margin:0 auto;padding:34px clamp(22px,4vw,54px) 25px}
.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:25px}
.eyebrow{margin:0 0 7px;color:var(--dash-blue);font-size:10px;font-weight:800;letter-spacing:.15em}
.page-heading h1{margin:0;color:var(--dash-text);font-size:clamp(27px,3vw,34px);font-weight:750;letter-spacing:-.045em}
.page-subtitle{margin:8px 0 0;color:var(--dash-muted);font-size:13px}
.heading-actions{flex-wrap:wrap;justify-content:flex-end}
.dashboard-page .button{display:inline-flex;min-height:41px;align-items:center;justify-content:center;gap:8px;padding:0 15px;border:1px solid transparent;border-radius:10px;font-size:12px;font-weight:700;cursor:pointer;transition:transform .15s,background .15s,border-color .15s}
.dashboard-page .button:hover{transform:translateY(-1px)}
.dashboard-page .button.primary{background:var(--dash-blue);color:#fff}
.dashboard-page .button.primary:hover{background:#2863e8}
.dashboard-page .button.secondary{border-color:var(--dash-line);background:var(--dash-surface);color:var(--dash-text)}
.dashboard-page .button.secondary:hover{border-color:#b9cdfb;background:var(--dash-blue-soft)}
.button-icon{font-size:17px;line-height:1}
.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:15px;margin-bottom:18px}
.summary-card{display:flex;min-height:116px;align-items:flex-start;gap:13px;padding:19px 17px;border:1px solid var(--dash-line);border-radius:14px;background:var(--dash-surface);box-shadow:var(--dash-shadow)}
.summary-icon{display:grid;width:39px;height:39px;flex:0 0 auto;place-items:center;border-radius:11px;font-size:18px;font-weight:700}
.summary-icon-blue{background:#eaf1ff;color:#3974f6}
.summary-icon-violet{background:#f0edff;color:#7963db}
.summary-icon-amber{background:#fff5e3;color:#e3a034}
.summary-icon-green{background:#e8f8f0;color:#26a56b}
.summary-card p{margin:0}
.summary-label{color:var(--dash-muted);font-size:12px;font-weight:600}
.summary-value{margin-top:5px!important;color:var(--dash-text);font-size:23px;font-weight:750;letter-spacing:-.04em}
.summary-foot{margin-top:5px!important;color:var(--dash-muted);font-size:10px}
.overview-grid{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(300px,.88fr);gap:17px;margin-bottom:19px}
.panel{border:1px solid var(--dash-line);border-radius:15px;background:var(--dash-surface);box-shadow:var(--dash-shadow)}
.storage-panel,.upload-panel{min-height:238px;padding:20px 21px}
.panel-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:15px}
.panel-heading h2,.file-manager-heading h2{margin:0;color:var(--dash-text);font-size:17px;font-weight:750;letter-spacing:-.025em}
.storage-total{padding:6px 9px;border-radius:8px;background:var(--dash-blue-soft);color:var(--dash-blue);font-size:12px;font-weight:750}
.panel-description{margin:9px 0 15px;color:var(--dash-muted);font-size:11px}
.storage-chart{display:grid;gap:12px}
.chart-row{display:grid;grid-template-columns:78px minmax(70px,1fr) 92px;align-items:center;gap:10px}
.chart-label{display:grid;overflow:hidden;color:var(--dash-muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.chart-count{font-size:9px}
.chart-track{height:7px;overflow:hidden;border-radius:99px;background:var(--dash-bg)}
.chart-fill{height:100%;min-width:0;border-radius:inherit;background:var(--chart-color);transition:width .25s ease}
.chart-amount{text-align:right;color:var(--dash-text);font-size:10px;font-weight:650}
.chart-empty,.chart-loading{margin:8px 0;color:var(--dash-muted);font-size:12px}
.upload-mark{display:grid;width:33px;height:33px;place-items:center;border-radius:10px;background:var(--dash-blue-soft);color:var(--dash-blue);font-size:20px;font-weight:700}
.drop-zone{display:flex;width:100%;min-height:106px;flex-direction:column;align-items:center;justify-content:center;gap:5px;margin-top:14px;padding:13px;border:1.5px dashed #adc4f8;border-radius:12px;background:var(--dash-surface-soft);color:var(--dash-text);cursor:pointer;transition:border-color .18s,background .18s}
.drop-zone:hover,.drop-zone.is-dragging{border-color:var(--dash-blue);background:var(--dash-blue-soft)}
.drop-zone strong{font-size:12px}
.drop-zone>span:last-child{color:var(--dash-muted);font-size:11px}
.drop-zone .drop-link{color:var(--dash-blue);font-weight:700}
.drop-icon{display:grid;width:30px;height:30px;place-items:center;border-radius:9px;background:var(--dash-blue);color:#fff;font-size:18px}
.upload-help{margin:9px 0 0;color:var(--dash-muted);font-size:10px;text-align:center}
.upload-message{margin:5px 0 0!important;font-size:11px!important}
.dashboard-page .message{min-height:0;margin:0;color:var(--dash-muted);font-size:12px}
.dashboard-page .message.is-error{color:#b43e48}
.message:empty{display:none}
.page-message:not(:empty){margin:12px 0}
.file-manager{overflow:hidden}
.file-manager-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:19px 21px 16px}
.file-manager-heading .eyebrow{margin-bottom:5px}
.file-count{margin-left:5px;color:var(--dash-muted);font-size:11px;font-weight:500;letter-spacing:0}
.sort-control{display:flex;align-items:center;gap:8px;color:var(--dash-muted);font-size:11px;font-weight:600}
.sort-control select{min-height:34px;padding:0 25px 0 9px;border:1px solid var(--dash-line);border-radius:8px;background:var(--dash-surface);color:var(--dash-text);font-size:11px}
.table-wrap{overflow-x:auto}
.file-table{width:100%;border-collapse:collapse;text-align:left}
.file-table thead{background:var(--dash-surface-soft)}
.file-table th{height:39px;padding:0 14px;color:var(--dash-muted);font-size:10px;font-weight:700;white-space:nowrap}
.file-table th:first-child,.file-table td:first-child{padding-left:21px}
.file-table th:last-child,.file-table td:last-child{padding-right:21px;text-align:right}
.file-table td{height:62px;padding:9px 14px;border-top:1px solid var(--dash-line);color:var(--dash-muted);font-size:11px;white-space:nowrap}
.file-row-item:hover{background:var(--dash-surface-soft)}
.file-name-cell{display:flex;min-width:185px;align-items:center;gap:11px}
.file-type-icon{display:grid;width:34px;height:36px;flex:0 0 auto;place-items:center;border-radius:9px;background:var(--file-bg);color:var(--file-color);font-size:9px;font-weight:800;letter-spacing:.02em}
.file-name-text{overflow:hidden;max-width:340px;color:var(--dash-text);font-size:12px;font-weight:650;text-overflow:ellipsis}
.type-badge{display:inline-flex;align-items:center;padding:5px 8px;border-radius:7px;background:var(--dash-surface-soft);color:var(--dash-muted);font-size:10px}
.row-actions{display:flex;justify-content:flex-end;gap:5px}
.row-action{min-height:31px;padding:0 9px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--dash-blue)!important;font-size:10px;font-weight:700;cursor:pointer}
.row-action:hover{border-color:var(--dash-line);background:var(--dash-surface)}
.row-action.delete-action{color:#c14e58!important}
.table-state{height:136px!important;text-align:center!important;white-space:normal!important}
.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px;color:var(--dash-muted)}
.empty-state strong{color:var(--dash-text);font-size:13px}
.empty-state p{margin:0;font-size:11px}
.empty-icon{display:grid;width:38px;height:38px;place-items:center;margin-bottom:2px;border-radius:12px;background:var(--dash-blue-soft);color:var(--dash-blue);font-size:19px}
.loading-spinner{display:inline-block;width:15px;height:15px;margin-right:8px;border:2px solid var(--dash-line);border-top-color:var(--dash-blue);border-radius:50%;vertical-align:-3px;animation:dashboard-spin .8s linear infinite}
.workspace-footer{padding:19px 0 4px;color:var(--dash-muted);font-size:10px;text-align:center}
.visually-hidden,.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
@keyframes dashboard-spin{to{transform:rotate(360deg)}}
html[data-theme="dark"] .dashboard-page{
  --dash-bg:#111827;
  --dash-surface:#192336;
  --dash-surface-soft:#202d43;
  --dash-sidebar:#0d1526;
  --dash-sidebar-muted:#aab7ce;
  --dash-text:#e8edf7;
  --dash-muted:#9ba9bf;
  --dash-line:#2b3a51;
  --dash-blue:#74a0ff;
  --dash-blue-soft:#263a5e;
  --dash-shadow:0 10px 28px rgba(0,0,0,.14);
  color-scheme:dark;
}
html[data-theme="dark"] .dashboard-page .avatar{background:#273c63;color:#a9c4ff!important}
html[data-theme="dark"] .dashboard-page .file-type-icon{filter:saturate(.85)}
@media(max-width:1100px){
  .summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .overview-grid{grid-template-columns:minmax(0,1fr) minmax(280px,.9fr)}
  .file-table th,.file-table td{padding-right:10px;padding-left:10px}
}
@media(max-width:800px){
  .sidebar{width:245px;transform:translateX(-102%);transition:transform .22s ease}
  .dashboard-shell.sidebar-open .sidebar{transform:translateX(0)}
  .dashboard-shell.sidebar-open .sidebar-scrim{position:fixed;inset:0;z-index:15;display:block;border:0;background:rgba(9,18,35,.48)}
  .workspace{margin-left:0}
  .mobile-menu-button{display:grid;flex:0 0 auto}
  .workspace-header{justify-content:flex-start;padding:0 20px}
  .global-search{width:min(490px,100%);flex:1}
  .header-actions{margin-left:auto}
  .page-content{padding:27px 20px}
}
@media(max-width:640px){
  .workspace-header{height:64px;gap:10px;padding:0 14px}
  .icon-button{width:36px;height:36px}
  .avatar{width:35px;height:35px}
  .global-search{height:39px;padding:0 9px}
  .global-search kbd{display:none}
  .page-content{padding:24px 14px}
  .page-heading{align-items:flex-start;flex-direction:column;gap:16px}
  .page-heading h1{font-size:28px}
  .page-subtitle{max-width:300px;line-height:1.5}
  .heading-actions{width:100%;justify-content:flex-start}
  .dashboard-page .button{min-height:39px;padding:0 12px}
  .summary-grid{gap:10px}
  .summary-card{min-height:105px;gap:9px;padding:14px 11px}
  .summary-icon{width:33px;height:33px;font-size:16px}
  .summary-value{font-size:20px}
  .summary-foot{font-size:9px}
  .overview-grid{grid-template-columns:1fr;gap:12px}
  .storage-panel,.upload-panel{min-height:0;padding:17px 15px}
  .file-manager-heading{align-items:flex-start;padding:16px 14px 13px}
  .file-table,.file-table tbody{display:block}
  .file-table thead{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
  .file-table tr.file-row-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:0 8px;padding:12px 14px;border-top:1px solid var(--dash-line)}
  .file-table tr.file-row-item:first-child{border-top:0}
  .file-table td{display:block;height:auto;min-width:0;padding:4px 0;border:0;white-space:normal}
  .file-table td:first-child{grid-column:1/-1;padding:2px 0 7px}
  .file-table td:last-child{grid-column:1/-1;padding:5px 0 0;text-align:left}
  .file-table td[data-label]::before{content:attr(data-label) ": ";color:var(--dash-muted);font-size:10px;font-weight:600}
  .file-table .file-name-cell{min-width:0}
  .file-name-text{max-width:calc(100vw - 130px)}
  .file-table td.table-state{display:block;width:100%;height:130px!important;padding:20px 8px}
  .row-actions{justify-content:flex-start}
  .row-action{min-height:30px;padding:0 9px}
}
  .dashboard-page .preview-dialog{width:min(900px,calc(100vw - 32px));max-width:900px;max-height:85vh;padding:0;overflow:hidden;border:1px solid var(--dash-line);border-radius:16px;background:var(--dash-surface);color:var(--dash-text);box-shadow:0 24px 80px rgba(0,0,0,.24)}
  .dashboard-page .preview-dialog::backdrop{background:rgba(11,20,37,.62);backdrop-filter:blur(3px)}
  .preview-header{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 20px;border-bottom:1px solid var(--dash-line)}
  .preview-header .eyebrow{margin-bottom:4px}
  .preview-header h2{max-width:min(70vw,720px);margin:0;overflow:hidden;color:var(--dash-text);font-size:16px;text-overflow:ellipsis;white-space:nowrap}
  .preview-content{display:flex;min-height:180px;max-height:calc(85vh - 78px);align-items:center;justify-content:center;overflow:auto;padding:18px;background:var(--dash-surface-soft)}
  .preview-image{display:block;max-width:100%;max-height:calc(85vh - 125px);object-fit:contain}
  .preview-frame{width:100%;height:min(72vh,720px);border:0;background:#fff}
  .preview-text{width:100%;margin:0;overflow:auto;color:var(--dash-text);font:13px/1.6 ui-monospace,SFMono-Regular,Consolas,monospace;white-space:pre-wrap;overflow-wrap:anywhere}
  .preview-status{margin:0;color:var(--dash-muted);font-size:13px}
  .preview-status.is-error{color:#b43e48}
  @media(max-width:640px){
    .preview-header{padding:14px}
    .preview-content{padding:12px}
    .preview-frame{height:70vh}
  }
@media(prefers-reduced-motion:reduce){
  .dashboard-page *, .dashboard-page *::before, .dashboard-page *::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}
}
