:root{--paper: #eef0f3;--card: #fbfcfd;--ink: #14171b;--ink-2: #5b6573;--ink-3: #8b95a3;--line: #d4d9e0;--line-2: #e6eaef;--accent: #2d6a8f;--accent-soft: #e3edf4;--pass: #2d6b51;--fail: #a4342a;--shadow: 0 1px 2px rgba(16,22,30,.06), 0 4px 14px rgba(16,22,30,.05)}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--paper: #15181c;--card: #1d2126;--ink: #e8ecf1;--ink-2: #a3adba;--ink-3: #6f7986;--line: #2d333b;--line-2: #262b32;--accent: #79b4d6;--accent-soft: #1e2d38;--pass: #6fbf96;--fail: #e38478;--shadow: 0 1px 2px rgba(0,0,0,.4), 0 4px 14px rgba(0,0,0,.3)}}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font:15px/1.5 IBM Plex Sans,system-ui,-apple-system,sans-serif;-webkit-font-smoothing:antialiased}.mono,code{font-family:IBM Plex Mono,ui-monospace,Menlo,monospace}.k{color:var(--ink-3)}button{font:inherit}.login{min-height:100vh;display:grid;place-items:center;padding:24px}.login form{width:100%;max-width:340px;background:var(--card);padding:28px;border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);display:flex;flex-direction:column;gap:10px}.login h1{margin:0;font-size:26px;letter-spacing:-.02em}.login .sub{margin:0 0 10px;color:var(--ink-3);font-size:14px}.login input{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);font:inherit}.err{color:var(--fail);font-size:13px;margin:0}.btn{border:1px solid var(--line);background:var(--paper);color:var(--ink);border-radius:8px;padding:9px 14px;font-size:14px;font-weight:500;cursor:pointer}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}.btn:disabled{opacity:.45;cursor:not-allowed}.shell{height:100vh;display:flex;flex-direction:column}.top{display:flex;align-items:center;gap:14px;padding:10px 18px;border-bottom:1px solid var(--line);background:var(--card);flex:none}.brand{font-weight:600;letter-spacing:-.01em}.brand span{color:var(--ink-3);font-weight:400}.sandbox{margin-left:auto;display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--ink-2);border:1px solid var(--line);border-radius:999px;padding:4px 11px}.dot{width:7px;height:7px;border-radius:50%;background:var(--pass);flex:none}.who{font-size:13px;color:var(--ink-2);background:none;border:0;cursor:pointer}.app{flex:1;display:grid;grid-template-columns:200px 380px 1fr;min-height:0}@media(max-width:1080px){.app{grid-template-columns:1fr;overflow:auto}}.col{min-width:0;display:flex;flex-direction:column;overflow:hidden}.rail,.chat{border-right:1px solid var(--line);background:var(--card)}.work{background:var(--paper)}.colhead{padding:11px 14px;border-bottom:1px solid var(--line-2);font-size:11px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-3);flex:none}.scroll{overflow:auto;padding:12px 14px;flex:1;min-height:0}.work .scroll{padding:16px 18px}.empty{color:var(--ink-3);font-size:13.5px;line-height:1.5}.proj{display:block;width:100%;text-align:left;padding:8px 10px;border:0;background:none;border-radius:7px;margin-bottom:2px;cursor:pointer;color:inherit}.proj.on{background:var(--accent-soft)}.proj b{display:block;font-weight:500;font-size:14px}.proj small{color:var(--ink-3);font-size:12px}.newbtn{margin-top:10px;width:100%;padding:8px;border:1px dashed var(--line);border-radius:7px;background:none;color:var(--ink-2);font-size:13px;cursor:pointer}.msg{margin-bottom:16px}.who-l{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--ink-3);margin-bottom:5px}.bubble{font-size:14px;line-height:1.55;white-space:pre-wrap}.bubble.me{background:var(--accent-soft);padding:9px 11px;border-radius:8px}.tool{font-size:12.5px;color:var(--ink-2);border-left:2px solid var(--line);padding:3px 0 3px 10px;margin:7px 0}.tool b{font-weight:500;color:var(--ink)}.composer{border-top:1px solid var(--line-2);padding:11px 14px;flex:none}.composer input{width:100%;border:1px solid var(--line);border-radius:8px;padding:9px 11px;background:var(--paper);color:var(--ink);font:inherit}.render{background:var(--card);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:var(--shadow);margin-bottom:14px}.render img{display:block;width:100%;height:auto}.noimg{padding:48px 16px;text-align:center;color:var(--ink-3);font-size:13.5px}.rbar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-top:1px solid var(--line-2);font-size:12.5px;color:var(--ink-2)}.chip{border:1px solid var(--line);border-radius:5px;padding:2px 8px;font-size:12px;color:var(--ink-2);background:none;cursor:pointer}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--card)}.panel{background:var(--card);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);margin-bottom:14px}.ph{display:flex;align-items:center;gap:9px;padding:10px 13px;border-bottom:1px solid var(--line-2)}.ph h2{margin:0;font-size:13px;font-weight:600}.badge{margin-left:auto;font-size:11.5px;font-weight:600;padding:3px 9px;border-radius:999px}.badge.ok{background:color-mix(in srgb,var(--pass) 15%,transparent);color:var(--pass)}.badge.no{background:color-mix(in srgb,var(--fail) 15%,transparent);color:var(--fail)}.checks{padding:4px 0}.chk{display:flex;gap:10px;padding:5px 13px;font-size:13px;align-items:baseline}.chk .m{flex:none;width:13px;text-align:center;font-weight:600}.chk.p .m{color:var(--pass)}.chk.f .m{color:var(--fail)}.chk .t{flex:1;min-width:0}.chk.f{background:color-mix(in srgb,var(--fail) 7%,transparent)}.chk.f .t{color:var(--fail)}.hist{padding:4px 0}.h{display:flex;gap:10px;align-items:baseline;padding:6px 13px;font-size:13px}.h .sha{color:var(--ink-3);font-size:12.5px;flex:none}.h .msg2{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.h .st{flex:none;font-size:11.5px;font-weight:600}.h .st.ok{color:var(--pass)}.h .st.no{color:var(--fail)}.h.cur{background:var(--accent-soft)}.dl{display:flex;gap:9px;padding:12px 13px;flex-wrap:wrap}.note{padding:0 13px 12px;font-size:12.5px;color:var(--ink-2);margin:0}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:grid;place-items:center;padding:24px;background:#10161e73}.sheet{width:100%;max-width:420px;background:var(--card);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:100%;overflow:auto}.sheethead{display:flex;align-items:flex-start;gap:12px;padding:16px 18px 12px;border-bottom:1px solid var(--line-2)}.sheethead h2{margin:0;font-size:16px;font-weight:600;letter-spacing:-.01em}.sheethead .sub{margin:3px 0 0;font-size:12.5px;color:var(--ink-3)}.x{margin-left:auto;background:none;border:0;cursor:pointer;color:var(--ink-3);font-size:22px;line-height:1;padding:0 2px}.x:hover{color:var(--ink)}.sheetbody{padding:16px 18px;display:flex;flex-direction:column;gap:14px}.field{display:flex;flex-direction:column;gap:5px}.field>span{font-size:12.5px;color:var(--ink-2)}.field input{font:inherit;font-size:14px;padding:9px 11px;color:var(--ink);background:var(--paper);border:1px solid var(--line);border-radius:8px}.field input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.hint{font-size:12px;color:var(--ink-3)}.warn{font-size:12.5px;color:var(--fail);margin:0}.ok{font-size:12.5px;color:var(--pass);margin:0}.primary{padding:10px 14px;border:0;border-radius:8px;cursor:pointer;background:var(--accent);color:#fff;font-weight:550;font-size:14px}.primary:disabled{opacity:.45;cursor:not-allowed}.sheetfoot{display:flex;gap:8px;flex-wrap:wrap;padding:12px 18px 16px;border-top:1px solid var(--line-2)}.ghost{padding:7px 11px;font-size:13px;cursor:pointer;color:var(--ink-2);background:none;border:1px solid var(--line);border-radius:7px}.ghost:hover{color:var(--ink);border-color:var(--ink-3)}.ghost.danger{color:var(--fail);border-color:color-mix(in srgb,var(--fail) 35%,var(--line))}.ghost.danger:hover{border-color:var(--fail)}.md>:first-child{margin-top:0}.md>:last-child{margin-bottom:0}.md p{margin:0 0 9px}.md h1,.md h2,.md h3,.md h4{font-size:14px;font-weight:650;margin:14px 0 6px;line-height:1.35}.md h1{font-size:15px}.md ul,.md ol{margin:0 0 9px;padding-left:20px}.md li{margin:2px 0}.md li>p{margin:0}.md code{font-size:12.5px;background:var(--accent-soft);padding:1px 4px;border-radius:4px}.md pre{margin:0 0 9px;padding:9px 11px;background:var(--paper);border:1px solid var(--line-2);border-radius:7px}.md pre code{background:none;padding:0;font-size:12.5px;line-height:1.5}.md blockquote{margin:0 0 9px;padding-left:10px;color:var(--ink-2);border-left:2px solid var(--line)}.md table{border-collapse:collapse;font-size:13px}.md th,.md td{border:1px solid var(--line-2);padding:4px 8px;text-align:left;font-variant-numeric:tabular-nums}.md th{background:var(--paper);font-weight:600}.md hr{border:0;border-top:1px solid var(--line-2);margin:12px 0}.md a{color:var(--accent)}.mdscroll{overflow-x:auto;margin:0 0 9px}.mdscroll>pre,.mdscroll>table{margin-bottom:0}.stl{position:relative;width:100%;height:100%;min-height:260px}.stlcanvas{position:absolute;top:0;right:0;bottom:0;left:0}.stlcanvas canvas{display:block;width:100%!important;height:100%!important;touch-action:none;cursor:grab}.stlcanvas canvas:active{cursor:grabbing}.stlnote{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--ink-3);font-size:13px;text-align:center;padding:16px;pointer-events:none}.stlreset{position:absolute;right:10px;bottom:10px;z-index:1;padding:5px 10px;font-size:12px;cursor:pointer;color:var(--ink-2);background:var(--card);border:1px solid var(--line);border-radius:7px;opacity:.85}.stlreset:hover{opacity:1;color:var(--ink)}
