
*{box-sizing:border-box}body{margin:0;background:#f3f6fa;color:#233047;font:14px 'Microsoft YaHei',sans-serif}aside{position:fixed;width:222px;height:100vh;background:#102332;color:#95aaba;padding:30px 18px}h1{font-size:25px;color:white;margin:0 10px 8px}small{color:#8495a8}nav{margin-top:35px}nav button{display:block;width:100%;text-align:left;margin:7px 0;background:none;color:#aebecb;border:0;padding:13px 18px;border-radius:8px}nav button.active{background:#1b897d;color:white}main{margin-left:222px;padding:30px 40px}header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px}h2{margin:0 0 8px;font-size:24px}button{cursor:pointer;border:0;border-radius:6px;padding:10px 17px;background:#138579;color:white}button.secondary{background:#e8eef3;color:#34475c}.danger{background:#fff0ef;color:#be4c4c}input,textarea,select{padding:10px;border:1px solid #d9e1e9;border-radius:6px;background:white;color:#26364a;font:inherit}textarea{width:100%;height:155px;resize:vertical}label{display:block;margin:16px 0 8px;color:#526479}.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:18px;margin-bottom:24px}.card,.panel{background:white;border:1px solid #e5eaf0;border-radius:12px;padding:23px}.card strong{display:block;font-size:32px;margin-top:12px}.panel{margin-bottom:20px}.row{display:flex;gap:15px;align-items:center;flex-wrap:wrap}.grid{display:grid;grid-template-columns:1fr 1fr;gap:20px}table{border-collapse:collapse;width:100%;margin-top:18px}td,th{text-align:left;padding:15px 10px;border-bottom:1px solid #edf0f4}th{font-weight:500;color:#7b8b9c;background:#f9fafc}.badge{background:#e5f5ef;color:#188569;border-radius:12px;padding:4px 10px;font-size:12px}.empty{padding:60px;text-align:center;color:#8998a8}.notice{background:#edf6f5;padding:15px 20px;color:#3b706a;border-radius:8px;margin-bottom:22px;line-height:1.8}pre{white-space:pre-wrap;word-break:break-all;background:#f6f8fb;padding:20px;border-radius:8px;line-height:1.8}.bar{height:120px;display:flex;align-items:end;gap:12px;border-bottom:1px solid #ddd;padding:0 10px}.bar i{background:#e8f2f0;width:3%;height:3px}#toast{position:fixed;right:35px;bottom:30px;background:#153c3a;color:white;padding:15px;border-radius:8px;display:none}.login{max-width:430px;margin:100px auto}.login input{display:block;width:100%;margin:15px 0}h3{margin-top:0}a{color:#138579}
aside{width:238px;padding:25px 14px;background:#142a39;overflow-y:auto}aside>div:last-child{display:none}h1{font-size:23px}nav{margin-top:27px}nav button{margin:2px 0;padding:9px 18px;font-size:13px}.navLabel{font-size:10px;letter-spacing:2px;color:#6f8798;padding:17px 18px 6px}main{margin-left:238px;padding:0}.topbar{height:70px;padding:0 36px;background:white;border-bottom:1px solid #e5eaf0;display:flex;align-items:center;justify-content:space-between;color:#67788b}.workspace{padding:30px 36px;max-width:1600px;margin:auto}.crumb{font-size:12px;color:#98a5b2;margin-bottom:12px}header h2{font-size:26px}.scope{display:flex;align-items:center;gap:20px;padding:17px 22px;flex-wrap:wrap}.scope .danger{margin-left:auto}.tabs{display:flex;gap:27px;border-bottom:1px solid #dce4ec;margin-bottom:23px}.tabs button{background:none;color:#7a899b;border-radius:0;padding:13px 5px}.tabs button.selected{border-bottom:3px solid #138579;color:#138579;font-weight:600}.forceGrid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,1fr);gap:22px}.forceGrid td:first-child{max-width:350px;word-break:break-all}.forceGrid textarea{height:210px}.forceGrid .row{gap:10px}.quickLinks{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:22px}.planned{background:#fff4df;color:#9b762b;padding:6px 12px;border-radius:5px}.card{border-top:3px solid #d1e8e3}.notice{font-size:13px}@media(max-width:1050px){.forceGrid,.grid{grid-template-columns:1fr}.cards{grid-template-columns:1fr 1fr}}aside{width:190px}main{margin-left:190px}nav button{padding:14px 18px;margin:8px 0}.topbar{height:55px}.workspace{max-width:1250px}.simpleRule .panel{padding:20px}.simpleRule label{display:inline-block;margin:10px 14px}.simpleRule details{margin-top:14px}.simpleRule summary{cursor:pointer;color:#7b8b9c}.simpleRule details label{display:block}.scope{gap:15px}.tabs{gap:20px}td button{padding:7px 12px}.notice{display:none}.chartRow{display:flex;align-items:center;gap:14px;margin:19px 0}.chartRow>span{width:45px}.chartRow>b{min-width:35px;text-align:right}.track{flex:1;height:11px;background:#f0f3f7;border-radius:8px;overflow:hidden}.track>div{height:100%;border-radius:8px}.donutWrap{display:flex;align-items:center;justify-content:center;gap:32px}.donut{width:190px;height:190px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}.donut>div{background:white;border-radius:50%;width:135px;height:135px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.donut strong{font-size:34px}.chartEmpty{text-align:center;color:#8898a9;font-size:12px}@media(max-width:800px){.donutWrap{flex-wrap:wrap}}.dashboardCompact{padding:20px 28px}.dashboardCompact header{margin-bottom:18px}.dashboardCompact .crumb{margin:0 0 7px}.dashboardCompact .panel{padding:16px 20px;margin-bottom:14px}.dashboardCompact .panel>p{margin:8px 0 0;font-size:12px}.dashboardCompact .cards{gap:12px;margin-bottom:14px}.dashboardCompact .card{padding:14px 18px}.dashboardCompact .card strong{font-size:27px;margin-top:6px}.dashboardCompact h3{font-size:15px;margin-bottom:12px}.distributionBody{display:flex;align-items:center;gap:35px}.distributionRows{flex:1;min-width:0}.distribution .donut{width:155px;height:155px;margin:0 15px}.distribution .donut>div{width:112px;height:112px}.distribution .donut strong{font-size:28px}.distribution .chartRow{gap:12px;margin:10px 0;font-size:12px}.distribution .chartRow>span{width:63px;flex-shrink:0;display:flex;align-items:center;gap:7px}.distribution .chartRow i{width:7px;height:7px;border-radius:50%}.distribution .chartRow>b{width:45px;min-width:45px}.distribution .chartRow em{width:48px;text-align:right;font-style:normal;color:#75869a}.distribution .track{height:7px}.trackLabel{flex:1;color:#97a3b1}.chartHeading{color:#97a3b1}.chartHeading b{font-weight:400}.dashboardCompact svg{max-height:175px!important}.dashboardCompact .panel small{font-size:11px}@media(max-width:650px){.distributionBody{gap:12px}.distribution .donut{width:100px;height:100px;margin:0}.distribution .donut>div{width:74px;height:74px}.distribution .donut strong{font-size:20px}.distribution .donut small{font-size:9px}.distribution .chartRow{gap:6px}.dashboardCompact{padding:16px}.dashboardCompact .cards{grid-template-columns:repeat(2,1fr)}}.typeRing{width:230px;max-width:42%;flex-shrink:0;overflow:visible;animation:chartIn .5s ease-out}.pieSegment{cursor:pointer;outline:none}.pieSegment circle{transition:stroke-width .2s,filter .2s}.pieSegment:hover circle,.pieSegment:focus circle{stroke-width:36;filter:brightness(1.1)}.pieSegment:hover text{font-size:13px}.track>div{animation:growX .5s ease-out;transform-origin:left}svg rect{animation:growY .5s ease-out;transform-origin:center 155px;transform-box:view-box}svg rect:hover{fill:#27a995}@keyframes chartIn{from{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes growX{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes growY{from{transform:scaleY(0)}to{transform:scaleY(1)}}@media(prefers-reduced-motion:reduce){.typeRing,.track>div,svg rect{animation:none}}.logFilters{display:flex;flex-wrap:wrap;gap:7px;margin:16px 0}.logFilters button{background:#edf2f6;color:#63758a;padding:8px 11px}.logFilters button.selected{background:#138579;color:white}.logFilters small{color:inherit;margin-left:4px;opacity:.75}.logTable{overflow-x:auto}.logTable table{min-width:820px;font-size:12px}.logTable td{vertical-align:top;padding:13px 8px}.logTable small{font-size:10px}.ipCell{white-space:nowrap;font-family:Consolas,monospace}.targetCell{max-width:270px;overflow-wrap:anywhere}.logPager{justify-content:flex-end;margin-top:16px}.logPager>small{margin-right:auto}button:disabled{opacity:.4;cursor:default}
:root{--page:#f1f5f8;--surface:#fff;--ink:#253649;--muted:#8192a4;--line:#e1e8ef;--soft:#eef3f7;--accent:#138579}html[data-theme=dark]{color-scheme:dark;--page:#0f1822;--surface:#182532;--ink:#dbe7f1;--muted:#91a6b8;--line:#2b3d4d;--soft:#223442;--accent:#31b7a5}body{background:var(--page);color:var(--ink);transition:background .2s,color .2s}.panel,.card,.topbar{background:var(--surface);border-color:var(--line)}.panel,.card{box-shadow:0 3px 16px #12334404}.card{border-top-color:var(--accent)}small,.crumb{color:var(--muted)}input,textarea,select{background:var(--surface);color:var(--ink);border-color:var(--line)}th{background:var(--soft);color:var(--muted)}td,th{border-color:var(--line)}pre{background:var(--soft);color:var(--ink)}.secondary,button.secondary{background:var(--soft);color:var(--ink)}.themeToggle{background:var(--soft);color:var(--ink);font-size:12px;padding:8px 12px}.demoBanner{padding:9px 14px;border:1px solid #e4c98d;background:#fff7e6;color:#97702a;border-radius:8px;margin-bottom:12px;font-size:12px}.track{background:var(--soft)}.logFilters button{background:var(--soft);color:var(--ink)}.logFilters button.selected{background:var(--accent);color:white}.topbar{position:sticky;top:0;z-index:20}.badge{background:#13857918;color:var(--accent)}html[data-theme=dark] .demoBanner{background:#332c20;border-color:#65502c;color:#e2c17d}html[data-theme=dark] .typeRing text{fill:var(--ink)}html[data-theme=dark] svg line{stroke:var(--line)}html[data-theme=dark] .danger{background:#442e34;color:#efb0ae}html[data-theme=dark] .chartRow em{color:var(--muted)}
@media(max-width:700px){
 aside{position:fixed;inset:auto 0 0;width:100%;height:auto;padding:0 8px env(safe-area-inset-bottom);z-index:50;background:var(--surface);border-top:1px solid var(--line);overflow:visible}aside h1,aside>small{display:none}nav{margin:0;display:grid;grid-template-columns:repeat(4,1fr);gap:4px}nav button{margin:5px 0;padding:14px 3px;text-align:center;font-size:12px;border-radius:8px;color:var(--muted)}nav button.active{background:#13857918;color:var(--accent);font-weight:700}main{margin-left:0;padding-bottom:85px}.topbar{height:54px;padding:0 16px;font-size:13px}.desktopStatus{display:none}.workspace,.dashboardCompact{padding:18px 12px}.workspace header{margin-bottom:18px;align-items:center}.workspace h2{font-size:22px}.crumb{font-size:10px}.panel,.dashboardCompact .panel{padding:14px 12px;border-radius:10px;margin-bottom:12px}.cards,.dashboardCompact .cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.card,.dashboardCompact .card{padding:13px}.card strong{font-size:25px}.grid,.forceGrid{grid-template-columns:minmax(0,1fr)}.row{gap:9px}.row input{min-width:0;max-width:100%}.row select{max-width:100%}button,input,select{min-height:40px}input:not([type=checkbox]),textarea{max-width:100%}input[type=checkbox]{width:18px;height:18px;min-height:18px}.scope{gap:10px;padding:12px}.scope .danger{margin-left:0;font-size:12px}.tabs{gap:22px}.tabs button{font-size:12px}.distributionBody{gap:6px;align-items:center}.typeRing{width:140px;max-width:40%}.distribution .chartRow{gap:5px;font-size:10px;margin:12px 0}.distribution .chartRow>span{width:42px;gap:4px}.distribution .chartRow>b{width:27px;min-width:27px}.distribution .chartRow em{width:34px}.distribution .track{height:6px}.logTable{margin:0 -2px}.logTable table{min-width:740px}.logPager{flex-wrap:wrap;gap:8px}.logPager label{font-size:12px}.logPager>small{flex-basis:100%;order:-1}.login{margin:50px 12px}.workspace header .badge{font-size:10px;white-space:nowrap}.dashboardCompact svg{min-height:135px}.logFilters{gap:5px}.logFilters button{padding:7px 9px;font-size:11px}.simpleRule label{margin:10px 7px;font-size:12px}.quickLinks{gap:8px}
}
.externalForm{display:grid;grid-template-columns:1fr 2fr 1fr;gap:12px}.externalPreview{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.externalPreview a{padding:10px 15px;border:1px solid var(--line);border-radius:7px;background:var(--soft)}details summary{cursor:pointer;color:var(--accent)}@media(max-width:700px){nav{grid-template-columns:repeat(5,1fr)}.externalForm{grid-template-columns:1fr}nav button{font-size:11px}}
dialog{background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;padding:24px;max-width:min(90vw,600px)}dialog::backdrop{background:#10233288}dialog select{max-width:100%;margin:12px}

.templateChoices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin:10px 0 25px}.templateChoice{border:2px solid var(--line);border-radius:10px;overflow:hidden;background:var(--surface);transition:border-color .2s,transform .2s}.templateChoice:has(input:checked){border-color:var(--accent);box-shadow:0 0 0 3px #13857915}.templateChoice:hover{transform:translateY(-3px)}.templateChoice>label{display:block;margin:0;cursor:pointer;position:relative}.templateChoice input{position:absolute;top:12px;right:12px;z-index:2;accent-color:var(--accent);width:18px;height:18px;min-height:18px}.templateThumb{height:125px;position:relative;background:#204031}.templateThumb img{width:100%;height:100%;object-fit:cover}.templateThumb:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#142332bb,transparent)}.templateThumb span{position:absolute;bottom:15px;left:15px;z-index:1;color:white;font-size:20px;font-weight:600}.templateInfo{padding:13px 15px 5px;display:flex;flex-direction:column;gap:5px}.templateInfo small{font-size:11px}.templateChoice>a{display:block;margin:8px 15px 14px;font-size:12px}.themePreview-tech .templateThumb{filter:saturate(.7)}.themePreview-brand .templateThumb{filter:sepia(.15)}@media(max-width:600px){.templateChoices{grid-template-columns:1fr;gap:12px}.templateThumb{height:150px}.templateInfo{padding:12px 15px 4px}}

/* Grouped navigation and focused section pages */
aside{width:210px;overflow-y:auto;padding-bottom:25px}main{margin-left:210px}nav{display:block;margin-top:20px}.navLabel{display:block;font-size:10px;letter-spacing:1px;color:#728b9b;padding:16px 17px 5px}nav button{margin:2px 0;padding:9px 17px;font-size:12px;min-height:34px}.mobileMenu{display:none}body>aside h1{margin-bottom:7px}.workspace>.panel input:not([type=checkbox]):not([type=radio]){max-width:100%}
@media(max-width:700px){
 aside{position:fixed;inset:54px auto 0 0;width:230px;height:calc(100dvh - 54px);padding:0 12px 25px;background:var(--surface);border-right:1px solid var(--line);border-top:0;transform:translateX(-105%);transition:transform .2s;box-shadow:15px 0 40px #0002;overflow-y:auto}body.mobileNavOpen aside{transform:translateX(0)}nav{display:block;margin-top:6px}nav button{text-align:left;margin:2px 0;padding:10px 17px;font-size:13px;min-height:39px}.navLabel{padding:15px 17px 5px;color:var(--muted)}main{margin-left:0;padding-bottom:20px}.mobileMenu{display:block;padding:7px 10px;white-space:nowrap}.topbar{justify-content:space-between;gap:7px;padding:0 10px}.topbar>span{font-size:11px;flex:1}.topbar .row{gap:5px}.topbar .row button{font-size:10px;padding:7px 6px;min-height:34px}.workspace{padding-top:18px}}

nav .navDirect{padding:12px 16px;margin:5px 0;font-size:13px}nav .navGroupToggle{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;margin:5px 0;color:#9bb0be;font-size:13px;font-weight:600;background:transparent}nav .navGroupToggle.currentGroup{color:#dbece8}nav .navGroupToggle:hover{background:#ffffff08}.navChevron{font-size:19px;line-height:1}.navChildren{padding:0 0 7px 12px;animation:navReveal .18s ease-out}.navChildren[hidden]{display:none}.navChildren button{padding:10px 16px;font-size:12px;min-height:34px}.navChildren button.active{border-left:3px solid #59cbb5;padding-left:13px}.navChildren button:not(.active){border-left:3px solid #ffffff0b;padding-left:13px}.navGroup{margin-bottom:2px}@keyframes navReveal{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}@media(max-width:700px){nav .navGroupToggle{color:var(--ink)}nav .navGroupToggle.currentGroup{color:var(--accent)}.navChildren button:not(.active){border-left-color:var(--line)}nav .navDirect,nav .navGroupToggle{min-height:44px}.navChildren button{min-height:40px}}@media(prefers-reduced-motion:reduce){.navChildren{animation:none}}

/* Fill the chart panel; preserve real zero-value future hours. */
.dashboardCompact svg.trendChart{display:block;width:100%;height:285px;max-height:none!important;min-height:0;margin:4px 0 -3px;overflow:visible}.trendChart text{fill:var(--muted)}.trendChart text.barValue{fill:var(--accent);font-weight:600}.trendChart rect{transform-origin:center 155px;animation:growY .6s cubic-bezier(.22,1,.36,1)}
/* Animate the existing nodes instead of rebuilding the sidebar. */
.navChildren{display:grid;grid-template-rows:0fr;padding:0;animation:none;opacity:.3;transition:grid-template-rows .34s cubic-bezier(.22,1,.36,1),opacity .26s ease}.navChildren.isOpen{grid-template-rows:1fr;opacity:1}.navChildrenInner{min-height:0;overflow:hidden;padding:0 0 0 12px}.navChildrenInner>button{transition:background .2s ease,color .2s ease,transform .25s ease}.navChildren.isOpen .navChildrenInner>button:hover{transform:translateX(3px)}.navChevron{display:inline-block;transition:transform .34s cubic-bezier(.22,1,.36,1);transform:rotate(0deg)}.navGroupToggle[aria-expanded=true] .navChevron{transform:rotate(90deg)}nav .navGroupToggle,nav .navDirect{transition:background .22s ease,color .22s ease}.navGroup{margin-bottom:2px}@media(max-width:700px){.dashboardCompact svg.trendChart{height:230px}}@media(prefers-reduced-motion:reduce){.navChildren,.navChevron,.navChildrenInner>button{transition:none}.trendChart rect{animation:none}}

/* Keep submenu items still; only the group container changes height. */
.navChildrenInner>button,.navChildrenInner>button:hover,.navChildren.isOpen .navChildrenInner>button:hover{transform:none!important;animation:none!important;transition:background-color .15s,color .15s}.navChildren{opacity:1;transition:grid-template-rows .25s ease;animation:none}.dashboardCompact svg.trendChart{height:270px;max-height:none!important;min-height:0}.trendChart rect{animation:none;transform:none}.trendChart text{font-family:system-ui,"Microsoft YaHei",sans-serif;font-stretch:normal}.trendChart text.barValue{font-weight:600}@media(max-width:700px){.dashboardCompact svg.trendChart{height:225px}}

/* Plain submenu labels without decorative rails. */
.navChildren button,.navChildren button.active,.navChildren button:not(.active){border-left:0!important;padding-left:16px}.navChildren button::before,.navChildren button::after{content:none!important}

.placeholderHelp{margin:8px 0 12px;line-height:1.9}.placeholderHelp code{font-size:11px;background:var(--soft);color:var(--accent);padding:2px 4px;border-radius:3px;white-space:nowrap}

#manageEditor{width:560px}#manageEditor input:not([type=checkbox]),#manageEditor select{width:100%}#manageEditor label{margin-top:12px}
