/* Approved JARVIS identity. Orbit paint matches the original workspace preview;
   task state stays in the status text, without recoloring the approved artwork. */
:root{--jarvis-bg:#050c17;--jarvis-text:#d3eaff;--jarvis-muted:#86a9c6;--jarvis-line:#2b4b68;--jarvis-cyan:#83d5ff}
.martha-orbit{width:100%;position:relative;background:radial-gradient(ellipse,#257acd13,transparent 65%)}
.jarvis-orb{width:100%;height:auto;display:block;overflow:visible;stroke:#5fb8f4;stroke-width:1;filter:drop-shadow(0 0 4px #299bee33)}
.orb-field{stroke:none}.orb-guide{stroke:#337198;opacity:.48;stroke-width:.65}.orb-ticks{stroke:#468bac;stroke-width:2;stroke-dasharray:1 5}.martha-orbit .orb-outer,.martha-orbit .orb-middle{transform-box:view-box;transform-origin:0 0;animation:none}.orb-arc{stroke:#76c8ff;stroke-width:1.7}.orb-fragment{stroke:#b1e5ff;stroke-width:2.6}.orb-node{fill:#a6e3ff;stroke:#d4f2ff;stroke-width:1}.orb-node.purple{fill:#b9a3f3;stroke:#b9a3f3}.orb-inner{stroke:#396785;stroke-width:.8;fill:#0c213324}.orb-crosshair{stroke:#4a86b0;stroke-width:.6}.orb-monogram{stroke:#b8e8ff;stroke-width:1.5;filter:drop-shadow(0 0 6px #62c6ff88)}.jarvis-orb text{stroke:none;font-family:"Orbitron","SF Mono","Cascadia Code",ui-monospace,monospace}.orb-wordmark{fill:#a9dcff;letter-spacing:3px;font-size:9px}.orb-caption{fill:#6d9dbf;letter-spacing:1.5px;font-size:4px}.orb-particles{fill:#8dd3ff;stroke:none}
/* Live speech bars use the legacy amplitude response inside the approved artwork. */
.martha-orbit .orb-speech-bars{fill:none;stroke:#83d5ff;stroke-width:1.6;stroke-linecap:round;filter:drop-shadow(0 0 3px #47bfff88);pointer-events:none}
/* Keep the startup rotation speed in every voice state. */
.martha-orbit[data-voice="speaking"] .orb-inner{stroke:#8dd6ff}.martha-orbit[data-voice="speaking"] .orb-monogram{animation:martha-orbit-pulse 1.5s ease-in-out infinite}
@keyframes martha-orbit-pulse{50%{stroke:#f0fbff;filter:drop-shadow(0 0 11px #47bfff)}}
.jarvis-eyebrow{font:10px ui-monospace,monospace;letter-spacing:2.5px;color:var(--jarvis-cyan);text-transform:uppercase}.jarvis-muted{color:var(--jarvis-muted)}
.jarvis-button{font:inherit;font-size:12px;cursor:pointer;padding:11px 16px;border:1px solid #416e92;background:#14334d;color:#d9efff;border-radius:4px;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:8px}.jarvis-button:hover{background:#1d4565}.jarvis-button:focus-visible{outline:2px solid #a7e3ff;outline-offset:4px}.jarvis-button:disabled{opacity:.6;cursor:wait}
.jarvis-surface{border:1px solid var(--jarvis-line);background:linear-gradient(145deg,#0f2034e8,#071322f5);border-radius:5px;box-shadow:inset 0 0 50px #2789ca08,0 15px 45px #0003;position:relative}.jarvis-surface:before{content:"";position:absolute;left:-1px;top:-1px;width:26px;height:18px;border-left:2px solid #88d2ff;border-top:2px solid #88d2ff;pointer-events:none}
/* Login is a real admin form, without public operational information. */
body.jarvis-login{margin:0;min-height:100svh;color:var(--jarvis-text);font:15px/1.6 system-ui,sans-serif;background:radial-gradient(ellipse at 30% 45%,#15324b77,transparent 55%),linear-gradient(#060e1b,#040913);display:grid;place-items:center;padding:28px;box-sizing:border-box}
.jarvis-login *{box-sizing:border-box}.login-shell{width:min(100%,980px);display:grid;grid-template-columns:1.15fr 1fr;gap:70px;align-items:center}.login-presence .martha-orbit{width:min(100%,370px);margin:auto}.login-presence{text-align:center}.login-presence h1{font:400 28px ui-monospace,monospace;letter-spacing:8px;margin:16px 0 9px}.login-presence p{color:#87acc9;font-size:13px;letter-spacing:.5px}.login-card{padding:38px}.login-card h2{font-size:26px;line-height:1.25;font-weight:450;margin:16px 0}.login-card p{font-size:13px;color:var(--jarvis-muted)}.login-card label{display:block;font-size:12px;color:#adcce3;margin:19px 0 7px}.login-card input{width:100%;padding:13px 12px;font:inherit;color:#dbedff;background:#071524;border:1px solid #31516b;border-radius:4px}.login-card input:focus{outline:2px solid #75c6f0;outline-offset:2px}.login-submit{width:100%;margin-top:25px;min-height:46px}.login-error{border-left:2px solid #ed9d91;padding:10px 12px;background:#38232a;color:#ffc4bd!important}.login-footer{color:#7599b5;font:10px ui-monospace,monospace;letter-spacing:1.3px;text-align:center;grid-column:1/-1;margin-top:12px}.login-status{min-height:20px;font-size:12px;color:#a6d9f7}
/* Actual startup checks, with a bounded wait and visible failure states. */
html.is-booting body>#marthaBootOverlay{visibility:visible}.boot-overlay{position:fixed;inset:0;z-index:100000;background:radial-gradient(ellipse at 50% 35%,#12314d77,transparent 60%),#050c17;display:grid;place-items:center;color:#d3eaff;padding:20px;box-sizing:border-box}.boot-center{width:min(100%,480px);text-align:center;display:block}.boot-center .martha-orbit{width:220px;margin:0 auto 12px}.boot-center h1{font:400 23px ui-monospace,monospace;letter-spacing:5px;margin:12px 0}.boot-center p{font-size:12px;color:#86a9c6;line-height:1.65}.boot-checks{padding:8px 20px;list-style:none;text-align:left;margin:24px 0 14px}.boot-checks li{display:flex;justify-content:space-between;gap:20px;padding:10px 0;border-bottom:1px solid #233d54;font:12px system-ui,sans-serif}.boot-checks strong{font-size:11px;font-weight:450;color:#9fbdd4}.boot-checks [data-state="ok"] strong{color:#8edcbe}.boot-checks [data-state="error"] strong{color:#f1b388}.boot-progress{width:100%;height:3px;accent-color:#7bcfff;border:0}.boot-progress::-webkit-progress-bar{background:#15314a}.boot-progress::-webkit-progress-value{background:#7bcfff}.boot-actions{display:flex;justify-content:center;gap:10px;margin-top:18px}.boot-actions[hidden]{display:none}.boot-overlay.boot-fadeout{opacity:0;transition:opacity .35s;pointer-events:none}
/* Work stays alongside the voice view; original graph/chat controls remain. */
#voiceContainer{background:radial-gradient(ellipse at 50% 45%,#102b4366,transparent 54%),#050d19}.live-orbit-stage{width:clamp(260px,30vw,430px);text-align:center;z-index:3;align-self:center;margin-top:-50px;pointer-events:none}.orbit-voice-state{font:400 16px system-ui;color:#c7e6fc;margin-top:12px;letter-spacing:.5px}.orbit-work-state{font:11px ui-monospace,monospace;color:#b7a9e1;margin-top:10px;min-height:18px}.orbit-models{font:10px ui-monospace,monospace;color:#88afcb;margin-top:8px;max-width:360px;line-height:1.8}
.legacy-work-panel{position:absolute;top:130px;bottom:100px;width:260px;padding:20px;box-sizing:border-box;overflow:auto;z-index:5;color:var(--jarvis-text)}.legacy-work-panel.left{left:25px}.legacy-work-panel.right{right:25px;width:285px}.legacy-work-panel h2{font-size:18px;font-weight:450;margin:12px 0 22px}.legacy-work-panel h3{font:10px ui-monospace,monospace;letter-spacing:1.5px;color:#84b7da;margin:24px 0 12px}.legacy-work-panel button{font:inherit}.legacy-work-panel .jarvis-button{font-size:11px;width:100%;margin-top:10px}.legacy-ticket{display:block;width:100%;text-align:left;background:#0a1c2d;border:1px solid #294861;border-radius:4px;color:#c3dced;margin:9px 0;padding:12px;cursor:pointer}.legacy-ticket strong{display:block;font-size:12px;font-weight:500;line-height:1.55}.legacy-ticket small{display:block;color:#80a9c8;font-size:10px;margin-top:7px}.legacy-service{display:flex;justify-content:space-between;gap:8px;padding:10px 0;border-bottom:1px solid #20394d;font-size:11px}.legacy-service strong{font-weight:400;color:#c7b087}.legacy-service[data-state="active"] strong{color:#85d6ba}.legacy-session{font-size:11px;padding:10px 0;border-bottom:1px solid #20394d}.legacy-session small{display:block;color:#86a9c6;line-height:1.7;margin-top:4px}.legacy-empty{font-size:12px;line-height:1.7;color:#88acc7}.legacy-update{font-size:10px;color:#7e9cb6;margin-top:14px}.legacy-work-panel [role="alert"]{color:#f3b59e;font-size:12px;line-height:1.7}.legacy-work-panel [hidden]{display:none}
#legacyFocusBtn{position:absolute;right:27px;bottom:28px;z-index:12;font-size:11px}.legacy-voice-focus .legacy-work-panel{display:none}.legacy-voice-focus .live-orbit-stage{width:min(45vw,470px)}.legacy-voice-focus #legacyFocusBtn{background:#21445f}
body.drawer-open .legacy-work-panel{display:none}body.drawer-open .live-orbit-stage{width:min(80%,370px)}
@media(min-width:1100px){#voiceContainer .martha-clock{left:35px;top:22px;transform:none}#voiceContainer .clock-hm-text{font-size:30px}#voiceContainer .clock-ss-text{font-size:18px}#voiceContainer .clock-date{font-size:10px}#voiceContainer #mailIndicator,#voiceContainer #tasksIndicator,#voiceContainer #projectsIndicator,#voiceContainer #localHelperBtn{display:none}#voiceContainer #nightwatchFloat{bottom:22px;top:auto;left:34px;transform:none;width:64px;height:64px}#voiceContainer .floating-mic-btn{bottom:15%;width:48px;height:48px}#voiceContainer .live-caption-container{max-width:calc(100% - 650px);left:50%;transform:translateX(-50%);bottom:27%;right:auto;width:600px}}
@media(max-width:1250px) and (min-width:1100px){.legacy-work-panel{width:220px;left:18px!important;padding:15px}.legacy-work-panel.right{width:235px;left:auto!important;right:18px}.live-orbit-stage{width:290px}#voiceContainer .live-caption-container{max-width:calc(100% - 540px)}}
@media(max-width:1099px){#voiceContainer{overflow-y:auto;display:flex;flex-direction:column;justify-content:flex-start;padding:90px 18px 100px;box-sizing:border-box;gap:18px}.live-orbit-stage{order:0;margin:0 auto;width:min(70vw,340px);flex-shrink:0}.legacy-work-panel{position:relative!important;inset:auto!important;width:min(100%,620px)!important;bottom:auto;height:auto;min-height:170px;max-height:360px;flex-shrink:0;order:2;margin:0 auto}.legacy-work-panel.right{order:3}#voiceContainer .martha-clock{top:12px;left:22px;transform:none}#voiceContainer .clock-hm-text{font-size:25px}#voiceContainer .clock-ss-text{font-size:16px}#voiceContainer .clock-date{font-size:9px}#mailIndicator,#tasksIndicator,#projectsIndicator,#localHelperBtn{display:none!important}#voiceContainer #nightwatchFloat{display:none}#voiceContainer .floating-mic-btn{position:relative;inset:auto;transform:none;order:1;flex-shrink:0;margin:0 auto;width:46px;height:46px}#voiceContainer .live-caption-container{position:relative;inset:auto;transform:none;order:1;max-width:100%;width:100%}#legacyFocusBtn{position:fixed;bottom:15px;right:18px}.legacy-voice-focus .live-orbit-stage{width:min(85vw,440px);margin-top:7vh}.legacy-work-panel [data-ticket-list]{max-height:240px;overflow:auto}.jarvis-top-right-pills{gap:7px!important;right:12px!important}.jarvis-top-right-pills button{padding:8px!important}.jarvis-top-right-pills button span:last-child{font-size:8px}}
@media(max-width:650px){body.jarvis-login{padding:20px}.login-shell{display:flex;flex-direction:column;gap:22px}.login-presence .martha-orbit{width:180px}.login-presence h1{font-size:20px;margin:5px}.login-presence p{margin:7px}.login-card{width:100%;max-width:400px;padding:25px}.login-footer{margin:0}.boot-center .martha-orbit{width:190px}.boot-checks{padding:5px 10px}.legacy-work-panel h2{font-size:17px}}
@media(prefers-reduced-motion:reduce){.martha-orbit .orb-outer,.martha-orbit .orb-middle{transform:none!important}.orb-outer,.orb-middle,.orb-monogram{animation:none!important}.boot-overlay{transition:none!important}}

.boot-actions [hidden],.jarvis-login [hidden]{display:none!important}

/* Closed chat must not leave a visible strip after a viewport resize. */
#conversationDrawer.panel-hidden{visibility:hidden;pointer-events:none}
#conversationDrawer:not(.panel-hidden){visibility:visible}
@media(max-width:650px){#conversationDrawer{width:100vw!important;max-width:100vw;box-sizing:border-box}}
