pre code.hljs{padding:1em;display:block;overflow-x:auto}code.hljs{padding:3px 5px}.hljs{color:#c9d1d9;background:#0d1117}.hljs-doctag,.hljs-keyword,.hljs-meta .hljs-keyword,.hljs-template-tag,.hljs-template-variable,.hljs-type,.hljs-variable.language_{color:#ff7b72}.hljs-title,.hljs-title.class_,.hljs-title.class_.inherited__,.hljs-title.function_{color:#d2a8ff}.hljs-attr,.hljs-attribute,.hljs-literal,.hljs-meta,.hljs-number,.hljs-operator,.hljs-variable,.hljs-selector-attr,.hljs-selector-class,.hljs-selector-id{color:#79c0ff}.hljs-regexp,.hljs-string,.hljs-meta .hljs-string{color:#a5d6ff}.hljs-built_in,.hljs-symbol{color:#ffa657}.hljs-comment,.hljs-code,.hljs-formula{color:#8b949e}.hljs-name,.hljs-quote,.hljs-selector-tag,.hljs-selector-pseudo{color:#7ee787}.hljs-subst{color:#c9d1d9}.hljs-section{color:#1f6feb;font-weight:700}.hljs-bullet{color:#f2cc60}.hljs-emphasis{color:#c9d1d9;font-style:italic}.hljs-strong{color:#c9d1d9;font-weight:700}.hljs-addition{color:#aff5b4;background-color:#033a16}.hljs-deletion{color:#ffdcd7;background-color:#67060c}:root{--vt-c-green:#42b883;--vt-c-green-light:#42d392;--vt-c-green-dark:#33a06f;--vt-c-green-darker:#155f3e;--vt-c-green-dimm:#42b8831a;--vt-c-text-1:#213547;--vt-c-text-2:#476582;--vt-c-text-3:#90a4ae;--vt-c-bg:#fff;--vt-c-bg-soft:#f9f9f9;--vt-c-bg-mute:#f1f1f1;--vt-c-divider:#e2e2e3;--vt-c-divider-light:#f0f0f0;--vt-c-code-bg:#292d3e;--vt-c-nav-bg:#ffffffd9;--vt-c-brand:var(--vt-c-green);--vt-c-brand-light:var(--vt-c-green-light);--vt-c-brand-highlight:var(--vt-c-green-dimm);--vt-font-family:Inter, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen, Ubuntu, Cantarell, "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--vt-font-family-mono:"JetBrains Mono", "Fira Code", Menlo, Monaco, Consolas, "Courier New", monospace}html.dark{--vt-c-text-1:#dde4ed;--vt-c-text-2:#9aacbe;--vt-c-text-3:#546e7a;--vt-c-bg:#1b1b1f;--vt-c-bg-soft:#242428;--vt-c-bg-mute:#2e2e32;--vt-c-divider:#3c3c43;--vt-c-divider-light:#2e2e32;--vt-c-code-bg:#161618;--vt-c-nav-bg:#1b1b1fe6;--vt-c-green-darker:#42d392;--vt-c-green-dimm:#42b8831f}html.dark body{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box;margin:0;padding:0}body{font-family:var(--vt-font-family);color:var(--vt-c-text-1);background:var(--vt-c-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:15px;line-height:1.7}#app{flex-direction:column;min-height:100vh;display:flex}.top-nav{background:var(--vt-c-bg);border-bottom:1px solid var(--vt-c-divider);z-index:200;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:var(--vt-c-nav-bg);align-items:center;height:64px;padding:0 24px;display:flex;position:fixed;top:0;left:0;right:0}.nav-brand{color:var(--vt-c-text-1);flex-shrink:0;align-items:center;gap:10px;margin-right:32px;font-size:18px;font-weight:600;text-decoration:none;display:flex}.nav-brand .logo{background:var(--vt-c-green);color:#fff;border-radius:6px;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;font-weight:800;display:flex}.nav-links{flex:1;gap:4px;display:flex}.nav-links a{color:var(--vt-c-text-2);border-radius:6px;padding:6px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:color .2s,background .2s}.nav-links a:hover{color:var(--vt-c-green);background:var(--vt-c-brand-highlight)}.nav-links a.router-link-active{color:var(--vt-c-green);font-weight:600}.mobile-menu-btn{cursor:pointer;color:var(--vt-c-text-1);background:0 0;border:none;padding:4px;font-size:22px;display:none}.app-body{min-height:100vh;padding-top:64px;display:flex}.sidebar{border-right:1px solid var(--vt-c-divider);background:var(--vt-c-bg);z-index:100;width:272px;padding:16px 0 32px;position:fixed;top:64px;bottom:0;left:0;overflow-y:auto}.sidebar::-webkit-scrollbar{width:4px}.sidebar::-webkit-scrollbar-thumb{background:var(--vt-c-divider);border-radius:4px}.nav-section{margin-bottom:4px}.nav-section-title{text-transform:uppercase;letter-spacing:.8px;color:var(--vt-c-text-1);padding:8px 24px 4px;font-size:12px;font-weight:700}.nav-group-title{text-transform:uppercase;letter-spacing:1px;color:var(--vt-c-text-3);padding:20px 24px 6px;font-size:11px;font-weight:700}.nav-section a{color:var(--vt-c-text-2);border-left:2px solid #0000;padding:4px 24px 4px 32px;font-size:14px;line-height:28px;text-decoration:none;transition:color .15s;display:block}.nav-section a:hover{color:var(--vt-c-green)}.nav-section a.router-link-active{color:var(--vt-c-green);border-left-color:var(--vt-c-green);background:0 0;font-weight:600}.toc-group{border-left:2px solid var(--vt-c-divider);margin:0 16px 6px 46px}.toc-sublink{color:var(--vt-c-text-3);cursor:pointer;white-space:nowrap;text-overflow:ellipsis;padding:2px 8px 2px 12px;font-size:12.5px;line-height:24px;text-decoration:none;transition:color .15s;display:block;overflow:hidden}.toc-sublink:hover{color:var(--vt-c-green)}.main-content{flex:1;min-width:0;margin-left:272px}.content-wrapper{max-width:768px;margin:0 auto;padding:48px 32px 96px}.content-wrapper h1{color:var(--vt-c-text-1);letter-spacing:-.4px;margin-bottom:0;font-size:32px;font-weight:700;line-height:40px}.content-wrapper h2{color:var(--vt-c-text-1);border-top:1px solid var(--vt-c-divider);margin:48px 0 16px;padding-top:24px;font-size:24px;font-weight:600}.content-wrapper h2:first-of-type{border-top:none;padding-top:0}.content-wrapper h3{color:var(--vt-c-text-1);margin:32px 0 8px;font-size:18px;font-weight:600}.content-wrapper h4{color:var(--vt-c-text-2);margin:24px 0 8px;font-size:16px;font-weight:600}.page-subtitle{color:var(--vt-c-text-2);border-bottom:1px solid var(--vt-c-divider);margin-bottom:32px;padding-bottom:24px;font-size:16px}.content-wrapper p{color:var(--vt-c-text-2);margin-bottom:16px}.content-wrapper ul,.content-wrapper ol{color:var(--vt-c-text-2);margin-bottom:16px;padding-left:20px}.content-wrapper li{margin-bottom:4px}.content-wrapper strong{color:var(--vt-c-text-1);font-weight:600}.code-block{background:var(--vt-c-code-bg);border-radius:8px;margin:16px 0 24px;overflow:hidden}.code-header{color:#a6accd;background:#1e2235;justify-content:space-between;align-items:center;padding:6px 16px;font-size:12px;display:flex}.code-header .filename{font-family:var(--vt-font-family-mono)}.code-header .lang-tag{color:var(--vt-c-green-light);background:#42b88333;border-radius:4px;padding:2px 8px;font-size:11px;font-weight:600}.code-block pre{margin:0;padding:16px 20px;overflow-x:auto}.code-block code{font-family:var(--vt-font-family-mono);color:#a6accd;background:0 0;padding:0;font-size:13px;line-height:1.7;display:block}.content-wrapper p code,.content-wrapper li code,.content-wrapper td code{font-family:var(--vt-font-family-mono);background:var(--vt-c-brand-highlight);color:var(--vt-c-green-darker);border-radius:4px;padding:2px 6px;font-size:.85em;font-weight:500}.info-box{border-left:4px solid;border-radius:8px;margin:20px 0;padding:16px 20px}.info-box.tip{border-color:var(--vt-c-green);background:#42b88314}.info-box.warning{background:#eab30814;border-color:#eab308}.info-box.info{background:#3b82f614;border-color:#3b82f6}.info-box.purple{background:#8b5cf614;border-color:#8b5cf6}.info-box-title{color:var(--vt-c-text-1);margin-bottom:4px;font-size:14px;font-weight:700}.info-box p{margin:0;font-size:14px}.arch-diagram{background:var(--vt-c-bg-soft);border:1px solid var(--vt-c-divider);text-align:center;border-radius:8px;margin:24px 0;padding:32px}.arch-layer{border:2px solid var(--vt-c-divider);background:#fff;border-radius:8px;max-width:500px;margin:8px auto;padding:14px 20px;font-size:14px;font-weight:600;transition:all .2s}.arch-layer:hover{border-color:var(--vt-c-green);transform:scale(1.02)}.arch-arrow{color:var(--vt-c-text-3);margin:4px 0;font-size:18px}.arch-layer.domain{border-color:var(--vt-c-green);color:var(--vt-c-green-darker);background:#42b88314}.arch-layer.application{color:#1e40af;background:#3b82f614;border-color:#3b82f6}.arch-layer.infrastructure{color:#92400e;background:#eab30814;border-color:#eab308}.arch-layer.presentation{color:#5b21b6;background:#8b5cf614;border-color:#8b5cf6}.concept-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:20px 0;display:grid}.concept-card{background:var(--vt-c-bg);border:1px solid var(--vt-c-divider);text-align:left;border-radius:8px;padding:16px;transition:all .2s}.concept-card:hover{border-color:var(--vt-c-green);box-shadow:0 2px 12px #0000000a}.concept-card .icon{margin-bottom:8px;font-size:24px}.concept-card h4{color:var(--vt-c-text-1);margin:0 0 4px;font-size:14px}.concept-card p{color:var(--vt-c-text-2);margin:0;font-size:13px;line-height:1.5}.content-wrapper table{border-collapse:collapse;width:100%;margin:16px 0 24px;font-size:14px}.content-wrapper th,.content-wrapper td{text-align:left;border-bottom:1px solid var(--vt-c-divider);padding:8px 12px}.content-wrapper th{background:var(--vt-c-bg-soft);color:var(--vt-c-text-1);font-size:13px;font-weight:600}.content-wrapper tr:hover td{background:var(--vt-c-bg-soft)}.page-nav{border-top:1px solid var(--vt-c-divider);justify-content:space-between;gap:16px;margin-top:48px;padding-top:16px;display:flex}.page-nav a{color:var(--vt-c-green);border:1px solid var(--vt-c-divider);border-radius:8px;align-items:center;gap:6px;padding:8px 14px;font-size:14px;font-weight:500;text-decoration:none;transition:border-color .2s;display:flex}.page-nav a:hover{border-color:var(--vt-c-green)}.home-hero{text-align:center;max-width:800px;margin:0 auto;padding:120px 32px 32px}.home-hero h1{letter-spacing:-1.5px;color:var(--vt-c-text-1);margin-bottom:16px;font-size:48px;font-weight:700;line-height:1.15}.home-hero .gradient-text{background:linear-gradient(135deg, var(--vt-c-green), var(--vt-c-green-light));-webkit-text-fill-color:transparent;-webkit-background-clip:text;background-clip:text}.home-hero p{color:var(--vt-c-text-2);max-width:560px;margin:0 auto;font-size:18px;line-height:1.6}.home-cards{grid-template-columns:1fr 1fr;gap:20px;max-width:860px;margin:48px auto;padding:0 32px;display:grid}.home-card{background:var(--vt-c-bg);border:1px solid var(--vt-c-divider);text-align:left;color:inherit;border-radius:12px;padding:28px;text-decoration:none;transition:all .25s}.home-card:hover{border-color:var(--vt-c-green);box-shadow:0 4px 20px #42b88314}.home-card .card-icon{margin-bottom:12px;font-size:36px}.home-card h3{color:var(--vt-c-text-1);margin-bottom:8px;font-size:20px;font-weight:600}.home-card p{color:var(--vt-c-text-2);font-size:14px;line-height:1.6}.home-card .topics{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.home-card .topic-tag{background:var(--vt-c-brand-highlight);color:var(--vt-c-green-dark);border-radius:10px;padding:2px 10px;font-size:12px;font-weight:500}.home-card .topic-tag.ai{color:#6d28d9;background:#8b5cf61a}.home-card .topic-tag.ef{color:#1d4ed8;background:#3b82f61a}.table-container{-webkit-overflow-scrolling:touch;margin:16px 0 24px;overflow-x:auto}.table-container table{margin:0}.sidebar-overlay,.mobile-nav-dropdown,.mobile-nav-overlay,.sidebar-toggle-btn{display:none}@media (width<=960px){.top-nav{gap:8px;padding:0 16px}.nav-brand{flex:1;min-width:0;font-size:16px}.dark-toggle{margin-left:auto}.dark-toggle .dark-toggle-label{display:none!important}.mobile-menu-btn{flex-shrink:0;display:block}.nav-links{display:none}.mobile-nav-dropdown{background:var(--vt-c-bg);border-bottom:1px solid var(--vt-c-divider);z-index:400;opacity:0;pointer-events:none;flex-direction:column;padding:8px 0;transition:transform .25s,opacity .25s;display:flex;position:fixed;top:64px;left:0;right:0;transform:translateY(-100%)}.mobile-nav-dropdown.open{opacity:1;pointer-events:auto;transform:translateY(0)}.mobile-nav-dropdown a{color:var(--vt-c-text-2);padding:12px 24px;font-size:15px;font-weight:500;text-decoration:none;transition:color .15s,background .15s;display:block}.mobile-nav-dropdown a:hover,.mobile-nav-dropdown a.router-link-active{color:var(--vt-c-green);background:var(--vt-c-brand-highlight)}.mobile-nav-overlay.open{z-index:350;background:#0000004d;display:block;position:fixed;inset:0}.sidebar{z-index:300;transition:transform .25s;transform:translate(-100%)}.sidebar.open{transform:translate(0)}.sidebar-overlay.open{z-index:250;background:#0000004d;display:block;position:fixed;inset:0}.sidebar-toggle-btn{background:var(--vt-c-green);color:#fff;cursor:pointer;z-index:200;border:none;border-radius:50%;justify-content:center;align-items:center;width:48px;height:48px;font-size:20px;display:flex;position:fixed;bottom:20px;left:20px;box-shadow:0 2px 12px #0003}.main-content{margin-left:0}.content-wrapper{padding:32px 20px 64px}.content-wrapper table{-webkit-overflow-scrolling:touch;white-space:nowrap;display:block;overflow-x:auto}.content-wrapper th,.content-wrapper td{min-width:100px}.home-hero{padding:88px 20px 24px}.home-hero h1{font-size:32px}.home-cards{grid-template-columns:1fr;padding:0 20px}}@media (width<=768px){.home-cards{grid-template-columns:1fr}}html.dark .concept-card,html.dark .home-card{background:var(--vt-c-bg-soft)}html.dark .arch-layer{background:var(--vt-c-bg-soft);border-color:var(--vt-c-divider);color:var(--vt-c-text-1)}html.dark .arch-layer.domain{border-color:var(--vt-c-green);color:var(--vt-c-green-light);background:#42b8831a}html.dark .arch-layer.application{color:#93c5fd;background:#3b82f61a;border-color:#3b82f6}html.dark .arch-layer.infrastructure{color:#fde68a;background:#eab30814;border-color:#eab308}html.dark .arch-layer.presentation{color:#c4b5fd;background:#8b5cf61a;border-color:#8b5cf6}html.dark .info-box.tip{background:#42b8831a}html.dark .info-box.warning{background:#eab3081a}html.dark .info-box.info{background:#3b82f61a}html.dark .info-box.purple{background:#8b5cf61a}html.dark .code-header{background:#0e0e10}html.dark .content-wrapper th{background:var(--vt-c-bg-mute)}html.dark .arch-diagram{background:var(--vt-c-bg-soft);border-color:var(--vt-c-divider)}.dark-toggle{flex-shrink:0;align-items:center;gap:8px;margin-left:12px;display:flex}.dark-toggle-label{cursor:pointer;-webkit-user-select:none;user-select:none;font-size:16px;line-height:1}.toggle-track{background:var(--vt-c-divider);cursor:pointer;border:none;border-radius:12px;outline:none;flex-shrink:0;width:44px;height:24px;padding:0;transition:background .25s;position:relative}.toggle-track:focus-visible{box-shadow:0 0 0 2px var(--vt-c-green)}.toggle-track.active{background:var(--vt-c-green)}.toggle-thumb{pointer-events:none;background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .25s cubic-bezier(.4,0,.2,1);position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.toggle-track.active .toggle-thumb{transform:translate(20px)}
