:root,:root[data-theme=light]{--bg: #f5f5f6;--surface: #ffffff;--surface-2: #fafafb;--ink: #16161a;--ink-2: #54545d;--ink-3: #8a8a94;--line: #e6e6ea;--hover: #f1f1f4;--accent: #2563eb;--accent-hover: #1d4ed8;--on-accent: #ffffff;--sel: color-mix(in srgb, var(--accent) 9%, var(--surface));--danger: #dc2626;--danger-bg: #fef2f2;--warn: #b45309;--ok: #16a34a;--folder: #444746;--t-image: #16a34a;--t-video: #db2777;--t-audio: #ea580c;--t-pdf: #dc2626;--t-text: #2563eb;--t-file: #6b7280;--scrim: rgb(10 10 12 / .4);--glass: rgb(255 255 255 / .78);--thumb: rgb(0 0 0 / .2);--thumb-hover: rgb(0 0 0 / .38);--shadow-sm: 0 1px 2px rgb(0 0 0 / .04);--shadow: 0 1px 2px rgb(0 0 0 / .06), 0 16px 40px rgb(0 0 0 / .14);color-scheme:light}:root[data-theme=dark]{--bg: #050505;--surface: #131314;--surface-2: #191919;--ink: #ededed;--ink-2: #a1a1a1;--ink-3: #6b6b6b;--line: #242424;--hover: #1b1b1b;--accent: #3b82f6;--accent-hover: #2563eb;--on-accent: #ffffff;--sel: color-mix(in srgb, var(--accent) 14%, var(--surface));--danger: #ff6b6b;--danger-bg: #2a1414;--warn: #fbbf24;--ok: #4ade80;--folder: #c4c7c5;--t-image: #4ade80;--t-video: #f472b6;--t-audio: #fb923c;--t-pdf: #f87171;--t-text: #60a5fa;--t-file: #a1a1aa;--scrim: rgb(0 0 0 / .65);--glass: rgb(18 18 18 / .78);--thumb: rgb(255 255 255 / .16);--thumb-hover: rgb(255 255 255 / .3);--shadow-sm: 0 1px 2px rgb(0 0 0 / .5);--shadow: 0 1px 2px rgb(0 0 0 / .6), 0 18px 48px rgb(0 0 0 / .7);color-scheme:dark}:root{--bar-h: 56px;--ctl: 36px;--ctl-sm: 30px;--act-w: 100px;--r-sm: 8px;--r-md: 10px;--r-lg: 14px;--r-xl: 18px;--ease: cubic-bezier(.2, 0, 0, 1)}*,*:before,*:after{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font:14px/1.5 Instrument Sans,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}button,select{font:inherit;color:inherit;touch-action:manipulation}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}::selection{background:color-mix(in srgb,var(--accent) 35%,transparent)}.grow{flex:1}.muted{color:var(--ink-3)}.icon{flex:none}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@keyframes fade-in{0%{opacity:0}}@supports selector(::-webkit-scrollbar){::-webkit-scrollbar{width:12px;height:12px}::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}::-webkit-scrollbar-thumb{background-color:var(--thumb);background-clip:padding-box;border:3px solid transparent;border-radius:99px}::-webkit-scrollbar-thumb:hover{background-color:var(--thumb-hover)}::-webkit-scrollbar-thumb:active{background-color:var(--accent)}}@supports not selector(::-webkit-scrollbar){*{scrollbar-width:thin;scrollbar-color:var(--thumb) transparent}}.ibtn{width:var(--ctl);height:var(--ctl);display:inline-grid;place-items:center;flex:none;border:0;border-radius:var(--r-md);background:transparent;color:var(--ink-2);cursor:pointer;transition:background-color .12s,color .12s}.ibtn.sm{width:var(--ctl-sm);height:var(--ctl-sm);border-radius:var(--r-sm)}.ibtn.boxed{border:1px solid var(--line);background:var(--surface)}.ibtn:disabled{opacity:.4;cursor:default}.ibtn:active:not(:disabled){background:var(--hover)}.btn{height:var(--ctl);padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface);font-weight:600;white-space:nowrap;cursor:pointer;transition:background-color .12s,border-color .12s}.btn.primary{background:var(--accent);border-color:transparent;color:var(--on-accent)}.btn:disabled{opacity:.5;cursor:default}.btn:active:not(:disabled){background:var(--hover)}.btn.primary:active:not(:disabled){background:var(--accent-hover)}.unavailable{opacity:.5;cursor:not-allowed}@media(hover:hover){.ibtn:hover:not(:disabled){background:var(--hover);color:var(--ink)}.btn:hover:not(:disabled){background:var(--hover)}.btn.primary:hover:not(:disabled){background:var(--accent-hover)}}.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:99px;background:var(--line);color:var(--ink-2);font-size:12.5px;font-variant-numeric:tabular-nums;white-space:nowrap}.field{display:inline-flex;align-items:center;gap:8px;color:var(--ink-3)}.field select{appearance:none;-webkit-appearance:none;height:var(--ctl);padding:0 32px 0 12px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238a8a94' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 10px center;color:var(--ink);cursor:pointer}.seg{display:inline-flex;padding:3px;gap:2px;border:1px solid var(--line);border-radius:var(--r-md);background:var(--surface)}.seg button{width:34px;height:calc(var(--ctl) - 8px);display:grid;place-items:center;border:0;border-radius:calc(var(--r-md) - 3px);background:transparent;color:var(--ink-3);cursor:pointer;transition:background-color .12s,color .12s}.seg button.on{background:var(--sel);color:var(--accent)}.glyph{--c: var(--ink-3);flex:none;display:grid;place-items:center;color:var(--c)}.glyph.sm{width:34px;height:34px}.glyph.lg{width:76px;height:76px}.glyph:not(.t-folder){border-radius:6px;background:color-mix(in srgb,var(--c) 14%,transparent)}.glyph.lg:not(.t-folder){border-radius:22px}.t-folder{--c: var(--folder)}.t-folder.sm .icon{width:28px;height:28px}.t-folder.lg .icon{width:68px;height:68px}.t-image{--c: var(--t-image)}.t-video{--c: var(--t-video)}.t-audio{--c: var(--t-audio)}.t-pdf{--c: var(--t-pdf)}.t-text{--c: var(--t-text)}.t-file{--c: var(--t-file)}.item-text{min-width:0}.item-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}.item-meta{min-height:18px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink-3);font-size:12.5px;font-variant-numeric:tabular-nums}.content-card{overflow:clip;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);transition:opacity .15s}.state{display:flex;flex-direction:column;align-items:center;gap:8px;padding:56px 24px;text-align:center;color:var(--ink-2)}.state h3{margin-top:8px;color:var(--ink);font-size:17px;font-weight:600;overflow-wrap:anywhere}.state p{max-width:46ch;overflow-wrap:anywhere}.state.err>.icon{color:var(--danger)}.state-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:12px}.skel{background:linear-gradient(90deg,var(--hover),var(--surface-2),var(--hover));background-size:200% 100%;animation:shine 1.4s linear infinite;border-radius:var(--r-sm)}@keyframes shine{to{background-position:-200% 0}}.skel.line{height:12px}.skel.sq{width:34px;height:34px;flex:none}.skel.inline{display:inline-block;width:60px;height:14px;vertical-align:middle}.skel.w40{width:40%;margin-left:auto}.skel.w50{width:50%}.skel.w60{width:60%}.skel.w70{width:70%}.shell{height:100dvh;display:flex;flex-direction:column}.boot{height:100dvh;display:grid;place-items:center;color:var(--ink-3)}.topbar{height:var(--bar-h);flex:none;display:flex;align-items:center;gap:12px;padding:0 20px;background:var(--surface);border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;font-size:18px;font-weight:700;letter-spacing:-.02em}.body{position:relative;flex:1;min-height:0;display:flex;overflow:hidden}.main{--pad-bottom: 40px;flex:1;min-width:0;overflow:auto;padding:24px 32px max(calc(var(--pad-bottom) + env(safe-area-inset-bottom,0px)),var(--download-tray-space, 0px));scrollbar-gutter:stable;overscroll-behavior:contain}.page{width:100%;max-width:1200px;margin:0 auto}@media(max-width:640px){.main{--pad-bottom: 28px;padding-top:16px;padding-inline:14px}}.toasts{position:fixed;top:calc(var(--bar-h) + 12px);left:0;right:0;z-index:60;display:grid;justify-items:center;gap:8px;width:min(440px,calc(100vw - 24px));margin:0 auto;pointer-events:none}.toast,.download-card{--ctl-sm: 28px}.toast{pointer-events:auto;display:flex;align-items:center;gap:10px;max-width:100%;padding:8px 8px 8px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:var(--shadow);animation:toast-in .18s var(--ease)}@keyframes toast-in{0%{opacity:0;transform:translateY(-8px)}}.toast.success>.icon{color:var(--ok)}.toast.warning{border-color:var(--warn)}.toast.warning>.icon{color:var(--warn)}.toast.error{border-color:var(--danger)}.toast.error>.icon{color:var(--danger)}.toast-body{flex:1;min-width:0;display:flex;flex-direction:column;overflow-wrap:anywhere}.toast-body b{font-weight:600}.inline-error{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px 14px;padding:14px 16px;border:1px solid color-mix(in srgb,var(--danger) 35%,var(--line));border-radius:var(--r-lg);background:var(--danger-bg)}.inline-error>.icon{color:var(--danger)}.inline-error-title{font-size:15px;font-weight:600;overflow-wrap:anywhere}.inline-error-text{margin-top:2px;color:var(--ink-2);overflow-wrap:anywhere}.inline-error-actions{display:flex;flex-wrap:wrap;gap:8px}@media(max-width:640px){.inline-error{grid-template-columns:auto minmax(0,1fr);align-items:start;padding:12px 14px}.inline-error>.icon{margin-top:1px}.inline-error-actions{grid-column:1 / -1}.inline-error-actions>.btn{flex:1 1 0}}.download-tray{position:fixed;left:8px;bottom:calc(8px + env(safe-area-inset-bottom,0px));z-index:15;display:grid;grid-template-columns:minmax(0,1fr);gap:8px;width:min(450px,calc(100vw - 16px));max-height:min(50dvh,440px);padding:8px;overflow-x:hidden;overflow-y:auto;overscroll-behavior:contain;pointer-events:none}.viewer{padding-bottom:var(--download-tray-space, 0px)}.download-card{pointer-events:auto;display:grid;grid-template-columns:minmax(0,1fr);gap:10px;min-width:0;padding:12px 8px 12px 12px;border:1px solid var(--line);border-radius:var(--r-lg);background:var(--surface);box-shadow:0 2px 10px #00000029;animation:toast-in .18s var(--ease)}.download-card.err{border-color:var(--danger)}.download-head{display:flex;align-items:center;gap:10px;min-width:0}.download-text{flex:1;min-width:0}.download-name{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;overflow-wrap:anywhere;font-weight:600;line-height:1.35}.download-status{display:flex;align-items:center;gap:6px;color:var(--ink-2);font-variant-numeric:tabular-nums}.download-state{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.download-card.done .download-status{color:var(--ok)}.download-card.err .download-status{align-items:flex-start;color:var(--danger)}.download-card.err .download-status>.icon{margin-top:3px}.download-card.err .download-state{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;white-space:normal;overflow-wrap:anywhere}.download-progress{display:grid;gap:8px;padding-right:4px}.progress-bar{height:6px;border-radius:99px;overflow:hidden;background:var(--hover)}.progress-bar>i{display:block;width:0;height:100%;border-radius:inherit;background:var(--accent);transition:width 1s ease-out}.progress-bar.indeterminate>i{width:35%;animation:progress-slide 1.2s ease-in-out infinite}.download-card.done .progress-bar>i{background:var(--ok)}@keyframes progress-slide{0%{transform:translate(-100%)}to{transform:translate(290%)}}.download-detail{display:flex;justify-content:space-between;gap:12px;min-height:18px;color:var(--ink-3);font-size:12.5px;font-variant-numeric:tabular-nums}.download-detail>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:900px),(hover:none)and (pointer:coarse){.download-tray{left:0;right:0;bottom:env(safe-area-inset-bottom,0px);width:min(480px,100%);margin-inline:auto;z-index:35}}@media(max-width:640px){.download-tray{gap:6px;max-height:min(36dvh,300px)}.download-card{gap:8px;padding:10px 4px 10px 12px}.download-head{gap:8px}.download-head>.glyph{display:none}.download-progress{gap:6px}.progress-bar{height:4px}}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}:root[data-input=touch]{--ctl: 42px;--ctl-sm: 38px;--act-w: 46px}:root[data-input=touch] .seg button{width:38px}:root[data-input=touch] .slider{height:32px}:root[data-input=touch] .field select{font-size:16px}@media(max-width:640px){:root{--bar-h: 52px}.topbar{padding:0 14px}.btn .lbl{display:none}.btn:has(>.lbl){padding:0 11px}.state{padding:36px 20px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
