/* V3: compact workspace, direct navigation, restrained fluid backgrounds. */
html[data-odys-cockpit] .oc-replaced{display:none!important}
/* ===== 站点外壳：侧栏精简 =====
   用 CSS 在首屏就隐藏（不经过 JS），否则刷新瞬间会先渲染出来再被脚本藏掉，肉眼就是闪一下。
   侧栏容器的 data-slot 是稳定的（[data-slot=sidebar-menu-item] / sidebar-group / sidebar-group-label）。
   带 href 的三项走 CSS；「聊天」是没有 href 的可折叠按钮，只能由 JS 隐藏（见 cockpit-effects.js 的同步观察器）。 */
html[data-odys-cockpit] [data-slot="sidebar-menu-item"]:has(> a[href^="/playground"]),
html[data-odys-cockpit] [data-slot="sidebar-menu-item"]:has(> a[href^="/usage-logs/audit"]),
html[data-odys-cockpit] [data-slot="sidebar-menu-item"]:has(> a[href^="/usage-logs/task"]){display:none!important}
/* cockpit.css 里 `header{background-color:rgba(9,18,13,.86)}` 本意是给顶部导航条（fixed + 含 nav），
   但也会命中页面内容里的 <header>（模型广场首屏就包在 header 里），于是渲染出一个硬边的方块。
   这里把背景限定回「含 nav 的导航条」，内容区的 header 一律透明。 */
html[data-odys-cockpit] header:not(:has(nav)){background-color:transparent!important}
/* ===== 全站一致性：顶部导航条在每一页都停在同一个位置 =====
   1) 滚动条：有的页面够长有竖滚动条（clientWidth 1502）、有的没有（1512），居中的导航条会左右跳 5px；
      用 scrollbar-gutter 常驻预留，所有页面视口宽度一致。
   2) 控制台用的是另一套顶栏（sticky、高度取 --app-header-height=3rem、内容满宽只留 8px 内边距），
      与站点导航条（fixed、64px、1280 居中 + 24px 内边距）不是一条，切页时导航整体跳位。
      这里把控制台顶栏对齐成同高同宽：改高度变量（侧栏的 top 也用它，会一起跟着走）+ 内层居中。 */
