/* 管理端仅使用顶部两级导航：模块 / 功能菜单。 */
html,body{height:100%;overflow:hidden}
button,a{-webkit-tap-highlight-color:transparent}
.app-shell{display:flex;flex-direction:column;height:100dvh;min-width:0}
.app-header{height:70px;flex:0 0 70px;display:flex;align-items:center;gap:20px;padding:0 28px;background:#fff;border-bottom:1px solid var(--line2)}
.home-brand{display:flex;align-items:center;gap:11px;min-width:0;color:var(--ink);flex-shrink:0}
.home-brand:hover{text-decoration:none}
.brand-mark{display:grid;place-items:center;background:var(--pine);color:#fff;width:35px;height:38px;border-radius:11px 3px 11px 3px;flex-shrink:0}
.brand-mark svg{width:22px;height:22px}
.home-brand b,.home-brand small{display:none}
body.at-home .home-brand{flex-shrink:1}
body.at-home .home-brand b{display:block;font-size:15px;overflow:hidden;text-overflow:ellipsis}
body.at-home .home-brand small{display:block;font-size:11px;white-space:nowrap;color:var(--mute);border:1px solid var(--line);border-radius:4px;padding:0 6px}
.system-switch{display:flex;align-items:center;gap:13px;flex-shrink:0;cursor:pointer;padding:8px 16px 8px 0;border:0;border-right:1px solid var(--line);background:none;color:var(--ink);font:inherit;font-size:15px;font-weight:600;text-align:left}
.system-switch:hover{color:var(--pine)}
.switch-hint{font-size:10px;font-weight:400;color:var(--mute);white-space:nowrap}
.module-nav{align-self:stretch;display:flex;align-items:stretch;flex:1;min-width:0;gap:27px;overflow-x:auto;scrollbar-width:thin}
.module-nav a{display:flex;align-items:center;flex-shrink:0;border-bottom:3px solid transparent;padding-top:3px;white-space:nowrap;color:var(--ink2);font-size:14px}
.module-nav a:hover{color:var(--pine);text-decoration:none}
.module-nav a.on{font-weight:600;color:var(--pine);border-bottom-color:var(--pine)}
.header-tools{margin-left:auto;display:flex;align-items:center;gap:12px;flex-shrink:0}
.search-trigger{display:flex;align-items:center;gap:7px;border:1px solid var(--line2);background:var(--inner);border-radius:7px;height:32px;padding:0 10px;color:var(--mute);font-size:12px;cursor:pointer}
.search-trigger svg{width:15px;height:15px}
.search-trigger>span:first-child{display:flex}
kbd{font:10px var(--sans);padding:1px 4px;background:#fff;border:1px solid var(--line);border-radius:3px;color:var(--mute)}
.icon-btn{display:inline-grid;place-items:center;flex-shrink:0;width:32px;height:32px;border:0;border-radius:7px;background:transparent;color:var(--ink2);cursor:pointer;font-size:23px}
.icon-btn:hover{background:var(--pine-l);color:var(--pine)}
.icon-btn svg{width:18px;height:18px}
.context-bar{height:48px;flex:0 0 48px;display:flex;align-items:center;gap:20px;padding:0 28px;background:#fff;border-bottom:1px solid var(--line)}
.page-nav{display:flex;align-items:center;gap:7px;flex:1;min-width:0;overflow-x:auto;scrollbar-width:thin;height:100%}
.nav-item{display:flex;align-items:center;gap:7px;flex-shrink:0;min-height:32px;padding:6px 12px;border-radius:6px;font-size:12px;white-space:nowrap;color:var(--ink2)}
.nav-item svg{width:14px;height:14px;color:var(--mute)}
.nav-item:hover{background:var(--inner);color:var(--pine);text-decoration:none}
.nav-item.on{background:var(--pine-l);color:var(--pine);font-weight:600}
.nav-item.on svg{color:var(--pine)}
#contextPath{display:none;align-items:center;gap:10px;min-width:0;overflow:auto;white-space:nowrap;scrollbar-width:none;font-size:11px;color:var(--mute)}
#contextPath>*{flex-shrink:0}
#contextPath a{display:flex;color:var(--mute)}
#contextPath svg{width:13px;height:13px}
#contextPath b{font-weight:500;color:var(--ink2)}
.context-actions{display:flex;align-items:center;gap:18px;flex-shrink:0;margin-left:auto}
.context-actions button{background:none;border:0;color:var(--mute);padding:5px 0;font-size:11px;cursor:pointer;white-space:nowrap}
.context-actions button:hover,.context-actions button.on{color:var(--pine)}
.context-actions>a{color:var(--mute);font-size:11px;white-space:nowrap}.context-actions>a:hover{color:var(--pine);text-decoration:none}
.stage{flex:1;position:relative;min-height:0;outline:none}
.stage iframe{position:absolute;inset:0;border:0;width:100%;height:100%;background:var(--bg)}
.stage iframe[hidden]{display:none}
.frame-loading{position:absolute;inset:0;display:grid;place-content:center;color:var(--mute);z-index:2;background:var(--bg)}
.frame-loading[hidden]{display:none}
.skip-link{position:fixed;left:28px;top:-60px;background:var(--pine);color:#fff;padding:10px 20px;z-index:100}
.skip-link:focus{top:8px}
body.at-home .module-nav,body.at-home .page-nav,body.at-home .system-switch{display:none}
body.at-home #contextPath{display:flex}
body.at-home .context-bar{height:40px;flex-basis:40px}
button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--pine);outline-offset:3px}
dialog{padding:0;color:var(--ink);border:1px solid var(--line);border-radius:14px;box-shadow:0 24px 100px #15302d30}dialog::backdrop{background:#162d2855;backdrop-filter:blur(3px)}.command-dialog{width:min(650px,92vw);margin:14vh auto auto}.command-head{display:flex;align-items:center;gap:12px;padding:20px;border-bottom:1px solid var(--line)}.command-head>span{display:flex;color:var(--pine)}.command-head input{flex:1;min-width:0;outline:0;border:0;background:transparent;font-size:14px}.key-close{border:1px solid var(--line);border-radius:4px;background:#fff;font-size:10px;color:var(--mute);cursor:pointer;padding:2px 5px}.command-results{padding:10px;max-height:52vh;overflow:auto}.result-caption{font-size:11px;color:var(--mute);padding:5px 12px 10px}.search-result{border:0;background:none;display:flex;gap:12px;align-items:center;padding:11px 12px;border-radius:8px;width:100%;text-align:left;cursor:pointer}.search-result.on,.search-result:hover{background:var(--pine-ll)}.search-result svg{color:var(--pine);flex-shrink:0}.search-result b{display:block;font-size:13px;font-weight:500}.search-result small{display:block;color:var(--mute);font-size:11px;margin-top:2px}.search-result>span:last-child{margin-left:auto;color:var(--mute)}.command-foot{display:flex;justify-content:space-between;padding:12px 20px;border-top:1px solid var(--line);font-size:10px;color:var(--mute)}.utility-dialog{width:min(450px,92vw);padding:26px}.utility-dialog h2{font-size:19px}.utility-dialog p{color:var(--mute);font-size:13px}.utility-heading{display:flex;align-items:flex-start;justify-content:space-between}.utility-heading p{margin:7px 0 20px}.utility-item{display:block;padding:15px 0;text-align:left;background:none;border:0;border-top:1px solid var(--line2);width:100%;cursor:pointer;color:var(--ink)}.utility-item:hover{color:var(--pine);text-decoration:none}.utility-item b{display:block;font-size:13px;font-weight:600}.utility-item span{display:block;font-size:11px;color:var(--mute);margin-top:3px}.utility-item.danger b{color:var(--cin)}.dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}
.identity-dialog{width:560px;max-width:calc(100vw - 24px);max-height:86vh;overflow:auto}
.identity-group{margin-top:14px}.identity-group h3{font-size:13px;margin:0}.identity-group p{font-size:11px;color:var(--mute);margin:2px 0 6px}
.identity-item{display:flex;align-items:center;gap:10px;width:100%;border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 10px;margin-bottom:6px;cursor:pointer;text-align:left;font:inherit}.identity-item:hover{border-color:var(--pine)}.identity-item.on{border-color:var(--pine);background:var(--pine-ll)}.identity-item b{display:block;font-size:13px}.identity-item small{display:block;font-size:11px;color:var(--mute)}
.shell-toast{position:fixed;left:50%;top:18px;transform:translateX(-50%);background:#fff;color:var(--pine);border:1px solid #dbe6d7;border-radius:9px;box-shadow:0 6px 24px #2139231a;padding:11px 20px;z-index:200;font-size:13px}
.login-screen{position:fixed;inset:0;display:grid;place-items:center;background:linear-gradient(135deg,#eef3ee,#f7f4ec);z-index:200;padding:16px}
.login-card{width:400px;max-width:100%;background:#fff;border:1px solid var(--line);border-radius:14px;padding:32px;box-shadow:0 20px 60px #24443018;display:flex;flex-direction:column;gap:14px}
.login-brand{display:flex;gap:12px;align-items:center;margin-bottom:8px}.login-brand strong{display:block;font-size:17px}.login-brand small{display:block;color:var(--mute);font-size:12px;margin-top:3px}
.login-card label{display:flex;flex-direction:column;gap:6px;font-size:12px;color:var(--ink2)}.login-card .input,.login-card .select{height:38px;width:100%}.login-card .btn{height:40px;justify-content:center}
.login-tip{font-size:11px;color:var(--mute);line-height:1.7;margin:4px 0 0}.login-back{font-size:12px}
.login-screen[hidden],.app-shell[hidden]{display:none!important}
.system-dialog{width:560px;max-height:85dvh;overflow:auto}.system-choice{display:flex;align-items:center;gap:13px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--ink);width:100%;padding:15px;margin-bottom:10px;text-align:left;cursor:pointer;font:inherit}.system-choice>svg{color:var(--pine);flex-shrink:0}.system-choice b{font-size:14px;display:block}.system-choice small{font-size:11px;color:var(--mute);display:block;margin-top:5px}.system-choice .tiny{white-space:nowrap;color:var(--pine)}.system-choice.on,.system-choice:hover:not(:disabled){border-color:var(--pine);background:var(--pine-ll)}.system-choice:disabled{opacity:.6;cursor:default}.system-choice:disabled .tiny{color:var(--mute)}
@media(max-width:1200px){.app-header{gap:14px;padding:0 20px}.module-nav{gap:18px}.module-nav a{font-size:13px}.search-label,.search-trigger kbd{display:none}.header-tools{gap:6px}.system-switch{font-size:14px;gap:8px;padding-right:12px}.context-bar{padding:0 20px;gap:12px}.context-actions{gap:13px}}
@media(max-width:950px){body:not(.at-home) .app-header{height:auto;flex:0 0 auto;min-height:60px;flex-wrap:wrap;gap:0 12px;padding-top:10px}.module-nav{order:4;flex-basis:100%;height:46px;margin-top:5px}.system-switch{border-right:0}.module-nav a{font-size:13px}.context-actions #overviewBtn,.context-actions #densityBtn{display:none}.nav-item{padding:7px 10px}}
@media(max-width:600px){.app-header{padding-left:14px;padding-right:14px;gap:9px;height:62px;flex-basis:62px}.brand-mark{width:30px;height:33px}body.at-home .home-brand{flex:1;gap:8px}body.at-home .home-brand b{font-size:13px;line-height:1.5;max-width:185px}body.at-home .home-brand small{display:none}.search-trigger{padding:0 7px}.header-tools{gap:1px}.header-tools>#todoBtn{display:none}.module-nav{gap:24px}.context-bar{padding:0 14px;gap:8px}.context-actions #specBtn{display:none}.context-actions{gap:10px}.context-actions button{font-size:10px}.page-nav{gap:3px}.nav-item svg{display:none}.nav-item{font-size:12px;padding:6px 9px}.command-foot span:last-child{display:none}.utility-dialog{padding:20px}.system-choice{padding:12px;gap:9px}.system-choice small{line-height:1.7}.skip-link{left:12px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}
.login-msg{margin:0;padding:9px 12px;border-radius:8px;background:#fdf1ef;border:1px solid #f1c9c2;color:#9a2f20;font-size:12px;line-height:1.6}
