:root{--bg-body:#fff;--bg-card:#f8fafc;--bg-card-hover:#f1f5f9;--bg-card-active:#e2e8f0;--bg-category-section:#f8fafc;--bg-child-card:#fff;--border-subtle:#cbd5e1;--border-hover:#94a3b8;--text-white:#0f172a;--text-secondary:#334155;--text-muted:#64748b;--brand-blue-main:#1d4ed8;--brand-blue-hover:#1e40af;--badge-green-bg:#047857;--badge-purple-bg:#581c87;--font-main:"Space Grotesk", -apple-system, BlinkMacSystemFont, sans-serif;--font-code:"JetBrains Mono", monospace;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--radius-full:9999px;--transition-fast:.15s cubic-bezier(.16, 1, .3, 1);--transition-smooth:.25s cubic-bezier(.16, 1, .3, 1);--header-bg-solid:#fff;--header-border-solid:#cbd5e1;--mobile-menu-bg-solid:#fff;--backdrop-overlay-bg:#0f172a73}[data-theme=dark]{--bg-body:#09090b;--bg-card:#121215;--bg-card-hover:#18181f;--bg-card-active:#1f1f28;--bg-category-section:#16161e;--bg-child-card:#0d0d12;--border-subtle:#22222a;--border-hover:#3f3f4e;--text-white:#f8fafc;--text-secondary:#cbd5e1;--text-muted:#94a3b8;--brand-blue-main:#3b82f6;--header-bg-solid:#09090b;--header-border-solid:#22222a;--mobile-menu-bg-solid:#09090b;--backdrop-overlay-bg:#0000008c;--brand-blue-hover:#2563eb;--badge-green-bg:#065f46;--badge-purple-bg:#4c1d95}*,:before,:after{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--font-main);background-color:var(--bg-body);color:var(--text-white);letter-spacing:-.01em;-webkit-font-smoothing:antialiased;min-height:100vh;line-height:1.6;transition:background-color .2s,color .2s;overflow-x:hidden}.tw-container{max-width:1380px;margin:0 auto;padding:0 1.5rem}.tw-header{z-index:9999;background:var(--header-bg-solid);border-bottom:1px solid var(--header-border-solid);padding:.85rem 0;transition:background-color .2s,border-color .2s;position:sticky;top:0;box-shadow:0 4px 20px #0000000a}.tw-header.menu-open{box-shadow:none;border-bottom-color:#0000}.tw-header-inner{z-index:10001;justify-content:space-between;align-items:center;display:flex;position:relative}.tw-brand{transition:opacity var(--transition-fast);align-items:center;gap:.6rem;text-decoration:none;display:flex}.tw-brand:hover{opacity:.88}.tw-logo{letter-spacing:.03em;color:var(--text-white);font-size:1.45rem;font-weight:900;text-decoration:none}.tw-brand-divider{color:var(--border-hover);margin:0 .1rem;font-size:1.15rem;font-weight:400}.tw-brand-badge{letter-spacing:.04em;color:var(--brand-blue-main);border-radius:var(--radius-full);text-transform:uppercase;background:#2563eb1f;border:1px solid #2563eb40;align-items:center;padding:.15rem .55rem;font-size:.785rem;font-weight:800;display:inline-flex}.tw-header-actions{align-items:center;gap:.85rem;display:flex}.tw-nav-links{align-items:center;gap:.25rem;display:flex;position:absolute;left:50%;transform:translate(-50%)}.tw-nav-link{color:var(--text-muted);border-radius:var(--radius-md);transition:all var(--transition-fast);border:1px solid #0000;align-items:center;gap:.4rem;padding:.45rem .9rem;font-size:.9rem;font-weight:700;text-decoration:none;display:inline-flex}.tw-nav-link svg{width:15px;height:15px}.tw-nav-link:hover{color:var(--text-white);background:var(--bg-card);border-color:var(--border-subtle)}.tw-nav-link.active{color:var(--brand-blue-main);background:#2563eb14;border-color:#2563eb33;font-weight:800}.tw-btn{border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);border:1px solid #0000;justify-content:center;align-items:center;gap:.5rem;padding:.65rem 1.25rem;font-family:inherit;font-size:.95rem;font-weight:600;text-decoration:none;display:inline-flex}.tw-btn svg{width:17px;height:17px}.tw-btn-icon{background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--text-white);padding:.65rem}.tw-btn-icon:hover{background:var(--bg-card-hover);border-color:var(--border-hover)}.tw-icon-btn{color:var(--text-white);cursor:pointer;border-radius:var(--radius-sm);background:0 0;border:none;justify-content:center;align-items:center;padding:.5rem;transition:color .15s,opacity .15s;display:inline-flex}.tw-icon-btn:hover{color:var(--brand-blue-main);opacity:.85}.tw-btn-primary{background:var(--brand-blue-main);color:#fff}.tw-btn-primary:hover{background:var(--brand-blue-hover);transform:translateY(-1px)}.tw-btn-ghost{background:var(--bg-card);border-color:var(--border-subtle);color:var(--text-white)}.tw-btn-ghost:hover{background:var(--bg-card-hover);border-color:var(--border-hover)}.tw-hero-section{padding:2.75rem 0 .5rem}.tw-hero-header{text-align:center;max-width:760px;margin:0 auto 1.25rem}.tw-pill-badge{border-radius:var(--radius-full);color:var(--brand-blue-main);letter-spacing:.05em;background:#2563eb1a;border:1px solid #2563eb40;align-items:center;gap:.45rem;margin-bottom:1.25rem;padding:.4rem .95rem;font-size:.825rem;font-weight:700;display:inline-flex}.tw-pill-badge svg{width:15px;height:15px}.tw-hero-title{letter-spacing:-.03em;color:var(--text-white);margin-bottom:1rem;font-size:2.85rem;font-weight:700;line-height:1.15}.tw-hero-subtitle{color:var(--text-secondary);font-size:1.15rem;line-height:1.6}.tw-controls-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);align-items:center;gap:.85rem;margin-bottom:1.25rem;padding:.75rem 1.25rem;display:flex;box-shadow:0 4px 16px #00000005}.custom-dropdown-container{flex-shrink:0;min-width:250px;position:relative}.custom-dropdown-trigger{background:var(--bg-body);border:1px solid var(--border-subtle);border-radius:var(--radius-md);width:100%;color:var(--text-white);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:.65rem;padding:.65rem .95rem;font-family:inherit;font-size:.9rem;font-weight:600;display:flex}.custom-dropdown-trigger:hover,.custom-dropdown-container.open .custom-dropdown-trigger{border-color:var(--brand-blue-main);background:var(--bg-card-hover)}.trigger-icon{width:17px;height:17px;color:var(--brand-blue-main);flex-shrink:0}.trigger-label{text-align:left;white-space:nowrap;text-overflow:ellipsis;flex:1;overflow:hidden}.trigger-chevron{width:16px;height:16px;color:var(--text-muted);flex-shrink:0;transition:transform .2s}.custom-dropdown-container.open .trigger-chevron{transform:rotate(180deg)}.custom-dropdown-menu{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);z-index:100;flex-direction:column;width:320px;animation:.15s ease-out dropdownFadeIn;display:none;position:absolute;top:calc(100% + 6px);left:0;overflow:hidden;box-shadow:0 12px 36px #00000026}.custom-dropdown-container.open .custom-dropdown-menu{display:flex}@keyframes dropdownFadeIn{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.dropdown-search-box{border-bottom:1px solid var(--border-subtle);background:var(--bg-body);padding:.65rem .85rem;position:relative}.dropdown-search-icon{width:15px;height:15px;color:var(--text-muted);position:absolute;top:50%;left:1.1rem;transform:translateY(-50%)}.dropdown-search-box input{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);width:100%;color:var(--text-white);outline:none;padding:.45rem .6rem .45rem 2.1rem;font-family:inherit;font-size:.85rem}.dropdown-search-box input:focus{border-color:var(--brand-blue-main)}.dropdown-options-list{flex-direction:column;gap:.25rem;max-height:260px;padding:.4rem;display:flex;overflow-y:auto}.dropdown-option-item{border-radius:var(--radius-sm);cursor:pointer;white-space:nowrap;justify-content:space-between;align-items:center;gap:.85rem;padding:.55rem .75rem;transition:all .15s;display:flex}.dropdown-option-item:hover{background:var(--bg-card-hover)}.dropdown-option-item.selected{background:var(--bg-card-active);font-weight:700}.option-left{white-space:nowrap;align-items:center;gap:.6rem;display:flex}.option-icon{flex-shrink:0;width:16px;height:16px}.option-title{color:var(--text-white);white-space:nowrap;font-size:.875rem}.option-badge{font-family:var(--font-code);color:var(--text-muted);background:var(--bg-body);border:1px solid var(--border-subtle);border-radius:var(--radius-full);white-space:nowrap;flex-shrink:0;padding:.15rem .5rem;font-size:.7rem}.dropdown-empty-state{text-align:center;color:var(--text-muted);padding:1.25rem;font-size:.85rem}.level-dropdown-container{flex-shrink:0;min-width:155px}.level-dropdown-menu{width:max-content;min-width:200px;left:0;right:auto}.type-dropdown-container{flex-shrink:0;min-width:170px}.type-dropdown-menu{width:max-content;min-width:220px;left:auto;right:0}.sort-dropdown-container{flex-shrink:0;min-width:150px}.sort-dropdown-menu{width:max-content;min-width:200px;left:auto;right:0}.tw-search-bar{flex:1;position:relative}.tw-search-bar .search-icon{width:18px;height:18px;color:var(--text-muted);position:absolute;top:50%;left:1rem;transform:translateY(-50%)}.tw-search-bar input{background:var(--bg-body);border:1px solid var(--border-subtle);border-radius:var(--radius-md);width:100%;color:var(--text-white);transition:border-color var(--transition-fast), box-shadow var(--transition-fast);outline:none;padding:.65rem 4.5rem .65rem 2.7rem;font-family:inherit;font-size:.925rem}.tw-search-bar input:focus{border-color:var(--brand-blue-main);box-shadow:0 0 0 3px #2563eb1f}.search-shortcut{font-family:var(--font-code);background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--text-muted);pointer-events:none;letter-spacing:.05em;border-radius:4px;padding:.15rem .45rem;font-size:.7rem;font-weight:700;position:absolute;top:50%;right:.85rem;transform:translateY(-50%)}.clear-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;padding:.2rem;display:none;position:absolute;top:50%;right:.75rem;transform:translateY(-50%)}.clear-btn.visible{display:block}.clear-btn.visible~.search-shortcut{display:none}.tw-progress-strip{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);padding:.85rem 1.5rem}.progress-info{color:var(--text-secondary);justify-content:space-between;align-items:center;margin-bottom:.5rem;font-size:.925rem;display:flex}.progress-info span{align-items:center;gap:.4rem;display:flex}.progress-info svg{width:17px;height:17px;color:var(--badge-green-bg)}.progress-info strong{font-family:var(--font-code);color:var(--brand-blue-main);font-size:1rem}.progress-bar{background:var(--border-subtle);border-radius:var(--radius-full);width:100%;height:6px;overflow:hidden}.progress-fill{background:var(--brand-blue-main);border-radius:var(--radius-full);height:100%;transition:width .3s}.tw-main-content{width:100%;margin-bottom:0}.tw-canvas-card{box-shadow:none;background:0 0;border:none;min-height:auto;margin:1.5rem 0 3.5rem;padding:0;overflow:visible}.canvas-header-row{align-items:center;margin-bottom:.5rem;display:none}.canvas-header-meta{color:var(--text-muted);align-items:center;gap:.4rem;font-size:.825rem;font-weight:600;display:flex}.canvas-header-meta svg{color:var(--badge-green-bg);flex-shrink:0}.circular-progress-badge{cursor:default;filter:drop-shadow(0 4px 12px #0000001f);flex-shrink:0;width:72px;height:72px;transition:transform .25s cubic-bezier(.16,1,.3,1),filter .25s;position:relative;overflow:visible!important}.circular-progress-badge:hover{filter:drop-shadow(0 6px 18px #2563eb59);transform:scale(1.08)}.circle-svg{width:72px;height:72px;display:block;transform:rotate(-90deg);overflow:visible!important}.circle-track{stroke:var(--border-subtle)}.circle-fill{stroke:var(--brand-blue-main);stroke-linecap:round;filter:drop-shadow(0 0 4px #2563eb80);transition:stroke-dashoffset .6s cubic-bezier(.16,1,.3,1)}.circle-inner{pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.circle-pct{font-family:var(--font-code);color:var(--brand-blue-main);font-size:.8rem;font-weight:700;line-height:1}.circle-label{color:var(--text-muted);letter-spacing:.05em;text-transform:uppercase;margin-top:1px;font-size:.6rem;font-weight:600;line-height:1.2}.custom-progress-tooltip{-webkit-backdrop-filter:blur(10px);color:#1e293b;white-space:nowrap;pointer-events:none;opacity:0;visibility:hidden;z-index:100;background:#fff;border:1px solid #0000001a;border-radius:8px;padding:6px 14px;font-size:.78rem;font-weight:500;transition:opacity .2s cubic-bezier(.16,1,.3,1),transform .2s cubic-bezier(.16,1,.3,1),visibility .2s;position:absolute;top:50%;left:auto;right:calc(100% + 12px);transform:translateY(-50%)translate(6px);box-shadow:0 10px 25px -5px #0000001a,0 4px 10px -2px #0000000d}.custom-progress-tooltip:before{content:"";border:5px solid #0000;border-left-color:#fff;border-right:none;width:0;height:0;position:absolute;top:50%;left:auto;right:-5px;transform:translateY(-50%)}.custom-progress-tooltip .tooltip-highlight{color:var(--brand-blue-main);font-weight:700}[data-theme=dark] .custom-progress-tooltip{color:#f8fafc;background:#18181ff2;border-color:#ffffff2e;box-shadow:0 10px 25px -5px #00000080}[data-theme=dark] .custom-progress-tooltip:before{border-color:#0000 currentColor #0000 #18181ff2;border-top-style:solid;border-top-width:5px;border-bottom-style:solid;border-bottom-width:5px;border-right-style:none;border-right-width:medium}[data-theme=dark] .custom-progress-tooltip .tooltip-highlight{color:#60a5fa}.circular-progress-badge:hover .custom-progress-tooltip{opacity:1;visibility:visible;transform:translateY(-50%)translate(0)}.mindmap-viewport{border-radius:var(--radius-lg);cursor:default;-webkit-user-select:none;user-select:none;width:100%;position:relative;overflow:visible}.mindmap-svg{pointer-events:none;z-index:1;width:100%;height:100%;position:absolute;top:0;left:0;overflow:visible!important}.flow-dot{fill:var(--brand-blue-main);opacity:.5;filter:drop-shadow(0 0 3px var(--brand-blue-main))}.flow-dot-done{fill:#10b981;opacity:.65;filter:drop-shadow(0 0 4px #10b981)}.flow-dot-hover{opacity:.9;filter:drop-shadow(0 0 6px var(--brand-blue-main)) drop-shadow(0 0 12px #2563eb80)}.flow-dot-done.flow-dot-hover{filter:drop-shadow(0 0 6px #10b981)drop-shadow(0 0 12px #10b98180)}.branch-path{stroke:var(--border-subtle);stroke-width:2.5px;fill:none;stroke-linecap:round;stroke-linejoin:round;pointer-events:stroke;cursor:pointer;transition:stroke .2s,stroke-width .2s,filter .2s}.branch-path:hover,.branch-path-hit-area:hover+.branch-path,.branch-path.glowing-breath{stroke:var(--brand-blue-main)!important;stroke-width:4px!important;filter:drop-shadow(0 0 8px var(--brand-blue-main)) drop-shadow(0 0 16px #2563eb99)!important;animation:1.2s ease-in-out infinite alternate lineGlowPulse!important}@keyframes lineGlowPulse{0%{stroke-opacity:.65;filter:drop-shadow(0 0 4px var(--brand-blue-main))}to{stroke-opacity:1;filter:drop-shadow(0 0 16px var(--brand-blue-main))}}.mindmap-tree-layer{z-index:2;position:relative}.mindmap-radial-canvas{width:100%;position:relative}.tree-root-card.radial-root{z-index:10;border:2px solid var(--brand-blue-main);cursor:default;border-radius:9999px;padding:.7rem 1.4rem;transition:transform .25s,box-shadow .25s;position:absolute;transform:translate(-50%,-50%);box-shadow:0 8px 30px #00000040,0 0 20px #2563eb40;background:#0f172a!important}.tree-root-card.radial-root:hover{transform:translate(-50%,-50%)scale(1.03);box-shadow:0 12px 36px #0000004d,0 0 30px #2563eb66}.radial-root-content{white-space:nowrap;align-items:center;gap:.75rem;display:flex}.radial-root-icon{background:var(--brand-blue-main);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.radial-root-title{letter-spacing:.03em;font-size:.95rem;font-weight:700;color:#fff!important}.radial-root-badge{color:#93c5fd;background:#ffffff1f;border:1px solid #fff3;border-radius:9999px;align-items:center;padding:.2rem .65rem;font-size:.75rem;font-weight:600;display:inline-flex}.cat-float-card{background:var(--bg-category-section);border:1px solid var(--border-subtle);border-top:3.5px solid var(--cat-accent,var(--brand-blue-main));border-radius:var(--radius-lg);cursor:default;flex-direction:column;width:260px;padding:1.15rem;transition:transform .2s,box-shadow .25s,border-color .25s;display:flex;position:absolute;transform:translate(-50%,-28px);box-shadow:0 6px 24px #00000014}.cat-float-card:hover,.cat-float-card.cat-hovered{border-color:var(--cat-accent,var(--brand-blue-main));box-shadow:0 8px 32px #0000001f, 0 0 0 2px color-mix(in srgb, var(--cat-accent,var(--brand-blue-main)) 25%, transparent)}.cat-float-card .category-items-wrapper-outer{opacity:1;grid-template-rows:1fr;transition:grid-template-rows .35s cubic-bezier(.16,1,.3,1),opacity .25s cubic-bezier(.16,1,.3,1);display:grid}.cat-float-card.collapsed .category-items-wrapper-outer{opacity:0;grid-template-rows:0fr}.cat-float-card .category-items-wrapper-inner{scroll-behavior:smooth;max-height:250px;overflow:hidden auto}.cat-float-card .category-items-wrapper-inner::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.ptz-controls-bar{z-index:50;background:var(--bg-card);border:1px solid var(--border-subtle);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-radius:9999px;align-items:center;gap:.35rem;padding:.4rem .75rem;display:flex;position:absolute;top:1rem;right:1.5rem;box-shadow:0 4px 16px #00000014}.ptz-btn{color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast);background:0 0;border:none;justify-content:center;align-items:center;gap:.35rem;padding:.3rem .6rem;font-size:.8rem;font-weight:600;display:inline-flex}.ptz-btn:hover{color:var(--text-white);background:var(--bg-card-hover)}.ptz-zoom-indicator{font-size:.78rem;font-weight:700;font-family:var(--font-code);color:var(--brand-blue-main);text-align:center;min-width:42px;padding:0 .35rem}.ptz-divider{background:var(--border-subtle);width:1px;height:16px;margin:0 .25rem}.draggable-node{cursor:grab!important}.draggable-node:active,.draggable-node.is-dragging,.cat-float-card.is-dragging,.tree-root-card.is-dragging{cursor:grabbing!important;transition:none!important}.cat-float-card .category-items-wrapper-inner::-webkit-scrollbar{width:4px}.cat-float-card .category-items-wrapper-inner::-webkit-scrollbar-track{background:0 0}.cat-float-card .category-items-wrapper-inner::-webkit-scrollbar-thumb{background:var(--border-subtle);border-radius:2px}.tree-root-row{justify-content:center;align-items:center;margin-bottom:2.5rem;display:flex}.tree-root-spacer{flex:1}.tree-root-right{flex:1;justify-content:flex-end;align-items:center;padding-right:.75rem;display:flex}.tree-root-card{border:2px solid var(--brand-blue-main);border-radius:var(--radius-md);text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;width:fit-content;padding:.85rem 1.75rem;transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s,border-color .22s;box-shadow:0 6px 20px #00000040;color:#fff!important;background:#0f172a!important}.tree-root-card:hover{border-color:#60a5fa;transform:translateY(-2px)scale(1.02);box-shadow:0 8px 25px #2563eb59}.tree-root-card h2{letter-spacing:.04em;align-items:center;gap:.5rem;font-size:1.05rem;font-weight:700;display:flex;color:#fff!important}.tree-categories-grid{flex-wrap:wrap;justify-content:center;align-items:flex-start;gap:1.5rem;display:flex}.category-section-group{background:var(--bg-category-section);border:1px solid var(--border-subtle);border-top:4px solid var(--cat-accent,var(--brand-blue-main));border-radius:var(--radius-lg);flex-direction:column;flex:250px;min-width:240px;max-width:300px;padding:1.15rem;transition:transform .25s cubic-bezier(.16,1,.3,1),box-shadow .25s cubic-bezier(.16,1,.3,1),border-color .25s cubic-bezier(.16,1,.3,1),background-color .2s;display:flex;position:relative;box-shadow:0 4px 14px #00000008}.category-section-group.collapsed,.category-section-group.collapsed .category-title,.category-section-group.collapsed .category-subtitle{min-height:auto}.category-section-group.collapsed .category-subtitle{margin-bottom:0}.category-section-group:hover,.category-section-group.cat-hovered{border-color:var(--cat-accent,var(--brand-blue-main));background-color:var(--bg-card-hover);transform:translateY(-4px);box-shadow:0 12px 28px #00000014,0 0 24px #2563eb1f}.content-fade-in{animation:.35s cubic-bezier(.16,1,.3,1) forwards contentFadeIn}@keyframes contentFadeIn{0%{opacity:0;transform:translateY(12px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.category-section-header{cursor:pointer;-webkit-user-select:none;user-select:none;flex-direction:column;justify-content:flex-start;display:flex}.category-header-top{justify-content:space-between;align-items:flex-start;gap:.5rem;display:flex}.category-title{color:var(--text-white);align-items:flex-start;gap:.5rem;font-size:1.05rem;font-weight:700;line-height:1.35;transition:color .2s;display:flex}.category-title svg{width:18px;height:18px;color:var(--cat-accent,var(--brand-blue-main));flex-shrink:0;margin-top:2px;transition:transform .25s cubic-bezier(.16,1,.3,1)}.category-section-header:hover .category-title svg{transform:scale(1.18)rotate(-4deg)}.category-subtitle{color:var(--text-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin-top:.35rem;font-size:.85rem;line-height:1.4;display:-webkit-box;overflow:hidden}.collapse-toggle-btn{background:var(--bg-card);border:1px solid var(--border-subtle);color:var(--text-secondary);cursor:pointer;border-radius:var(--radius-sm);flex-shrink:0;justify-content:center;align-items:center;padding:.25rem;transition:all .2s;display:flex}.category-section-header:hover .collapse-toggle-btn{border-color:var(--cat-accent,var(--brand-blue-main));color:var(--cat-accent,var(--brand-blue-main));background:var(--bg-body)}.collapse-chevron{width:16px;height:16px;transition:transform .25s}.category-section-group.collapsed .collapse-chevron{transform:rotate(0)}.category-section-group:not(.collapsed) .collapse-chevron{transform:rotate(180deg)}.category-items-wrapper-outer{opacity:1;grid-template-rows:1fr;transition:grid-template-rows .35s cubic-bezier(.16,1,.3,1),opacity .25s cubic-bezier(.16,1,.3,1);display:grid}.category-section-group.collapsed .category-items-wrapper-outer{opacity:0;pointer-events:none;visibility:hidden;grid-template-rows:0fr}.category-items-wrapper-inner{border-top:1px solid var(--border-subtle);flex-direction:column;gap:.9rem;margin-top:.9rem;padding-top:.9rem;display:flex;overflow:hidden}.category-section-group.collapsed .category-items-wrapper-inner{border-top:none!important;margin-top:0!important;padding-top:0!important}.skeleton-card-group{background:var(--bg-category-section);border:1px solid var(--border-subtle);border-top:4px solid var(--border-subtle);border-radius:var(--radius-lg);flex-direction:column;flex:250px;gap:.85rem;min-width:240px;max-width:300px;min-height:140px;padding:1.15rem;display:flex}.skeleton-box{border-radius:var(--radius-sm);background:linear-gradient(90deg,#94a3b81f 0%,#94a3b847 50%,#94a3b81f 100%) 0 0/200% 100%;animation:1.5s ease-in-out infinite skeletonShimmer}@keyframes skeletonShimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton-title{width:70%;height:20px}.skeleton-sub{width:100%;height:14px}.skeleton-sub.short{width:60%}.skeleton-child-card{border-radius:var(--radius-md);width:100%;height:90px;margin-top:.5rem}.node-card-item{background:var(--bg-child-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);flex-direction:column;gap:.65rem;padding:1.1rem 1.15rem;display:flex}.node-card-item:hover,.node-card-item.card-hovered{background:var(--bg-card-hover);border-color:var(--brand-blue-main);transform:translateY(-2px);box-shadow:0 4px 16px #2563eb26}.node-card-item.completed{border-left:4px solid var(--badge-green-bg)}.node-top-bar{justify-content:space-between;align-items:center;display:flex}.badge-tag{font-family:var(--font-code);text-transform:uppercase;letter-spacing:.04em;border-radius:4px;justify-content:center;align-items:center;gap:.35rem;padding:.22rem .48rem;font-size:.625rem;font-weight:700;line-height:1;display:inline-flex}.badge-tag svg{flex-shrink:0;display:block}.badge-free{background:var(--badge-green-bg)!important;color:#fff!important;border:1px solid var(--badge-green-bg)!important}.badge-premium{background:var(--badge-purple-bg)!important;color:#fff!important;border:1px solid var(--badge-purple-bg)!important}.header-badge-tag{border-radius:var(--radius-sm);white-space:nowrap;box-sizing:border-box;border:1px solid #0000;align-items:center;gap:.35rem;height:28px;padding:.3rem .65rem;font-family:inherit;font-size:.725rem;font-weight:600;line-height:1;display:inline-flex;text-decoration:none!important}.header-badge-tag.badge-free,.header-badge-tag.badge-premium{font-family:var(--font-code);text-transform:uppercase;letter-spacing:.04em;font-size:.675rem;font-weight:700}.badge-type-link{cursor:pointer;transition:transform var(--transition-fast), filter var(--transition-fast)}.badge-type-link:hover{filter:brightness(1.15);transform:translateY(-1px)}.badge-category-link,.badge-category-link:hover,.badge-category-link:focus,.badge-category-link:active,.badge-category-link:visited{background:var(--bg-body);border-color:var(--border-subtle);color:var(--text-white);cursor:pointer;transition:all var(--transition-fast);text-decoration:none!important}.badge-category-link svg{width:14px;height:14px;color:var(--brand-blue-main)}.badge-category-link:hover{border-color:var(--brand-blue-main);background:var(--bg-card-hover);color:var(--brand-blue-main);transform:translateY(-1px);text-decoration:none!important}.badge-level-tag{background:var(--bg-body);border-color:var(--border-subtle);color:var(--text-secondary)}.badge-level-link{cursor:pointer;transition:all var(--transition-fast)}.badge-level-link svg{width:14px;height:14px;color:var(--brand-blue-main)}.badge-level-link:hover{border-color:var(--brand-blue-main);background:var(--bg-card-hover);color:var(--brand-blue-main);transform:translateY(-1px)}.check-btn{color:var(--text-muted);cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;padding:.2rem;display:flex}.check-btn svg{width:18px;height:18px}.check-btn:hover,.node-card-item.completed .check-btn{color:var(--badge-green-bg)}.node-title{color:var(--text-white);font-size:1.05rem;font-weight:700;line-height:1.4}.node-footer{color:var(--text-muted);border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;margin-top:auto;padding-top:.5rem;font-size:.875rem;display:flex}.node-footer-link{color:var(--brand-blue-main);align-items:center;gap:.25rem;font-weight:600;display:flex}.prereqs-list{flex-direction:column;gap:.65rem;display:flex}.prereq-item{background:var(--bg-body);border:1px solid var(--border-subtle);border-radius:var(--radius-md);transition:all var(--transition-fast);justify-content:space-between;align-items:center;padding:.75rem 1rem;font-size:.925rem;display:flex}.prereq-item.is-clickable{cursor:pointer}.prereq-item.is-clickable:hover{border-color:var(--brand-blue-main);background:var(--bg-card-hover);transform:translate(2px);box-shadow:0 4px 12px #2563eb1a}.prereq-item.done{border-left:4px solid var(--badge-green-bg);background:var(--bg-card)}.prereq-item.done.is-clickable:hover{border-color:var(--badge-green-bg);border-left-color:var(--badge-green-bg);box-shadow:0 4px 12px #10b98126}.prereq-link-title{color:var(--text-white);font-weight:600}.icon-done{color:var(--badge-green-bg);flex-shrink:0;width:18px;height:18px}.icon-pending{color:var(--text-muted);flex-shrink:0;width:18px;height:18px}.prereq-status-text{color:var(--text-muted);font-size:.8rem;font-weight:500}.prereq-item.done .prereq-status-text{color:var(--badge-green-bg);font-weight:600}.prereq-chevron-icon{width:15px;height:15px;color:var(--brand-blue-main);transition:transform var(--transition-fast)}.prereq-item.done .prereq-chevron-icon{color:var(--badge-green-bg)}.prereq-item.is-clickable:hover .prereq-chevron-icon{transform:translate(3px)}.empty-search-state{text-align:center;background:var(--bg-body);border:1px dashed var(--border-subtle);border-radius:var(--radius-lg);margin-top:1.5rem;padding:3rem 1.5rem}.empty-search-state h3{color:var(--text-white);margin-bottom:.35rem;font-size:1.15rem;font-weight:700}.empty-search-state p{color:var(--text-muted);font-size:.925rem}.drawer-backdrop{-webkit-backdrop-filter:blur(4px);z-index:20000;opacity:0;pointer-events:none;width:100vw;height:100dvh;transition:opacity var(--transition-smooth);overscroll-behavior:contain;background:#0009;justify-content:flex-end;display:flex;position:fixed;inset:0}.drawer-backdrop.open{opacity:1;pointer-events:auto}.drawer-panel{background:var(--bg-card);border-left:1px solid var(--border-subtle);width:100%;max-width:540px;height:100dvh;max-height:100dvh;transition:transform var(--transition-smooth);overscroll-behavior:contain;flex-direction:column;padding:0;display:flex;position:relative;overflow:hidden;transform:translate(100%)}.drawer-backdrop.open .drawer-panel{transform:translate(0)}.drawer-close{top:max(1.25rem, calc(1.25rem + env(safe-area-inset-top,0px)));background:var(--bg-body);border:1px solid var(--border-subtle);color:var(--text-secondary);border-radius:var(--radius-sm);cursor:pointer;z-index:20;justify-content:center;align-items:center;width:36px;height:36px;display:flex;position:absolute;right:1.5rem}.drawer-close:hover{color:var(--text-white);border-color:var(--border-hover)}.drawer-header{padding:1.5rem 2rem 1.25rem;padding-top:max(1.5rem, calc(1.5rem + env(safe-area-inset-top,0px)));background:var(--bg-card);border-bottom:1px solid var(--border-subtle);z-index:10;flex-shrink:0;position:relative}.drawer-breadcrumb-bar{align-items:center;height:32px;margin-bottom:.85rem;padding-right:2.5rem;display:flex}.drawer-back-btn{background:var(--bg-body);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--brand-blue-main);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:.45rem;padding:.4rem .75rem;font-family:inherit;font-size:.85rem;font-weight:600;display:inline-flex}.drawer-back-btn svg{width:15px;height:15px}.drawer-back-btn:hover{background:var(--bg-card-hover);border-color:var(--brand-blue-main);transform:translate(-2px)}.drawer-title{margin-top:0;margin-bottom:.75rem;padding-right:2.5rem;font-size:1.5rem;font-weight:700;line-height:1.3}.drawer-badges{flex-direction:column;gap:.5rem;margin-bottom:.25rem;display:flex}.badge-row{flex-wrap:wrap;align-items:center;gap:.45rem;display:flex}.drawer-body{overscroll-behavior:contain;-webkit-overflow-scrolling:touch;flex:1;padding:1.5rem 2rem;overflow-y:auto;-webkit-mask-image:linear-gradient(#0000 0,#000 24px calc(100% - 24px),#0000 100%);mask-image:linear-gradient(#0000 0,#000 24px calc(100% - 24px),#0000 100%)}.drawer-section{margin-bottom:1.75rem}.drawer-section h3{color:var(--text-white);align-items:center;gap:.45rem;margin-bottom:.6rem;font-size:.975rem;font-weight:700;display:flex}.drawer-section h3 svg{width:17px;height:17px;color:var(--brand-blue-main)}.skills-tags{flex-wrap:wrap;gap:.45rem;display:flex}.skill-tag{background:var(--bg-body);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);padding:.3rem .75rem;font-size:.85rem}.drawer-footer{padding:1.25rem 1.5rem;padding-bottom:max(1.25rem, calc(1.25rem + env(safe-area-inset-bottom,0px)));background:var(--bg-card);border-top:1px solid var(--border-subtle);z-index:10;flex-shrink:0;align-items:stretch;gap:.75rem;margin-top:0;display:flex;position:relative}.drawer-footer .tw-btn{text-align:center;flex:1;justify-content:center;align-items:center;height:auto;min-height:52px;padding:.6rem .85rem;font-size:.875rem;line-height:1.3;display:inline-flex}.tw-footer{background:var(--bg-body);border-top:1px solid var(--border-subtle);z-index:40;padding:20px;position:relative}.tw-footer-inner{text-align:center;justify-content:center;align-items:center;gap:1rem;display:flex}.footer-logo{letter-spacing:.05em;color:var(--text-white);font-size:.95rem;font-weight:700;line-height:1.2}.footer-brand p{color:var(--text-muted);font-size:.8rem}.footer-nav{gap:1.5rem;display:flex}.footer-nav a{color:var(--text-secondary);font-size:.85rem;text-decoration:none}.footer-nav a:hover{color:var(--text-white)}.footer-copy{color:var(--text-muted);text-align:center;width:100%;font-size:.8rem}.footer-copy a,.footer-copy a:visited,.footer-copy a:hover,.footer-copy a:active{color:var(--text-white);text-decoration:underline}@media (min-width:768px){.roadmap-app-shell{flex-direction:column;min-height:100vh;display:flex}.roadmap-app-shell .tw-main-content{flex:1;width:100%}.roadmap-app-shell .tw-canvas-card{box-shadow:none;background:0 0;border:none;min-height:auto;margin:1.5rem 0 4rem;padding:0;overflow:visible}.roadmap-app-shell .mindmap-viewport{width:100%;height:auto;position:relative;overflow:visible}.roadmap-app-shell .tw-footer{z-index:40;margin-top:auto;position:relative}}@media (max-width:1200px){.category-section-group{flex:260px;max-width:300px}}.mobile-progress-wrapper{display:none}@media (max-width:768px){.tw-hero-section{padding:1.75rem 0 0}.tw-hero-header{margin-bottom:.75rem}.tw-controls-card{flex-direction:column;align-items:stretch;gap:.75rem}.custom-dropdown-container,.level-dropdown-container,.type-dropdown-container,.sort-dropdown-container{width:100%}.tw-hero-title{font-size:2rem}.tw-nav-links{display:none}.category-section-group{flex:100%;max-width:100%}.custom-dropdown-menu,.level-dropdown-menu,.type-dropdown-menu,.sort-dropdown-menu{width:100%;min-width:unset;left:0;right:0}.tw-canvas-card{margin:.5rem 0 2.5rem;padding:.5rem 1rem 3rem}.canvas-header-row{display:none}.mobile-progress-wrapper{justify-content:center;align-items:center;width:100%;margin-bottom:1.25rem;padding:0 .5rem;display:flex}.mobile-progress-wrapper .circular-progress-badge{align-items:center!important;gap:.75rem!important;width:auto!important;height:auto!important;display:flex!important}.mobile-progress-wrapper .circle-svg{flex-shrink:0;position:relative}.mobile-progress-wrapper .circle-inner{width:72px;height:72px;position:absolute;top:0;left:0}.mobile-progress-wrapper .custom-progress-tooltip{opacity:1!important;visibility:visible!important;position:relative!important;top:auto!important;left:auto!important;right:auto!important;transform:none!important}.mobile-progress-wrapper .custom-progress-tooltip:before{border:5px solid #0000!important;border-left:none!important;border-right-color:#fff!important;top:50%!important;left:-5px!important;right:auto!important;transform:translateY(-50%)!important}[data-theme=dark] .mobile-progress-wrapper .custom-progress-tooltip:before{border-right-color:#18181ff2!important}.tree-root-row{justify-content:center;align-items:center;width:100%;margin-bottom:2rem;display:flex}.tree-root-spacer,.tree-root-right{display:none}.tree-root-card{width:fit-content;max-width:100%;margin:0 auto}}.drawer-thumbnail-container{border-radius:var(--radius-md);border:1px solid var(--border-subtle);background:var(--bg-card-hover);aspect-ratio:16/9;width:100%;margin-bottom:1.25rem;position:relative;overflow:hidden;box-shadow:0 4px 16px #0000000f}.drawer-thumbnail-skeleton{z-index:1;border-radius:0;width:100%;height:100%;position:absolute;inset:0}.drawer-thumbnail-img{object-fit:cover;z-index:2;width:100%;height:100%;transition:transform .35s,opacity .3s;display:block;position:relative}.drawer-thumbnail-img.loading{opacity:0}.drawer-thumbnail-img.loaded{opacity:1}.drawer-thumbnail-container:hover .drawer-thumbnail-img.loaded{transform:scale(1.03)}.mobile-menu-toggle{display:none}.tw-mobile-backdrop{background:var(--backdrop-overlay-bg);-webkit-backdrop-filter:blur(8px);z-index:9998;width:100vw;height:100vh;animation:.2s cubic-bezier(.16,1,.3,1) fadeInBackdrop;position:fixed;top:0;left:0}@keyframes fadeInBackdrop{0%{opacity:0}to{opacity:1}}.tw-mobile-menu{background:var(--header-bg-solid);border-bottom:1px solid var(--header-border-solid);z-index:1000;padding:1.25rem 1.5rem 1.75rem;animation:.2s cubic-bezier(.16,1,.3,1) mobileMenuSlide;position:absolute;top:100%;left:0;right:0;box-shadow:0 16px 36px #0000001f}@keyframes mobileMenuSlide{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}.tw-mobile-menu-inner{flex-direction:column;gap:.35rem;max-width:1380px;margin:0 auto;display:flex}.tw-mobile-text-link{color:var(--text-white);background:0 0;justify-content:space-between;align-items:center;padding:.75rem 0;font-size:1rem;font-weight:700;text-decoration:none;transition:color .15s;display:flex}.tw-mobile-text-link:hover,.tw-mobile-text-link.active{color:var(--brand-blue-main);background:0 0;font-weight:800}.tw-mobile-footer-actions{border-top:1px solid var(--border-subtle);flex-direction:column;align-items:center;margin-top:1rem;padding-top:1rem;display:flex}.tw-mobile-main-site-btn{border-radius:var(--radius-md);width:100%;padding:.75rem 1.25rem;font-size:.925rem;font-weight:600;box-shadow:0 4px 14px #2563eb40}@media (max-width:768px){.tw-container{padding:0 1rem}.tw-nav-links.desktop-only,.desktop-only-btn{display:none!important}.mobile-menu-toggle{display:inline-flex!important}.tw-brand-divider,.tw-brand-tag{font-size:.85rem;display:inline}.tw-logo{font-size:1.4rem;font-weight:900}.tw-header-actions{gap:.5rem}}@media (max-width:480px){.tw-brand-divider,.tw-brand-tag{display:none}.tw-logo{font-size:1.3rem;font-weight:900}}.cl-stats{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);flex-wrap:nowrap;justify-content:center;align-items:center;gap:1.25rem;width:fit-content;margin:1.5rem auto 1.75rem;padding:1rem 1.5rem;display:flex}.cl-stat{align-items:center;gap:.4rem;display:flex}.cl-snum{color:var(--text-white);font-size:1.1rem;font-weight:700}.cl-slbl{color:var(--text-muted);font-size:.8rem}.cl-sdiv{background:var(--border-subtle);width:1px;height:20px}.cl-page-wrap{max-width:1400px;margin:0 auto;padding:2rem 2.5rem 4rem}.cl-result-bar{color:var(--text-muted);align-items:center;gap:1rem;margin-bottom:1.5rem;font-size:.875rem;display:flex}.cl-reset{color:var(--text-muted);background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-md);cursor:pointer;transition:all var(--transition-fast);align-items:center;gap:.3rem;padding:.25rem .65rem;font-size:.8rem;font-weight:600;display:inline-flex}.cl-reset:hover{color:var(--text-white);border-color:var(--border-hover)}.cl-empty{text-align:center;color:var(--text-muted);padding:4rem 2rem}.cl-empty h3{color:var(--text-secondary);margin:.75rem 0 .5rem;font-size:1.2rem}.cl-empty p{font-size:.9rem}.cl-grid{grid-template-columns:repeat(4,1fr);gap:1.25rem;display:grid}.cl-card{background:var(--bg-card);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);cursor:pointer;flex-direction:column;transition:transform .22s cubic-bezier(.16,1,.3,1),box-shadow .22s,border-color .2s;display:flex;overflow:hidden}.cl-card:hover{border-color:var(--border-hover);transform:translateY(-3px);box-shadow:0 10px 28px #0000001a}.cl-card.done{background:color-mix(in srgb, #10b981 4%, var(--bg-card));opacity:.9;border-color:#10b981;border-left-style:solid;border-left-width:4px;box-shadow:0 4px 16px #10b9811f}.cl-card.done:hover{opacity:1;border-color:#10b981;border-left-style:solid;border-left-width:4px;box-shadow:0 8px 24px #10b98138}.cl-card.done .check-btn{color:#10b981}.cl-thumb-wrap{aspect-ratio:16/9;background:var(--bg-card-hover);position:relative;overflow:hidden}.cl-thumb-img{object-fit:cover;opacity:0;width:100%;height:100%;transition:opacity .3s,transform .35s}.cl-thumb-img.loaded{opacity:1}.cl-card:hover .cl-thumb-img{transform:scale(1.04)}.cl-card-body{flex-direction:column;flex:1;gap:.5rem;padding:1rem;display:flex}.cl-card-top{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.cl-lvl-badge{background:var(--bg-card-hover);border:1px solid var(--border-subtle);border-radius:var(--radius-sm);color:var(--text-secondary);align-items:center;padding:.2rem .55rem;font-size:.7rem;font-weight:600;display:inline-flex}.cl-card-title{color:var(--text-white);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.9rem;font-weight:700;line-height:1.35;display:-webkit-box;overflow:hidden}.cl-card-desc{color:var(--text-muted);-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.78rem;line-height:1.5;display:-webkit-box;overflow:hidden}.cl-card-cats{flex-wrap:wrap;gap:.35rem;margin-top:.25rem;display:flex}.cl-cat-chip{border-radius:var(--radius-sm);background:color-mix(in srgb, var(--cc,var(--brand-blue-main)) 12%, transparent);color:var(--cc,var(--brand-blue-main));border:1px solid color-mix(in srgb, var(--cc,var(--brand-blue-main)) 22%, transparent);align-items:center;gap:.25rem;padding:.18rem .5rem;font-size:.68rem;font-weight:600;display:inline-flex;text-decoration:none!important}.cl-card-foot{border-top:1px solid var(--border-subtle);justify-content:space-between;align-items:center;margin-top:auto;padding-top:.5rem;display:flex}.cl-dur{color:var(--text-muted);font-size:.75rem}@media (max-width:1300px){.cl-grid{grid-template-columns:repeat(3,1fr)}}@media (max-width:900px){.cl-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.cl-stats{grid-template-columns:repeat(2,1fr);gap:.85rem .5rem;width:100%;max-width:420px;padding:.85rem 1rem;display:grid}.cl-stat{justify-content:center}.cl-sdiv{display:none}.cl-grid{grid-template-columns:1fr}.cl-page-wrap{padding:1.5rem 1rem 3rem}}.framer-194pl6u-container{transition:transform .4s cubic-bezier(.34,1.56,.64,1)}.framer-194pl6u-container:hover{transform:scale(1.15)!important}.framer-194pl6u-container a{transition:background-color .3s,box-shadow .3s,transform .3s}.framer-194pl6u-container:hover a{background-color:#24d467bf!important;box-shadow:0 6px 18px #0003,0 0 12px #24d46759!important}.framer-194pl6u-container:active{transform:scale(.95)!important}@media (max-width:600px){.drawer-header{padding:1.25rem 1.25rem 1rem;padding-top:max(1.25rem, calc(1.25rem + env(safe-area-inset-top,0px)))}.drawer-close{top:max(1rem, calc(1rem + env(safe-area-inset-top,0px)));right:1rem}.drawer-body{padding:1.25rem}.drawer-footer{padding:.85rem 1rem;padding-bottom:max(.85rem, calc(.85rem + env(safe-area-inset-bottom,0px)))}.btn-label-desktop{display:none}.drawer-footer .drawer-check-btn,.drawer-footer .drawer-wa-btn{flex:0 0 52px;justify-content:center;width:52px;padding:0}}
