@import url("https://fonts.googleapis.com/css2?family=DotGothic16&family=VT323&display=swap");:root{--neko-black:#000;--neko-dark:#111;--neko-white:#fff;--neko-soul:#ff0;--neko-heart:#e60000;--neko-muted:#888;--neko-link:#0ff;--state-idle:#2828b4;--state-listen:#008cff;--state-record:#e61e1e;--state-think:#ffc800;--state-speak:#00c83c;--surface-1:#0a0a0a;--surface-2:#141414;--border-soft:#2a2a2a;--soul-glow:0 0 12px rgba(255,255,0,.6);--cyan-glow:0 0 8px rgba(0,255,255,.5);--black:var(--neko-black);--dark:var(--neko-dark);--surface:var(--surface-1);--border:var(--neko-white);--dim:var(--neko-muted);--text:var(--neko-white);--muted:#b8b8b8;--yellow:var(--neko-soul);--red:var(--neko-heart);--green:#0c0;--cyan:var(--neko-link);--blue:var(--state-idle);--orange:#ff8c00;--font-pixel:"DotGothic16","Courier New",monospace;--font-mono:"VT323","DotGothic16",monospace;--text-h1:22px;--text-h2:16px;--text-body:14px;--text-caption:11px;--text-code:13px;--nav-width:188px;--header-h:52px;--ease-breath:cubic-bezier(0.4,0,0.6,1);--ease-out-expo:cubic-bezier(0.16,1,0.3,1);--dur-breath:4s;--dur-pulse:1.4s;--dur-blink:1s;--dur-fast:150ms;--dur-typewriter:30ms}*,:after,:before{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{background:var(--black);color:var(--text);font-family:var(--font-pixel);font-size:var(--text-body);line-height:1.7;min-height:100vh;-webkit-font-smoothing:antialiased}@keyframes breathe{0%,to{opacity:1}50%{opacity:.82}}@keyframes pulse-heart{0%{transform:scale(1)}30%{transform:scale(1.25)}60%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes blink-cursor{0%,50%{opacity:1}50.01%,to{opacity:0}}@keyframes glow-eye{0%,to{opacity:1}50%{opacity:.55}}@keyframes twinkle{0%,to{opacity:1}50%{opacity:.3}}@keyframes toast-slide-in{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.breathe{animation:breathe var(--dur-breath) var(--ease-breath) infinite}.pulse-heart{transform-origin:center;animation:pulse-heart var(--dur-pulse) ease infinite}.glow-eye{animation:glow-eye 2.5s ease-in-out infinite}.twinkle{animation:twinkle 3s ease-in-out infinite}.fade-in{animation:fade-in .2s ease-out}.neko-cursor{display:inline-block;margin-left:4px;color:var(--neko-heart);animation:blink-cursor var(--dur-blink) step-start infinite}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}.top-header{position:-webkit-sticky;position:sticky;top:0;z-index:100;height:var(--header-h);border-bottom:3px solid var(--border);padding:0 20px;gap:14px;background:var(--black);flex-shrink:0}.top-header,.top-header .logo{display:flex;align-items:center}.top-header .logo{gap:10px;font-family:var(--font-pixel);font-size:var(--text-h2);color:var(--text);letter-spacing:.04em}.top-header .logo-mark{width:40px;height:40px;display:block}.top-header .logo-text{line-height:1}.top-header .logo-heart{color:var(--red);margin-right:10px}.top-header .spacer{flex:1 1}.shell{display:flex;height:calc(100vh - var(--header-h))}.sidebar{width:var(--nav-width);min-height:100%;border-right:3px solid var(--border);padding:12px 0;overflow-y:auto;flex-shrink:0;background:var(--black)}.content-area{flex:1 1;overflow-y:auto;padding:24px 32px}.nav-group-label{font-size:var(--text-caption);color:var(--dim);padding:14px 14px 5px;letter-spacing:.08em;text-transform:uppercase}.nav-group-label,.nav-item{font-family:var(--font-pixel)}.nav-item{display:block;padding:8px 14px;font-size:var(--text-body);color:var(--muted);text-decoration:none;border-bottom:1px solid var(--border-soft);transition:background var(--dur-fast),color var(--dur-fast)}.nav-item:hover{color:var(--text);background:hsla(0,0%,100%,.05);text-decoration:none}.nav-item-active{color:var(--yellow)!important;background:rgba(255,255,0,.06)!important;border-left:3px solid var(--yellow);padding-left:11px}.nav-prefix{display:inline-block;width:14px;margin-right:4px;color:var(--yellow);text-align:center}.nav-group-toggle{display:block;width:100%;text-align:left;border:none!important;background:transparent!important;color:var(--dim)!important;font-family:var(--font-pixel)!important;font-size:var(--text-caption)!important;padding:14px 14px 5px!important;letter-spacing:.08em;cursor:pointer;text-transform:uppercase;line-height:1.4}.nav-group-toggle:hover{background:transparent!important;color:var(--text)!important}.nav-group-toggle .nav-prefix{color:var(--dim)}.nav-item-sub{font-size:calc(var(--text-body) - 1px);padding-left:22px}.hamburger{display:none;border:2px solid var(--text);background:transparent;color:var(--text);font-family:var(--font-pixel);font-size:22px;line-height:1;padding:6px 12px;cursor:pointer}.hamburger:hover{background:var(--text);color:var(--black)}.status-badge{display:flex;align-items:center;gap:6px;border:2px solid var(--border);padding:4px 10px;font-family:var(--font-pixel);font-size:var(--text-caption)}.sdot{width:7px;height:7px;border-radius:50%;flex-shrink:0}.d-idle{background:var(--blue);box-shadow:0 0 5px var(--blue)}.d-rec{background:var(--red);box-shadow:0 0 5px var(--red)}.d-think{background:var(--yellow);box-shadow:0 0 5px var(--yellow)}.d-speak{background:var(--green);box-shadow:0 0 5px var(--green)}h1{font-size:var(--text-h1);line-height:1.5;margin-bottom:14px}h1,h2{font-family:var(--font-pixel)}h2{font-size:var(--text-h2);line-height:1.6;margin:24px 0 10px;color:var(--text)}h3{font-family:var(--font-pixel);font-size:var(--text-caption);text-transform:uppercase;letter-spacing:.1em;margin:18px 0 8px}h3,p{color:var(--muted)}p{margin-bottom:10px}p.lead{color:var(--text)}a{color:var(--cyan);text-decoration:none}a:hover{color:var(--yellow);text-decoration:underline}.dialogue,.neko-speak{border:3px solid var(--border);background:var(--neko-black);padding:18px 22px;font-family:var(--font-pixel);font-size:var(--text-body);line-height:1.7;position:relative}.card{border:2px solid var(--border);background:var(--black);padding:16px 20px;margin-bottom:14px}.card-dim{border:1px solid var(--border-soft);background:var(--surface-2);padding:12px 16px;margin-bottom:10px}.card:hover{border-color:var(--yellow)}.stats-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));grid-gap:8px;gap:8px;margin:14px 0}.stat-box{border:2px solid var(--border);background:var(--black);padding:12px 10px;text-align:center}.stat-box .val{font-family:var(--font-mono);font-size:24px;color:var(--yellow);display:block;margin-bottom:6px;line-height:1.2}.stat-box .lbl{font-family:var(--font-pixel);font-size:var(--text-caption);color:var(--muted)}.tool-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:10px;gap:10px;margin:14px 0}.tool-card{border:2px solid var(--border);background:var(--black);padding:16px;transition:border-color var(--dur-fast)}.tool-card:hover{border-color:var(--yellow)}.tool-sig{font-family:var(--font-mono);font-size:var(--text-code);color:var(--cyan);margin-bottom:8px;line-height:1.5}.tool-desc{font-family:var(--font-pixel);font-size:var(--text-body);color:var(--muted);margin-bottom:10px}.tool-args{display:flex;flex-wrap:wrap;gap:5px}.arg-tag{font-family:var(--font-mono);font-size:var(--text-code);border:1px solid var(--border-soft);padding:2px 8px;color:var(--muted)}.svc-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));grid-gap:10px;gap:10px;margin:14px 0}.svc-card{border:2px solid var(--border);background:var(--black);padding:14px}.svc-name{font-family:var(--font-pixel);font-size:var(--text-body);color:var(--text);margin-bottom:6px;line-height:1.5}.svc-port{font-family:var(--font-mono);font-size:var(--text-code);color:var(--cyan);margin-bottom:8px}.svc-desc{font-family:var(--font-pixel);font-size:var(--text-caption);color:var(--muted)}.tbl-wrap{overflow-x:auto;border:2px solid var(--border);margin:14px 0}table{width:100%;border-collapse:collapse}thead tr{background:var(--surface-2)}th{font-size:var(--text-caption);padding:10px 14px;text-align:left;border-bottom:2px solid var(--border);color:var(--yellow);letter-spacing:.06em;white-space:nowrap}td,th{font-family:var(--font-pixel)}td{padding:8px 14px;border-top:1px solid var(--border-soft);font-size:var(--text-body);vertical-align:top;color:var(--muted)}td:first-child{color:var(--text)}tr:hover td{background:rgba(255,255,0,.025)}code{padding:2px 6px;border:1px solid var(--border-soft)}code,pre{font-family:var(--font-mono);background:var(--surface-2);font-size:var(--text-code)}pre{border:2px solid var(--border);padding:16px;overflow-x:auto;line-height:1.7;margin:12px 0}pre code{background:none;border:none;padding:0}.file-tree{font-family:var(--font-mono);font-size:var(--text-code);line-height:1.9;background:var(--surface-2);border:2px solid var(--border);padding:20px;margin:14px 0}.tree-dir{color:var(--yellow)}.tree-file{color:var(--text)}.tree-cmt{color:var(--dim);font-size:var(--text-caption);font-family:var(--font-pixel)}.tree-row{display:flex;justify-content:space-between;gap:16px;padding:1px 4px}.tree-row:hover{background:rgba(255,255,0,.04)}.mermaid-block{background:var(--surface-2);border:2px solid var(--border);padding:20px;margin:14px 0;overflow-x:auto}.schema{margin:14px 0}.schema h4{font-family:var(--font-pixel);font-size:var(--text-caption);color:var(--cyan);margin:16px 0 8px;line-height:1.6}.kw{color:var(--yellow)}.num{color:var(--green);font-family:var(--font-mono)}.cm{color:var(--dim)}.str{color:var(--green)}.btn,button{border:2px solid var(--border);background:var(--black);color:var(--text);font-family:var(--font-pixel);font-size:var(--text-body);padding:8px 16px;cursor:pointer;letter-spacing:.04em;transition:background var(--dur-fast),color var(--dur-fast),border-color var(--dur-fast);line-height:1.5}.btn:hover,button:hover{background:var(--text);color:var(--black)}.btn:disabled,button:disabled{opacity:.4;cursor:default}.btn-primary{border:2px solid var(--yellow);font-family:var(--font-pixel);font-size:var(--text-body);padding:8px 16px;cursor:pointer;letter-spacing:.04em}.btn-primary,.btn-primary:hover{background:var(--yellow);color:var(--black)}.btn-primary:hover{box-shadow:var(--soul-glow)}.btn-primary:disabled{opacity:.4;cursor:default;box-shadow:none}.btn-ghost{border:2px solid var(--border-soft);background:transparent;color:var(--muted);font-family:var(--font-pixel);font-size:var(--text-body);padding:8px 16px;cursor:pointer}.btn-ghost:hover{border-color:var(--border);color:var(--text);background:hsla(0,0%,100%,.04)}.btn-danger{border:2px solid var(--red);background:transparent;color:var(--red);font-family:var(--font-pixel);font-size:var(--text-body);padding:8px 16px;cursor:pointer}.btn-danger:hover{background:var(--red);color:var(--text)}input,select,textarea{background:var(--black);border:2px solid var(--border);color:var(--text);font-family:var(--font-pixel);font-size:var(--text-body);padding:8px 12px;outline:none}input:focus,select:focus,textarea:focus{border-color:var(--yellow);box-shadow:var(--soul-glow)}.chip{display:inline-block;border:1px solid var(--border);padding:3px 10px;font-size:var(--text-caption);font-family:var(--font-pixel)}.alert-err{border:2px solid var(--red);background:rgba(230,0,0,.08);padding:12px;color:#f88}.alert-err,.empty-state{font-family:var(--font-pixel);font-size:var(--text-body)}.empty-state{min-height:280px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:40px;color:var(--muted);text-align:center}.ambient-cat-mount{position:fixed;bottom:20px;right:20px;width:120px;height:120px;z-index:50;pointer-events:none}.ambient-cat-mount>*{pointer-events:auto}.toast{position:fixed;bottom:28px;right:156px;z-index:300;border:2px solid var(--neko-white);background:var(--neko-black);padding:14px 20px;font-family:var(--font-pixel);font-size:var(--text-body);animation:toast-slide-in .2s var(--ease-out-expo);min-width:240px;max-width:360px;color:var(--text)}.toast.toast-ok{border-color:var(--green)}.toast.toast-err{border-color:var(--neko-heart)}.modal-overlay{position:fixed;inset:0;z-index:200;background:rgba(0,0,0,.75);display:flex;align-items:center;justify-content:center;animation:fade-in .15s ease-out}.modal-dialog{border:3px solid var(--neko-white);background:var(--neko-black);padding:28px;min-width:320px;max-width:480px;width:90vw;display:flex;flex-direction:column;gap:18px;font-size:var(--text-body)}.modal-dialog,.section-h{font-family:var(--font-pixel)}.section-h{font-size:var(--text-h2);color:var(--text);border-bottom:2px solid var(--border);padding-bottom:8px;margin:28px 0 14px;line-height:1.6}.section-sub{font-family:var(--font-pixel);font-size:var(--text-caption);color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin-bottom:14px}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--black)}::-webkit-scrollbar-thumb{background:var(--dim);border:1px solid var(--border-soft)}::-webkit-scrollbar-thumb:hover{background:var(--text)}.md-body h1{font-size:var(--text-h1);border-bottom:2px solid var(--border);padding-bottom:8px}.md-body h1,.md-body h2{font-family:var(--font-pixel)}.md-body h2{font-size:var(--text-h2);margin-top:28px;color:var(--cyan);border-bottom:1px solid var(--border-soft);padding-bottom:4px}.md-body h3{font-family:var(--font-pixel);font-size:var(--text-body);margin-top:22px;color:var(--yellow)}.md-body code{padding:2px 6px;border-radius:0;border:1px solid var(--border-soft)}.md-body code,.md-body pre{background:var(--surface-2);font-size:var(--text-code);font-family:var(--font-mono)}.md-body pre{padding:12px;border:2px solid var(--border);overflow-x:auto}.md-body pre code{background:none;border:none;padding:0}.md-body table{border-collapse:collapse;margin:12px 0}.md-body td,.md-body th{border:1px solid var(--border-soft);padding:6px 10px;font-size:var(--text-body)}.md-body th{background:var(--surface-2);color:var(--yellow);font-family:var(--font-pixel);font-size:var(--text-caption)}.md-body a{color:var(--cyan)}.md-body blockquote{border-left:3px solid var(--border);padding-left:12px;color:var(--muted);margin:12px 0}.md-body ol,.md-body ul{padding-left:24px;color:var(--muted)}.md-body li{margin-bottom:4px}.md-body p{color:var(--muted);margin-bottom:10px}.login-shell{align-items:center;justify-content:center;min-height:100vh}.login-box,.login-shell{display:flex;background:var(--neko-black)}.login-box{border:3px solid var(--neko-white);padding:36px 32px;width:360px;max-width:90vw;flex-direction:column;gap:14px}.login-title{font-family:var(--font-pixel);color:var(--neko-soul);font-size:var(--text-h2);margin:0 0 8px}.login-label{color:var(--neko-muted);margin:0}.login-input,.login-label{font-family:var(--font-pixel);font-size:var(--text-body)}.login-input{background:var(--neko-black);border:2px solid var(--neko-white);color:var(--neko-white);padding:10px 12px;width:100%;box-sizing:border-box;outline:none}.login-input:focus{border-color:var(--neko-soul);box-shadow:var(--soul-glow)}.login-otp{font-family:var(--font-mono);font-size:32px;letter-spacing:10px;text-align:center}.login-btn{background:var(--neko-white);color:var(--neko-black);border:none;padding:12px;font-family:var(--font-pixel);font-size:var(--text-body);cursor:pointer;width:100%}.login-btn:hover:not(:disabled){background:var(--neko-soul)}.login-btn:disabled{opacity:.4;cursor:not-allowed}.login-back{background:none;border:none;color:var(--neko-muted);font-family:var(--font-pixel);font-size:var(--text-caption);cursor:pointer;text-align:left;padding:0}.login-back:hover{color:var(--neko-white)}.login-error{color:var(--neko-heart);font-size:var(--text-caption);margin:0;font-family:var(--font-pixel)}@media (max-width:768px){.shell{flex-direction:column;height:auto;min-height:calc(100vh - var(--header-h))}.sidebar{display:none;width:100%;border-right:none;border-bottom:3px solid var(--border)}.sidebar.open{display:block;position:fixed;top:var(--header-h);left:0;right:0;bottom:0;z-index:90;overflow-y:auto;background:var(--neko-black);animation:fade-in .15s ease-out}.content-area{padding:18px 16px}.hamburger{display:inline-flex;align-items:center;justify-content:center}}@media (max-width:480px){:root{--text-h1:21px;--text-h2:15px;--text-body:13px;--text-caption:10px;--text-code:12px}.content-area{padding:14px 12px}.top-header{padding:0 14px;gap:10px}.card{padding:12px 14px}.dialogue,.neko-speak{padding:14px 16px}.ambient-cat-mount{display:none}.toast{right:14px;left:14px;min-width:0;max-width:none}.modal-dialog{padding:20px}}