:root{--bg:#070B16;--surface:#0E1528;--surface-2:#121B32;--surface-3:#18233E;--text:#F5F7FF;--muted:#94A3B8;--muted-2:#64748B;--border:rgba(148,163,184,.18);--primary:#6556F5;--primary-2:#7C6BFF;--primary-soft:rgba(101,86,245,.16);--success:#22C55E;--warning:#F59E0B;--danger:#EF4444;--shadow:0 24px 70px rgba(0,0,0,.32);--radius:22px;color-scheme:dark}html[data-theme="light"]{--bg:#F6F8FC;--surface:#FFFFFF;--surface-2:#F8FAFC;--surface-3:#EEF2F7;--text:#111827;--muted:#5F6B7A;--muted-2:#8A94A3;--border:rgba(15,23,42,.12);--primary-soft:rgba(101,86,245,.10);--shadow:0 24px 70px rgba(15,23,42,.12);color-scheme:light}*{box-sizing:border-box}html{min-width:320px;scroll-behavior:smooth}body{margin:0;min-height:100vh;background:radial-gradient(circle at 12% -5%,rgba(91,76,240,.22),transparent 35rem),radial-gradient(circle at 88% 5%,rgba(17,183,255,.12),transparent 32rem),var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;text-rendering:optimizeLegibility}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit;text-decoration:none}svg{width:1.15rem;height:1.15rem;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}[hidden]{display:none !important}.app-shell{width:min(1480px,100%);margin:0 auto;padding:0 28px}.topbar{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:24px;position:sticky;top:0;z-index:20;padding:16px 0;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(22px)}.brand{display:inline-flex;align-items:center;gap:12px;min-width:0}.brand-mark{width:44px;height:44px;flex:0 0 auto;display:grid;place-items:center;border-radius:15px;color:#fff;background:linear-gradient(145deg,#7769FF,#4B3CDF);box-shadow:0 12px 28px rgba(91,76,240,.32)}.brand-mark svg{width:24px;height:24px;fill:currentColor;stroke:none}.brand strong{display:block;font-size:1rem;letter-spacing:-.01em}.brand small{display:block;margin-top:2px;color:var(--muted);font-size:.75rem}.top-actions{display:flex;align-items:center;gap:9px}.button{min-height:42px;border:1px solid transparent;border-radius:13px;display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:0 16px;color:var(--text);background:transparent;font-weight:750;font-size:.86rem;cursor:pointer;transition:transform .16s ease,background .16s ease,border-color .16s ease,opacity .16s ease}.button:hover:not(:disabled){transform:translateY(-1px)}.button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,.drop-zone:focus-visible{outline:3px solid rgba(101,86,245,.28);outline-offset:2px}.button:disabled{opacity:.45;cursor:not-allowed}.button.primary{color:#fff;background:linear-gradient(135deg,var(--primary-2),var(--primary));box-shadow:0 10px 24px rgba(91,76,240,.28)}.button.secondary{background:var(--surface-3);border-color:var(--border)}.button.ghost{border-color:var(--border);background:color-mix(in srgb,var(--surface) 70%,transparent)}.icon-button{width:42px;padding:0}.full-width{width:100%}.theme-sun{display:none}html[data-theme="light"] .theme-sun{display:block}html[data-theme="light"] .theme-moon{display:none}.hero{min-height:360px;display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);align-items:center;gap:64px;padding:64px 0 54px}.eyebrow{display:inline-flex;align-items:center;gap:8px;color:#AFA7FF;font-size:.74rem;font-weight:850;letter-spacing:.10em;text-transform:uppercase}html[data-theme="light"] .eyebrow{color:#5848DA}.pulse{width:8px;height:8px;border-radius:50%;background:#53E68D;box-shadow:0 0 0 6px rgba(83,230,141,.10)}.hero h1{max-width:820px;margin:17px 0 18px;font-size:clamp(2.65rem,6.4vw,5.8rem);line-height:.98;letter-spacing:-.064em}.hero-copy>p{max-width:700px;margin:0;color:var(--muted);font-size:clamp(1rem,1.5vw,1.23rem);line-height:1.7}.hero-stats{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid var(--border);border-radius:24px;overflow:hidden;background:color-mix(in srgb,var(--surface) 84%,transparent);box-shadow:var(--shadow)}.hero-stats article{padding:28px 18px;text-align:center}.hero-stats article + article{border-left:1px solid var(--border)}.hero-stats span{display:block;font-size:clamp(1.8rem,4vw,2.75rem);font-weight:900;letter-spacing:-.045em}.hero-stats small{display:block;margin-top:5px;color:var(--muted);font-size:.73rem}.catalog-toolbar{display:grid;grid-template-columns:minmax(260px,1fr) auto auto;align-items:center;gap:14px;padding:16px;border:1px solid var(--border);border-radius:20px;background:color-mix(in srgb,var(--surface) 82%,transparent);backdrop-filter:blur(18px)}.search-field{min-height:48px;display:flex;align-items:center;gap:10px;padding:0 13px;border:1px solid var(--border);border-radius:14px;background:var(--surface-2)}.search-field svg{color:var(--muted);flex:0 0 auto}.search-field input{width:100%;border:0;outline:0;color:var(--text);background:transparent}.search-field input::placeholder{color:var(--muted-2)}.search-field kbd{border:1px solid var(--border);border-bottom-width:2px;border-radius:6px;padding:2px 7px;color:var(--muted);background:var(--surface);font-size:.68rem}.filter-row{display:flex;flex-wrap:wrap;gap:7px}.filter-chip{min-height:38px;border:1px solid var(--border);border-radius:11px;padding:0 13px;color:var(--muted);background:transparent;font-weight:750;font-size:.76rem;cursor:pointer}.filter-chip.active{color:#fff;border-color:transparent;background:var(--primary)}.sort-field{display:flex;align-items:center;gap:8px;color:var(--muted);font-size:.76rem}.sort-field select,.admin-form input,.admin-form textarea,.admin-form select,.admin-auth input{border:1px solid var(--border);border-radius:12px;color:var(--text);background:var(--surface-2)}.sort-field select{min-height:40px;padding:0 34px 0 12px}.catalog-section{padding:42px 0 84px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin-bottom:22px}.section-heading h2{margin:0;font-size:1.75rem;letter-spacing:-.03em}.section-heading p{margin:6px 0 0;color:var(--muted);font-size:.86rem}.app-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.app-card{--card-accent:var(--primary);min-height:360px;position:relative;overflow:hidden;display:flex;flex-direction:column;gap:20px;padding:22px;border:1px solid var(--border);border-radius:var(--radius);background:linear-gradient(145deg,color-mix(in srgb,var(--surface) 96%,var(--card-accent) 4%),var(--surface));box-shadow:0 14px 40px rgba(0,0,0,.13);transition:transform .22s ease,border-color .22s ease,box-shadow .22s ease}.app-card:hover{transform:translateY(-4px);border-color:color-mix(in srgb,var(--card-accent) 55%,var(--border));box-shadow:0 24px 58px rgba(0,0,0,.21)}.card-glow{width:220px;height:220px;position:absolute;top:-130px;right:-100px;border-radius:50%;background:var(--card-accent);filter:blur(75px);opacity:.15;pointer-events:none}.card-top,.card-title-row,.card-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}.app-icon{width:58px;height:58px;display:grid;place-items:center;border:1px solid color-mix(in srgb,var(--card-accent) 48%,transparent);border-radius:18px;color:#fff;background:linear-gradient(145deg,color-mix(in srgb,var(--card-accent) 74%,white 18%),var(--card-accent));box-shadow:0 14px 26px color-mix(in srgb,var(--card-accent) 26%,transparent)}.app-icon svg{width:29px;height:29px}.status-badge,.version-badge{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:999px;white-space:nowrap;font-size:.66rem;font-weight:850}.status-badge{gap:6px;padding:7px 9px;color:var(--muted);background:var(--surface-2)}.status-badge::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--muted)}.status-badge.online::before{background:var(--success);box-shadow:0 0 0 4px rgba(34,197,94,.10)}.status-badge.beta::before{background:#8B5CF6}.status-badge.maintenance::before{background:var(--warning)}.status-badge.offline::before{background:var(--danger)}.version-badge{padding:4px 8px;color:var(--muted)}.card-copy h3{margin:0;font-size:1.28rem;letter-spacing:-.025em}.card-copy p{min-height:66px;margin:10px 0 0;color:var(--muted);font-size:.88rem;line-height:1.55}.tag-list{display:flex;flex-wrap:wrap;gap:7px}.tag{border:1px solid var(--border);border-radius:9px;padding:5px 8px;color:var(--muted);background:var(--surface-2);font-size:.65rem;font-weight:720}.card-meta{margin-top:auto;color:var(--muted-2);font-size:.68rem}.card-open{width:100%;min-height:46px;justify-content:space-between;color:#fff;background:var(--card-accent)}.card-open[aria-disabled="true"]{opacity:.45;pointer-events:none}.empty-state{padding:74px 20px;text-align:center}.empty-icon{width:64px;height:64px;margin:0 auto 18px;display:grid;place-items:center;border-radius:20px;color:var(--primary-2);background:var(--primary-soft)}.empty-state h3{margin:0}.empty-state p{margin:8px 0 20px;color:var(--muted)}footer{min-height:74px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--border);color:var(--muted);font-size:.75rem}.modal{width:min(1180px,calc(100% - 28px));max-height:calc(100vh - 28px);padding:0;border:1px solid var(--border);border-radius:26px;color:var(--text);background:var(--surface);box-shadow:var(--shadow)}.modal::backdrop{background:rgba(2,6,23,.74);backdrop-filter:blur(10px)}.modal-shell{min-height:min(760px,calc(100vh - 30px));display:flex;flex-direction:column}.modal-header{display:flex;align-items:start;justify-content:space-between;gap:24px;padding:22px 24px;border-bottom:1px solid var(--border)}.modal-header h2{margin:5px 0;font-size:1.45rem}.modal-header p{margin:0;color:var(--muted);font-size:.82rem}.admin-layout{min-height:0;flex:1;display:grid;grid-template-columns:275px minmax(0,1fr)}.admin-sidebar{min-height:0;display:flex;flex-direction:column;gap:15px;padding:18px;border-right:1px solid var(--border);background:var(--surface-2)}.admin-auth label>span,.admin-form label>span,.upload-panel label>span{display:block;margin-bottom:7px;color:var(--muted);font-size:.72rem;font-weight:780}.secret-field{position:relative}.secret-field input{width:100%;height:42px;padding:0 42px 0 12px}.secret-field button{width:38px;height:38px;position:absolute;top:2px;right:2px;border:0;color:var(--muted);background:transparent;cursor:pointer}.remember-row,.check-row,.backup-row{display:flex !important;align-items:center;gap:8px;color:var(--muted);font-size:.72rem}.remember-row{margin-top:9px}.remember-row span,.check-row span,.backup-row span{margin:0 !important}.admin-app-list{min-height:0;flex:1;overflow:auto;display:flex;flex-direction:column;gap:7px}.admin-app-button{width:100%;display:grid;grid-template-columns:34px minmax(0,1fr);align-items:center;gap:10px;border:1px solid transparent;border-radius:13px;padding:9px;color:var(--text);background:transparent;text-align:left;cursor:pointer}.admin-app-button:hover,.admin-app-button.active{border-color:var(--border);background:var(--surface-3)}.admin-app-button .mini-icon{width:34px;height:34px;display:grid;place-items:center;border-radius:10px;color:#fff;background:var(--mini-accent)}.admin-app-button strong,.admin-app-button small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-app-button strong{font-size:.78rem}.admin-app-button small{margin-top:2px;color:var(--muted);font-size:.62rem}.admin-content{min-width:0;min-height:0;overflow:auto;padding:22px}.admin-placeholder{min-height:570px;display:grid;place-content:center;justify-items:center;text-align:center}.admin-placeholder>svg{width:54px;height:54px;color:var(--primary-2)}.admin-placeholder h3{margin:18px 0 7px}.admin-placeholder p{max-width:400px;margin:0;color:var(--muted);font-size:.83rem;line-height:1.5}.admin-form{display:flex;flex-direction:column;gap:22px}.admin-form-heading{display:flex;align-items:start;justify-content:space-between;gap:16px}.admin-form-heading h3{margin:5px 0 0;font-size:1.35rem}.api-status{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--border);border-radius:999px;padding:7px 10px;color:var(--muted);background:var(--surface-2);font-size:.66rem;font-weight:800}.api-status::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--muted)}.api-status.ready::before{background:var(--success)}.api-status.error::before{background:var(--danger)}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-grid .span-2{grid-column:1 / -1}.admin-form input,.admin-form textarea,.admin-form select{width:100%;padding:10px 12px}.admin-form input,.admin-form select{min-height:43px}.admin-form textarea{resize:vertical;line-height:1.45}.form-actions{display:flex;justify-content:flex-end}.upload-panel{display:flex;flex-direction:column;gap:15px;padding:18px;border:1px solid var(--border);border-radius:18px;background:var(--surface-2)}.upload-heading{display:flex;align-items:start;justify-content:space-between;gap:16px}.upload-heading h4{margin:0 0 5px}.upload-heading p{margin:0;color:var(--muted);font-size:.75rem}.drop-zone{display:grid;justify-items:center;padding:28px 18px;border:1px dashed color-mix(in srgb,var(--primary) 62%,var(--border));border-radius:16px;color:var(--muted);background:var(--primary-soft);text-align:center}.drop-zone.dragover{border-style:solid;background:color-mix(in srgb,var(--primary-soft) 80%,var(--primary) 20%)}.drop-zone>svg{width:38px;height:38px;margin-bottom:10px;color:var(--primary-2)}.drop-zone strong{color:var(--text);font-size:.88rem}.drop-zone>span{margin-top:5px;font-size:.72rem}.drop-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:15px}.selected-files{border:1px solid var(--border);border-radius:14px;overflow:hidden;background:var(--surface)}.selected-files-heading{display:flex;align-items:center;justify-content:space-between;padding:11px 13px;border-bottom:1px solid var(--border);font-size:.74rem}.link-button{border:0;padding:0;color:#9B91FF;background:transparent;font-size:.7rem;font-weight:780;cursor:pointer}.file-list{max-height:180px;overflow:auto;padding:7px}.file-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:7px 8px;border-radius:9px;font-size:.68rem}.file-row:hover{background:var(--surface-2)}.file-row span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-row span:last-child{flex:0 0 auto;color:var(--muted)}.upload-progress>div{display:flex;justify-content:space-between;color:var(--muted);font-size:.72rem}.upload-progress progress{width:100%;height:8px;margin-top:8px;accent-color:var(--primary)}.toast-region{position:fixed;right:18px;bottom:18px;z-index:100;display:flex;flex-direction:column;align-items:flex-end;gap:8px}.toast{max-width:min(390px,calc(100vw - 36px));border:1px solid var(--border);border-radius:14px;padding:11px 14px;color:var(--text);background:var(--surface);box-shadow:var(--shadow);font-size:.77rem;animation:toast-in .18s ease both}.toast.success{border-color:rgba(34,197,94,.35)}.toast.error{border-color:rgba(239,68,68,.42)}@keyframes toast-in{from{opacity:0;transform:translateY(8px)}}@media (max-width:1080px){.hero{grid-template-columns:1fr;gap:34px}.hero-stats{max-width:620px}.catalog-toolbar{grid-template-columns:1fr}.sort-field{justify-self:start}.app-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:760px){.app-shell{padding:0 16px}.topbar{min-height:72px}.brand small{display:none}#refreshButton{display:none}#adminButton{width:42px;padding:0;font-size:0}.hero{min-height:0;padding:42px 0 38px}.hero h1{font-size:clamp(2.5rem,13vw,4.2rem)}.hero-stats article{padding:20px 10px}.app-grid{grid-template-columns:1fr}.app-card{min-height:330px}.admin-layout{grid-template-columns:1fr}.admin-sidebar{max-height:260px;border-right:0;border-bottom:1px solid var(--border)}.admin-app-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.modal{width:calc(100% - 12px);max-height:calc(100vh - 12px);border-radius:20px}.modal-shell{min-height:calc(100vh - 14px)}.modal-header{padding:17px}.admin-content{padding:16px}.form-grid{grid-template-columns:1fr}.form-grid .span-2{grid-column:auto}}@media (max-width:460px){.hero-stats{grid-template-columns:1fr}.hero-stats article + article{border-left:0;border-top:1px solid var(--border)}.filter-row{flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}.filter-chip{flex:0 0 auto}.admin-app-list{grid-template-columns:1fr}.upload-heading{flex-direction:column}}.local-admin-layout{grid-template-columns:300px minmax(0,1fr)}.local-storage-notice{display:grid;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:10px;border:1px solid rgba(99,102,241,.25);border-radius:14px;padding:11px;color:var(--muted);background:var(--primary-soft)}.local-storage-notice>svg{width:25px;height:25px;color:var(--primary-2)}.local-storage-notice strong,.local-storage-notice span{display:block}.local-storage-notice strong{color:var(--text);font-size:.78rem}.local-storage-notice span{margin-top:3px;font-size:.64rem;line-height:1.4}.catalog-file-actions{display:grid;gap:7px;padding-top:8px;border-top:1px solid var(--border)}.danger-outline{border-color:rgba(239,68,68,.30);color:#FCA5A5;background:rgba(127,29,29,.10)}.danger-outline:hover:not(:disabled){border-color:rgba(239,68,68,.55);background:rgba(127,29,29,.20)}.field-help{display:block;margin-top:7px;color:var(--muted);font-size:.68rem;line-height:1.5}.field-help code{border:1px solid var(--border);border-radius:6px;padding:2px 5px;color:#C7D2FE;background:var(--surface)}.local-form-actions{justify-content:space-between;flex-wrap:wrap}.local-form-actions #saveMetadataButton{margin-left:auto}@media (max-width:760px){.local-admin-layout{grid-template-columns:1fr}.local-form-actions{display:grid;grid-template-columns:1fr}.local-form-actions #saveMetadataButton{margin-left:0}}.auth-modal{width:min(470px,calc(100% - 28px));max-height:none;overflow:visible;border-radius:24px}.auth-card{display:flex;flex-direction:column;gap:20px;padding:24px}.auth-header{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:start;gap:15px}.auth-icon{width:52px;height:52px;display:grid;place-items:center;border:1px solid rgba(101,86,245,.34);border-radius:16px;color:#C7D2FE;background:var(--primary-soft)}.auth-icon svg{width:26px;height:26px}.auth-header h2{margin:5px 0 7px;font-size:1.34rem;letter-spacing:-.025em}.auth-header p{margin:0;color:var(--muted);font-size:.78rem;line-height:1.5}.auth-field>span{display:block;margin-bottom:7px;color:var(--muted);font-size:.72rem;font-weight:780}.auth-password-wrap{position:relative}.auth-password-wrap input{width:100%;min-height:46px;border:1px solid var(--border);border-radius:13px;padding:0 48px 0 13px;color:var(--text);background:var(--surface-2)}.auth-password-toggle{width:42px;height:42px;position:absolute;top:2px;right:2px;display:grid;place-items:center;border:0;border-radius:11px;color:var(--muted);background:transparent;cursor:pointer}.auth-password-toggle:hover{color:var(--text);background:var(--surface-3)}.auth-error{margin:-8px 0 0;border:1px solid rgba(239,68,68,.30);border-radius:11px;padding:9px 11px;color:#FCA5A5;background:rgba(127,29,29,.12);font-size:.73rem}.auth-actions{display:flex;justify-content:flex-end;gap:8px}@media (max-width:520px){.auth-card{padding:19px}.auth-header{grid-template-columns:1fr}.auth-actions{display:grid;grid-template-columns:1fr}}#saveTargetStatus.saving::before{background:var(--warning)}#saveTargetStatus.error::before{background:var(--danger)}