:root{--shell-color-surface:hsla(0,0%,100%,.7);--shell-color-surface-alt:#f8fafc;--shell-color-surface-elevated:hsla(0,0%,100%,.85);--shell-color-app-bg:#f8fafc;--shell-glass-blur:blur(20px) saturate(180%);--shell-glass-border:rgba(226,232,240,.8);--shell-color-border:rgba(148,163,184,.2);--shell-color-border-strong:#e2e8f0;--shell-color-border-focus:#6366f1;--shell-color-text:#0f172a;--shell-color-text-muted:#475569;--shell-color-text-inverse:#f8fafc;--shell-color-positive:#15803d;--shell-color-warning:#c2410c;--shell-color-negative:#b91c1c;--shell-color-info:#0369a1;--shell-color-brand:#6366f1;--shell-color-brand-hover:#4f46e5;--shell-color-brand-rgb:99,102,241;--shell-color-accent:#0ea5e9;--shell-color-accent-hover:#0284c7;--shell-surface-brand-hint:rgba(var(--shell-color-brand-rgb),0.04);--shell-surface-brand-hover:rgba(var(--shell-color-brand-rgb),0.06);--shell-surface-brand-faint:rgba(var(--shell-color-brand-rgb),0.08);--shell-surface-brand-weak:rgba(var(--shell-color-brand-rgb),0.1);--shell-surface-brand-soft:rgba(var(--shell-color-brand-rgb),0.15);--shell-surface-brand-active:rgba(var(--shell-color-brand-rgb),0.18);--shell-surface-brand-strong:rgba(var(--shell-color-brand-rgb),0.2);--shell-border-brand-soft:rgba(var(--shell-color-brand-rgb),0.3);--shell-border-brand-strong:rgba(var(--shell-color-brand-rgb),0.4);--shell-color-neutral-rgb:148,163,184;--shell-surface-neutral-hairline:rgba(var(--shell-color-neutral-rgb),0.03);--shell-surface-neutral-hint:rgba(var(--shell-color-neutral-rgb),0.05);--shell-surface-neutral-weak:rgba(var(--shell-color-neutral-rgb),0.08);--shell-surface-neutral-soft:rgba(var(--shell-color-neutral-rgb),0.1);--shell-surface-neutral-strong:rgba(var(--shell-color-neutral-rgb),0.2);--shell-border-neutral-strong:rgba(var(--shell-color-neutral-rgb),0.6);--shell-gradient-brand:linear-gradient(135deg,#4f46e5,#7c3aed);--shell-gradient-sidebar:linear-gradient(180deg,#0b1224,#0f172a);--shell-gradient-main:radial-gradient(circle at 10% 20%,rgba(99,102,241,.06),transparent 25%),radial-gradient(circle at 90% 10%,rgba(139,92,246,.06),transparent 25%),radial-gradient(circle at 10% 80%,rgba(16,185,129,.06),transparent 25%);--shell-spacing-xs:4px;--shell-spacing-sm:8px;--shell-spacing-md:12px;--shell-spacing-lg:20px;--shell-spacing-xl:32px;--shell-spacing-2xl:48px;--shell-radius-sm:6px;--shell-radius-md:12px;--shell-radius-lg:20px;--shell-radius-xl:24px;--shell-radius-full:999px;--shell-shadow-sm:0 2px 8px rgba(100,116,139,.08),0 4px 16px rgba(100,116,139,.06);--shell-shadow-md:0 0 1px rgba(100,116,139,.12),0 2px 6px rgba(100,116,139,.08),0 8px 24px rgba(100,116,139,.12),0 16px 48px rgba(100,116,139,.08);--shell-shadow-lg:0 0 1px rgba(100,116,139,.15),0 4px 12px rgba(100,116,139,.1),0 16px 40px rgba(100,116,139,.14),0 24px 64px rgba(100,116,139,.1);--shell-shadow-brand:0 14px 28px rgba(99,102,241,.25);--shell-shadow-brand-hover:0 18px 32px rgba(99,102,241,.35);--shell-font-sans:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;--shell-font-mono:"SF Mono","Fira Code","Consolas",monospace;--shell-transition-fast:150ms ease;--shell-transition-base:200ms ease;--shell-transition-slow:300ms ease;--shell-z-base:0;--shell-z-dropdown:100;--shell-z-sticky:200;--shell-z-modal:300;--shell-z-toast:400;--projects-color-accent:#0ea5e9;--projects-color-accent-hover:#0284c7;--projects-color-accent-rgb:14,165,233;--projects-surface-dark:#0f172a;--projects-surface-darker:#0b1120;--projects-border-dark:#1f2937;--projects-text-primary:#f8fafc;--projects-text-secondary:#e2e8f0;--projects-text-muted:#94a3b8;--projects-text-subtle:#cbd5e1;--projects-status-active:#34d399;--projects-status-active-bg:rgba(34,197,94,.16);--projects-status-warning:#fbbf24;--projects-status-warning-bg:rgba(234,179,8,.16);--projects-status-danger:#f87171;--projects-status-danger-bg:rgba(239,68,68,.16)}:root[data-density=compact]{--shell-spacing-xs:3px;--shell-spacing-sm:6px;--shell-spacing-md:10px;--shell-spacing-lg:16px;--shell-spacing-xl:26px;--shell-spacing-2xl:38px;--shell-radius-sm:5px;--shell-radius-md:10px;--shell-radius-lg:16px;--shell-radius-xl:20px}:root[data-theme=dark]{--shell-color-surface:rgba(30,41,59,.6);--shell-color-surface-alt:#0b1120;--shell-color-surface-elevated:rgba(30,41,59,.9);--shell-color-app-bg:#020617;--shell-glass-border:rgba(71,85,105,.4);--shell-color-border:rgba(71,85,105,.4);--shell-color-border-strong:rgba(100,116,139,.5);--shell-color-border-focus:#818cf8;--shell-color-text:#e2e8f0;--shell-color-text-muted:#94a3b8;--shell-color-text-inverse:#0f172a;--shell-color-positive:#34d399;--shell-color-warning:#fb923c;--shell-color-negative:#f87171;--shell-color-info:#38bdf8;--shell-color-brand:#818cf8;--shell-color-brand-hover:#a5b4fc;--shell-color-brand-rgb:129,140,248;--shell-color-accent:#38bdf8;--shell-color-accent-hover:#7dd3fc;--shell-surface-brand-hint:rgba(var(--shell-color-brand-rgb),0.04);--shell-surface-brand-hover:rgba(var(--shell-color-brand-rgb),0.06);--shell-surface-brand-faint:rgba(var(--shell-color-brand-rgb),0.08);--shell-surface-brand-weak:rgba(var(--shell-color-brand-rgb),0.1);--shell-surface-brand-soft:rgba(var(--shell-color-brand-rgb),0.15);--shell-surface-brand-active:rgba(var(--shell-color-brand-rgb),0.18);--shell-surface-brand-strong:rgba(var(--shell-color-brand-rgb),0.2);--shell-border-brand-soft:rgba(var(--shell-color-brand-rgb),0.3);--shell-border-brand-strong:rgba(var(--shell-color-brand-rgb),0.4);--shell-color-neutral-rgb:148,163,184;--shell-surface-neutral-hairline:rgba(var(--shell-color-neutral-rgb),0.03);--shell-surface-neutral-hint:rgba(var(--shell-color-neutral-rgb),0.05);--shell-surface-neutral-weak:rgba(var(--shell-color-neutral-rgb),0.08);--shell-surface-neutral-soft:rgba(var(--shell-color-neutral-rgb),0.1);--shell-surface-neutral-strong:rgba(var(--shell-color-neutral-rgb),0.2);--shell-border-neutral-strong:rgba(var(--shell-color-neutral-rgb),0.6);--shell-gradient-brand:linear-gradient(135deg,#6366f1,#8b5cf6);--shell-gradient-main:radial-gradient(circle at 10% 20%,rgba(99,102,241,.08),transparent 25%),radial-gradient(circle at 90% 10%,rgba(139,92,246,.08),transparent 25%),radial-gradient(circle at 10% 80%,rgba(16,185,129,.08),transparent 25%);--projects-color-accent:#38bdf8;--projects-color-accent-hover:#7dd3fc;--projects-color-accent-rgb:56,189,248;--shell-shadow-sm:0 1px 2px rgba(0,0,0,.08),0 2px 4px rgba(0,0,0,.08);--shell-shadow-md:0 1px 2px rgba(0,0,0,.08),0 4px 8px rgba(0,0,0,.12),0 12px 24px rgba(0,0,0,.16),0 24px 48px rgba(0,0,0,.12);--shell-shadow-lg:0 1px 2px rgba(0,0,0,.1),0 6px 12px rgba(0,0,0,.15),0 16px 32px rgba(0,0,0,.18),0 32px 64px rgba(0,0,0,.14)}.glass-surface{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border:1px solid var(--shell-glass-border)}[data-theme=dark] .glass-surface{background:var(--shell-color-surface);border-color:var(--shell-glass-border)}.glass-panel{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border:1px solid var(--shell-glass-border);border-radius:var(--shell-radius-xl);padding:var(--shell-spacing-xl);box-shadow:var(--shell-shadow-md)}[data-theme=dark] .glass-panel{background:var(--shell-color-surface);border-color:var(--shell-glass-border)}.glass-card{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border:1px solid var(--shell-glass-border);border-radius:var(--shell-radius-lg);padding:var(--shell-spacing-lg);box-shadow:var(--shell-shadow-md);transition:border-color var(--shell-transition-base),transform var(--shell-transition-base),box-shadow var(--shell-transition-base)}[data-theme=dark] .glass-card{background:var(--shell-color-surface);border-color:var(--shell-glass-border)}.glass-section{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border:1px solid var(--shell-glass-border);border-radius:var(--shell-radius-md);box-shadow:var(--shell-shadow-md);overflow:hidden}[data-theme=dark] .glass-section{background:var(--shell-color-surface);border-color:var(--shell-glass-border)}.glass-sidebar{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border-right:1px solid var(--shell-glass-border)}[data-theme=dark] .glass-sidebar{background:var(--shell-color-surface);border-color:var(--shell-glass-border)}.glass-sidebar-left{border-right:1px solid var(--shell-glass-border);border-left:none}.glass-sidebar-right{border-left:1px solid var(--shell-glass-border);border-right:none}.glass-modal{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border:1px solid var(--shell-glass-border);border-radius:var(--shell-radius-lg);box-shadow:var(--shell-shadow-lg)}[data-theme=dark] .glass-modal{background:var(--shell-color-surface);border-color:var(--shell-glass-border)}.glass-header{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border-bottom:1px solid var(--shell-glass-border)}[data-theme=dark] .glass-header{background:var(--shell-color-surface);border-color:var(--shell-glass-border)}.glass-footer{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border-top:1px solid var(--shell-glass-border)}[data-theme=dark] .glass-footer{background:var(--shell-color-surface);border-color:var(--shell-glass-border)}.glass-table{background:var(--shell-color-surface);backdrop-filter:var(--shell-glass-blur);-webkit-backdrop-filter:var(--shell-glass-blur);border:1px solid var(--shell-glass-border);border-radius:var(--shell-radius-md);overflow:hidden}.glass-table thead{background:rgba(248,250,252,.5)}[data-theme=dark] .glass-table thead{background:rgba(30,41,59,.5)}.glass-table th{border-bottom:1px solid var(--shell-glass-border)}.glass-table td{border-bottom:1px solid rgba(226,232,240,.4)}[data-theme=dark] .glass-table td{border-bottom:1px solid rgba(71,85,105,.3)}.glass-table tr:last-child td{border-bottom:none}.glass-interactive{cursor:pointer}.glass-interactive:hover{transform:translateY(-2px);box-shadow:var(--shell-shadow-lg)}.glass-interactive:hover,[data-theme=dark] .glass-interactive:hover{border-color:var(--shell-color-brand)}.glass-elevated{box-shadow:var(--shell-shadow-lg)}.glass-muted{background:var(--shell-color-surface-alt);border-color:var(--shell-color-border)}.glass-inset,.glass-muted{backdrop-filter:none;-webkit-backdrop-filter:none}.glass-inset{background:rgba(248,250,252,.5);border:1px solid rgba(226,232,240,.4);box-shadow:inset 0 1px 3px rgba(15,23,42,.04)}[data-theme=dark] .glass-inset{background:rgba(15,23,42,.4);border-color:rgba(71,85,105,.3);box-shadow:inset 0 1px 3px rgba(0,0,0,.15)}.glass-compact{padding:var(--shell-spacing-md)}.glass-flush{padding:0}.glass-radius-sm{border-radius:var(--shell-radius-sm)}.glass-radius-md{border-radius:var(--shell-radius-md)}.glass-radius-lg{border-radius:var(--shell-radius-lg)}.glass-radius-xl{border-radius:var(--shell-radius-xl)}.glass-radius-none{border-radius:0}.glass-shadow-none{box-shadow:none}.glass-shadow-sm{box-shadow:var(--shell-shadow-sm)}.glass-shadow-md{box-shadow:var(--shell-shadow-md)}.glass-shadow-lg{box-shadow:var(--shell-shadow-lg)}.glass-page{display:flex;flex-direction:column;min-height:100%;gap:var(--shell-spacing-lg)}.glass-layout-sidebar{display:grid;grid-template-columns:280px 1fr;min-height:100%}@media (max-width:900px){.glass-layout-sidebar{grid-template-columns:1fr}}.glass-layout-three-col{display:grid;grid-template-columns:280px 1fr 320px;min-height:100%}@media (max-width:1200px){.glass-layout-three-col{grid-template-columns:1fr}}.glass-content{max-width:1400px;margin:0 auto;padding:var(--shell-spacing-xl);width:100%}.glass-scroll{overflow-y:auto;overflow-x:hidden}.glass-divider{height:1px;background:linear-gradient(90deg,transparent 0,var(--shell-glass-border) 10%,var(--shell-glass-border) 90%,transparent 100%);margin:var(--shell-spacing-lg) 0}.glass-divider-vertical{width:1px;height:100%;background:linear-gradient(180deg,transparent 0,var(--shell-glass-border) 10%,var(--shell-glass-border) 90%,transparent 100%);margin:0 var(--shell-spacing-lg)}:root{--g-arrow-color:#1f2937;--g-bar-color:#fff;--g-bar-border:#fff;--g-tick-color-thick:#ededed;--g-tick-color:#f3f3f3;--g-actions-background:#f3f3f3;--g-border-color:#ebeff2;--g-text-muted:#7c7c7c;--g-text-light:#fff;--g-text-dark:#171717;--g-progress-color:#dbdbdb;--g-handle-color:#37352f;--g-weekend-label-color:#dcdce4;--g-expected-progress:#c4c4e9;--g-header-background:#fff;--g-row-color:#fdfdfd;--g-row-border-color:#c7c7c7;--g-today-highlight:#37352f;--g-popup-actions:#ebeff2;--g-weekend-highlight-color:#f7f7f7}.gantt-container{line-height:14.5px;position:relative;overflow:auto;font-size:12px;height:var(--gv-grid-height);width:100%;border-radius:8px}.gantt-container .popup-wrapper{position:absolute;top:0;left:0;background:#fff;box-shadow:0 10px 24px -3px #0003;padding:10px;border-radius:5px;width:max-content;z-index:1000}.gantt-container .popup-wrapper .title{margin-bottom:2px;color:var(--g-text-dark);font-size:.85rem;font-weight:650;line-height:15px}.gantt-container .popup-wrapper .subtitle{color:var(--g-text-dark);font-size:.8rem;margin-bottom:5px}.gantt-container .popup-wrapper .details{color:var(--g-text-muted);font-size:.7rem}.gantt-container .popup-wrapper .actions{margin-top:10px;margin-left:3px}.gantt-container .popup-wrapper .action-btn{border:none;padding:5px 8px;background-color:var(--g-popup-actions);border-right:1px solid var(--g-text-light)}.gantt-container .popup-wrapper .action-btn:hover{background-color:brightness(97%)}.gantt-container .popup-wrapper .action-btn:first-child{border-top-left-radius:4px;border-bottom-left-radius:4px}.gantt-container .popup-wrapper .action-btn:last-child{border-right:none;border-top-right-radius:4px;border-bottom-right-radius:4px}.gantt-container .grid-header{height:calc(var(--gv-lower-header-height) + var(--gv-upper-header-height) + 10px);background-color:var(--g-header-background);position:-webkit-sticky;position:sticky;top:0;left:0;border-bottom:1px solid var(--g-row-border-color);z-index:1000}.gantt-container .lower-text,.gantt-container .upper-text{text-anchor:middle}.gantt-container .upper-header{height:var(--gv-upper-header-height)}.gantt-container .lower-header{height:var(--gv-lower-header-height)}.gantt-container .lower-text{font-size:12px;position:absolute;width:calc(var(--gv-column-width) * .8);height:calc(var(--gv-lower-header-height) * .8);margin:0 calc(var(--gv-column-width) * .1);align-content:center;text-align:center;color:var(--g-text-muted)}.gantt-container .upper-text{position:absolute;width:-moz-fit-content;width:fit-content;font-weight:500;font-size:14px;color:var(--g-text-dark);height:calc(var(--gv-lower-header-height) * .66)}.gantt-container .current-upper{position:-webkit-sticky;position:sticky;left:0!important;padding-left:17px;background:#fff}.gantt-container .side-header{position:-webkit-sticky;position:sticky;top:0;right:0;float:right;z-index:1000;line-height:20px;font-weight:400;width:max-content;margin-left:auto;padding-right:10px;padding-top:10px;background:var(--g-header-background);display:flex}.gantt-container .side-header *{transition-property:background-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s;background-color:var(--g-actions-background);border-radius:.5rem;border:none;padding:5px 8px;color:var(--g-text-dark);font-size:14px;letter-spacing:.02em;font-weight:420;box-sizing:content-box;margin-right:5px}.gantt-container .side-header :last-child{margin-right:0}.gantt-container .side-header :hover{filter:brightness(97.5%)}.gantt-container .side-header select{width:60px;padding-top:2px;padding-bottom:2px}.gantt-container .side-header select:focus{outline:none}.gantt-container .date-range-highlight{background-color:var(--g-progress-color);border-radius:12px;height:calc(var(--gv-lower-header-height) - 6px);top:calc(var(--gv-upper-header-height) + 5px);position:absolute}.gantt-container .current-highlight{position:absolute;background:var(--g-today-highlight);width:1px;z-index:999}.gantt-container .current-ball-highlight{position:absolute;background:var(--g-today-highlight);z-index:1001;border-radius:50%}.gantt-container .current-date-highlight{background:var(--g-today-highlight);color:var(--g-text-light);border-radius:5px}.gantt-container .holiday-label{position:absolute;top:0;left:0;opacity:0;z-index:1000;background:--g-weekend-label-color;border-radius:5px;padding:2px 5px}.gantt-container .holiday-label.show{opacity:1}.gantt-container .extras{position:-webkit-sticky;position:sticky;left:0}.gantt-container .extras .adjust{position:absolute;left:8px;top:calc(var(--gv-grid-height) - 60px);background-color:#000000b3;color:#fff;border:none;padding:8px;border-radius:3px}.gantt-container .hide{display:none}.gantt{-moz-user-select:none;user-select:none;-webkit-user-select:none;position:absolute}.gantt .grid-background{fill:none}.gantt .grid-row{fill:var(--g-row-color)}.gantt .row-line{stroke:var(--g-border-color)}.gantt .tick{stroke:var(--g-tick-color);stroke-width:.4}.gantt .tick.thick{stroke:var(--g-tick-color-thick);stroke-width:.7}.gantt .arrow{fill:none;stroke:var(--g-arrow-color);stroke-width:1.5}.gantt .bar-wrapper .bar{fill:var(--g-bar-color);stroke:var(--g-bar-border);stroke-width:0;transition:stroke-width .3s ease}.gantt .bar-progress{fill:var(--g-progress-color);border-radius:4px}.gantt .bar-expected-progress{fill:var(--g-expected-progress)}.gantt .bar-invalid{fill:transparent;stroke:var(--g-bar-border);stroke-width:1;stroke-dasharray:5}:is(.gantt .bar-invalid)~.bar-label{fill:var(--g-text-light)}.gantt .bar-label{fill:var(--g-text-dark);dominant-baseline:central;font-family:Helvetica;font-size:13px;font-weight:400}.gantt .bar-label.big{fill:var(--g-text-dark);text-anchor:start}.gantt .handle{fill:var(--g-handle-color);opacity:0;transition:opacity .3s ease}.gantt .handle.active,.gantt .handle.visible{cursor:ew-resize;opacity:1}.gantt .handle.progress{fill:var(--g-text-muted)}.gantt .bar-wrapper{cursor:pointer}.gantt .bar-wrapper .bar{outline:1px solid var(--g-row-border-color);border-radius:3px}.gantt .bar-wrapper:hover .bar{transition:transform .3s ease}.gantt .bar-wrapper:hover .date-range-highlight{display:block}@layer base{*{box-sizing:border-box}html{color-scheme:light dark}body{margin:0;min-height:100vh;font-family:var(--shell-font-sans);background:var(--shell-color-app-bg);color:var(--shell-color-text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:inherit;text-decoration:none}code{font-family:var(--shell-font-mono);font-size:.85em;padding:2px 6px;border-radius:var(--shell-radius-sm);background:var(--shell-surface-brand-weak);color:var(--shell-color-brand)}}@layer components{.shell-message-success{color:var(--shell-color-positive);font-size:.875rem}.shell-message-error{color:var(--shell-color-negative);font-size:.875rem}.shell-message-warning{color:var(--shell-color-warning);font-size:.875rem}.shell-empty-card{padding:var(--shell-spacing-lg);border:1px dashed var(--shell-color-border);border-radius:var(--shell-radius-lg);background:var(--shell-surface-neutral-weak)}.shell-empty-inline{padding:var(--shell-spacing-md) 0;border:none;background:transparent}.shell-empty-tight{gap:var(--shell-spacing-xs)}}@layer utilities{.shell-mt-sm{margin-top:var(--shell-spacing-sm)}.shell-mt-md{margin-top:var(--shell-spacing-md)}.shell-mt-lg{margin-top:var(--shell-spacing-lg)}.shell-mt-xl{margin-top:var(--shell-spacing-xl)}.shell-mb-sm{margin-bottom:var(--shell-spacing-sm)}.shell-mb-md{margin-bottom:var(--shell-spacing-md)}.shell-mb-lg{margin-bottom:var(--shell-spacing-lg)}.shell-mb-xl{margin-bottom:var(--shell-spacing-xl)}}@keyframes shell-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@layer components{.shell-layout{display:grid;grid-template-columns:56px 1fr;min-height:100vh}@media (max-width:768px){.shell-layout{grid-template-columns:1fr}.shell-icon-rail{display:none}}.shell-content{display:flex;flex-direction:column;height:100vh;overflow:hidden}.shell-topbar{display:flex;align-items:center;gap:var(--shell-spacing-lg);padding:var(--shell-spacing-md) var(--shell-spacing-xl);border-bottom:1px solid var(--shell-color-border);background:var(--shell-color-app-bg);flex-shrink:0;height:48px}.shell-topbar-brand{display:flex;align-items:center;gap:var(--shell-spacing-sm);color:var(--shell-color-brand);font-weight:600;font-size:.875rem}.shell-topbar-title{margin:0;font-size:.9rem;font-weight:500;color:var(--shell-color-text-muted);flex:1 1}.shell-density-toggle{border:1px solid var(--shell-color-border);background:var(--shell-surface-neutral-weak);color:var(--shell-color-text);border-radius:var(--shell-radius-full);padding:6px 10px;font-size:.813rem;cursor:pointer;transition:all var(--shell-transition-fast)}.shell-density-toggle.active{border-color:var(--shell-color-brand)}.shell-density-toggle.active,.shell-user-pill{background:var(--shell-surface-brand-weak);color:var(--shell-color-brand)}.shell-user-pill{display:flex;align-items:center;gap:var(--shell-spacing-sm);padding:6px 14px;border-radius:var(--shell-radius-full);border:1px solid var(--shell-border-brand-soft);font-size:.813rem;font-weight:500;cursor:pointer;transition:all var(--shell-transition-fast);margin-left:auto}.shell-user-pill:hover{background:var(--shell-surface-brand-soft);border-color:var(--shell-border-brand-strong);transform:translateY(-1px)}.shell-user-pill:active{transform:translateY(0)}[data-theme=dark] .shell-user-pill{background:var(--shell-surface-brand-soft);border-color:var(--shell-border-brand-soft)}[data-theme=dark] .shell-user-pill:hover{background:var(--shell-surface-brand-strong);border-color:var(--shell-border-brand-strong)}.shell-user-name{max-width:200px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.shell-sidebar-trigger{position:fixed;left:0;top:0;width:8px;height:100vh;z-index:1000;cursor:pointer}.shell-icon-rail{background:var(--shell-gradient-sidebar);border-right:1px solid var(--shell-color-border);padding:var(--shell-spacing-md);display:flex;flex-direction:column;align-items:center;gap:var(--shell-spacing-md);position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto;transition:transform .25s ease-in-out,opacity .25s ease-in-out}.shell-icon-rail--autohide{position:fixed;left:0;top:0;z-index:1001;transform:translateX(-100%);opacity:0;box-shadow:var(--shell-shadow-lg)}.shell-icon-rail--autohide.shell-icon-rail--visible{transform:translateX(0);opacity:1}.shell-layout--autohide{grid-template-columns:1fr}[data-theme=light] .shell-icon-rail{background:linear-gradient(180deg,#f8fafc,#f1f5f9);border-right-color:var(--shell-color-border-strong)}.shell-rail-brand{padding:var(--shell-spacing-sm);color:var(--shell-color-brand)}.shell-rail-nav{display:flex;flex-direction:column;align-items:center;gap:var(--shell-spacing-xs);flex:1 1}.shell-rail-item{width:40px;height:40px;border-radius:var(--shell-radius-md);display:flex;align-items:center;justify-content:center;color:var(--shell-color-text-muted);transition:background var(--shell-transition-fast),color var(--shell-transition-fast);position:relative}.shell-rail-item:hover{background:var(--shell-surface-brand-faint);color:var(--shell-color-text)}[data-theme=light] .shell-rail-item:hover{background:var(--shell-surface-brand-weak)}.shell-rail-item.active{background:var(--shell-surface-brand-soft);color:var(--shell-color-brand)}.shell-rail-item.disabled{opacity:.4;cursor:not-allowed}.shell-rail-badge{position:absolute;top:2px;right:2px;min-width:16px;height:16px;border-radius:8px;background:var(--shell-color-negative);color:#fff;font-size:.65rem;font-weight:600;display:flex;align-items:center;justify-content:center;padding:0 4px}.shell-rail-footer{margin-top:auto;padding-top:var(--shell-spacing-md)}.shell-rail-divider{width:24px;height:1px;background:var(--shell-color-border);margin:var(--shell-spacing-sm) 0}[data-theme=light] .shell-rail-divider{background:var(--shell-color-border-strong)}.shell-rail-favorite{cursor:-webkit-grab;cursor:grab}.shell-rail-favorite:active{cursor:-webkit-grabbing;cursor:grabbing}.shell-rail-favorite.dragging{opacity:.5}.shell-rail-favorite.drag-over{background:var(--shell-surface-brand-strong)}.shell-rail-add-favorite{position:relative}.shell-rail-add-btn{border:none;background:transparent;cursor:pointer;color:var(--shell-color-text-muted);opacity:.5;transition:opacity var(--shell-transition-fast)}.shell-rail-add-btn:hover{opacity:1}.shell-rail-dropdown{position:absolute;left:calc(100% + var(--shell-spacing-sm));top:0;min-width:200px;max-height:300px;overflow-y:auto;background:var(--shell-color-surface);border:1px solid var(--shell-color-border);border-radius:var(--shell-radius-lg);box-shadow:var(--shell-shadow-lg);padding:var(--shell-spacing-xs);z-index:100}.shell-rail-dropdown-item{display:flex;align-items:center;gap:var(--shell-spacing-sm);width:100%;padding:var(--shell-spacing-sm) var(--shell-spacing-md);border:none;background:transparent;color:var(--shell-color-text);font-size:.875rem;text-align:left;border-radius:var(--shell-radius-md);cursor:pointer;transition:background var(--shell-transition-fast)}.shell-rail-dropdown-item:hover{background:var(--shell-surface-brand-weak)}.shell-rail-dropdown-icon{width:16px;height:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.shell-rail-dropdown-icon svg{width:16px;height:16px}.shell-rail-dropdown-empty{padding:var(--shell-spacing-md);color:var(--shell-color-text-muted);font-size:.813rem;text-align:center}.shell-add-favorite-modal{min-width:240px;max-width:300px;max-height:400px;background:#1e293b;border:1px solid var(--shell-surface-neutral-strong);border-radius:var(--shell-radius-lg);box-shadow:0 4px 20px rgba(0,0,0,.4);overflow:hidden;display:flex;flex-direction:column}[data-theme=light] .shell-add-favorite-modal{background:#fff;border:1px solid #e2e8f0;box-shadow:0 4px 20px rgba(0,0,0,.15)}.shell-add-favorite-modal-header{display:flex;align-items:center;justify-content:space-between;padding:var(--shell-spacing-md) var(--shell-spacing-lg);border-bottom:1px solid var(--shell-color-border);font-weight:600;font-size:.875rem;color:var(--shell-color-text)}.shell-add-favorite-modal-close{display:flex;align-items:center;justify-content:center;width:24px;height:24px;border:none;background:transparent;color:var(--shell-color-text-muted);cursor:pointer;border-radius:var(--shell-radius-sm);transition:background var(--shell-transition-fast),color var(--shell-transition-fast)}.shell-add-favorite-modal-close:hover{background:var(--shell-surface-brand-weak);color:var(--shell-color-text)}.shell-add-favorite-modal-content{overflow-y:auto;padding:var(--shell-spacing-sm);flex:1 1}.shell-add-favorite-modal-item{display:flex;align-items:center;gap:var(--shell-spacing-md);width:100%;padding:var(--shell-spacing-sm) var(--shell-spacing-md);border:none;background:transparent;color:var(--shell-color-text);font-size:.875rem;text-align:left;border-radius:var(--shell-radius-md);cursor:pointer;transition:background var(--shell-transition-fast)}.shell-add-favorite-modal-item:hover{background:var(--shell-surface-brand-weak)}.shell-add-favorite-modal-icon{width:20px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center;color:var(--shell-color-text-muted)}.shell-add-favorite-modal-icon svg{width:20px;height:20px}.shell-add-favorite-modal-empty{padding:var(--shell-spacing-lg);color:var(--shell-color-text-muted);font-size:.813rem;text-align:center}.pulse-fab{position:fixed;right:28px;bottom:28px;width:54px;height:54px;border-radius:50%;border:none;background:linear-gradient(135deg,var(--shell-color-accent),var(--shell-color-brand));color:var(--shell-color-text-inverse);font-size:1.4rem;font-weight:700;box-shadow:0 12px 26px rgba(15,23,42,.35);cursor:pointer;z-index:12000;display:flex;align-items:center;justify-content:center;transition:transform var(--shell-transition-fast),box-shadow var(--shell-transition-fast)}.pulse-fab:hover{transform:translateY(-2px);box-shadow:0 16px 32px rgba(15,23,42,.45)}.pulse-fab:active{transform:translateY(1px)}.pulse-fab-icon{display:block;font-size:1.4rem;line-height:1}.shell-layout:has(.dashboard-add-widget-fab) .pulse-fab{right:96px}.pulse-palette-overlay{position:fixed;inset:0;background:radial-gradient(circle at top,rgba(15,23,42,.65),rgba(2,6,23,.85));-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);display:flex;align-items:flex-start;justify-content:center;padding:10vh 24px 24px;z-index:12010;animation:pulse-fade-in .18s ease-out}.pulse-palette{width:min(720px,94vw);background:var(--shell-color-surface-elevated);border:1px solid var(--shell-color-border);border-radius:20px;box-shadow:0 24px 60px rgba(2,6,23,.45);display:flex;flex-direction:column;overflow:hidden;animation:pulse-rise-in .2s ease-out}.pulse-palette-header{display:flex;align-items:center;justify-content:space-between;padding:18px 22px;border-bottom:1px solid var(--shell-color-border)}.pulse-palette-brand{font-size:1rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--shell-color-text)}.pulse-palette-close{border:none;background:transparent;color:var(--shell-color-text-muted);font-size:1.5rem;line-height:1;cursor:pointer;padding:2px 6px;border-radius:8px}.pulse-palette-close:hover{color:var(--shell-color-text);background:var(--shell-surface-brand-weak)}.pulse-palette-target{display:flex;align-items:center;gap:12px;padding:12px 22px;border-bottom:1px solid var(--shell-color-border);background:var(--shell-surface-neutral-hint);font-size:.85rem}.pulse-palette-target-label{text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;color:var(--shell-color-text-muted)}.pulse-palette-target-value{flex:1 1;color:var(--shell-color-text);font-weight:600}.pulse-palette-target-action{border:1px solid var(--shell-color-border);background:transparent;color:var(--shell-color-text-muted);border-radius:999px;padding:4px 10px;font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}.pulse-palette-input-row{display:flex;align-items:center;gap:12px;padding:18px 22px 12px}.pulse-palette-input{flex:1 1;background:transparent;border:none;color:var(--shell-color-text);font-size:1.1rem;font-weight:600;outline:none}.pulse-palette-input::placeholder{color:var(--shell-color-text-muted);font-weight:500}.pulse-palette-hint{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--shell-color-text-muted)}.pulse-palette-results{padding:8px 18px 12px;display:flex;flex-direction:column;gap:6px;max-height:320px;overflow-y:auto}.pulse-palette-preview{border-top:1px solid var(--shell-color-border);padding:14px 22px 8px;background:var(--shell-surface-neutral-hint)}.pulse-palette-preview-title{font-size:.7rem;text-transform:uppercase;letter-spacing:.14em;color:var(--shell-color-text-muted);margin-bottom:8px}.pulse-palette-preview-body{display:flex;flex-direction:column;gap:6px}.pulse-palette-preview-name{font-size:.95rem;font-weight:600;color:var(--shell-color-text)}.pulse-palette-preview-description{font-size:.85rem;color:var(--shell-color-text-muted)}.pulse-palette-preview-examples{display:flex;flex-direction:column;gap:6px}.pulse-palette-preview-example{background:rgba(15,23,42,.4);color:var(--shell-color-text-inverse);border-radius:8px;padding:6px 10px;font-size:.78rem;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}[data-theme=light] .pulse-palette-preview-example{background:rgba(148,163,184,.2);color:var(--shell-color-text)}.pulse-palette-preview-empty{font-size:.85rem;color:var(--shell-color-text-muted)}.pulse-palette-item{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 14px;border-radius:14px;border:1px solid transparent;background:transparent;color:var(--shell-color-text);cursor:pointer;transition:background var(--shell-transition-fast),border var(--shell-transition-fast)}.pulse-palette-item.active,.pulse-palette-item:hover{background:var(--shell-surface-brand-weak);border-color:var(--shell-border-brand-soft)}.pulse-palette-item-main{display:flex;flex-direction:column;gap:4px;text-align:left}.pulse-palette-item-label{font-size:1rem;font-weight:600}.pulse-palette-item-description{font-size:.82rem;color:var(--shell-color-text-muted)}.pulse-palette-item-kind{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;color:var(--shell-color-text-muted)}.pulse-palette-empty{padding:18px;text-align:center}.pulse-palette-empty,.pulse-palette-footer{color:var(--shell-color-text-muted);font-size:.85rem}.pulse-palette-footer{display:flex;align-items:center;gap:10px;padding:12px 22px 18px;border-top:1px solid var(--shell-color-border)}.pulse-palette-footer-label{text-transform:uppercase;letter-spacing:.08em;font-size:.7rem}.pulse-palette-footer-command{font-weight:600;color:var(--shell-color-text)}.pulse-palette-footer-note{margin-left:auto}.pulse-slash-menu{position:fixed;width:min(320px,86vw);background:var(--shell-color-surface-elevated);border:1px solid var(--shell-color-border);border-radius:14px;box-shadow:0 18px 40px rgba(2,6,23,.45);color:var(--shell-color-text);z-index:12020;overflow:hidden}.pulse-slash-filter{padding:10px 12px 8px;border-bottom:1px solid var(--shell-color-border);background:var(--shell-surface-neutral-hint)}.pulse-slash-input{width:100%;border:none;background:transparent;color:var(--shell-color-text);font-size:.85rem;font-weight:600;outline:none}.pulse-slash-input::placeholder{color:var(--shell-color-text-muted);font-weight:500}.pulse-slash-list{max-height:320px;overflow-y:auto;padding:6px 10px 8px;display:flex;flex-direction:column;gap:6px}.pulse-slash-section{display:flex;flex-direction:column;gap:4px}.pulse-slash-section-title{font-size:.65rem;text-transform:uppercase;letter-spacing:.14em;color:var(--shell-color-text-muted);padding:6px 6px 2px}.pulse-slash-item{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;border-radius:10px;border:1px solid transparent;background:transparent;color:var(--shell-color-text);cursor:pointer;text-align:left;transition:background var(--shell-transition-fast),border var(--shell-transition-fast)}.pulse-slash-item.active,.pulse-slash-item:hover{background:var(--shell-surface-brand-weak);border-color:var(--shell-border-brand-soft)}.pulse-slash-item-main{display:flex;flex-direction:column;gap:2px}.pulse-slash-item-label{font-size:.9rem;font-weight:600}.pulse-slash-item-description{font-size:.75rem;color:var(--shell-color-text-muted)}.pulse-slash-item-hint{font-size:.7rem;color:var(--shell-color-text-muted);font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;white-space:nowrap}.pulse-slash-empty{padding:12px 8px;font-size:.8rem;color:var(--shell-color-text-muted)}.pulse-slash-footer{padding:8px 12px 10px;font-size:.7rem;color:var(--shell-color-text-muted);border-top:1px solid var(--shell-color-border);background:var(--shell-surface-neutral-hint)}.rich-text-input{white-space:pre-wrap}.rich-text-input[contenteditable=true]:empty:before{content:attr(data-placeholder);color:var(--shell-color-text-muted);pointer-events:none}.rich-text-input[contenteditable=false]{opacity:.6;cursor:not-allowed}.shell-markdown{display:flex;flex-direction:column;gap:.45rem}.shell-markdown h1,.shell-markdown h2,.shell-markdown h3{margin:0;line-height:1.2}.shell-markdown h1{font-size:1.35rem;font-weight:700}.shell-markdown h2{font-size:1.15rem;font-weight:700}.shell-markdown h3{font-size:1rem;font-weight:700}.shell-markdown p{margin:0}.shell-markdown ol,.shell-markdown ul{margin:0;padding-left:1.35rem}.shell-markdown li{margin:.2rem 0}.shell-markdown li.shell-markdown-task{display:flex;align-items:center;gap:.5rem}.shell-markdown li.shell-markdown-task input{margin:0}.shell-markdown blockquote{margin:0;padding-left:.85rem;border-left:3px solid var(--shell-color-border);color:var(--shell-color-text-muted)}.shell-markdown code{font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.85em;background:rgba(148,163,184,.2);padding:2px 6px;border-radius:6px}.shell-markdown pre{margin:0;padding:12px 14px;border-radius:10px;background:rgba(15,23,42,.55);color:var(--shell-color-text-inverse);overflow-x:auto}[data-theme=light] .shell-markdown pre{background:rgba(148,163,184,.18);color:var(--shell-color-text)}.shell-markdown pre code{background:transparent;padding:0;font-size:.85em;font-feature-settings:none;font-variant-ligatures:none;-moz-tab-size:2;tab-size:2}.shell-markdown pre code .token.cdata,.shell-markdown pre code .token.comment,.shell-markdown pre code .token.doctype,.shell-markdown pre code .token.prolog{color:#94a3b8}.shell-markdown pre code .token.punctuation{color:#cbd5f5}.shell-markdown pre code .token.constant,.shell-markdown pre code .token.deleted,.shell-markdown pre code .token.property,.shell-markdown pre code .token.symbol,.shell-markdown pre code .token.tag{color:#fca5a5}.shell-markdown pre code .token.boolean,.shell-markdown pre code .token.number{color:#fda4af}.shell-markdown pre code .token.attr-name,.shell-markdown pre code .token.builtin,.shell-markdown pre code .token.char,.shell-markdown pre code .token.inserted,.shell-markdown pre code .token.selector,.shell-markdown pre code .token.string{color:#86efac}.shell-markdown pre code .token.entity,.shell-markdown pre code .token.operator,.shell-markdown pre code .token.url,.shell-markdown pre code .token.variable{color:#e2e8f0}.shell-markdown pre code .token.atrule,.shell-markdown pre code .token.attr-value,.shell-markdown pre code .token.keyword{color:#7dd3fc}.shell-markdown pre code .token.class-name,.shell-markdown pre code .token.function{color:#facc15}.shell-markdown pre code .token.important,.shell-markdown pre code .token.regex{color:#c4b5fd}[data-theme=light] .shell-markdown pre code .token.cdata,[data-theme=light] .shell-markdown pre code .token.comment,[data-theme=light] .shell-markdown pre code .token.doctype,[data-theme=light] .shell-markdown pre code .token.prolog{color:#64748b}[data-theme=light] .shell-markdown pre code .token.punctuation{color:#475569}[data-theme=light] .shell-markdown pre code .token.constant,[data-theme=light] .shell-markdown pre code .token.deleted,[data-theme=light] .shell-markdown pre code .token.property,[data-theme=light] .shell-markdown pre code .token.symbol,[data-theme=light] .shell-markdown pre code .token.tag{color:#b91c1c}[data-theme=light] .shell-markdown pre code .token.boolean,[data-theme=light] .shell-markdown pre code .token.number{color:#be185d}[data-theme=light] .shell-markdown pre code .token.attr-name,[data-theme=light] .shell-markdown pre code .token.builtin,[data-theme=light] .shell-markdown pre code .token.char,[data-theme=light] .shell-markdown pre code .token.inserted,[data-theme=light] .shell-markdown pre code .token.selector,[data-theme=light] .shell-markdown pre code .token.string{color:#15803d}[data-theme=light] .shell-markdown pre code .token.entity,[data-theme=light] .shell-markdown pre code .token.operator,[data-theme=light] .shell-markdown pre code .token.url,[data-theme=light] .shell-markdown pre code .token.variable{color:#1f2937}[data-theme=light] .shell-markdown pre code .token.atrule,[data-theme=light] .shell-markdown pre code .token.attr-value,[data-theme=light] .shell-markdown pre code .token.keyword{color:#2563eb}[data-theme=light] .shell-markdown pre code .token.class-name,[data-theme=light] .shell-markdown pre code .token.function{color:#b45309}[data-theme=light] .shell-markdown pre code .token.important,[data-theme=light] .shell-markdown pre code .token.regex{color:#6d28d9}.shell-markdown-toggle{border:1px solid var(--shell-color-border);border-radius:10px;padding:8px 12px;background:var(--shell-surface-neutral-hint)}.shell-markdown-toggle-summary{cursor:pointer;font-weight:600;color:var(--shell-color-text)}.shell-markdown-toggle-body{margin-top:8px}@keyframes pulse-fade-in{0%{opacity:0}to{opacity:1}}@keyframes pulse-rise-in{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}@media (max-width:768px){.pulse-fab{right:18px;bottom:18px;width:48px;height:48px}.pulse-palette{border-radius:16px}}.shell-main{background:var(--shell-gradient-main),var(--shell-color-app-bg);flex:1 1;padding:var(--shell-spacing-lg);overflow-y:auto}[data-theme=light] .shell-main{background:var(--shell-gradient-main),#fff}.shell-hero{margin-bottom:var(--shell-spacing-2xl)}.shell-hero h1{margin:var(--shell-spacing-md) 0;font-size:2rem;font-weight:700;letter-spacing:-.02em;color:var(--shell-color-text)}.shell-hero p{margin:0;color:var(--shell-color-text-muted);max-width:720px;line-height:1.6}.shell-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));grid-gap:var(--shell-spacing-lg);gap:var(--shell-spacing-lg)}.shell-section-title{font-size:1.125rem;font-weight:600;margin:0 0 var(--shell-spacing-lg);color:var(--shell-color-text)}}