html[data-odys-cockpit]{--app-header-height:4rem;scrollbar-gutter:stable;overflow-y:scroll}
html[data-odys-cockpit] header:has([data-slot="sidebar-trigger"])>div{max-width:1280px;margin:0 auto;padding-left:24px;padding-right:24px}
html[data-odys-cockpit] .oc-workspace{--oc-dim:#9dabA4;--oc-line:#ffffff14;color:#edf3ef;min-width:0;margin:0 0 20px;font:14px/1.55 Inter,"Microsoft YaHei UI",system-ui,sans-serif}
html[data-odys-cockpit] .odys-home .oc-workspace{max-width:1220px;margin:auto;padding:100px 28px 40px}
.oc-workspace *{box-sizing:border-box}.oc-workspace button,.oc-workspace input{font:inherit}.oc-workspace button{cursor:pointer}
.oc-title{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}.oc-title small,.oc-section-title small{font-size:9px;letter-spacing:.15em;color:#83a390}.oc-title h2{font-size:25px;font-weight:600;letter-spacing:-.03em;line-height:1.3;margin:5px 0}.oc-title p{margin:0;color:var(--oc-dim);font-size:12px}.oc-top-actions{display:flex;gap:10px;align-items:center}.oc-top-actions button,.oc-endpoint button,.oc-protocols button{border:1px solid var(--oc-line);border-radius:8px;background:#ffffff04;color:#d6e0d9;padding:8px 11px;min-height:36px;font-size:11px}.oc-primary{display:inline-flex;align-items:center;justify-content:center;min-height:36px;padding:8px 14px;border:1px solid #478361;border-radius:8px;background:#244c34;color:#e2f3e9;text-decoration:none;font-size:12px;white-space:nowrap}
.oc-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;margin-bottom:20px}.oc-fluid{position:relative;isolation:isolate;overflow:hidden;min-height:108px;border-radius:16px;border:1px solid rgba(126,255,229,.4);box-shadow:inset 0 1px 0 rgba(219,255,247,.22);background:radial-gradient(ellipse at 100% 40%,#136c75,transparent 85%),#12211c;clip-path:inset(0 round 16px)}.oc-fluid:first-child{background:linear-gradient(145deg,#7d9393,#c9d5d2);color:#10231d}.oc-fluid:not(:first-child){background:#111b16}.oc-fluid canvas{position:absolute;inset:0;width:100%;height:100%;z-index:0;display:block;border-radius:inherit;pointer-events:none}.oc-fluid:not(:first-child)::after{content:'';position:absolute;inset:0;z-index:1;border-radius:inherit;background:linear-gradient(90deg,rgba(1,12,7,.5),transparent 85%);pointer-events:none}.oc-fluid-content{position:relative;z-index:2;padding:12px 18px;display:flex;flex-direction:column;gap:4px;text-shadow:0 1px 10px rgba(0,0,0,.3)}.oc-fluid-content>span{font-size:13px;color:inherit}.oc-fluid-content>strong{font-size:30px;font-weight:500;line-height:1.15;letter-spacing:0;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}.oc-fluid-content small{font-size:11px;color:inherit;opacity:.85}.oc-fluid[data-renderer=fallback]{background:linear-gradient(120deg,#142019,#213c30)}
.oc-board{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(300px,.8fr);align-items:start;gap:18px;margin-bottom:22px}.oc-actions,.oc-guide,.oc-models{padding:20px;border:1px solid var(--oc-line);border-radius:12px;background:#0f1813}.oc-section-title{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:15px}.oc-section-title h3{font-size:16px;font-weight:600;margin:3px 0 0}.oc-section-title>a{color:#a4cdb4;font-size:11px;text-decoration:none}.oc-muted{color:var(--oc-dim);font-size:11px;line-height:1.7;margin:10px 0}.oc-section-title .oc-muted{margin:0}
.oc-functional-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 14px}.oc-functional-grid a{display:flex;align-items:center;gap:10px;min-height:69px;padding:10px 4px;border-top:1px solid #ffffff0d;text-decoration:none;color:#dce8df;border-radius:0}.oc-functional-grid a>span:nth-child(2){min-width:0;flex:1}.oc-functional-grid b,.oc-functional-grid small{display:block}.oc-functional-grid b{font-size:12px;font-weight:500}.oc-functional-grid small{font-size:10px;color:var(--oc-dim);margin-top:3px}.oc-functional-mark{display:grid;place-items:center;width:30px;height:32px;color:#88b69a;font-size:18px;flex-shrink:0}.oc-arrow{color:#869d8d;font-size:12px}
.oc-guide{scroll-margin-top:20px}.oc-endpoint{display:flex;gap:9px;align-items:center;justify-content:space-between;padding:10px;border:1px solid #ffffff17;border-radius:8px;background:#080f0b}.oc-endpoint code{font:11px/1.6 ui-monospace,monospace;color:#b3d7bf;overflow-wrap:anywhere;min-width:0}.oc-endpoint button{padding:5px 8px;min-height:30px;white-space:nowrap;font-size:10px}.oc-examples{border-top:1px solid #ffffff10;padding-top:10px;margin-top:10px}.oc-examples summary{cursor:pointer;color:#afc2b6;font-size:11px}.oc-protocols{display:flex;gap:5px;flex-wrap:wrap;margin:12px 0 8px}.oc-protocols button{font-size:10px;padding:6px 8px;min-height:30px}.oc-protocols [aria-pressed=true]{background:#294c36;border-color:#62876f}.oc-protocols button:last-child{margin-left:auto}.oc-code{max-width:100%;overflow-x:auto;white-space:pre-wrap;overflow-wrap:anywhere;background:#080e0b;border:1px solid #ffffff0f;border-radius:8px;padding:12px;color:#b1d6bd;font:10px/1.8 ui-monospace,monospace;margin:0}.oc-copy-status{font-size:10px;min-height:14px;color:#96caaa;margin:8px 0 0}
.oc-models{margin:0}.oc-search{display:flex;align-items:center;gap:10px;padding:6px 12px;border:1px solid #ffffff1c;border-radius:8px;background:#0b120e;margin-bottom:12px}.oc-search input{width:100%;min-width:0;flex:1;border:0!important;background:transparent!important;font-size:12px!important;min-height:30px;outline:none}.oc-model-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0 20px;color:var(--oc-dim);font-size:12px}.oc-model-list a{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 2px;border-top:1px solid #ffffff0d;text-decoration:none;color:#dce4de;min-width:0}.oc-model-list b{font-size:11px;overflow-wrap:anywhere;font-weight:400}.oc-model-list span{font-size:9px;color:#849f8d;white-space:nowrap}
@media(hover:hover) and (pointer:fine){.oc-functional-grid a:hover,.oc-model-list a:hover{background:#ffffff04;color:#c5efd4}.oc-primary:hover{background:#315e41}.oc-top-actions button:hover,.oc-endpoint button:hover,.oc-protocols button:hover{border-color:#6e917a}}
@media(max-width:1050px){.oc-board{grid-template-columns:minmax(0,1fr) minmax(260px,.85fr)}.oc-functional-grid{grid-template-columns:1fr}.oc-functional-grid a{min-height:50px}.oc-fluid-content{padding:13px}.oc-fluid-content>strong{font-size:23px}}
@media(max-width:760px){html[data-odys-cockpit] .odys-home .oc-workspace{padding:85px 14px 24px}.oc-title{align-items:flex-start;gap:12px;flex-direction:column}.oc-title h2{font-size:23px}.oc-top-actions{width:100%;justify-content:space-between}.oc-stats{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin-bottom:16px}.oc-fluid{min-height:94px}.oc-fluid-content{padding:12px}.oc-board{grid-template-columns:1fr;gap:14px;margin-bottom:16px}.oc-actions,.oc-guide,.oc-models{padding:16px}.oc-functional-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 10px}.oc-functional-grid a{min-height:64px;gap:6px}.oc-functional-mark{width:20px;font-size:16px}.oc-functional-grid small{font-size:9px}.oc-model-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:0 12px}.oc-model-list a{display:block}.oc-model-list b,.oc-model-list span{display:block}.oc-model-list span{margin-top:4px}.oc-section-title .oc-muted{font-size:9px}}
@media(hover:none) and (pointer:coarse) and (max-width:1049px){.oc-fluid canvas{filter:blur(.35px)}}
.oc-board>*{min-width:0}.oc-stats>*{min-width:0}.oc-endpoint{max-width:100%}.oc-guide,.oc-actions,.oc-models{min-width:0}

/* ===== V3.1 主页首屏：左文案 + 右 3D 环绕卡片 ===== */
html[data-odys-cockpit] .ocx-hero{display:grid;grid-template-columns:minmax(300px,1fr) minmax(0,1.18fr);gap:clamp(16px,2.2vw,32px);align-items:center;margin:0 0 22px}
html[data-odys-cockpit] .ocx-copy{min-width:0}
html[data-odys-cockpit] .ocx-badge{display:inline-flex;align-items:center;gap:8px;padding:7px 13px;border-radius:999px;font-size:11px;color:#bff3d6;border:1px solid #00e67647;background:#00e67612}
html[data-odys-cockpit] .ocx-badge b{color:#fff;font-weight:600}
html[data-odys-cockpit] .ocx-hero h1{margin:16px 0 0;font-size:clamp(28px,3.2vw,46px);line-height:1.12;letter-spacing:-.02em;font-weight:700}
html[data-odys-cockpit] .ocx-hero h1 em{font-style:normal;background:linear-gradient(100deg,#7dffb4,#5b8cff 55%,#a78bfa);-webkit-background-clip:text;background-clip:text;color:transparent}
html[data-odys-cockpit] .ocx-lede{margin:14px 0 0;max-width:32em;color:var(--oc-dim);font-size:13px;line-height:1.75}
html[data-odys-cockpit] .ocx-cta{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
html[data-odys-cockpit] .ocx-ghost{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:0 16px;border-radius:10px;font-size:12px;text-decoration:none;color:#d6e0d9;border:1px solid var(--oc-line);background:#ffffff06}
html[data-odys-cockpit] .ocx-ghost:hover{background:#ffffff12;color:#fff}
html[data-odys-cockpit] .ocx-apps{margin-top:22px}
html[data-odys-cockpit] .ocx-apps small{display:block;color:#7f9188;font-size:10px;margin-bottom:8px}
html[data-odys-cockpit] .ocx-chips{display:flex;flex-wrap:wrap;gap:8px}
html[data-odys-cockpit] .ocx-chip{display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 13px;border-radius:10px;font-size:11px;color:#dbe6df;border:1px solid var(--oc-line);background:linear-gradient(160deg,#ffffff12,#ffffff05)}
html[data-odys-cockpit] .ocx-chip i{width:14px;height:14px;border-radius:5px;background:linear-gradient(135deg,#00e676,#5b8cff)}
html[data-odys-cockpit] .ocx-chip.more{color:var(--oc-dim)}

html[data-odys-cockpit] .ocx-stagewrap{border-radius:20px;border:1px solid var(--oc-line);overflow:visible;background:radial-gradient(ellipse at 50% 52%,#00e67614,transparent 60%),linear-gradient(160deg,#121a16f2,#060a08fa);box-shadow:0 26px 60px #00000059,inset 0 1px 0 #ffffff10}
html[data-odys-cockpit] .ocx-bar{position:relative;z-index:150;display:flex;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid #ffffff0f;border-radius:20px 20px 0 0}
html[data-odys-cockpit] .ocx-tag{padding:6px 10px;border-radius:9px;font-size:10px;color:#c9f6dc;background:#00e6761a;border:1px solid #00e67642}
html[data-odys-cockpit] .ocx-hint{font-size:10px;color:#8b9d94;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0;text-shadow:0 1px 2px #000000b3}
/* 注册入口（右上角「登录」左侧 + 登录页表单下方）：原版只有登录，且 /sign-in 里的注册链接被自用模式隐藏 */
html[data-odys-cockpit] .ocx-reg{display:inline-flex;align-items:center;height:32px;padding:0 12px;margin-right:8px;border-radius:9px;font-size:12px;color:#c9f6dc;background:#00e6761a;border:1px solid #00e67642;text-decoration:none;white-space:nowrap}
html[data-odys-cockpit] .ocx-reg:hover{background:#00e6762e;color:#fff;text-decoration:none}
html[data-odys-cockpit] .ocx-signup{margin:14px 0 0;font-size:12.5px;color:#9dabA4;text-align:center}
html[data-odys-cockpit] .ocx-signup a{color:#8ef0bd;margin-left:4px}
html[data-odys-cockpit] .ocx-btns{margin-left:auto;display:flex;gap:6px}
html[data-odys-cockpit] .ocx-btn{height:30px;min-width:30px;padding:0 10px;border-radius:9px;font-size:10px;color:#c3cfdb;border:1px solid var(--oc-line);background:#ffffff0a}
html[data-odys-cockpit] .ocx-btn:hover{color:#fff;border-color:#00e67657;background:#00e6761a}
html[data-odys-cockpit] .ocx-btn[aria-pressed="true"]{color:#04150c;background:linear-gradient(135deg,#7dffb4,#00d96b);border-color:transparent}
html[data-odys-cockpit] .ocx-stage{position:relative;height:clamp(300px,38vh,362px);perspective:1100px;overflow:visible;cursor:grab;touch-action:pan-y;user-select:none}
html[data-odys-cockpit] .ocx-stage.dragging{cursor:grabbing}
html[data-odys-cockpit] .ocx-bg{position:absolute;inset:0;overflow:hidden;border-radius:inherit;pointer-events:none}
html[data-odys-cockpit] .ocx-bg::before{content:"";position:absolute;left:4%;right:2%;bottom:3%;height:46%;background:linear-gradient(#00e6760f 1px,transparent 1px),linear-gradient(90deg,#00e6760b 1px,transparent 1px);background-size:32px 24px;transform:perspective(430px) rotateX(67deg);transform-origin:bottom;-webkit-mask-image:linear-gradient(to top,#000,transparent 92%);mask-image:linear-gradient(to top,#000,transparent 92%);opacity:.5;pointer-events:none}
html[data-odys-cockpit] .ocx-floor{position:absolute;left:50%;top:62%;width:min(78%,420px);height:96px;transform:translate(-50%,-50%) rotateX(72deg);border-radius:50%;background:radial-gradient(ellipse,#00e6762b,transparent 70%);animation:ocxFloor 6.4s ease-in-out infinite}
html[data-odys-cockpit] .ocx-core{position:absolute;left:50%;top:52%;width:92px;height:92px;transform:translate(-50%,-50%);border-radius:50%;border:1px solid #00e67638;background:radial-gradient(circle at 42% 38%,#d7fff433,#00e67629 24%,#00e6760d 54%,transparent 74%);box-shadow:0 0 50px #00e6763d,inset 0 0 32px #00e6761f;pointer-events:none}
html[data-odys-cockpit] .ocx-core::before,html[data-odys-cockpit] .ocx-core::after{content:"";position:absolute;inset:15px;border-radius:50%;border:1px dashed #00e67642;animation:ocxSpin 11s linear infinite}
html[data-odys-cockpit] .ocx-core::after{inset:28px;border-style:solid;animation-direction:reverse;animation-duration:7s}
html[data-odys-cockpit] .ocx-ring{position:absolute;left:50%;top:53%;width:min(84%,540px);height:128px;border-radius:50%;border:1px solid #00e67626;transform:translate(-50%,-50%) rotate(-9deg);pointer-events:none}
html[data-odys-cockpit] .ocx-ring.b{width:min(64%,410px);height:100px;border-color:#5b8cff2e;transform:translate(-50%,-50%) rotate(11deg)}
html[data-odys-cockpit] .ocx-gauge{position:absolute;left:-18px;top:-10px;z-index:120;display:flex;flex-wrap:wrap;align-items:center;column-gap:12px;width:200px;padding:10px 12px;border-radius:12px;border:1px solid #ffffff29;background:linear-gradient(145deg,#ffffff29,#ffffff09);transform:rotateY(14deg) rotateZ(-2.5deg);pointer-events:none;backdrop-filter:blur(10px)}
html[data-odys-cockpit] .ocx-gauge span{display:block;font-size:9px;line-height:1.15;color:#cfe8dc}
html[data-odys-cockpit] .ocx-gauge b{display:block;font-size:22px;line-height:1;letter-spacing:-.02em;margin-top:4px}
html[data-odys-cockpit] .ocx-gauge small{display:block;font-size:8px;line-height:1.25;color:#a4b6ac;margin-top:3px}
html[data-odys-cockpit] .ocx-gauge span.ocx-off{font-size:14px;line-height:1.1;font-weight:700;letter-spacing:.01em;color:#06170e;background:linear-gradient(135deg,#7dffb4,#00d96b);border-radius:8px;padding:4px 9px;white-space:nowrap;box-shadow:0 0 18px #00e67659}
html[data-odys-cockpit] .ocx-gauge i{flex:1 0 100%;height:3px;background:#ffffff24;margin-top:8px;border-radius:3px}
html[data-odys-cockpit] .ocx-gauge em{display:block;height:100%;background:var(--accent,#00e676);border-radius:3px}
html[data-odys-cockpit] .ocx-scene{position:absolute;left:50%;top:51%;width:0;height:0;transform-style:preserve-3d;will-change:transform}
html[data-odys-cockpit] .ocx-card{position:absolute;width:var(--ocx-w,146px);height:var(--ocx-h,198px);margin:calc(var(--ocx-h,198px)/-2) 0 0 calc(var(--ocx-w,146px)/-2);padding:9px;border-radius:12px;text-align:left;cursor:pointer;transform-style:preserve-3d;color:#23302a;border:1px solid #ffffff9e;background:linear-gradient(150deg,#f6faf8f2,#b2bcb7b8);box-shadow:0 16px 28px #0000006b,inset 0 1px 0 #ffffffe6;backdrop-filter:blur(10px);transition:box-shadow .25s,border-color .25s;will-change:transform,opacity}
html[data-odys-cockpit] .ocx-card:hover{box-shadow:0 26px 42px #0000008c,0 0 16px #ffffff24;border-color:#fff}
html[data-odys-cockpit] .ocx-card.active{color:#05170d;border-color:#00ff87;background:linear-gradient(150deg,#00ff84f2,#008f45cc);box-shadow:0 0 38px #00e67680,0 22px 42px #00000080}
html[data-odys-cockpit] .ocx-top{display:flex;align-items:center;gap:5px;min-height:15px}
html[data-odys-cockpit] .ocx-dot{width:5px;height:5px;border-radius:50%;background:#0f9d58;flex:0 0 auto}
html[data-odys-cockpit] .ocx-vendor{font-size:8px;letter-spacing:.05em;color:#4b5a52;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
html[data-odys-cockpit] .ocx-caps{margin-left:auto;display:flex;gap:3px;flex-wrap:nowrap;min-width:0;overflow:hidden}
html[data-odys-cockpit] .ocx-cap{display:inline-block;flex:0 1 auto;padding:2px 5px;border-radius:6px;font-size:7.5px;background:#00000014;color:#3d4a44;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[data-odys-cockpit] .ocx-name{margin-top:8px;font-size:13px;font-weight:700;line-height:1.3;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:normal;overflow-wrap:break-word}
html[data-odys-cockpit] .ocx-desc{margin-top:7px;font-size:9px;line-height:1.5;color:#48574f;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
html[data-odys-cockpit] .ocx-bot{position:absolute;left:9px;right:9px;bottom:8px}
html[data-odys-cockpit] .ocx-spec{font-size:8.5px;color:#6b7a72}
html[data-odys-cockpit] .ocx-price{display:flex;justify-content:space-between;gap:6px;margin-top:6px;padding-top:5px;font-size:9px;color:#3f4d46;border-top:1px solid #0000001f}
html[data-odys-cockpit] .ocx-card.active .ocx-vendor,html[data-odys-cockpit] .ocx-card.active .ocx-desc,html[data-odys-cockpit] .ocx-card.active .ocx-spec,html[data-odys-cockpit] .ocx-card.active .ocx-price{color:#0b2a19}
html[data-odys-cockpit] .ocx-card.active .ocx-dot{background:#fff}
html[data-odys-cockpit] .ocx-card.active .ocx-price{border-top-color:#0000003d}
html[data-odys-cockpit] .ocx-card.active .ocx-cap{background:#ffffff57;color:#05170d}
html[data-odys-cockpit] .ocx-foot{position:relative;z-index:150;display:flex;align-items:center;gap:12px;padding:10px 14px;border-top:1px solid #ffffff0f;border-radius:0 0 20px 20px;font-size:11px;color:var(--oc-dim);text-shadow:0 1px 2px #000000b3}
html[data-odys-cockpit] .ocx-foot b{color:#eaf3ee}
html[data-odys-cockpit] .ocx-foot a{margin-left:auto;color:#8ef0bd;text-decoration:none}
html[data-odys-cockpit] .ocx-foot a:hover{text-decoration:underline}
@keyframes ocxSpin{to{transform:rotate(360deg)}}
@keyframes ocxFloor{0%,100%{opacity:.6;transform:translate(-50%,-50%) rotateX(72deg) scale(.95)}50%{opacity:1;transform:translate(-50%,-50%) rotateX(72deg) scale(1.07)}}
@media (max-width:1060px){
  html[data-odys-cockpit] .ocx-hero{grid-template-columns:1fr}
  html[data-odys-cockpit] .ocx-stagewrap{--ocx-w:124px;--ocx-h:168px}
  html[data-odys-cockpit] .ocx-stage{height:clamp(286px,38vh,300px)}
  html[data-odys-cockpit] .ocx-hint{display:none}
  html[data-odys-cockpit] .ocx-gauge{width:182px;left:-10px;top:-8px;padding:9px 11px;column-gap:8px}
  html[data-odys-cockpit] .ocx-gauge b{font-size:19px}
  html[data-odys-cockpit] .ocx-gauge small{font-size:7.5px}
  html[data-odys-cockpit] .ocx-gauge span.ocx-off{font-size:12.5px;padding:3px 8px}
  html[data-odys-cockpit] .ocx-hero h1{font-size:clamp(26px,5.6vw,36px)}
}
/* 手机：整个环绕模块再缩小一档，并精简工具栏与信息条 */
@media (max-width:640px){
  html[data-odys-cockpit] .ocx-stagewrap{--ocx-w:90px;--ocx-h:124px;border-radius:16px}
  html[data-odys-cockpit] .ocx-stage{height:clamp(252px,34vh,300px)}
  html[data-odys-cockpit] .ocx-gauge{display:none}
  html[data-odys-cockpit] .ocx-btns [data-ocx-step],html[data-odys-cockpit] .ocx-btns [data-ocx-reset]{display:none}
  html[data-odys-cockpit] .ocx-bar{padding:9px 10px;border-radius:16px 16px 0 0}
  html[data-odys-cockpit] .ocx-tag{font-size:9px;padding:5px 8px}
  html[data-odys-cockpit] .ocx-btn{height:28px;min-width:28px;font-size:9px;padding:0 8px}
  html[data-odys-cockpit] .ocx-name{margin-top:6px;font-size:10px;line-height:1.24;hyphens:auto}
  html[data-odys-cockpit] .ocx-desc{font-size:7.5px;line-height:1.4;-webkit-line-clamp:2;margin-top:5px}
  html[data-odys-cockpit] .ocx-caps,html[data-odys-cockpit] .ocx-spec{display:none}   /* 手机上只留厂商/名字/简介/价格 */
  html[data-odys-cockpit] .ocx-price{font-size:8px;margin-top:0;padding-top:0;border-top:0}
  html[data-odys-cockpit] .ocx-foot{flex-wrap:wrap;gap:2px 10px;padding:9px 11px;font-size:10px;border-radius:0 0 16px 16px}
  html[data-odys-cockpit] .ocx-foot [data-ocx-meta]{display:none}
}
@media (prefers-reduced-motion:reduce){
  html[data-odys-cockpit] .ocx-core::before,html[data-odys-cockpit] .ocx-core::after,html[data-odys-cockpit] .ocx-floor{animation:none}
}

/* ===================================================================================
   浅色模式（2026-09-13）
   原版把主题选择存在 cookie `vite-ui-theme`（light/dark/system），并在 <html> 上打 light/dark 类。
   但 cockpit.css 把所有设计 token 无条件改成了深色值、cockpit.js 又把 `dark` 强贴在 #root 上，
   所以点「切换主题」没有任何反应。这里：JS 负责让 #root 跟随 <html>（见 cockpit-effects.js 的 syncThemeClass），
   CSS 负责在 `.light` 下换一套配色 —— token 用同等或更高优先级覆盖，硬编码颜色逐个覆写。
   注意：本文件在 cockpit.css 之后注入，同优先级下后者生效，所以这些覆盖不需要 !important 也能赢。 */
html[data-odys-cockpit].light,
html[data-odys-cockpit].light #root,
html[data-odys-cockpit].light [data-theme-preset]{
  color-scheme:light;
  --background:#f7faf8; --foreground:#0f1c15;
  --card:#ffffff; --card-foreground:#0f1c15;
  --popover:#ffffff; --popover-foreground:#0f1c15;
  --primary:#12b866; --primary-foreground:#ffffff;
  --secondary:#eef3f0; --secondary-foreground:#1f3027;
  --muted:#eef3f0; --muted-foreground:#5b6b62;
  --accent:#e6f5ec; --accent-foreground:#123527;
  --border:#0d1c1424; --input:#0d1c1433; --ring:#12b866;
  --destructive:#d94b4b; --destructive-foreground:#ffffff;
  --success:#0f9d58; --success-foreground:#ffffff;
  --warning:#a9761a; --warning-foreground:#ffffff;
  --info:#0b7f96; --info-foreground:#ffffff;
  --neutral:#6b7a72; --neutral-foreground:#ffffff;
  --sidebar:#ffffff; --sidebar-foreground:#1f3027;
  --sidebar-primary:#12b866; --sidebar-primary-foreground:#ffffff;
  --sidebar-accent:#e6f5ec; --sidebar-accent-foreground:#123527;
  --sidebar-border:#0d1c141f; --sidebar-ring:#12b866;
  --chart-1:#12b866; --chart-2:#0b7f96; --chart-3:#5b8a74; --chart-4:#7a63d6; --chart-5:#a9761a;
  --overview-accent-1:#12b866; --overview-accent-2:#0b7f96; --overview-accent-3:#5b8a74;
  --table-header:#f1f5f3; --table-header-hover:#e8efeb;
  --skeleton-base:#e8efeb; --skeleton-highlight:#f7faf8;
  --odys-glass:linear-gradient(145deg,rgba(255,255,255,.94),rgba(243,248,245,.9));
  --odys-shadow:0 18px 44px #0d1c1412,inset 0 1px 0 #ffffff;
}
/* —— 原版外壳（cockpit.css 里硬编码的深色）—— */
html[data-odys-cockpit].light body{background:radial-gradient(ellipse at 62% 5%,#12b86610,transparent 45%),#f7faf8;color:var(--foreground)}
html[data-odys-cockpit].light ::selection{background:#12b86633;color:#0f1c15}
html[data-odys-cockpit].light header{background:#ffffffe6;border-color:var(--border)}
html[data-odys-cockpit].light [data-slot=sidebar-group-label]{color:#6b7a72}
html[data-odys-cockpit].light [data-slot=sidebar-menu-button][data-active]{background:linear-gradient(100deg,#12b8661f,#ffffff);border-color:#12b8663d;color:#0d3b25}
html[data-odys-cockpit].light [data-slot=sidebar-menu-button][data-active] svg{color:#12b866}
html[data-odys-cockpit].light [data-slot=card]:hover{border-color:#12b8664d}
html[data-odys-cockpit].light [data-slot=card-footer]{background:#0d1c1408}
html[data-odys-cockpit].light :is([data-slot=dialog-content],[data-slot=alert-dialog-content],[data-slot=sheet-content],[data-slot=popover-content],[data-slot=dropdown-menu-content],[data-slot=select-content]){
  background:#fffffff7;color:var(--foreground);border-color:#0d1c1424;box-shadow:0 24px 60px #0d1c141f,inset 0 1px 0 #fff}
html[data-odys-cockpit].light :is(input:not([type=checkbox]):not([type=radio]):not([type=range]),textarea,[data-slot=select-trigger]){
  background-color:#ffffff;color:var(--foreground);border-color:#0d1c1426}
html[data-odys-cockpit].light :is(input,textarea)::placeholder{color:#8a9a91}
html[data-odys-cockpit].light [data-slot=button].bg-primary{background:linear-gradient(135deg,#25d27c,#12b866);color:#fff;border-color:#0f9d5859;box-shadow:0 3px 14px #12b86626,inset 0 1px 0 #ffffff59}
html[data-odys-cockpit].light [data-slot=table-head]{background:#f1f5f3;color:#41544a}
html[data-odys-cockpit].light [data-slot=table-row]{border-color:#0d1c140f}
html[data-odys-cockpit].light [data-slot=table-row]:hover{background:#12b8660d}
html[data-odys-cockpit].light [data-slot=table-row][data-state=selected]{background:#12b8661a}
html[data-odys-cockpit].light [data-slot=tabs-list]{background:#f1f5f3}
html[data-odys-cockpit].light [data-slot=tabs-trigger][data-state=active]{background:#ffffff;color:#0d3b25;box-shadow:0 1px 3px #0d1c141a}
html[data-odys-cockpit].light .odys-login-panel::before{color:#0f9d58}
html[data-odys-cockpit].light .odys-fluid-card{background:linear-gradient(125deg,#dff7e9,#eaf7fb 65%,#e9f7e2);border-color:#12b8663d;box-shadow:0 14px 32px #0d1c1414,inset 0 1px 0 #fff}
html[data-odys-cockpit].light .odys-fluid-card::before{background:radial-gradient(ellipse at 32% 32%,#12b86626,transparent 35%),radial-gradient(ellipse at 72% 65%,#0b7f961f,transparent 35%)}
/* 原版首页（.odys-home）里被主题改黑的白色区块，浅色下要改回浅色 */
html[data-odys-cockpit].light .odys-home :is(.bg-white,.bg-white\/80,.bg-white\/50){background-color:#ffffff}
html[data-odys-cockpit].light .odys-home :is(.text-black,.text-gray-900,.text-neutral-900){color:#0f1c15}
html[data-odys-cockpit].light .odys-home :is(.text-gray-500,.text-neutral-500){color:#5b6b62}
html[data-odys-cockpit].light .odys-home [class*="border-black/"]{border-color:#0d1c1424}
html[data-odys-cockpit].light .odys-home h1 .bg-clip-text{background-image:linear-gradient(110deg,#0f9d58,#0b7f96 55%,#7a63d6)}
html[data-odys-cockpit].light .odys-home .landing-animate-fade-up.rounded-full{color:#0f7a4a;background:#12b86612;border-color:#12b86638}
/* —— 主题自己的工作区（V3）—— */
html[data-odys-cockpit].light .oc-workspace{--oc-dim:#5b6b62;--oc-line:#0d1c1421;color:#0f1c15}
html[data-odys-cockpit].light .oc-title small,html[data-odys-cockpit].light .oc-section-title small{color:#5f8a72}
html[data-odys-cockpit].light .oc-top-actions button,html[data-odys-cockpit].light .oc-endpoint button,html[data-odys-cockpit].light .oc-protocols button{background:#ffffff;color:#2b3a33;border-color:#0d1c1421}
html[data-odys-cockpit].light .oc-primary{background:linear-gradient(135deg,#25d27c,#12b866);color:#fff;border-color:#0f9d5859}
html[data-odys-cockpit].light :is(.oc-actions,.oc-guide,.oc-models){background:#ffffff;border-color:var(--oc-line)}
html[data-odys-cockpit].light .oc-endpoint{background:#f5f8f6;border-color:#0d1c141f}
html[data-odys-cockpit].light .oc-endpoint code{color:#0f7a4a}
html[data-odys-cockpit].light .oc-code{background:#f4f8f5;color:#1d4a33;border-color:#0d1c141a}
html[data-odys-cockpit].light .oc-search{background:#f4f8f5;border-color:#0d1c141f}
html[data-odys-cockpit].light .oc-functional-grid a{color:#22322a;border-color:#0d1c140f}
html[data-odys-cockpit].light .oc-functional-mark{color:#3f8f68}
html[data-odys-cockpit].light .oc-model-list{color:var(--oc-dim)}
html[data-odys-cockpit].light .oc-model-list a{color:#26362e;border-color:#0d1c140f}
html[data-odys-cockpit].light .oc-model-list span{color:#6b7a72}
html[data-odys-cockpit].light .oc-fluid:not(:first-child){background:#ffffff}
html[data-odys-cockpit].light .oc-fluid:not(:first-child)::after{background:linear-gradient(90deg,rgba(255,255,255,.35),transparent 85%)}
/* —— 主页首屏（3D 环绕）—— */
html[data-odys-cockpit].light .ocx-badge{color:#0f7a4a;background:#12b86612;border-color:#12b86638}
html[data-odys-cockpit].light .ocx-badge b{color:#0f1c15}
html[data-odys-cockpit].light .ocx-hero h1 em{background-image:linear-gradient(100deg,#0f9d58,#0b7f96 55%,#7a63d6)}
html[data-odys-cockpit].light .ocx-ghost{color:#2b3a33;background:#ffffff;border-color:#0d1c1421}
html[data-odys-cockpit].light .ocx-ghost:hover{background:#f1f6f3;color:#0f1c15}
html[data-odys-cockpit].light .ocx-apps small{color:#6b7a72}
html[data-odys-cockpit].light .ocx-chip{color:#26362e;background:linear-gradient(160deg,#ffffff,#f4f8f5);border-color:#0d1c1421}
html[data-odys-cockpit].light .ocx-chip.more{color:#5b6b62}
html[data-odys-cockpit].light .ocx-stagewrap{background:radial-gradient(ellipse at 50% 52%,#12b86612,transparent 60%),linear-gradient(160deg,#ffffff,#f3f8f5);box-shadow:0 22px 50px #0d1c1414,inset 0 1px 0 #fff}
html[data-odys-cockpit].light .ocx-bar,html[data-odys-cockpit].light .ocx-foot{border-color:#0d1c1412}
html[data-odys-cockpit].light .ocx-foot{text-shadow:0 1px 2px #ffffffcc}
html[data-odys-cockpit].light .ocx-hint{color:#6b7a72;text-shadow:0 1px 2px #ffffffcc}
html[data-odys-cockpit].light .ocx-reg{color:#0f7a4a;background:#12b86612;border-color:#12b86638}
html[data-odys-cockpit].light .ocx-reg:hover{background:#12b86624;color:#0b3d25}
html[data-odys-cockpit].light .ocx-signup{color:#5b6b62}
html[data-odys-cockpit].light .ocx-signup a{color:#0f9d58}
html[data-odys-cockpit].light .ocx-tag{color:#0f7a4a;background:#12b86612;border-color:#12b86638}
html[data-odys-cockpit].light .ocx-btn{color:#2b3a33;background:#ffffff;border-color:#0d1c1421}
html[data-odys-cockpit].light .ocx-btn:hover{color:#0f1c15;background:#f1f6f3;border-color:#12b8664d}
html[data-odys-cockpit].light .ocx-btn[aria-pressed=true]{color:#03170c;background:linear-gradient(135deg,#7dffb4,#12b866);border-color:transparent}
html[data-odys-cockpit].light .ocx-bg::before{background:linear-gradient(#12b8661a 1px,transparent 1px),linear-gradient(90deg,#12b86614 1px,transparent 1px)}
html[data-odys-cockpit].light .ocx-floor{background:radial-gradient(ellipse,#12b8662b,transparent 70%)}
html[data-odys-cockpit].light .ocx-core{border-color:#12b8663d;background:radial-gradient(circle at 42% 38%,#ffffffb8,#12b86629 24%,#12b86614 54%,transparent 74%);box-shadow:0 0 40px #12b86633,inset 0 0 26px #12b8661f}
html[data-odys-cockpit].light .ocx-core::before,html[data-odys-cockpit].light .ocx-core::after{border-color:#12b8664d}
html[data-odys-cockpit].light .ocx-ring{border-color:#12b86633}
html[data-odys-cockpit].light .ocx-ring.b{border-color:#5b8cff3d}
html[data-odys-cockpit].light .ocx-gauge{border-color:#0d1c1424;background:linear-gradient(145deg,#fffffff2,#eef5f1f2);box-shadow:0 12px 30px #0d1c1414}
html[data-odys-cockpit].light .ocx-gauge span{color:#3d5a4b}
html[data-odys-cockpit].light .ocx-gauge b{color:#0f1c15}
html[data-odys-cockpit].light .ocx-gauge small{color:#6b7a72}
html[data-odys-cockpit].light .ocx-gauge i{background:#0d1c141f}
html[data-odys-cockpit].light .ocx-card{border-color:#0d1c1429;background:linear-gradient(150deg,#fffffff7,#eef3f0e6);box-shadow:0 14px 26px #0d1c1421,inset 0 1px 0 #fff}
html[data-odys-cockpit].light .ocx-card:hover{border-color:#12b86666;box-shadow:0 22px 36px #0d1c1426}
html[data-odys-cockpit].light .ocx-card.active{color:#04170c;border-color:#0f9d58;background:linear-gradient(150deg,#7dffb4f2,#12b866e6);box-shadow:0 0 30px #12b86659,0 18px 34px #0d1c1426}
html[data-odys-cockpit].light .ocx-row,html[data-odys-cockpit].light .ocx-price{color:#55655c}
html[data-odys-cockpit].light .ocx-price{border-top-color:#0d1c141f}
html[data-odys-cockpit].light .ocx-dot{background:#0f9d58}
html[data-odys-cockpit].light .ocx-name{color:#132319}
html[data-odys-cockpit].light .ocx-desc{color:#4a5a51}
html[data-odys-cockpit].light .ocx-spec{color:#6b7a72}
html[data-odys-cockpit].light .ocx-cap{background:#0d1c140f;color:#41544a}
html[data-odys-cockpit].light .ocx-foot b{color:#0f1c15}
html[data-odys-cockpit].light .ocx-foot a{color:#0f7a4a}
