:root{color-scheme:dark;--color-bg: #0b0d10;--color-bg-elevated: #12151a;--color-surface: #161a1f;--color-surface-secondary: #1d2228;--color-border: #2a2f36;--color-border-strong: #3a4149;--color-text: #e6e8eb;--color-text-dim: #9aa3ad;--color-text-tertiary: #6b7480;--color-accent: #4f8cff;--color-accent-hover: #70a3ff;--color-accent-pressed: #3f73d6;--color-accent-soft: rgba(79, 140, 255, .14);--color-danger: #ff6b6b;--color-danger-hover: #ff8585;--color-danger-soft: rgba(255, 107, 107, .14);--color-success: #3ddc84;--color-warning: #f3d675;--focus-ring: 0 0 0 3px rgba(79, 140, 255, .45);--text-xs: .8125rem;--text-sm: .875rem;--text-base: .9375rem;--text-lg: 1.0625rem;--text-xl: 1.3125rem;--text-2xl: 1.75rem;--text-3xl: 2.25rem;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-8: 3rem;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 18px;--radius-full: 999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 8px 24px rgba(0, 0, 0, .35);--ease: cubic-bezier(.2, .8, .2, 1);--duration-fast: .12s;--duration-base: .2s;font-family:-apple-system,BlinkMacSystemFont,SF Pro Text,Segoe UI,Helvetica,Arial,sans-serif}:root[data-theme=light]{color-scheme:light;--color-bg: #f5f6f8;--color-bg-elevated: #ffffff;--color-surface: #ffffff;--color-surface-secondary: #f0f1f4;--color-border: #e1e4e8;--color-border-strong: #c9ccd1;--color-text: #1b1f23;--color-text-dim: #5b6572;--color-text-tertiary: #8a9099;--color-accent: #0969da;--color-accent-hover: #0860c7;--color-accent-pressed: #06499e;--color-accent-soft: rgba(9, 105, 218, .1);--color-danger: #d1242f;--color-danger-hover: #b01e28;--color-danger-soft: rgba(209, 36, 47, .08);--color-success: #1a7f37;--color-warning: #9a6700;--focus-ring: 0 0 0 3px rgba(9, 105, 218, .35);--shadow-sm: 0 1px 2px rgba(20, 24, 28, .06);--shadow-md: 0 8px 24px rgba(20, 24, 28, .1)}@media (prefers-contrast: more){:root[data-theme]{--color-border: var(--color-border-strong)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}*{box-sizing:border-box}body{margin:0;background:var(--color-bg);color:var(--color-text);font-size:var(--text-base);line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}h1,h2,h3{font-weight:650;letter-spacing:-.015em;line-height:1.2}h1{font-size:var(--text-2xl);margin:0 0 var(--space-1)}h2{font-size:var(--text-xl);margin:var(--space-6) 0 var(--space-3)}h3{font-size:var(--text-lg);margin:var(--space-4) 0 var(--space-2)}p{margin:0 0 var(--space-3)}a{color:var(--color-accent);text-decoration:none}a:hover{text-decoration:underline}:focus-visible{outline:none;box-shadow:var(--focus-ring);border-radius:var(--radius-sm)}.skip-link{position:absolute;left:-9999px;top:var(--space-2);z-index:100;background:var(--color-accent);color:#fff;padding:var(--space-2) var(--space-4);border-radius:var(--radius-sm);font-weight:600}.skip-link:focus-visible{left:var(--space-2)}code,.code-block{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.code-block{background:var(--color-surface-secondary);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:var(--space-3);overflow-x:auto;white-space:pre;font-size:var(--text-xs)}.mfa-qr{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-2);margin:var(--space-3) 0}.mfa-qr img{border-radius:var(--radius-sm);border:1px solid var(--color-border);padding:var(--space-3);background:#fff}.mfa-qr summary{cursor:pointer;color:var(--color-accent)}.app-loading{min-height:100vh;display:flex;align-items:center;justify-content:center;color:var(--color-text-dim)}.app-shell{min-height:100vh;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:var(--space-5);padding:var(--space-3) var(--space-5);padding-top:calc(var(--space-3) + env(safe-area-inset-top,0px));border-bottom:1px solid var(--color-border);background:color-mix(in srgb,var(--color-bg-elevated) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.app-title{display:flex;align-items:center;gap:var(--space-2);font-weight:700;letter-spacing:-.01em;white-space:nowrap}.brand-mark{flex-shrink:0}.app-header nav{display:flex;gap:var(--space-4);flex:1;overflow-x:auto;scrollbar-width:none}.app-header nav::-webkit-scrollbar{display:none}.app-header nav a{position:relative;color:var(--color-text-dim);text-decoration:none;padding:var(--space-2) 0;white-space:nowrap;font-size:var(--text-sm);font-weight:500;transition:color var(--duration-fast) var(--ease)}.app-header nav a:hover{color:var(--color-text);text-decoration:none}.app-header nav a:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:var(--radius-full);background:var(--color-accent);transform:scaleX(0);transform-origin:left;transition:transform var(--duration-base) var(--ease)}.app-header nav a.active{color:var(--color-text)}.app-header nav a.active:after{transform:scaleX(1)}.app-header-user{display:flex;align-items:center;gap:var(--space-3);color:var(--color-text-dim);font-size:var(--text-sm);white-space:nowrap}.theme-toggle{display:inline-flex;align-items:center;gap:2px;padding:2px;border-radius:var(--radius-full);background:var(--color-surface-secondary);border:1px solid var(--color-border)}.theme-toggle-option{display:flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;min-height:0;padding:0;border:none;border-radius:var(--radius-full);background:transparent;color:var(--color-text-dim);box-shadow:none}.theme-toggle-option:hover:not(:disabled):not(.active){background:var(--color-border);filter:none;color:var(--color-text)}.theme-toggle-option.active{background:var(--color-accent);color:#fff}.theme-toggle-option:active:not(:disabled){transform:scale(.92)}.app-main{flex:1;width:100%;max-width:960px;margin:0 auto;padding:var(--space-6) var(--space-5);padding-bottom:calc(var(--space-6) + env(safe-area-inset-bottom,0px));animation:page-in var(--duration-base) var(--ease)}@keyframes page-in{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.page-header{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4);margin-bottom:var(--space-5);flex-wrap:wrap}.page-header h1{margin-bottom:var(--space-1)}.page-header .hint{margin:0;max-width:60ch}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-5);box-shadow:var(--shadow-sm);overflow-x:auto}.card+.card{margin-top:var(--space-5)}.card>h2:first-child,.card>h3:first-child{margin-top:0}.auth-page{position:relative;min-height:100vh;display:flex;flex-direction:column;gap:var(--space-5);align-items:center;justify-content:center;padding:var(--space-4);padding-top:calc(var(--space-4) + env(safe-area-inset-top,0px));padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));overflow:hidden}.auth-page:before{content:"";position:absolute;top:-10%;right:-10%;bottom:-10%;left:-10%;z-index:0;background:radial-gradient(40rem 26rem at 50% 10%,color-mix(in srgb,var(--color-accent) 12%,transparent),transparent 60%);pointer-events:none}.auth-page>*{position:relative;z-index:1}.auth-form{width:100%;max-width:380px;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-6);display:flex;flex-direction:column;gap:var(--space-3);box-shadow:var(--shadow-md);animation:card-in var(--duration-base) var(--ease)}@keyframes card-in{0%{opacity:0;transform:translateY(8px) scale(.99)}to{opacity:1;transform:translateY(0) scale(1)}}.auth-form h1{margin-bottom:var(--space-2)}.auth-form label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-sm);font-weight:500;color:var(--color-text-dim)}.auth-switch{font-size:var(--text-sm);color:var(--color-text-dim);text-align:center}.link-button{background:none;border:none;color:var(--color-accent);padding:0;font-weight:400;font-size:inherit;text-decoration:underline;cursor:pointer}.link-button:hover{color:var(--color-accent-hover)}input,select,textarea{font:inherit;font-size:var(--text-base);padding:var(--space-2) var(--space-3);min-height:2.75rem;border-radius:var(--radius-sm);border:1px solid var(--color-border);background:var(--color-bg-elevated);color:var(--color-text);transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}input::placeholder,textarea::placeholder{color:var(--color-text-tertiary)}input:hover,select:hover,textarea:hover{border-color:var(--color-border-strong)}input:focus-visible,select:focus-visible,textarea:focus-visible{border-color:var(--color-accent)}input:disabled,select:disabled,textarea:disabled{opacity:.6;cursor:not-allowed}button{font:inherit;font-size:var(--text-base);padding:var(--space-2) var(--space-4);min-height:2.75rem;border-radius:var(--radius-sm);border:1px solid transparent;cursor:pointer;background:var(--color-accent);color:#fff;font-weight:600;white-space:nowrap;flex-shrink:0;box-shadow:0 1px #fff3 inset,var(--shadow-sm);transition:filter var(--duration-fast) var(--ease),background-color var(--duration-fast) var(--ease),transform var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}button:hover:not(:disabled){filter:brightness(1.08);box-shadow:0 1px #ffffff40 inset,var(--shadow-md)}button:active:not(:disabled){transform:scale(.98)}button:disabled{opacity:.55;cursor:not-allowed;transform:none}button.danger{background:var(--color-danger)}button.danger:hover:not(:disabled){background:var(--color-danger-hover)}.btn-secondary{background:var(--color-surface-secondary);color:var(--color-text);border-color:var(--color-border)}.btn-secondary:hover:not(:disabled){background:var(--color-border)}.form-error{color:var(--color-danger);font-size:var(--text-sm);display:flex;align-items:flex-start;gap:var(--space-2)}.form-success{color:var(--color-success);font-size:var(--text-sm)}.form-hint,.hint{color:var(--color-text-dim);font-size:var(--text-sm)}.danger-heading{color:var(--color-danger)}.data-table{width:100%;border-collapse:collapse;font-size:var(--text-sm)}.data-table th,.data-table td{text-align:left;padding:var(--space-3);border-bottom:1px solid var(--color-border);word-break:break-word}.data-table th{color:var(--color-text-dim);font-weight:600;font-size:var(--text-xs);text-transform:uppercase;letter-spacing:.04em}.data-table tbody tr{transition:background-color var(--duration-fast) var(--ease)}.data-table tbody tr:hover{background:var(--color-surface-secondary)}.data-table tbody tr:last-child td{border-bottom:none}.row-actions{display:flex;gap:var(--space-2);justify-content:flex-end}.status-badge{display:inline-flex;align-items:center;gap:var(--space-1);padding:var(--space-1) var(--space-3);border-radius:var(--radius-full);font-size:var(--text-xs);font-weight:600;text-transform:capitalize}.status-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.status-pending{background:#594a1a;color:#f3d675}.status-active{background:#1a4d2e;color:#7ee2a8}.status-revoked,.status-suspended{background:#4d1a1a;color:#f28b8b}.status-deactivated{background:#333;color:#aaa}.detail-list{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-3) var(--space-5)}.detail-list dt{color:var(--color-text-dim);font-size:var(--text-sm)}.detail-list dd{margin:0}.inline-form{display:flex;gap:var(--space-2);align-items:center;flex-wrap:wrap}.usage-meter{margin-bottom:var(--space-5)}.usage-bar-track{width:100%;height:10px;border-radius:var(--radius-full);background:var(--color-surface-secondary);border:1px solid var(--color-border);overflow:hidden}.usage-bar-fill{height:100%;background:var(--color-accent);border-radius:var(--radius-full);transition:width var(--duration-base) var(--ease)}.usage-bar-over{background:var(--color-danger)}.spinner{display:inline-block;width:1.25rem;height:1.25rem;border:2px solid var(--color-border);border-top-color:var(--color-accent);border-radius:50%;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.loading-state{display:flex;align-items:center;gap:var(--space-3);color:var(--color-text-dim);padding:var(--space-6) 0;font-size:var(--text-sm)}.empty-state{text-align:center;padding:var(--space-8) var(--space-4);color:var(--color-text-dim);border:1px dashed var(--color-border);border-radius:var(--radius-md)}.empty-state p{margin:0 0 var(--space-2)}.empty-state p:last-child{margin-bottom:0}.empty-state-title{color:var(--color-text);font-weight:600;font-size:var(--text-base)}.admin-tabs{display:flex;gap:var(--space-4);border-bottom:1px solid var(--color-border);margin-bottom:var(--space-5);padding-bottom:var(--space-2);overflow-x:auto;scrollbar-width:none}.admin-tabs::-webkit-scrollbar{display:none}.admin-tabs a{color:var(--color-text-dim);text-decoration:none;white-space:nowrap;font-weight:500;font-size:var(--text-sm);padding-bottom:var(--space-2);border-bottom:2px solid transparent;transition:color var(--duration-fast) var(--ease)}.admin-tabs a:hover{color:var(--color-text)}.admin-tabs a.active{color:var(--color-accent);font-weight:600;border-bottom-color:var(--color-accent)}.admin-stats{display:flex;gap:var(--space-4);flex-wrap:wrap}.admin-stat-card{position:relative;display:flex;flex-direction:column;gap:var(--space-1);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:var(--space-4) var(--space-5);padding-top:calc(var(--space-4) + 3px);background:var(--color-surface);box-shadow:var(--shadow-sm);min-width:10rem;flex:1;overflow:hidden;transition:transform var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}.admin-stat-card:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--color-accent)}.admin-stat-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.admin-stat-value{font-size:var(--text-2xl);font-weight:700;font-variant-numeric:tabular-nums}.admin-stat-label{color:var(--color-text-dim);font-size:var(--text-sm)}.admin-pager{display:flex;align-items:center;gap:var(--space-3);margin-top:var(--space-4)}@media (max-width: 640px){.app-header{gap:var(--space-3);padding-inline:var(--space-4)}.app-header-user span{display:none}}@media (max-width: 400px){.app-header{flex-wrap:wrap}.app-title{order:1}.app-header-user{order:2}.app-header nav{order:3;flex:1 1 100%}.app-main{padding:var(--space-4)}.page-header{flex-direction:column}.detail-list{grid-template-columns:1fr;gap:var(--space-1) 0}.detail-list dt{margin-top:var(--space-2)}}.unlock-form{display:grid;gap:var(--space-3);max-width:28rem}.unlock-form label{display:flex;flex-direction:column;gap:var(--space-1);font-size:var(--text-sm);font-weight:500;color:var(--color-text-dim)}.unlock-form input[type=file]{padding:var(--space-2)}.unlock-form button{justify-self:start}.tree-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4)}.tree-head .hint{margin:0 0 var(--space-3)}.tree{border:1px solid var(--color-border);border-radius:var(--radius-sm);overflow:hidden}.tree-row{display:grid;grid-template-columns:minmax(0,1fr) 11rem 5.5rem 6.5rem;align-items:center;gap:var(--space-3);min-height:2.5rem;padding:var(--space-1) var(--space-3);border-bottom:1px solid var(--color-border);transition:background-color var(--duration-fast) var(--ease)}.tree-row:hover{background:var(--color-surface-secondary)}.tree>:last-child>.tree-row:last-child,.tree>.tree-row:last-child{border-bottom:none}summary.tree-row{cursor:pointer;list-style:none;font-weight:600}summary.tree-row::-webkit-details-marker{display:none}.tree-name{display:flex;align-items:center;gap:var(--space-2);min-width:0}.tree-name>span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tree-chevron{width:.5rem;height:.5rem;flex-shrink:0;border-right:2px solid var(--color-text-tertiary);border-bottom:2px solid var(--color-text-tertiary);transform:rotate(-45deg);transition:transform var(--duration-fast) var(--ease)}details[open]>summary .tree-chevron{transform:rotate(45deg)}.tree-icon{flex-shrink:0;color:var(--color-text-dim)}.tree-icon-folder{color:var(--color-accent)}.tree-file .tree-name{padding-left:calc(.5rem + var(--space-2))}.tree-meta{color:var(--color-text-dim);font-size:var(--text-sm);font-variant-numeric:tabular-nums;white-space:nowrap}.tree-size{text-align:right}.tree-action{justify-self:end;min-height:2rem;padding:var(--space-1) var(--space-3);font-size:var(--text-sm)}span.tree-action{padding:0}@media (max-width: 640px){.tree-row{grid-template-columns:minmax(0,1fr) auto;row-gap:var(--space-1);padding-block:var(--space-2)}.tree-name{grid-column:1 / -1}.tree-size{text-align:left}.tree-modified{display:none}}.auth-cta{display:block;padding:var(--space-3) var(--space-4);border-radius:var(--radius-sm);background:var(--color-accent);color:#fff;font-weight:600;text-align:center;text-decoration:none}.auth-cta:hover{background:var(--color-accent-hover);text-decoration:none}.auth-form label.check-row,.check-row{flex-direction:row;align-items:flex-start;gap:var(--space-3);font-weight:400;color:var(--color-text);line-height:1.4}.check-row input[type=checkbox]{flex:none;width:1.25rem;height:1.25rem;min-height:0;margin:.1rem 0 0;padding:0;accent-color:var(--color-accent)}.legal-footer{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--space-2) var(--space-5);padding:var(--space-5) var(--space-4);font-size:var(--text-sm);color:var(--color-text-dim)}.legal-footer a{color:var(--color-text-dim)}.legal-footer a:hover{color:var(--color-accent)}.legal-page{min-height:100vh;display:flex;flex-direction:column}.legal-header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);padding-top:calc(var(--space-3) + env(safe-area-inset-top,0px));border-bottom:1px solid var(--color-border);background:var(--color-surface)}.legal-header .app-title{order:0;text-decoration:none;color:var(--color-text)}.legal-body{width:100%;max-width:44rem;margin:0 auto;padding:var(--space-6) var(--space-4);flex:1;line-height:1.6}.legal-body h2{margin:var(--space-6) 0 var(--space-2);font-size:var(--text-lg)}.legal-body p,.legal-body li{color:var(--color-text)}.legal-body ul{padding-left:var(--space-5)}.cookie-notice{position:fixed;left:var(--space-4);right:var(--space-4);bottom:calc(var(--space-4) + env(safe-area-inset-bottom,0px));max-width:34rem;margin:0 auto;z-index:50;display:flex;align-items:center;gap:var(--space-4);padding:var(--space-3) var(--space-4);background:var(--color-surface);border:1px solid var(--color-border-strong);border-radius:var(--radius-md);box-shadow:var(--shadow-md);font-size:var(--text-sm)}.cookie-notice p{margin:0;color:var(--color-text-dim)}.cookie-notice button{flex:none}@media (max-width: 480px){.cookie-notice{flex-direction:column;align-items:stretch;gap:var(--space-3)}}.dl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:var(--space-3);margin:var(--space-3) 0}.dl-card{display:flex;flex-direction:column;gap:var(--space-1);padding:var(--space-4);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-md);color:var(--color-text);text-decoration:none;transition:border-color var(--duration-fast) var(--ease),box-shadow var(--duration-fast) var(--ease)}.dl-card:hover{border-color:var(--color-accent);box-shadow:var(--shadow-sm)}.dl-card span{font-size:var(--text-sm);color:var(--color-text-dim)}.dl-card .dl-action{margin-top:var(--space-2);color:var(--color-accent);font-weight:600}.dl-recommended{border-color:var(--color-accent);background:var(--color-accent-soft)}.code-block{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-2) var(--space-2) var(--space-2) var(--space-4);background:var(--color-surface-secondary);border:1px solid var(--color-border);border-radius:var(--radius-sm);margin:var(--space-2) 0}.code-block code{overflow-x:auto;white-space:nowrap;font-size:var(--text-sm)}.os-tabs{display:inline-flex;gap:var(--space-1);padding:var(--space-1);background:var(--color-surface-secondary);border-radius:var(--radius-full);margin:var(--space-2) 0}.os-tabs button{background:none;border:none;color:var(--color-text-dim);border-radius:var(--radius-full);padding:var(--space-1) var(--space-4);font-weight:500;min-height:2rem}.os-tabs button.active{background:var(--color-surface);color:var(--color-text);box-shadow:var(--shadow-sm)}.dl-manual summary{cursor:pointer;color:var(--color-accent);margin:var(--space-3) 0}.app-title{color:var(--color-text);text-decoration:none}.legal-header-actions{display:flex;align-items:center;gap:var(--space-4);font-size:var(--text-sm)}.tab-bar{display:none}.card{overflow-x:auto}.data-table{min-width:34rem}@media (max-width: 720px){.app-header nav,.app-header-name{display:none}.data-table th,.data-table td{white-space:nowrap;word-break:normal}.app-header{justify-content:space-between}.app-header-user{margin-left:auto}.tab-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:20;padding-bottom:env(safe-area-inset-bottom,0px);background:color-mix(in srgb,var(--color-bg-elevated) 92%,transparent);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-top:1px solid var(--color-border)}.tab-bar a{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:3.25rem;color:var(--color-text-dim);text-decoration:none;font-size:.6875rem;font-weight:500}.tab-bar a.active{color:var(--color-accent)}.app-shell,.legal-page{padding-bottom:calc(3.5rem + env(safe-area-inset-bottom,0px))}.cookie-notice{bottom:calc(4.5rem + env(safe-area-inset-bottom,0px))}}
