:root{--bg-dark:#f9fafb;--bg-panel:#f3f4f6;--bg-card:#fff;--bg-hover:#e5e7eb;--text-primary:#111827;--text-secondary:#4b5563;--text-muted:#6b7280;--accent-blue:#2563eb;--accent-cyan:#0891b2;--accent-green:#047857;--accent-orange:#d97706;--accent-purple:#7c3aed;--accent-red:#dc2626;--accent-blue-hover:#1d4ed8;--color-link:#0071e3;--color-success:#34c759;--color-warning:#f59e0b;--color-danger:#ff3b30;--border-dark:#d1d5db;--transition-fast:.15s ease;--transition-normal:.2s ease;--transition-slow:.3s cubic-bezier(.4,0,.2,1);--radius-sm:4px;--radius-md:6px;--radius-lg:8px;--radius-xl:10px;--radius-2xl:12px;--radius-3xl:14px;--radius-pill:9999px;--font-xs:11px;--font-sm:12px;--font-base:13px;--font-md:14px;--font-lg:16px;--font-xl:20px;--font-2xl:24px;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:20px;--space-6:24px;--space-8:32px;--space-10:40px;--chart-blue:#3b82f6;--chart-green:#10b981;--chart-orange:#f59e0b;--chart-red:#ef4444;--chart-purple:#8b5cf6;--chart-cyan:#06b6d4;--chart-grid:#e5e7eb;--chart-text:#6b7280;--z-base:1;--z-sticky:10;--z-dropdown:100;--z-sidebar:200;--z-overlay:300;--z-modal:400;--z-toast:500;--z-nav:600;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-panel,#f3f4f6)}::-webkit-scrollbar-thumb{background:var(--bg-hover,#e5e7eb);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted,#6b7280)}::-webkit-scrollbar-corner{background:var(--bg-panel,#f3f4f6)}*{scrollbar-width:thin;scrollbar-color:var(--bg-hover,#e5e7eb)var(--bg-panel,#f3f4f6)}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}button:active:not(:disabled){transform:scale(.97)}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg-dark:#111827;--bg-panel:#1f2937;--bg-card:#1f2937;--bg-hover:#374151;--text-primary:#f9fafb;--text-secondary:#d1d5db;--text-muted:#9ca3af;--accent-blue:#60a5fa;--accent-cyan:#22d3ee;--accent-green:#34d399;--accent-orange:#fbbf24;--accent-purple:#a78bfa;--accent-red:#f87171;--accent-blue-hover:#93c5fd;--color-link:#60a5fa;--color-success:#34d399;--color-warning:#fbbf24;--color-danger:#f87171;--border-dark:#374151;--chart-blue:#60a5fa;--chart-green:#34d399;--chart-orange:#fbbf24;--chart-red:#f87171;--chart-purple:#a78bfa;--chart-cyan:#22d3ee;--chart-grid:#374151;--chart-text:#9ca3af}::-webkit-scrollbar-track{background:var(--bg-panel)}::-webkit-scrollbar-thumb{background:var(--bg-hover)}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}::-webkit-scrollbar-corner{background:var(--bg-panel)}*{scrollbar-color:var(--bg-hover)var(--bg-panel)}}:root[data-theme=dark]{--bg-dark:#111827;--bg-panel:#1f2937;--bg-card:#1f2937;--bg-hover:#374151;--text-primary:#f9fafb;--text-secondary:#d1d5db;--text-muted:#9ca3af;--accent-blue:#60a5fa;--accent-cyan:#22d3ee;--accent-green:#34d399;--accent-orange:#fbbf24;--accent-purple:#a78bfa;--accent-red:#f87171;--accent-blue-hover:#93c5fd;--color-link:#60a5fa;--color-success:#34d399;--color-warning:#fbbf24;--color-danger:#f87171;--border-dark:#374151}:root{--glass-saturate:saturate(180%);--glass-bg:#ffffff8c;--glass-bg-hover:#ffffffb3;--glass-bg-active:#ffffffd1;--glass-bg-elevated:#fff9;--glass-bg-overlay:#ffffffb8;--glass-blur-sm:8px;--glass-blur-md:12px;--glass-blur-lg:20px;--glass-blur-xl:40px;--glass-blur-2xl:60px;--glass-border:1.5px solid #ffffffb3;--glass-border-accent:#2563eb59;--glass-border-subtle:#00000014;--glass-shadow:0 2px 12px #00000014,0 0 0 1px #0000000a,inset 0 1px 0 #fffc;--glass-shadow-hover:0 4px 20px #0000001f,0 0 0 1px #0000000f,inset 0 1px 0 #ffffffe6;--glass-shadow-elevated:0 8px 32px #00000024,0 0 0 1px #0000000d,inset 0 1px 0 #fffc;--glass-shadow-overlay:0 16px 48px #0000002e,0 0 0 1px #0000000f,inset 0 1px 0 #ffffffe6;--glass-inner-highlight:inset 0 1px 0 #fffc,inset 0 -1px 0 #00000005;--glass-card-bg:#ffffff17;--glass-card-blur:41px;--glass-card-border:#ffffff4d;--glass-card-shadow:0 8px 32px #0000001a,inset 0 1px 0 #fff6;--glass-card-radius:20px;--duration-fast:.15s;--duration-normal:.25s;--duration-slow:.35s;--duration-slower:.5s;--ease-standard:cubic-bezier(.4,0,.2,1);--ease-emphasized:cubic-bezier(.2,0,0,1);--ease-exit:cubic-bezier(.4,0,1,1);--ease-spring:cubic-bezier(.34,1.56,.64,1)}:root[data-theme=dark]{--glass-bg:#3c3c435c;--glass-bg-hover:#3c3c437a;--glass-bg-active:#3c3c438f;--glass-bg-elevated:#2c2c2ea6;--glass-bg-overlay:#1c1c1eb8;--glass-border:#ffffff2e;--glass-border-accent:#60a5fa66;--glass-border-subtle:#ffffff14;--glass-shadow:0 2px 8px #0006,inset 0 1px 0 #ffffff1f;--glass-shadow-hover:0 4px 16px #00000080,inset 0 1px 0 #ffffff26;--glass-shadow-elevated:0 8px 32px #0009,inset 0 1px 0 #ffffff1f;--glass-shadow-overlay:0 16px 48px #000000b3,inset 0 1px 0 #ffffff1a;--glass-inner-highlight:inset 0 1px 0 #ffffff1f;--glass-card-bg:#2c2c2e80;--glass-card-border:#ffffff26;--glass-card-shadow:0 8px 32px #00000080,inset 0 1px 0 #ffffff1a}:root[data-theme=dark] .grounded-glass{border:1px solid var(--glass-border-subtle);background:#2c2c2ecc}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--glass-bg:#3c3c435c;--glass-bg-hover:#3c3c437a;--glass-bg-active:#3c3c438f;--glass-bg-elevated:#2c2c2ea6;--glass-bg-overlay:#1c1c1eb8;--glass-border:#ffffff2e;--glass-border-accent:#60a5fa66;--glass-border-subtle:#ffffff14;--glass-shadow:0 2px 8px #0006,inset 0 1px 0 #ffffff1f;--glass-shadow-hover:0 4px 16px #00000080,inset 0 1px 0 #ffffff26;--glass-shadow-elevated:0 8px 32px #0009,inset 0 1px 0 #ffffff1f;--glass-shadow-overlay:0 16px 48px #000000b3,inset 0 1px 0 #ffffff1a;--glass-inner-highlight:inset 0 1px 0 #ffffff1f;--glass-card-bg:#2c2c2e80;--glass-card-border:#ffffff26;--glass-card-shadow:0 8px 32px #00000080,inset 0 1px 0 #ffffff1a}:root:not([data-theme=light]) .grounded-glass{border:1px solid var(--glass-border-subtle);background:#2c2c2ecc}}@keyframes reveal-in{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}@keyframes stagger-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes pill-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes pill-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.7)}}@keyframes fadeSlideIn{0%{opacity:0;transform:translate(-8px)}to{opacity:1;transform:translate(0)}}@keyframes slideDown{0%{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}@keyframes popup-enter{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}@keyframes dd-in{0%{opacity:0;transform:translateY(-4px)scale(.97)}to{opacity:1;transform:translateY(0)scale(1)}}@keyframes slide-in-right{0%{transform:translate(100%)}to{transform:translate(0)}}@keyframes expandFromCircle{0%{opacity:0;transform:scale(.1)}to{opacity:1;transform:scale(1)}}@keyframes row-pulse{0%{background:#2563eb24}50%{background:#2563eb0f}to{background:#2563eb14}}@keyframes method-exit{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}@keyframes method-enter{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.glass{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur-lg))var(--glass-saturate);box-shadow:var(--glass-shadow);transition:background var(--duration-fast)var(--ease-standard),box-shadow var(--duration-fast)var(--ease-standard),border-color var(--duration-fast)var(--ease-standard),transform var(--duration-fast)var(--ease-standard);border:1.5px solid #ffffffb3}.glass:hover{background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover)}.glass:active{background:var(--glass-bg-active)}.glass-accent{background:var(--glass-bg);-webkit-backdrop-filter:blur(var(--glass-blur-lg))var(--glass-saturate);border:1px solid var(--glass-border-accent);box-shadow:var(--glass-shadow),var(--glass-inner-highlight);transition:background var(--duration-fast)var(--ease-standard),box-shadow var(--duration-fast)var(--ease-standard),border-color var(--duration-fast)var(--ease-standard),transform var(--duration-fast)var(--ease-standard)}.glass-accent:hover{background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),var(--glass-inner-highlight)}.glass-accent:focus-within{border-color:var(--accent-blue);box-shadow:0 0 0 3px #2563eb1f,var(--glass-shadow),var(--glass-inner-highlight);background:var(--glass-bg-hover)}.glass-elevated{background:var(--glass-bg-elevated);-webkit-backdrop-filter:blur(var(--glass-blur-xl))var(--glass-saturate);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-elevated),var(--glass-inner-highlight);transition:background var(--duration-fast)var(--ease-standard),box-shadow var(--duration-fast)var(--ease-standard),border-color var(--duration-fast)var(--ease-standard)}.glass-elevated:hover{background:var(--glass-bg-hover);box-shadow:var(--glass-shadow-hover),var(--glass-inner-highlight)}.glass-overlay{background:var(--glass-bg-overlay);-webkit-backdrop-filter:blur(var(--glass-blur-2xl))var(--glass-saturate);border:1px solid var(--glass-border);box-shadow:var(--glass-shadow-overlay),var(--glass-inner-highlight)}.glass-card{background:var(--glass-card-bg);-webkit-backdrop-filter:blur(var(--glass-card-blur))var(--glass-saturate);border:1px solid var(--glass-card-border);border-radius:var(--glass-card-radius);box-shadow:var(--glass-card-shadow);transition:box-shadow var(--duration-fast)var(--ease-standard),transform var(--duration-fast)var(--ease-standard)}.glass-card:hover{box-shadow:var(--glass-shadow-elevated),inset 0 1px 0 #ffffff80}.grounded-glass{-webkit-backdrop-filter:blur(4px)var(--glass-saturate);border:1px solid var(--glass-border-subtle);background:#ffffffeb}.method-content{opacity:0;transition:opacity var(--duration-normal)var(--ease-emphasized),transform var(--duration-normal)var(--ease-emphasized);transform:translateY(8px)}.method-content.active{opacity:1;transform:translateY(0)}.method-content.exiting{opacity:0;transition-timing-function:var(--ease-exit);transform:translateY(-8px)}.skel{background:linear-gradient(90deg,var(--muted,#f4f4f5)25%,#e8e8ec 37%,var(--muted,#f4f4f5)63%);background-size:800px 100%;border-radius:4px;animation:1.5s linear infinite shimmer}.search-bar-expanding{animation:expandFromCircle var(--duration-slower)var(--ease-standard)both}.search-bar-expanded{opacity:1;transform:scale(1)}.search-bar-collapsing{opacity:0;transition:opacity var(--duration-normal)var(--ease-exit),transform var(--duration-normal)var(--ease-exit);transform:scale(.3)}.search-bar-collapsed{opacity:0;pointer-events:none;transform:scale(.3)}.mini-icon{opacity:1;transition:opacity var(--duration-fast)var(--ease-standard),transform var(--duration-fast)var(--ease-standard);transform:scale(1)}.mini-icon.hidden{opacity:0;pointer-events:none;transform:scale(.6)}.filter-menu-stagger{opacity:0;transition:opacity var(--duration-normal)var(--ease-exit),transform var(--duration-normal)var(--ease-exit);pointer-events:none;transform:translateY(-4px)scale(.97)}.filter-menu-stagger.open{opacity:1;transition-timing-function:var(--ease-emphasized);pointer-events:auto;transform:translateY(0)scale(1)}.fi-anim{opacity:0;transition:opacity var(--duration-normal)var(--ease-emphasized),transform var(--duration-normal)var(--ease-emphasized);transform:translateY(-4px)}.filter-menu-stagger.open .fi-anim{opacity:1;transform:translateY(0)}.error-slide-down{animation:slideDown var(--duration-slow)var(--ease-standard)both}.glass-popup .maplibregl-popup-content{animation:popup-enter var(--duration-fast)var(--ease-emphasized)both}.search-page-panel-right.visible{animation:slide-in-right var(--duration-slow)var(--ease-emphasized)both}.table-row{transition:transform var(--duration-fast)var(--ease-standard),box-shadow var(--duration-fast)var(--ease-standard),background var(--duration-fast)var(--ease-standard)}.table-row:hover{background:color-mix(in srgb,var(--row-color,#2563eb)8%,transparent)}.table-row.highlighted{animation:row-pulse var(--duration-slower)var(--ease-standard);background:#2563eb14}.glass:focus-visible,.glass-accent:focus-visible,.glass-elevated:focus-visible,.grounded-glass:focus-visible{outline:2px solid var(--blue,#2563eb);outline-offset:2px}@supports not ((-webkit-backdrop-filter:blur(1px)) or (backdrop-filter:blur(1px))){.glass,.glass-accent,.glass-elevated{background:#fffffff2}:root[data-theme=dark] .glass,:root[data-theme=dark] .glass-accent,:root[data-theme=dark] .glass-elevated{background:#2c2c2ef2}@media (prefers-color-scheme:dark){:root:not([data-theme=light]) .glass,:root:not([data-theme=light]) .glass-accent,:root:not([data-theme=light]) .glass-elevated{background:#2c2c2ef2}}}@media (prefers-reduced-motion:reduce){.stagger,.reveal{opacity:1;transform:none;animation:none!important}.glass,.glass-accent,.glass-elevated,.glass-overlay,.glass-card,.grounded-glass{transition:none!important;animation:none!important;transform:none!important}.skel{background:var(--muted,#f4f4f5);animation:none}.method-content,.method-content.active,.method-content.exiting,.search-bar-expanding,.search-bar-collapsing{opacity:1;transform:none;transition:none!important;animation:none!important}.search-bar-collapsed{opacity:0;transform:scale(.3);transition:none!important;animation:none!important}.mini-icon,.filter-menu-stagger,.filter-menu-stagger.open{transition:none!important}.fi-anim{opacity:1;transform:none;transition:none!important}.error-slide-down,.glass-popup .maplibregl-popup-content{opacity:1;transform:none;animation:none!important}.search-page-panel-right.visible{transform:none;animation:none!important}.table-row{transition:none!important}.table-row.highlighted{background:#2563eb14;animation:none!important}}.btn-primary{background:var(--bg-card);color:var(--accent-blue);border:1px solid var(--accent-blue);border-radius:var(--radius-lg);font-size:var(--font-base);cursor:pointer;transition:background var(--duration-fast)var(--ease-standard),color var(--duration-fast)var(--ease-standard),box-shadow var(--duration-fast)var(--ease-standard);padding:8px 20px;font-weight:600}.btn-primary:hover{background:var(--accent-blue);color:#fff;box-shadow:0 4px 14px #2563eb4d}.btn-primary:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.btn-primary:disabled{opacity:.4;cursor:not-allowed}.btn-secondary{color:var(--text-secondary);border:1px solid var(--border-dark);border-radius:var(--radius-lg);font-size:var(--font-base);cursor:pointer;transition:background var(--duration-fast)var(--ease-standard),color var(--duration-fast)var(--ease-standard),border-color var(--duration-fast)var(--ease-standard);background:0 0;padding:8px 16px;font-weight:500}.btn-secondary:hover{background:var(--bg-hover);color:var(--text-primary);border-color:var(--text-muted)}.btn-secondary:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.btn-secondary:disabled{opacity:.4;cursor:not-allowed}.btn-danger{color:var(--text-secondary);border:1px solid var(--border-dark);border-radius:var(--radius-lg);font-size:var(--font-base);cursor:pointer;transition:background var(--duration-fast)var(--ease-standard),color var(--duration-fast)var(--ease-standard),border-color var(--duration-fast)var(--ease-standard);background:0 0;padding:8px 16px;font-weight:500}.btn-danger:hover{color:var(--accent-red);border-color:var(--accent-red);background:#dc26260f}.btn-danger:focus-visible{outline:2px solid var(--accent-red);outline-offset:2px}.pattern-table-wrap{border:1px solid var(--border-dark);border-radius:var(--radius-lg);overflow-x:auto}.pattern-table{border-collapse:collapse;width:100%;font-size:var(--font-base)}.pattern-table th{text-align:left;font-size:var(--font-xs);text-transform:uppercase;letter-spacing:.3px;color:var(--text-secondary);background:var(--bg-dark);border-bottom:1px solid var(--border-dark);z-index:5;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;padding:10px 14px;font-weight:600;position:sticky;top:0}.pattern-table th:hover{color:var(--text-primary)}.pattern-table th[aria-sort]{cursor:pointer}.pattern-table td{border-bottom:1px solid var(--bg-hover);color:var(--text-primary);padding:10px 14px}.pattern-table tbody tr{transition:background var(--duration-fast)var(--ease-standard)}.pattern-table tbody tr:hover{background:var(--bg-hover)}.pattern-table .cell-mono{font-family:SF Mono,Monaco,Courier New,monospace;font-size:var(--font-sm)}.pattern-table .cell-right{text-align:right}.pattern-card{background:var(--bg-card);border:1px solid var(--border-dark);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:0 1px 3px #0000000a}.pattern-card--elevated{background:var(--bg-card);border:1px solid var(--border-dark);border-radius:var(--radius-lg);padding:var(--space-5);box-shadow:var(--glass-shadow);transition:box-shadow var(--duration-fast)var(--ease-standard),transform var(--duration-fast)var(--ease-standard)}.pattern-card--elevated:hover{box-shadow:var(--glass-shadow-hover);transform:translateY(-1px)}.pattern-tabs{background:var(--bg-panel);border-radius:var(--radius-md);gap:2px;width:fit-content;padding:3px;display:flex}.pattern-tab{border-radius:var(--radius-sm);font-size:var(--font-sm);color:var(--text-muted);cursor:pointer;transition:background var(--duration-fast)var(--ease-standard),color var(--duration-fast)var(--ease-standard);background:0 0;border:none;padding:6px 16px;font-weight:600}.pattern-tab:hover{color:var(--text-primary)}.pattern-tab.active{background:var(--bg-card);color:var(--text-primary);box-shadow:0 1px 3px #00000014}.pattern-tab:focus-visible{outline:2px solid var(--accent-blue);outline-offset:2px}.pattern-input{border:1px solid var(--border-dark);border-radius:var(--radius-md);font-size:var(--font-md);color:var(--text-primary);background:var(--bg-card);transition:border-color var(--duration-fast)var(--ease-standard),box-shadow var(--duration-fast)var(--ease-standard);outline:none;height:36px;padding:8px 12px}.pattern-input:focus{border-color:var(--accent-blue);box-shadow:0 0 0 3px #2563eb1a}.pattern-input::placeholder{color:var(--text-muted)}.pattern-empty{text-align:center;justify-content:center;align-items:center;gap:var(--space-3);flex-direction:column;padding:48px 32px;display:flex}.pattern-empty__icon{width:48px;height:48px;color:var(--text-muted);opacity:.5}.pattern-empty__title{color:var(--text-primary);margin:0;font-size:15px;font-weight:600}.pattern-empty__description{font-size:var(--font-base);color:var(--text-muted);max-width:320px;margin:0;line-height:1.5}.pattern-error{text-align:center;justify-content:center;align-items:center;gap:var(--space-3);flex-direction:column;max-width:400px;margin:0 auto;padding:48px 32px;display:flex}.pattern-error__icon{color:var(--accent-red);margin-bottom:var(--space-2)}.pattern-error__title{font-size:var(--font-lg);color:var(--text-primary);margin:0;font-weight:600}.pattern-error__message{font-size:var(--font-md);color:var(--text-secondary);margin:0;line-height:1.5}.pattern-page-header{padding:var(--space-4)var(--space-6);background:var(--bg-panel);z-index:var(--z-sticky);position:sticky;top:0}.pattern-page-title{font-size:var(--font-xl);color:var(--text-primary);letter-spacing:-.3px;margin:0;font-weight:700}.pattern-page-subtitle{font-size:var(--font-base);color:var(--text-muted);margin:2px 0 0}.pattern-section-title{font-size:var(--font-md);color:var(--text-primary);margin:0 0 var(--space-3)0;font-weight:600}.page-layout{width:100%;height:100vh;display:flex;position:relative;overflow:hidden}.page-layout__sidebar{height:100%;transition:width var(--duration-slow)var(--ease-emphasized),min-width var(--duration-slow)var(--ease-emphasized);flex-shrink:0}.page-layout__main{flex-direction:column;flex:1;display:flex;overflow-y:auto}@media (max-width:768px){.page-layout__sidebar{display:none}}*{box-sizing:border-box;margin:0;padding:0}:root{color:var(--text-primary,var(--bg-dark));background:var(--bg-dark,#0a0f1a);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-weight:400;line-height:1.5}a{color:var(--accent-blue,var(--chart-blue));transition:color var(--transition-normal,.2s ease);font-weight:500;text-decoration:none}a:hover{color:var(--accent-cyan,#06b6d4)}body{background:var(--bg-dark,#0a0f1a);min-width:320px;min-height:100vh;color:var(--text-primary,var(--bg-dark));margin:0;overflow:hidden}#root{width:100vw;height:100vh;font-size:80%;overflow:hidden}#root svg{transform-origin:50%;transform:scale(.8)}h1,h2,h3,h4,h5,h6{letter-spacing:-.5px;font-weight:600}h1{font-size:3.2em;line-height:1.1}button{border-radius:var(--radius-2xl);cursor:pointer;transition:all var(--transition-normal,.2s ease);background:var(--accent-blue,var(--chart-blue));color:var(--text-primary,var(--bg-dark));border:none;padding:.6em 1.2em;font-family:inherit;font-size:1em;font-weight:500}button:hover{background:var(--accent-cyan,#06b6d4);transform:translateY(-1px)}button:active{transform:translateY(0)}button:focus-visible{outline:2px solid var(--accent-blue,var(--chart-blue));outline-offset:2px}button:disabled{opacity:.5;cursor:not-allowed;transform:none}::selection{color:var(--text-primary,var(--bg-dark));background:#3b82f64d}::selection{color:var(--text-primary,var(--bg-dark));background:#3b82f64d}:focus-visible{outline:2px solid var(--accent-blue,var(--chart-blue));outline-offset:2px}.error-toast{background:var(--bg-card);border-radius:var(--radius-md);z-index:10000;align-items:flex-start;gap:12px;min-width:320px;max-width:500px;padding:16px;animation:.3s ease-out slideIn;display:flex;position:fixed;top:20px;right:20px;box-shadow:0 4px 12px #00000026}@keyframes slideIn{0%{opacity:0;transform:translate(100%)}to{opacity:1;transform:translate(0)}}.error-toast--error{border-left:4px solid var(--accent-red)}.error-toast--warning{border-left:4px solid var(--color-warning)}.error-toast--info{border-left:4px solid var(--chart-blue)}.error-toast__icon{font-size:var(--font-xl);flex-shrink:0;line-height:1}.error-toast--error .error-toast__icon{color:var(--accent-red)}.error-toast--warning .error-toast__icon{color:var(--color-warning)}.error-toast--info .error-toast__icon{color:var(--chart-blue)}.error-toast__content{flex-direction:column;flex:1;gap:8px;display:flex}.error-toast__message{font-size:var(--font-md);color:var(--text-primary);margin:0;line-height:1.5}.error-toast__action{background:var(--chart-blue);color:#fff;border-radius:var(--radius-sm);font-size:var(--font-base);cursor:pointer;border:none;align-self:flex-start;padding:6px 12px;font-weight:500;transition:background .2s}.error-toast__action:hover{background:var(--accent-blue)}.error-toast__action:active{background:var(--accent-blue-hover)}.error-toast__close{font-size:var(--font-2xl);color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;width:24px;height:24px;padding:0;line-height:1;transition:color .2s;display:flex}.error-toast__close:hover{color:var(--text-primary)}@media (max-width:640px){.error-toast{min-width:auto;max-width:none;left:20px;right:20px}}.login-page{background:#111827;justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.login-form{flex-direction:column;gap:20px;width:100%;max-width:360px;display:flex}.login-wordmark{text-align:center;margin-bottom:12px}.login-prefix{letter-spacing:.15em;text-transform:uppercase;color:#6b7280;margin-bottom:4px;font-size:.6875rem;font-weight:600;display:block}.login-title{color:#f9fafb;margin:0;font-size:1.5rem;font-weight:600}.login-field{flex-direction:column;gap:6px;display:flex}.login-field label{color:#9ca3af;font-size:.8125rem;font-weight:500}.login-field input{color:#f9fafb;background:#1f2937;border:1px solid #374151;border-radius:8px;outline:none;padding:10px 12px;font-size:.9375rem;transition:border-color .15s}.login-field input::placeholder{color:#6b7280}.login-field input:focus{border-color:#2563eb;box-shadow:0 0 0 3px #2563eb26}.login-field input[aria-invalid=true]{border-color:#ef4444}.login-field input[aria-invalid=true]:focus{border-color:#ef4444;box-shadow:0 0 0 3px #ef444426}.login-error{color:#ef4444;margin:0;font-size:.8125rem}.login-submit{color:#fff;cursor:pointer;background:#2563eb;border:none;border-radius:8px;margin-top:4px;padding:10px 16px;font-size:.9375rem;font-weight:500;transition:background .15s}.login-submit:hover:not(:disabled){background:#1d4ed8}.login-submit:focus-visible{outline-offset:2px;outline:2px solid #2563eb}.login-submit:disabled{opacity:.4;cursor:not-allowed}.error-boundary{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);justify-content:center;align-items:center;min-height:100vh;padding:20px;display:flex}.error-boundary__container{background:var(--bg-card);border-radius:var(--radius-lg);text-align:center;width:100%;max-width:600px;padding:40px;box-shadow:0 10px 40px #0000000d}.error-boundary__icon{margin-bottom:20px;font-size:64px}.error-boundary__title{font-size:var(--font-2xl);color:var(--text-primary);margin:0 0 16px;font-weight:700}.error-boundary__message{font-size:var(--font-lg);color:var(--text-muted);margin:0 0 24px;line-height:1.6}.error-boundary__context{border-left:4px solid var(--color-warning);border-radius:var(--radius-sm);text-align:left;background:#fef3c7;margin:16px 0 24px;padding:12px 16px}.error-boundary__context-item{font-size:var(--font-md);color:#92400e;margin:4px 0}.error-boundary__context-item strong{margin-right:8px;font-weight:600}.error-boundary__details{text-align:left;background:var(--bg-dark);border:1px solid var(--bg-hover);border-radius:var(--radius-md);margin:24px 0;padding:16px}.error-boundary__details summary{cursor:pointer;color:var(--text-secondary);-webkit-user-select:none;user-select:none;margin-bottom:12px;font-weight:600}.error-boundary__details summary:hover{color:var(--text-primary)}.error-boundary__details[open] summary{margin-bottom:12px}.error-boundary__error-text{background:var(--bg-card);border:1px solid var(--bg-hover);border-radius:var(--radius-sm);font-size:var(--font-sm);color:var(--accent-red);white-space:pre-wrap;word-break:break-word;margin:0;padding:12px;line-height:1.5;overflow-x:auto}.error-boundary__actions{flex-wrap:wrap;justify-content:center;gap:12px;display:flex}.error-boundary__button{border-radius:var(--radius-md);font-size:var(--font-md);cursor:pointer;border:none;padding:12px 24px;font-weight:600;transition:all .2s}.error-boundary__button--primary{background:var(--chart-blue);color:#fff}.error-boundary__button--primary:hover{background:var(--accent-blue);transform:translateY(-1px);box-shadow:0 4px 12px #3b82f666}.error-boundary__button--primary:active{background:var(--accent-blue-hover);transform:translateY(0)}.error-boundary__button--secondary{background:var(--bg-panel);color:var(--text-secondary)}.error-boundary__button--secondary:hover{background:var(--bg-hover);transform:translateY(-1px)}.error-boundary__button--secondary:active{background:var(--border-dark);transform:translateY(0)}@media (max-width:640px){.error-boundary__container{padding:24px}.error-boundary__title{font-size:var(--font-2xl)}.error-boundary__message{font-size:var(--font-md)}.error-boundary__actions{flex-direction:column}.error-boundary__button{width:100%}}.mobile-bottom-nav{display:none}@media (max-width:768px){.mobile-bottom-nav{bottom:max(8px,env(safe-area-inset-bottom,8px));z-index:calc(var(--z-nav) + 200);border-radius:var(--radius-3xl);-webkit-backdrop-filter:blur(50px)saturate(200%)brightness(1.15);background:#3c3c4373;border:1.5px solid #ffffff38;align-items:center;gap:2px;padding:6px 8px;display:flex;position:fixed;left:50%;transform:translate(-50%);box-shadow:0 4px 24px #0000004d,inset 0 1.5px #ffffff2e}.home-page-panel{display:none!important}.mobile-nav-item{border-radius:var(--radius-3xl);color:#ffffff73;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:none;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-width:44px;min-height:44px;padding:4px 6px 2px;transition:color .15s,background .15s,transform .1s;display:flex}.mobile-nav-item:active{transform:scale(.85)}.mobile-nav-item.active{color:#fff;background:#ffffff26}.mobile-nav-icon{justify-content:center;align-items:center;height:22px;display:flex}.mobile-nav-icon svg{display:block}.mobile-nav-label{font-size:var(--font-xs);white-space:nowrap;font-weight:500;line-height:1}.mobile-more-menu{-webkit-backdrop-filter:blur(20px)saturate(180%);border-radius:var(--radius-2xl);animation:dd-in var(--duration-fast)var(--ease-emphasized)forwards;background:#28282ceb;border:1px solid #ffffff26;padding:4px;position:absolute;bottom:calc(100% + 8px);right:4px;box-shadow:0 8px 24px #0006}.mobile-more-item{color:#fff;width:100%;font-size:var(--font-md);text-align:left;border-radius:var(--radius-lg);cursor:pointer;background:0 0;border:none;padding:10px 16px;display:block}.mobile-more-item:active{background:#ffffff1a}}:root[data-theme=light] .mobile-bottom-nav{background:#fff9;border-color:#0000;box-shadow:0 2px 20px #00000014,inset 0 .5px #fffc}:root[data-theme=light] .mobile-nav-item{color:#00000059}:root[data-theme=light] .mobile-nav-item.active{color:var(--accent-blue,var(--accent-blue));background:#2563eb14}:root[data-theme=light] .mobile-more-menu{border-color:var(--border-dark);background:#ffffffeb}:root[data-theme=light] .mobile-more-item{color:var(--text-primary)}:root[data-theme=light] .mobile-more-item:active{background:var(--bg-hover)}@media (prefers-color-scheme:light){:root:not([data-theme=dark]) .mobile-bottom-nav{background:#fff9;border-color:#0000;box-shadow:0 2px 20px #00000014,inset 0 .5px #fffc}:root:not([data-theme=dark]) .mobile-nav-item{color:#00000059}:root:not([data-theme=dark]) .mobile-nav-item.active{color:var(--accent-blue,var(--accent-blue));background:#2563eb14}:root:not([data-theme=dark]) .mobile-more-menu{border-color:var(--border-dark);background:#ffffffeb}:root:not([data-theme=dark]) .mobile-more-item{color:var(--text-primary)}:root:not([data-theme=dark]) .mobile-more-item:active{background:var(--bg-hover)}}.cmd-palette-overlay{z-index:var(--z-modal);animation:reveal-in var(--duration-fast)var(--ease-standard)forwards;background:#0006;justify-content:center;align-items:flex-start;padding-top:20vh;display:flex;position:fixed;inset:0}.cmd-palette{background:var(--bg-card);border:1px solid var(--border-dark);border-radius:var(--radius-lg);width:90%;max-width:520px;animation:popup-enter var(--duration-normal)var(--ease-emphasized)forwards;overflow:hidden;box-shadow:0 16px 64px #00000040}.cmd-palette-input-row{border-bottom:1px solid var(--border-dark);align-items:center;gap:10px;padding:14px 16px;display:flex}.cmd-palette-icon{color:var(--text-muted);flex-shrink:0}.cmd-palette-input{font-size:var(--font-md);color:var(--text-primary);background:0 0;border:none;outline:none;flex:1;font-family:inherit}.cmd-palette-input::placeholder{color:var(--text-muted)}.cmd-palette-esc{background:var(--bg-hover);border:1px solid var(--border-dark);border-radius:var(--radius-sm);font-size:var(--font-xs);color:var(--text-muted);padding:2px 6px;font-family:SF Mono,monospace}.cmd-palette-results{max-height:320px;margin:0;padding:4px;list-style:none;overflow-y:auto}.cmd-palette-item{border-radius:var(--radius-md);cursor:pointer;transition:background var(--transition-fast);align-items:center;gap:8px;padding:10px 12px;display:flex}.cmd-palette-item.active{background:var(--bg-hover)}.cmd-palette-item-label{font-size:var(--font-md);color:var(--text-primary);font-family:SF Mono,monospace;font-weight:500}.cmd-palette-item-sub{font-size:var(--font-sm);color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.cmd-palette-item-badge{font-size:var(--font-sm);color:var(--text-muted)}.cmd-palette-item-badge--favorite{color:var(--accent-orange)}.cmd-palette-empty{text-align:center;font-size:var(--font-base);color:var(--text-muted);padding:24px 16px}.cmd-palette-footer{border-top:1px solid var(--border-dark);font-size:var(--font-xs);color:var(--text-muted);gap:16px;padding:8px 16px;display:flex}.keyboard-shortcuts-overlay{z-index:1000;background-color:#00000080;justify-content:center;align-items:center;padding:1rem;display:flex;position:fixed;inset:0}.keyboard-shortcuts-modal{background:var(--bg-card);border-radius:var(--radius-md);width:100%;max-width:600px;max-height:90vh;animation:.2s ease-out modalFadeIn;overflow-y:auto;box-shadow:0 10px 25px #0000000d}@keyframes modalFadeIn{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.modal-header{border-bottom:1px solid var(--bg-hover);justify-content:space-between;align-items:center;padding:1.5rem;display:flex}.modal-header h2{font-size:var(--font-2xl);color:var(--text-primary);margin:0;font-weight:600}.close-button{font-size:var(--font-2xl);color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;width:2rem;height:2rem;padding:.25rem;transition:background-color .2s,color .2s;display:flex}.close-button:hover{background-color:var(--bg-panel);color:var(--text-primary)}.close-button:focus{outline:2px solid var(--chart-blue);outline-offset:2px}.modal-content{padding:1.5rem}.shortcuts-category{margin-bottom:2rem}.shortcuts-category:last-child{margin-bottom:0}.shortcuts-category h3{font-size:var(--font-lg);color:var(--text-secondary);margin:0 0 1rem;font-weight:600}.shortcuts-list{gap:.75rem;margin:0;display:grid}.shortcut-item{grid-template-columns:auto 1fr;align-items:center;gap:1rem;display:grid}.shortcut-key{margin:0}.shortcut-key kbd{background-color:var(--bg-panel);border:1px solid var(--border-dark);border-radius:var(--radius-sm);font-family:Courier New,Courier,monospace;font-size:var(--font-md);color:var(--text-primary);text-align:center;min-width:2rem;padding:.25rem .5rem;font-weight:600;display:inline-block;box-shadow:0 1px 2px #0000000d}.shortcut-description{color:var(--text-muted);font-size:var(--font-md);margin:0}.modal-footer{border-top:1px solid var(--bg-hover);background-color:var(--bg-dark);border-bottom-right-radius:8px;border-bottom-left-radius:8px;padding:1rem 1.5rem}.help-text{font-size:var(--font-md);color:var(--text-muted);text-align:center;margin:0}.help-text kbd{background-color:var(--bg-card);border:1px solid var(--border-dark);border-radius:var(--radius-sm);font-family:Courier New,Courier,monospace;font-size:var(--font-sm);color:var(--text-primary);padding:.125rem .375rem;font-weight:600;display:inline-block}@media (max-width:640px){.keyboard-shortcuts-modal{border-radius:0;max-width:100%;max-height:100vh}.modal-header,.modal-content,.modal-footer{padding:1rem}.shortcut-item{grid-template-columns:1fr;gap:.25rem}.shortcut-key kbd{min-width:auto}}@media (prefers-contrast:high){.keyboard-shortcuts-modal,.shortcut-key kbd{border:2px solid #000}}@media (prefers-reduced-motion:reduce){.keyboard-shortcuts-modal{animation:none}}.tour-overlay{z-index:9998;cursor:pointer;background:#00000080;position:fixed;inset:0}.tour-highlight{border-radius:var(--radius-lg);z-index:9999;pointer-events:none;transition:all var(--duration-normal,.25s)var(--ease-standard,ease);position:fixed;box-shadow:0 0 0 9999px #00000080}.tour-tooltip{z-index:10000;background:var(--bg-card,#fff);border:1px solid var(--border-dark,var(--border-dark));border-radius:var(--radius-2xl);width:320px;max-width:calc(100vw - 32px);padding:16px;animation:.2s forwards tour-fade-in;position:fixed;box-shadow:0 8px 32px #00000026}@keyframes tour-fade-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.tour-tooltip__header{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.tour-tooltip__page{font-size:var(--font-xs);color:var(--text-muted,var(--text-muted));text-transform:uppercase;letter-spacing:.5px;font-weight:600}.tour-tooltip__close{font-size:var(--font-lg);cursor:pointer;color:var(--text-muted,var(--text-muted));border-radius:var(--radius-sm);background:0 0;border:none;padding:2px 6px}.tour-tooltip__close:hover{background:var(--bg-hover,var(--bg-hover))}.tour-tooltip__title{font-size:var(--font-md);color:var(--text-primary,var(--text-primary));margin:0 0 4px;font-weight:600}.tour-tooltip__content{font-size:var(--font-base);color:var(--text-secondary,var(--text-secondary));margin:0 0 12px;line-height:1.5}.tour-tooltip__footer{justify-content:space-between;align-items:center;display:flex}.tour-tooltip__progress{font-size:var(--font-xs);color:var(--text-muted,var(--text-muted))}.tour-tooltip__actions{gap:8px;display:flex}.tour-tooltip__skip{font-size:var(--font-sm);color:var(--text-muted,var(--text-muted));cursor:pointer;border-radius:var(--radius-md);background:0 0;border:none;padding:6px 10px}.tour-tooltip__skip:hover{background:var(--bg-hover,var(--bg-hover))}.tour-tooltip__next{background:var(--accent-blue,var(--accent-blue));color:#fff;font-size:var(--font-sm);border-radius:var(--radius-md);cursor:pointer;border:none;padding:6px 14px;font-weight:500}.tour-tooltip__next:hover{opacity:.9}.skip-link{z-index:10000;background:var(--accent-blue);color:#fff;font-size:var(--font-md);border-radius:var(--radius-md);transition:top var(--transition-fast);padding:12px 24px;font-weight:600;text-decoration:none;position:fixed;top:-100%;left:16px;box-shadow:0 4px 12px #00000026}.skip-link:focus{outline:2px solid var(--accent-blue);outline-offset:2px;top:16px}.config-loading,.auth-loading{background:var(--bg-dark);flex-direction:column;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex}.config-loading p,.auth-loading p{font-size:var(--font-lg);color:var(--text-muted);margin-top:24px;font-weight:500}.config-error,.auth-error{background:var(--bg-dark);text-align:center;flex-direction:column;justify-content:center;align-items:center;width:100vw;height:100vh;padding:20px;display:flex}.config-error h2,.auth-error h2{color:var(--color-danger);font-size:var(--font-2xl);letter-spacing:-.5px;margin-bottom:16px;font-weight:600}.config-error p,.auth-error p{color:var(--text-muted);max-width:600px;line-height:1.6;font-size:var(--font-lg);margin-bottom:12px}.retry-button{background:var(--color-link);color:#fff;border-radius:var(--radius-2xl);font-size:var(--font-lg);cursor:pointer;border:none;margin-top:32px;padding:12px 32px;font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #0071e333}.retry-button:hover{background:var(--accent-blue-hover);transform:translateY(-2px);box-shadow:0 4px 12px #0071e34d}.retry-button:active{transform:translateY(0);box-shadow:0 2px 6px #0071e333}.loading-spinner{border:3px solid var(--border-dark);border-top-color:var(--color-link);border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}
