:root{--bg:#05070d;--bg-soft:#0a0e1a;--card:#0b1020;--card-edge:#141c30;--line:#1a2334;--ink:#e8f4ff;--ink-dim:#7c8aa5;--primary:#38e8ff;--violet:#7a5cff;--warn:#ff9b42;--pass:#35f2a0;--seal:#ede7c9;--danger:#ff5d6c;--radius:14px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{background:var(--bg);color:var(--ink);margin:0;padding:0;font-family:-apple-system,PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,system-ui,sans-serif;font-size:15px;line-height:1.5}body:before,body:after{content:"";pointer-events:none;z-index:0;position:fixed;inset:-20%}body:before{background:radial-gradient(55% 34% at 50% 2%,#38e8ff33,#0000 72%),radial-gradient(40% 28% at 88% 28%,#7a5cff21,#0000 70%),radial-gradient(46% 36% at 10% 74%,#7a5cff17,#0000 70%);animation:38s ease-in-out infinite alternate nebula}body:after{background-image:radial-gradient(1.4px 1.4px at 20% 24%,#e8f4ffe6,#0000),radial-gradient(1.2px 1.2px at 67% 14%,#e8f4ffb3,#0000),radial-gradient(1.6px 1.6px at 83% 52%,#38e8ffcc,#0000),radial-gradient(1.1px 1.1px at 12% 62%,#e8f4ffb3,#0000),radial-gradient(1.3px 1.3px at 45% 78%,#7a5cffb3,#0000),radial-gradient(1.5px 1.5px at 92% 84%,#e8f4ffa6,#0000),radial-gradient(1.1px 1.1px at 34% 40%,#e8f4ff8c,#0000),radial-gradient(1.2px 1.2px at 75% 70%,#38e8ff99,#0000),radial-gradient(1px 1px at 56% 33%,#e8f4ff80,#0000),radial-gradient(1.3px 1.3px at 8% 88%,#e8f4ff80,#0000);background-repeat:no-repeat;animation:7s ease-in-out infinite alternate twinkle}@keyframes nebula{0%{transform:translate(0,0)scale(1)}to{transform:translate(-3%,2%)scale(1.08)}}@keyframes twinkle{0%{opacity:.45}to{opacity:.95}}#root{z-index:1;background:radial-gradient(1200px 480px at 50% -200px,#38e8ff12,#0000 70%),radial-gradient(800px 400px at 100% 30%,#7a5cff0d,#0000 70%);flex-direction:column;max-width:480px;min-height:100dvh;margin:0 auto;display:flex;position:relative}@media (prefers-reduced-motion:reduce){body:before,body:after{animation:none}.arc-active,.ring-node-now,.stage-dot.running,.orbit-ring,.orbit-particles,.orbit-rotor,.orbit-node-inner,.ring-shake,.drawer-sheet{animation:none!important}}.drawer-mask{z-index:80;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#02040a9e;align-items:flex-end;display:flex;position:fixed;inset:0}.drawer-sheet{border:1px solid var(--card-edge);width:100%;max-width:480px;max-height:82vh;padding:14px 14px calc(14px + env(safe-area-inset-bottom));background:linear-gradient(#0b1020fa,#080c18fc);border-bottom:none;border-radius:18px 18px 0 0;margin:0 auto;animation:.22s ease-out drawerUp;box-shadow:0 -8px 40px #02040ab3}@keyframes drawerUp{0%{opacity:.4;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.drawer-head{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.drawer-title{color:var(--primary);font-size:13px;font-weight:600}.drawer-close{border:1px solid var(--line);color:var(--ink-dim);cursor:pointer;background:0 0;border-radius:8px;padding:4px 10px;font-size:12px}.drawer-body{max-height:68vh;overflow:auto}.page{padding:14px 14px calc(86px + env(safe-area-inset-bottom));flex-direction:column;flex:1;gap:12px;display:flex;overflow-y:auto}.app-header{justify-content:space-between;align-items:center;padding:14px 16px 6px;display:flex}.app-header .brand{letter-spacing:.5px;background:linear-gradient(90deg, var(--primary), var(--violet));color:#0000;filter:drop-shadow(0 0 14px #38e8ff80);-webkit-background-clip:text;background-clip:text;font-size:18px;font-weight:700}.app-header .sub{color:var(--ink-dim);letter-spacing:2px;font-size:11px}.conn-dot{color:var(--ink-dim);align-items:center;gap:6px;font-size:12px;display:inline-flex}.gate-chip{letter-spacing:.5px;color:var(--ink-dim);border:1px solid #38e8ff40;border-radius:999px;padding:2px 8px;font-size:10px}.gate-chip.gate-safe_auto{color:var(--primary);border-color:#38e8ff73;box-shadow:0 0 10px #38e8ff2e}.gate-chip.gate-session_auto{color:var(--pass);border-color:#35f2a080;box-shadow:0 0 10px #35f2a033}.lang-switch{border:1px solid #38e8ff38;border-radius:999px;gap:2px;padding:2px;display:inline-flex}.lang-opt{color:var(--ink-dim);cursor:pointer;background:0 0;border:none;border-radius:999px;padding:2px 7px;font-family:inherit;font-size:10px;font-weight:600}.lang-opt.active{color:var(--primary);background:#38e8ff29}.portal-candidate-card{justify-content:space-between;align-items:center;gap:8px;display:flex}.portal-term{color:var(--seal);text-shadow:0 0 8px #ede7c940;font-size:13px;font-weight:600}.portal-ready{font-size:11px}.autosafe-btn{width:100%;margin-top:8px;font-size:13px}.autosafe-hint{color:var(--pass);text-align:center;text-shadow:0 0 8px #35f2a066;margin-top:8px;font-size:11px}.voice-console .voice-summary{color:var(--primary);cursor:pointer;text-shadow:0 0 10px #38e8ff4d;font-size:14px;font-weight:600}.voice-samples{flex-wrap:wrap;gap:8px;margin:10px 0;display:flex}.voice-input{flex:1}.voice-result{flex-direction:column;gap:8px;margin-top:10px;display:flex}.voice-transcript-preview{color:var(--ink);font-size:13px}.voice-intent-result{color:var(--ink-dim);border:1px solid #38e8ff33;border-radius:8px;padding:6px 10px;font-size:12px}.voice-denied{color:var(--danger);border:1px solid var(--danger);text-shadow:0 0 8px #ff5d6c66;border-radius:8px;padding:8px 10px;font-size:13px}.voice-confirm-card,.voice-second-confirm,.voice-announce{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12px}.voice-second-confirm{color:var(--warn)}.voice-phrase-block{flex-direction:column;gap:6px;display:flex}.voice-phrase-text{color:var(--seal);text-shadow:0 0 10px #ede7c94d;font-size:13px}.voice-played{color:var(--pass);font-size:12px}.voice-audit{font-size:11px}.vision-console .vision-summary{color:var(--primary);cursor:pointer;text-shadow:0 0 10px #38e8ff4d;font-size:14px;font-weight:600}.vision-samples{flex-wrap:wrap;gap:8px;margin:10px 0;display:flex}.vision-input{flex:1}.vision-result{flex-direction:column;gap:8px;margin-top:10px;display:flex}.vision-rawtext-preview{color:var(--ink);font-size:13px}.vision-intent-result{color:var(--ink-dim);border:1px solid #38e8ff33;border-radius:8px;padding:6px 10px;font-size:12px}.vision-denied{color:var(--danger);border:1px solid var(--danger);text-shadow:0 0 8px #ff5d6c66;border-radius:8px;padding:8px 10px;font-size:13px}.vision-redaction{color:var(--warn);border:1px solid var(--warn);word-break:break-all;border-radius:8px;padding:8px 10px;font-size:12px}.vision-announce{border:1px solid var(--line);border-radius:8px;padding:8px 10px;font-size:12px}.vision-evidence-id{color:var(--pass);word-break:break-all;font-size:12px}.vision-error{color:var(--danger);font-size:11px}.conn-dot:before{content:"";background:var(--danger);border-radius:50%;width:8px;height:8px}.conn-dot.online:before{background:var(--pass);box-shadow:0 0 8px var(--pass)}.card{border-radius:var(--radius);-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:linear-gradient(#38e8ff12,#0000 46%),linear-gradient(#0d1428a8,#080c1acc);border:1px solid #38e8ff29;padding:14px;position:relative;box-shadow:inset 0 0 22px #38e8ff0f,0 8px 28px #02040a8c,0 0 16px #38e8ff12}.card:before{content:"";border-radius:var(--radius) var(--radius) 0 0;filter:drop-shadow(0 0 6px #38e8ff66);background:linear-gradient(90deg,#0000,#38e8ffa6,#7a5cff99,#0000);height:1.5px;position:absolute;inset:0 0 auto}.card h3{color:var(--ink-dim);letter-spacing:1px;margin:0 0 10px;font-size:13px;font-weight:600}.bottom-nav{-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-top:1px solid var(--line);width:100%;max-width:480px;padding-bottom:env(safe-area-inset-bottom);z-index:50;background:#080b14eb;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.bottom-nav button{color:var(--ink-dim);cursor:pointer;background:0 0;border:none;flex-direction:column;flex:1;align-items:center;gap:3px;padding:10px 0 12px;font-size:12px;display:flex}.bottom-nav button .icon{font-size:19px;line-height:1}.bottom-nav button.active{color:var(--primary)}.bottom-nav button.active .icon{filter:drop-shadow(0 0 6px #38e8ffb3)}.command-input textarea{background:var(--bg-soft);border:1px solid var(--line);width:100%;min-height:96px;color:var(--ink);resize:vertical;border-radius:10px;padding:12px;font-family:inherit;font-size:15px}.command-input textarea:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 2px #38e8ff26}.chips{flex-wrap:wrap;gap:8px;margin:10px 0;display:flex}.chip{color:var(--ink);background:#38e8ff0d;border:1px solid #38e8ff38;border-radius:999px;padding:5px 12px;font-size:12px;box-shadow:0 0 10px #38e8ff0f}.chip.active{border-color:var(--primary);color:var(--primary);background:#38e8ff21;box-shadow:0 0 14px #38e8ff4d}.chip.locked{opacity:.45}.chip.locked:after{content:" · P1";font-size:10px}.btn{cursor:pointer;border:none;border-radius:10px;padding:12px 16px;font-family:inherit;font-size:15px;font-weight:600}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{background:linear-gradient(90deg, #18b8d4, var(--primary));color:#032029;width:100%;box-shadow:0 4px 18px #38e8ff6b,0 0 26px #38e8ff38}.btn-pass{background:var(--pass);color:#03291a}.btn-warn{color:var(--warn);border:1px solid var(--warn);background:0 0}.btn-ghost{color:var(--ink-dim);border:1px solid var(--line);background:0 0}.btn-row{gap:10px;display:flex}.btn-row .btn{flex:1}select,input[type=text],input[type=password]{width:100%;color:var(--ink);background:#0a0e1ab3;border:1px solid #38e8ff29;border-radius:10px;padding:10px 12px;font-family:inherit;font-size:14px}select:focus,input[type=text]:focus,input[type=password]:focus{border-color:var(--primary);outline:none;box-shadow:0 0 0 1px #38e8ff59,0 0 16px #38e8ff2e}.field-row{align-items:center;gap:8px;display:flex}.field-label{color:var(--ink-dim);margin:8px 0 4px;font-size:12px}.task-item{border-bottom:1px solid var(--line);cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:11px 4px;display:flex}.task-item:last-child{border-bottom:none}.task-item .title{text-overflow:ellipsis;white-space:nowrap;font-size:14px;overflow:hidden}.task-item .meta{color:var(--ink-dim);font-size:11px}.status-chip{white-space:nowrap;border:1px solid var(--line);color:var(--ink-dim);border-radius:999px;padding:3px 10px;font-size:11px}.status-chip.s-running{color:var(--primary);border-color:#38e8ff80}.status-chip.s-waiting{color:var(--warn);border-color:#ff9b4280}.status-chip.s-sealed{color:var(--seal);border-color:#ede7c980}.status-chip.s-pass{color:var(--pass);border-color:#35f2a080}.status-chip.s-bad{color:var(--danger);border-color:#ff5d6c80}.ring-wrap{flex-direction:column;align-items:center;padding:8px 0 4px;display:flex}.ring-center-title{text-align:center;color:var(--ink);text-shadow:0 0 12px #38e8ff40;font-size:13px;font-weight:600;line-height:1.35}.ring-center-status{text-shadow:0 0 10px;font-size:12px}.ring-node-now{animation:1.5s ease-in-out infinite ringPulse}.ring-labels{gap:14px;margin-top:6px;display:flex}.ring-labels span{color:var(--ink-dim);font-size:11px}.ring-labels span.done{color:var(--pass)}.ring-labels span.now{color:var(--primary);text-shadow:0 0 8px #38e8ffcc}.ring-labels span.bad{color:var(--warn)}@keyframes ringPulse{0%,to{opacity:1}50%{opacity:.45}}.arc-active{animation:1.6s ease-in-out infinite ringPulse}@keyframes orbitSpin{to{transform:rotate(360deg)}}.orbit-particles{animation:60s linear infinite orbitSpin}@keyframes forgeSoftShake{0%,to{transform:translate(0)}20%{transform:translate(-3px)}60%{transform:translate(3px)}}.ring-shake{animation:.26s ease-in-out forgeSoftShake}.stage-strip{justify-content:space-between;align-items:flex-start;display:flex}.stage-cell{flex-direction:column;flex:1;align-items:center;gap:5px;display:flex}.stage-dot{background:var(--line);border-radius:50%;width:12px;height:12px;position:relative}.stage-cell:not(:first-child) .stage-dot:before{content:"";background:var(--line);width:calc(14.2857vw - 20px);max-width:52px;height:2px;position:absolute;top:5px;right:12px}.stage-dot.passed{background:var(--pass);box-shadow:0 0 6px #35f2a099}.stage-dot.running{background:var(--primary);animation:1.2s ease-in-out infinite ringPulse;box-shadow:0 0 8px #38e8ffcc}.stage-dot.failed{background:var(--danger)}.stage-dot.blocked{background:var(--warn)}.stage-dot.skipped{background:var(--ink-dim);opacity:.5}.stage-label{color:var(--ink-dim);white-space:nowrap;font-size:10px}.orbit summary{cursor:pointer;color:var(--ink-dim);justify-content:space-between;align-items:center;font-size:13px;list-style:none;display:flex}.orbit summary::-webkit-details-marker{display:none}.star-orbit{margin:14px auto 4px;position:relative}.orbit-ring{border:1px solid #38e8ff52;border-radius:50%;position:absolute;box-shadow:inset 0 0 28px #38e8ff24,0 0 24px #38e8ff1f}.orbit-ring-inner{border-style:dashed;border-color:#38e8ff2e}.orbit-rotor{transform-origin:50%;animation:72s linear infinite orbitSpin;position:absolute;inset:0}.orbit-node{border-radius:50%;width:64px;height:64px;margin:-32px 0 0 -32px;position:absolute}.orbit-node-inner{background:radial-gradient(circle at 50% 35%,#38e8ff1a,#0b1224db 72%);border:1px solid #38e8ff4d;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:1px;width:100%;height:100%;animation:72s linear infinite reverse orbitSpin;display:flex;box-shadow:0 0 13px #38e8ff1f}.orbit-node-name{color:var(--ink);font-size:13px;font-weight:600}.orbit-node-role{color:var(--ink-dim);opacity:.7;font-size:9px}.orbit-node.lit .orbit-node-inner{border-color:var(--violet);background:#7a5cff29;box-shadow:0 0 14px #7a5cff73,0 0 22px #38e8ff1f}.orbit-node.lit .orbit-node-name{color:var(--ink)}.orbit-core{background:radial-gradient(circle,#ede7c91f,#0b1020e6 70%);border:1px solid #ede7c94d;border-radius:50%;flex-direction:column;justify-content:center;align-items:center;gap:2px;width:76px;height:76px;margin:-38px 0 0 -38px;display:flex;position:absolute;top:50%;left:50%}.orbit-core.lit{border-color:#ede7c9a6;box-shadow:0 0 22px #ede7c94d,inset 0 0 12px #38e8ff26}.orbit-core-name{color:var(--seal);letter-spacing:1px;font-size:15px;font-weight:700}.orbit-core-role{color:var(--ink-dim);font-size:9px}.event-log{flex-direction:column;gap:6px;max-height:180px;font-size:12px;display:flex;overflow-y:auto}.event-line{color:var(--ink-dim);gap:8px;display:flex}.event-line .t{color:var(--violet);font-variant-numeric:tabular-nums;flex-shrink:0}.action-bar{padding-top:4px;position:sticky;bottom:0}.kv{border-bottom:1px dashed var(--line);justify-content:space-between;padding:6px 0;font-size:13px;display:flex}.kv:last-child{border-bottom:none}.kv .k{color:var(--ink-dim)}.seal-card{background:radial-gradient(300px 120px at 50% 0%, #ede7c914, transparent 70%), var(--card);border:1px solid #ede7c966}.seal-card.fail{border-color:#ff5d6c73}.seal-card.blocked{border-color:#ff9b4273}.seal-verdict{letter-spacing:1px;text-align:center;margin:4px 0 8px;font-size:19px;font-weight:700}.seal-verdict.pass{color:var(--pass)}.seal-verdict.fail{color:var(--danger)}.seal-verdict.blocked{color:var(--warn)}.seal-verdict.review{color:var(--seal)}.seal-summary{color:var(--ink-dim);text-align:center;font-size:13px}.failcode{letter-spacing:1px;text-align:center;color:var(--danger);margin:2px 0 6px;font-size:18px;font-weight:700}.tool-summary{grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px;display:grid}.tool-stat{border:1px solid var(--line);text-align:center;background:var(--bg-soft);border-radius:10px;padding:8px 0}.tool-stat .n{font-size:18px;font-weight:700}.tool-stat .l{color:var(--ink-dim);margin-top:2px;font-size:10px}.tool-stat.pass .n{color:var(--pass)}.tool-stat.run .n{color:var(--primary)}.tool-stat.fail .n{color:var(--danger)}.tool-stat.block .n{color:var(--warn)}.ledger-item{border-bottom:1px solid var(--line);align-items:baseline;gap:10px;padding:8px 0;font-size:12px;display:flex}.ledger-item:last-child{border-bottom:none}.ledger-item .seq{color:var(--violet);font-variant-numeric:tabular-nums;min-width:26px}.ledger-item .type{color:var(--primary);min-width:86px}.ledger-item .hash{color:var(--ink-dim);margin-left:auto;font-family:ui-monospace,Consolas,monospace;font-size:10px}.diff-pre{border:1px solid var(--line);white-space:pre;max-height:320px;color:var(--ink-dim);background:#060910;border-radius:10px;padding:10px;font-family:ui-monospace,Consolas,monospace;font-size:11px;overflow:auto}.badge{border-radius:6px;padding:2px 8px;font-size:11px;display:inline-block}.badge.ok{color:var(--pass);background:#35f2a01f}.badge.bad{color:var(--danger);background:#ff5d6c1f}.badge.warn{color:var(--warn);background:#ff9b421f}.empty{text-align:center;color:var(--ink-dim);padding:28px 0;font-size:13px}.muted{color:var(--ink-dim);font-size:12px}.luwu-governance-card{margin-bottom:12px}.luwu-governance-head{align-items:center;gap:8px;display:flex}.luwu-governance-chip{color:#7aa2f7;background:#7aa2f71f;border:1px solid #7aa2f773;border-radius:999px;padding:1px 9px;font-size:11px}.luwu-governance-refresh{color:inherit;background:0 0;border:1px solid #ffffff2e;border-radius:8px;margin-left:auto;padding:2px 10px;font-size:11px}.luwu-governance-body{flex-direction:column;gap:4px;margin-top:8px;font-size:13px;display:flex}.luwu-governance-num{color:#7aa2f7;margin-right:4px;font-size:16px;font-weight:700}.luwu-governance-muted{opacity:.65;margin-top:6px;font-size:12px;line-height:1.5}.bp-meta{color:var(--ink-dim);flex-wrap:wrap;align-items:center;gap:4px 12px;margin-bottom:10px;font-size:12px;display:flex}.bp-badge-warn{color:var(--warn);background:#ff9b421f;border:1px solid #ff9b4280;border-radius:999px;padding:1px 9px;font-size:11px}.bp-warnings{color:var(--warn);margin-bottom:8px;font-size:12px;line-height:1.5}.bp-error{color:var(--danger);word-break:break-all;margin-top:8px;font-size:13px}.bp-hint{color:var(--ink-dim);margin:6px 0 2px;font-size:12px;line-height:1.5}.bp-counter{color:var(--ink-dim);margin-left:8px;font-weight:400}.bp-pillar{border:1px solid var(--line);background:var(--bg-soft);border-radius:10px;margin-bottom:8px;overflow:hidden}.bp-pillar.open{border-color:var(--violet)}.bp-pillar-head{width:100%;color:var(--ink);text-align:left;background:0 0;border:none;align-items:center;gap:8px;padding:10px 12px;font-size:14px;display:flex}.bp-pillar-index{color:var(--primary);letter-spacing:1px;font-size:11px}.bp-pillar-name{flex:1;min-width:0;font-weight:600}.bp-pillar-chevron{color:var(--ink-dim);font-size:12px}.bp-pillar-peek{color:var(--ink-dim);white-space:nowrap;text-overflow:ellipsis;padding:0 12px 10px;font-size:12px;overflow:hidden}.bp-pillar-body{padding:0 12px 12px;font-size:13px}.bp-pillar-body p{margin:0 0 8px}.bp-pillar-body ul{color:var(--ink-dim);margin:4px 0 10px;padding-left:18px}.bp-pillar-body li{margin-bottom:2px}
