:root{
  --shell:#0d2926;
  --shell-2:#123531;
  --surface:#f5f7f5;
  --sidebar-width:238px;
  --topbar-height:76px;
  --focus:0 0 0 3px rgba(69,156,140,.28);
}

body{overflow:hidden;background:var(--surface)}
button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:0;box-shadow:var(--focus);border-color:#459c8c!important}

/* 登录 */
.auth-gate{padding:28px;background:radial-gradient(circle at 12% 10%,#2d766a 0,#133d38 36%,#071c1a 100%)}
.auth-shell{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(390px,.92fr);width:min(980px,96vw);min-height:560px;overflow:hidden;border:1px solid rgba(255,255,255,.12);border-radius:30px;background:rgba(255,255,255,.98);box-shadow:0 40px 120px rgba(0,0,0,.34)}
.auth-brand-panel{position:relative;display:flex;flex-direction:column;justify-content:space-between;padding:46px;color:#fff;background:linear-gradient(145deg,rgba(14,55,50,.92),rgba(8,32,29,.98)),radial-gradient(circle at 80% 20%,rgba(240,198,78,.28),transparent 35%)}
.auth-brand-panel:after{content:"";position:absolute;right:-80px;bottom:-110px;width:360px;height:360px;border:1px solid rgba(255,255,255,.09);border-radius:50%;box-shadow:0 0 0 54px rgba(255,255,255,.025),0 0 0 108px rgba(255,255,255,.018)}
.auth-brand-lockup,.auth-mobile-brand{display:flex;align-items:center;gap:13px}.auth-brand-lockup strong,.auth-brand-lockup span{display:block}.auth-brand-lockup strong{font-size:18px}.auth-brand-lockup span{margin-top:4px;color:#b9d0cc;font-size:11px}
.auth-brand-mark{background:linear-gradient(145deg,#f3cf60,#dc9a30);color:#173832}
.auth-kicker{font-size:11px;letter-spacing:.22em;color:#f0c64e;font-weight:800}.auth-brand-message{position:relative;z-index:1}.auth-brand-message h2{margin:16px 0;font-size:34px;line-height:1.45;letter-spacing:-.025em}.auth-brand-message p{max-width:420px;margin:0;color:#bdd1ce;line-height:1.8;font-size:14px}
.auth-feature-row{position:relative;z-index:1;display:flex;gap:9px;flex-wrap:wrap}.auth-feature-row span{padding:7px 10px;border:1px solid rgba(255,255,255,.12);border-radius:999px;background:rgba(255,255,255,.05);font-size:10px;color:#d5e2df}
.auth-card{width:auto;padding:58px 52px;border-radius:0;box-shadow:none;background:#fff}.auth-mobile-brand{display:none;margin-bottom:28px}.auth-card h1{margin:10px 0 8px;font-size:30px;letter-spacing:-.02em}.auth-card>p{margin:0;color:var(--muted)}
.auth-card form{gap:16px;margin-top:30px}.auth-field{display:grid;gap:7px}.auth-field[hidden]{display:none!important}.auth-field>span:first-child{font-size:12px;font-weight:700;color:#40514f}.auth-card input{width:100%;height:48px;padding:0 14px;border:1px solid #dce3e0;border-radius:12px;background:#fbfcfb;transition:.18s}.auth-card input:hover{border-color:#b9c8c3}.password-control{position:relative;display:block}.password-control input{padding-right:62px}.password-toggle{position:absolute;right:8px;top:7px;height:34px;padding:0 9px;border:0;border-radius:8px;color:var(--green);background:transparent;cursor:pointer;font-weight:700;font-size:12px}.password-toggle:hover{background:var(--green-soft)}
.auth-submit{height:48px;margin-top:4px}.auth-error{min-height:24px;margin-top:12px}.auth-meta{display:flex;justify-content:space-between;align-items:center;margin-top:18px;padding-top:18px;border-top:1px solid #edf0ee;color:#899793;font-size:10px}.connection-state{display:flex;align-items:center;gap:7px}.connection-state i{width:7px;height:7px;border-radius:50%;background:#58a497;box-shadow:0 0 0 4px #e8f4f1}.connection-state.failed i{background:var(--red);box-shadow:0 0 0 4px #fff0ee}

/* 桌面外壳 */
.app-shell{height:100vh;min-height:0;background:var(--surface)}
.topbar{position:relative;z-index:12;height:var(--topbar-height);padding:0 20px 0 17px;gap:22px;background:#fff;color:var(--ink);border-bottom:1px solid #e4e9e6;box-shadow:0 1px 0 rgba(17,43,38,.02)}
.topbar-brand{display:flex;align-items:center;gap:11px;width:calc(var(--sidebar-width) - 17px);flex:0 0 calc(var(--sidebar-width) - 17px)}.topbar-brand .brand-mark{width:38px;height:38px;border-radius:12px}.topbar-brand-copy strong,.topbar-brand-copy span{display:block}.topbar-brand-copy strong{font-size:15px}.topbar-brand-copy span{margin-top:3px;color:#899793;font-size:10px}
.sidebar-toggle{display:none;width:38px;height:38px;padding:0;border:1px solid var(--line);border-radius:11px;background:#fff;color:var(--ink);cursor:pointer;font-size:17px}
.topbar-context{min-width:220px;flex:1}.topbar-breadcrumb{font-size:11px;color:#81908c}.topbar-breadcrumb strong{color:var(--green)}.topbar-context p{margin:5px 0 0;color:#435451;font-size:13px;font-weight:700}
.summary{flex:0 1 auto;justify-content:flex-end}.summary-chip{min-width:68px;padding:7px 10px;border-color:#e4e9e6;background:#f7f9f8;text-align:center}.summary-chip b{font-size:15px;color:var(--ink)}.summary-chip span{margin-top:2px;color:#81908c;font-size:9px}
.topbar-actions{display:flex;align-items:center;gap:8px}.topbar-action{display:flex;align-items:center;gap:6px;height:38px;padding:0 10px;border:1px solid #e3e8e5;border-radius:11px;background:#fff;color:#53635f;cursor:pointer}.topbar-action:hover{background:#f3f7f5;color:var(--green)}.topbar-action span{font-size:16px}.topbar-action b{font-size:11px}.logout-action{color:#8d5955}.user-chip{display:flex;align-items:center;gap:9px;min-width:125px;padding:0 6px}.user-avatar{display:grid!important;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--green-soft);color:var(--green)!important;font-size:12px!important;font-weight:900}.user-chip>div strong,.user-chip>div span{display:block}.user-chip>div strong{max-width:90px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--ink);font-size:12px}.user-chip>div span{margin-top:3px;color:#899793;font-size:9px}
.app-body{display:grid;grid-template-columns:var(--sidebar-width) minmax(0,1fr);height:calc(100vh - var(--topbar-height));min-height:0}
.main-sidebar{position:relative;z-index:10;display:flex;flex-direction:column;min-height:0;padding:16px 12px 14px;background:var(--shell);color:#fff;border-right:1px solid rgba(255,255,255,.04)}
.main-nav{flex:1;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin}.nav-group{display:grid;gap:4px;margin-bottom:17px}.nav-group-title{padding:0 12px 7px;color:#7fa29c;font-size:9px;font-weight:800;letter-spacing:.16em}
.nav-button{position:relative;display:flex;align-items:center;gap:11px;width:100%;min-height:43px;padding:6px 10px;border:0;border-radius:11px;background:transparent;color:#bfd0cd;cursor:pointer;text-align:left;font-size:12px;font-weight:700;transition:.16s}.nav-button:hover{background:rgba(255,255,255,.07);color:#fff}.nav-button.active{background:linear-gradient(90deg,rgba(61,139,124,.34),rgba(61,139,124,.14));color:#fff}.nav-button.active:before{content:"";position:absolute;left:-12px;top:9px;bottom:9px;width:3px;border-radius:0 3px 3px 0;background:var(--gold)}
.nav-button[hidden]{display:none!important}
.nav-icon{display:grid;place-items:center;flex:0 0 28px;width:28px;height:28px;border-radius:9px;background:rgba(255,255,255,.07);color:#9fc0ba;font-size:10px;font-weight:900}.nav-button.active .nav-icon{background:#e6f2ef;color:var(--green)}.nav-label{white-space:nowrap}
.sidebar-footer{display:flex;align-items:center;gap:10px;padding:12px;border-top:1px solid rgba(255,255,255,.08)}.runtime-dot{width:8px;height:8px;border-radius:50%;background:#5bd0a6;box-shadow:0 0 0 5px rgba(91,208,166,.1)}.runtime-dot.runtime-warning{background:#f1b957;box-shadow:0 0 0 5px rgba(241,185,87,.12)}.runtime-dot.runtime-error{background:#ef766f;box-shadow:0 0 0 5px rgba(239,118,111,.12)}.sidebar-footer strong,.sidebar-footer span{display:block}.sidebar-footer strong{font-size:10px;color:#d6e3e0}.sidebar-footer span{margin-top:3px;font-size:9px;color:#789c95}
.auth-downloads{display:grid;gap:8px;margin-top:18px}.auth-downloads a{padding:10px 12px;border:1px solid var(--line);border-radius:10px;color:var(--green);font-size:12px;font-weight:700;text-align:center;text-decoration:none}.auth-downloads a:hover{background:var(--green-soft)}.icp-link{display:block;margin-top:14px;color:var(--muted);font-size:11px;text-align:center;text-decoration:none}.sidebar-icp{display:block;margin-top:5px;color:#789c95;font-size:8px;text-decoration:none}.app-update-banner{position:fixed;z-index:30;top:74px;right:20px;left:calc(var(--sidebar-width) + 20px);display:flex;align-items:center;gap:16px;padding:12px 16px;border:1px solid #e7c44f;border-radius:14px;background:#fff8dc;box-shadow:0 16px 40px rgba(34,46,40,.16);color:var(--ink)}.app-update-banner[hidden]{display:none}.app-update-banner div{display:grid;gap:3px;flex:1}.app-update-banner span{font-size:11px;color:var(--muted)}.app-update-banner a{padding:8px 12px;border-radius:9px;background:var(--green);color:#fff;font-size:12px;font-weight:700;text-decoration:none}.app-update-banner button{border:0;background:transparent;color:var(--muted);font-size:20px;cursor:pointer}
.sidebar-scrim{display:none}.content-shell{min-width:0;min-height:0;overflow:hidden}.workspace-layout{height:100%;grid-template-columns:330px minmax(0,1fr)}.workspace-layout.module-view{grid-template-columns:minmax(0,1fr)}.workspace-layout.module-view .queue-panel{display:none}.queue-panel{background:#f0f3f1}.panel-heading{padding:20px 18px 14px}.panel-heading h2{font-size:18px}.queue-list{padding:0 10px 20px}.queue-item{border-color:#e5ebe8;border-radius:13px;background:#fff}.queue-item.active{border-color:#6bb1a4}.review-panel{padding:22px 24px 30px}.welcome-card{max-width:820px;margin:9vh auto;padding:48px 52px;border:1px solid #e3e9e6;border-radius:22px;background:linear-gradient(145deg,#fff,#f1f7f4);box-shadow:0 20px 60px rgba(25,45,40,.07)}.welcome-card h1{margin:12px 0;font-size:30px}.welcome-actions{display:flex;align-items:center;gap:16px;margin-top:24px}.welcome-actions span{color:#84928f!important;font-size:11px!important;font-weight:400!important}.card{border-radius:16px;box-shadow:0 8px 28px rgba(26,50,44,.04)}

/* 兼容已有模块 */
.review-panel>.workspace-title:first-child{position:sticky;top:-22px;z-index:5;margin:-22px -24px 20px;padding:20px 24px 16px;background:rgba(245,247,245,.94);backdrop-filter:blur(10px);border-bottom:1px solid #e6ebe8}.workspace-title h1{font-size:22px}.metrics-strip{gap:10px}.metric-card{min-width:122px;box-shadow:0 4px 18px rgba(26,50,44,.035)}
.modal{z-index:40;backdrop-filter:blur(4px)}.modal-card{border:1px solid rgba(255,255,255,.2);box-shadow:0 35px 100px rgba(0,0,0,.28)}

@media(max-width:1380px){
  :root{--sidebar-width:216px}.topbar{gap:14px}.topbar-brand-copy span{display:none}.summary-chip{min-width:57px;padding-inline:7px}.topbar-context{min-width:170px}.user-chip{min-width:104px}.workspace-layout{grid-template-columns:300px minmax(0,1fr)}
}
@media(max-width:1120px){
  :root{--sidebar-width:76px}.topbar-brand{width:59px;flex-basis:59px}.topbar-brand-copy{display:none}.main-sidebar{padding-inline:9px}.nav-group-title,.nav-label,.sidebar-footer>div{display:none}.nav-button,#batchButton,#uploadButton,#templateButton,#teamButton:not([hidden]){display:flex;justify-content:center;padding-inline:0}.nav-button.active:before{left:-9px}.nav-icon{width:34px;height:34px;flex-basis:34px}.sidebar-footer{justify-content:center}.summary-chip:nth-child(n+3){display:none!important}.workspace-layout{grid-template-columns:290px minmax(0,1fr)}
}
@media(max-width:820px){
  body{overflow:auto}.topbar{padding-inline:12px}.sidebar-toggle{display:grid;place-items:center}.topbar-brand{width:auto;flex-basis:auto}.topbar-brand .brand-mark{display:none}.topbar-context p,.summary,.topbar-action b,.user-chip>div{display:none}.topbar-context{min-width:0}.topbar-actions{margin-left:auto}.user-chip{min-width:auto}.app-body{display:block;height:calc(100vh - var(--topbar-height))}.main-sidebar{position:fixed;left:0;top:var(--topbar-height);bottom:0;width:250px;padding:16px 12px;transform:translateX(-105%);transition:.2s;box-shadow:20px 0 60px rgba(0,0,0,.25)}.app-shell.sidebar-open .main-sidebar{transform:translateX(0)}.nav-group-title,.nav-label,.sidebar-footer>div{display:block}.nav-button{justify-content:flex-start;padding-inline:10px}.nav-button.active:before{left:-12px}.sidebar-scrim{position:fixed;inset:var(--topbar-height) 0 0;z-index:9;border:0;background:rgba(3,18,16,.45)}.app-shell.sidebar-open .sidebar-scrim{display:block}.workspace-layout,.workspace-layout.module-view{display:block;height:100%}.queue-panel{height:310px;border-right:0;border-bottom:1px solid var(--line)}.workspace-layout.module-view .queue-panel{display:none}.review-panel{min-height:100%;padding:16px}.review-panel>.workspace-title:first-child{top:-16px;margin:-16px -16px 16px;padding:16px}.welcome-card{margin:28px auto;padding:30px}.welcome-card h1{font-size:25px}.welcome-actions{align-items:flex-start;flex-direction:column}
}
@media(max-width:760px){
  .auth-gate{padding:14px}.auth-shell{display:block;width:min(460px,96vw);min-height:0;border-radius:24px}.auth-brand-panel{display:none}.auth-card{padding:36px 28px}.auth-mobile-brand{display:flex}.auth-card h1{font-size:26px}.auth-meta{gap:14px}.topbar-action{padding-inline:9px}.logout-action{display:none}
}
