:root{--bg:#0b1118;--panel:#121a24;--panel2:#182330;--line:#22303f;--ink:#dbe6ef;--dim:#7d8fa0;--accent:#4ba3e3;--ok:#3fbf8a;--warn:#e0a63f;--bad:#e06a5e;--mono:ui-monospace,"Cascadia Mono",Menlo,Consolas,monospace}*{box-sizing:border-box}body,html{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font:15px/1.55 system-ui,Segoe UI,sans-serif}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{background:var(--panel2);border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:6px 12px;font:13px system-ui;cursor:pointer}button.primary,button:hover{border-color:var(--accent)}button.primary{background:#123a57}input,select,textarea{background:var(--panel2);border:1px solid var(--line);color:var(--ink);border-radius:6px;padding:7px 9px;font:14px system-ui}code,pre{font-family:var(--mono);font-size:.92em}pre{border:1px solid var(--line);border-radius:8px;padding:12px;overflow-x:auto}code,pre{background:var(--panel2)}code{padding:1px 5px;border-radius:4px}pre code{background:none;padding:0}table{border-collapse:collapse}td,th{border:1px solid var(--line);padding:6px 10px;text-align:left}.shell{display:grid;grid-template-columns:240px 1fr;grid-template-rows:52px 1fr;height:100vh}.topbar{grid-column:1/3;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding:0 16px;background:var(--panel)}.topbar .brand{font-weight:700;letter-spacing:.04em}.topbar .spacer{flex:1 1}.topbar .who{color:var(--dim);font-size:12.5px}.rolechip{font-family:var(--mono);font-size:11px;padding:2px 8px;border-radius:12px;border:1px solid var(--accent);color:#bfe0f7;background:#12324a}.sidebar{border-right:1px solid var(--line);overflow-y:auto;padding:14px;background:var(--panel)}.sidebar h3{font-size:11px;letter-spacing:.13em;text-transform:uppercase;color:var(--dim);margin:16px 0 6px}.sidebar a{display:block;padding:4px 8px;border-radius:5px;color:var(--ink);font-size:13.5px}.sidebar a:hover{background:var(--panel2);text-decoration:none}.sidebar a.active{background:#12324a;color:#bfe0f7}.main{overflow-y:auto;padding:28px 40px}.doc{max-width:780px}.doc h1{margin-top:0}.doc h2,.doc h3{scroll-margin-top:12px}.doc h2 a.anchor,.doc h3 a.anchor{color:var(--dim);opacity:0;margin-left:6px}.doc h2:hover a.anchor,.doc h3:hover a.anchor{opacity:1}.doc img{max-width:100%}.badges{display:flex;gap:8px;margin-bottom:14px}.badge{font-family:var(--mono);font-size:11px;padding:2px 8px;border-radius:12px;border:1px solid var(--line);color:var(--dim);background:var(--panel2)}.related{border-top:1px solid var(--line);margin-top:32px;padding-top:14px;font-size:13.5px}.feedback{margin-top:24px;color:var(--dim);font-size:13px;display:flex;gap:10px;align-items:center}.search{position:relative;width:320px}.search input{width:100%}.search .results{position:absolute;top:38px;left:0;right:0;background:var(--panel);border:1px solid var(--line);border-radius:8px;max-height:60vh;overflow-y:auto;z-index:50}.search .results a{display:block;padding:8px 12px;border-bottom:1px solid var(--line)}.search .results a:hover{background:var(--panel2);text-decoration:none}.search .results .t{font-weight:600;font-size:13.5px}.search .results .s{color:var(--dim);font-size:12px}.login{min-height:100vh;display:grid;place-items:center}.login .card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:28px;width:340px;display:flex;flex-direction:column;gap:10px}.login .err{color:var(--bad);font-size:13px}.login .or{color:var(--dim);text-align:center;font-size:12px}.tut-root{display:flex;flex-direction:column;height:calc(100vh - 52px)}.tut-dock{flex:1 1;min-height:0}.tut-dock iframe{width:100%;height:100%;border:0;background:#000}.instructions{padding:18px 22px;overflow-y:auto;height:100%}.instructions .stepnum{color:var(--dim);font-family:var(--mono);font-size:12px}.instructions .steplist{margin:12px 0;padding:0;list-style:none}.instructions .steplist li{padding:3px 0 3px 24px;position:relative;color:var(--dim);font-size:13px}.instructions .steplist li.done:before{content:"✓";color:var(--ok);position:absolute;left:4px}.instructions .steplist li.now{color:var(--ink);font-weight:600}.instructions .steplist li.now:before{content:"▶";color:var(--accent);position:absolute;left:2px;font-size:10px;top:8px}.instructions .say{font-size:15px}.instructions .wait{font-size:12.5px}.instructions .wait,.simstatus{color:var(--dim);font-family:var(--mono)}.simstatus{font-size:11.5px;padding:3px 9px;border-radius:20px;border:1px solid var(--line);background:var(--panel2)}.simstatus.on{border-color:var(--ok);color:#a9ecd0}.simstatus.off{border-color:var(--bad);color:#eba9a1}.chat-fab{bottom:22px;border-radius:50%;width:48px;height:48px;font-size:20px;background:#123a57;border-color:var(--accent)}.chat-fab,.chat-panel{position:fixed;right:22px;z-index:60}.chat-panel{bottom:80px;width:400px;height:60vh;background:var(--panel);border:1px solid var(--line);border-radius:12px;display:flex;flex-direction:column;box-shadow:0 12px 40px rgba(0,0,0,.5)}.chat-msgs{flex:1 1;overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:10px}.chat-msg{border-radius:10px;padding:8px 12px;font-size:13.5px;max-width:92%}.chat-msg.user{background:#12324a;align-self:flex-end}.chat-msg.assistant{background:var(--panel2);align-self:flex-start}.chat-msg .cites{margin-top:6px;font-size:12px}.chat-input{display:flex;gap:8px;padding:10px;border-top:1px solid var(--line)}.chat-input input{flex:1 1}.admin table{width:100%;font-size:13.5px}.admin .newuser{display:flex;gap:8px;margin:14px 0;flex-wrap:wrap}.rowmenu{position:absolute;right:6px;top:34px;z-index:40;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:6px;display:flex;flex-direction:column;gap:4px;box-shadow:0 8px 24px rgba(0,0,0,.45)}.rowmenu button{text-align:left;border:0;background:none}.rowmenu button:hover:not(:disabled){background:var(--panel2)}.rowmenu button:disabled{color:var(--dim);cursor:default}.thumb-btn{background:none;border:0;padding:0;cursor:zoom-in}.mediaviewer{position:fixed;inset:0;z-index:100;background:rgba(4,8,12,.92);justify-content:center}.mediaviewer,.mv-stage{display:flex;align-items:center}.mv-stage{max-width:78vw;max-height:72vh;flex-direction:column;gap:10px}.mv-stage img,.mv-stage video{max-width:78vw;max-height:64vh;border-radius:8px;box-shadow:0 18px 60px rgba(0,0,0,.6)}.mv-caption{color:var(--dim);font-size:13px}.mv-nav{position:absolute;top:50%;transform:translateY(-50%);font-size:34px;width:54px;height:54px;border-radius:50%;line-height:1}.mv-prev{left:22px}.mv-close,.mv-next{right:22px}.mv-close{position:absolute;top:16px;font-size:16px}.mv-strip{position:absolute;bottom:14px;left:0;right:0;display:flex;gap:8px;justify-content:center;overflow-x:auto;padding:6px 20px}.mv-strip button{padding:2px;border-radius:6px;background:var(--panel)}.mv-strip button.current{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.mv-strip img{height:44px;width:66px;object-fit:cover;border-radius:4px;display:block}.pagetools{display:flex;gap:6px;align-items:center;margin-bottom:10px}.pagetools>button{padding:4px 8px;display:inline-flex;align-items:center}.vis-pop{font-size:13px;color:var(--dim);background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:5px 10px}.tools-msg{font-size:12.5px;color:var(--dim)}.editor-toolbar{display:flex;flex-wrap:wrap;gap:5px;align-items:center;position:-webkit-sticky;position:sticky;top:0;z-index:30;background:var(--bg);border-bottom:1px solid var(--line);padding:8px 0;margin-bottom:14px}.editor-toolbar .spacer{flex:1 1}.editor-toolbar button{font-size:12.5px;padding:4px 9px}.wysiwyg{outline:none;min-height:320px}.wysiwyg:focus-visible{outline:none}.wysiwyg table{border-collapse:collapse}.wysiwyg td,.wysiwyg th{border:1px solid var(--line);padding:6px 10px;min-width:60px}.wysiwyg img{max-width:100%}.wysiwyg a{color:var(--accent)}.notice{background:var(--panel);border:1px solid var(--warn);border-radius:8px;padding:14px 18px;color:var(--warn)}.cardlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));grid-gap:14px;gap:14px}.card{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px}.card h3{margin:0 0 6px}.card .dim{color:var(--dim);font-size:13px}