:root{--green:#203921;--cream:#FCFAF7;--blue:#B9D9EB;--bg:#FCFAF7;--bg-secondary:#EFF0E8;--bg-tertiary:#E4E5DC;--text-primary:#203921;--text-secondary:#4A6B4B;--text-tertiary:#7A9A7B;--border:rgba(32,57,33,0.13);--border-em:rgba(32,57,33,0.28);--sidebar-width:248px;--sidebar-collapsed:64px;--topbar-height:52px}@media (prefers-color-scheme:dark){:root{--bg:#141F15;--bg-secondary:#203921;--bg-tertiary:#0F170F;--text-primary:#FCFAF7;--text-secondary:#B9D9EB;--text-tertiary:rgba(252,250,247,0.42);--border:rgba(252,250,247,0.14);--border-em:rgba(252,250,247,0.3)}}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text-primary);-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button{font:inherit;cursor:pointer}.shell{height:100vh}.shell,.sidebar{display:flex;overflow:hidden}.sidebar{width:var(--sidebar-width);flex-shrink:0;background:var(--green);color:var(--cream);flex-direction:column;transition:width .18s ease}.sidebar.collapsed{width:var(--sidebar-collapsed)}.sidebar-head{display:flex;align-items:center;gap:10px;padding:18px 16px 14px;min-height:64px}.sidebar-head img.lockup{height:26px;width:auto}.sidebar-head img.mark{height:28px;width:28px;flex-shrink:0}.sidebar-label{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:rgba(252,250,247,.55);padding:14px 16px 6px;white-space:nowrap}.sidebar nav{flex:1 1;padding:2px 8px}.nav-item{display:flex;align-items:center;gap:11px;padding:10px;border-radius:8px;margin-bottom:2px;font-size:13.5px;font-weight:500;color:rgba(252,250,247,.82);white-space:nowrap}.nav-item:hover{background:rgba(252,250,247,.08)}.nav-item.active{background:rgba(185,217,235,.16);color:var(--blue)}.nav-item .icon{width:20px;flex-shrink:0;text-align:center;font-size:15px}.sidebar-foot{padding:10px 8px 14px;border-top:1px solid rgba(252,250,247,.12)}.sidebar-foot button{display:flex;align-items:center;gap:11px;width:100%;padding:9px 10px;border:none;border-radius:8px;background:transparent;color:rgba(252,250,247,.65);font-size:13px;white-space:nowrap}.sidebar-foot button:hover{background:rgba(252,250,247,.08);color:var(--cream)}.main{flex:1 1;display:flex;flex-direction:column;min-width:0}.topbar{height:var(--topbar-height);flex-shrink:0;display:flex;align-items:center;gap:14px;padding:0 18px;border-bottom:1px solid var(--border);background:var(--bg)}.topbar h1{font-size:15px;font-weight:600;flex:1 1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.range-group{display:flex;border:1px solid var(--border-em);border-radius:8px;overflow:hidden}.range-group button{border:none;background:transparent;color:var(--text-secondary);font-size:12px;font-weight:500;padding:6px 12px}.range-group button+button{border-left:1px solid var(--border)}.range-group button.selected,.refresh-btn{background:var(--green);color:var(--cream)}.refresh-btn{display:flex;align-items:center;gap:7px;border:none;border-radius:8px;font-size:12.5px;font-weight:600;padding:7px 14px}.refresh-btn:disabled{opacity:.45;cursor:not-allowed}.snapshot-note{font-size:11.5px;color:var(--text-tertiary);white-space:nowrap}.report-frame{flex:1 1;border:none;width:100%;background:var(--bg)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--green);padding:24px}.login-card{width:100%;max-width:380px;text-align:center}.login-card img{height:40px;margin-bottom:26px}.login-card h1{color:var(--cream);font-size:17px;font-weight:600;margin-bottom:4px}.login-card p{color:rgba(252,250,247,.6);font-size:13px;margin-bottom:22px}.login-card input{width:100%;padding:12px 14px;border-radius:10px;border:1px solid rgba(252,250,247,.25);background:rgba(252,250,247,.08);color:var(--cream);font-size:14px;outline:none;margin-bottom:12px}.login-card input:focus{border-color:var(--blue)}.login-card button{width:100%;padding:12px;border:none;border-radius:10px;background:var(--blue);color:var(--green);font-size:14px;font-weight:700}.login-error{color:#f2b8b5;font-size:12.5px;margin-top:12px}.bld-page{flex:1 1;overflow-y:auto;padding:28px 36px 60px}.bld-head{display:flex;align-items:baseline;justify-content:space-between;gap:16px;margin-bottom:18px;flex-wrap:wrap}.bld-title{font-size:20px;font-weight:650}.bld-sub{font-size:12.5px;margin-top:3px}.bld-label,.bld-sub{color:var(--text-tertiary)}.bld-label{font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;margin:22px 0 8px}.bld-card{background:var(--bg);border:1px solid var(--border);border-left:4px solid var(--blue);border-radius:12px;padding:16px 18px;margin-bottom:14px;box-shadow:0 2px 10px rgba(32,57,33,.05)}@media (prefers-color-scheme:dark){.bld-card{background:var(--bg-secondary)}}.bld-grid{display:grid;grid-gap:12px;gap:12px}.bld-grid.cols-2{grid-template-columns:repeat(2,1fr)}.bld-grid.cols-3{grid-template-columns:repeat(3,1fr)}.bld-grid.cols-4{grid-template-columns:repeat(4,1fr)}.bld-field label{display:block;font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-tertiary);font-weight:700;margin-bottom:4px}.bld-input,.bld-select,.bld-textarea{width:100%;font:inherit;font-size:13px;color:var(--text-primary);background:var(--bg);border:1px solid var(--border-em);border-radius:8px;padding:7px 10px}.bld-textarea{min-height:74px;resize:vertical}.bld-input:focus,.bld-select:focus,.bld-textarea:focus{outline:2px solid var(--blue);outline-offset:0}.bld-btn{border:1px solid var(--border-em);background:var(--bg);color:var(--text-primary);border-radius:8px;padding:7px 14px;font-size:13px}.bld-btn.primary{background:var(--green);border-color:var(--green);color:var(--cream)}.bld-btn.danger{border-color:#c53030;color:#c53030}.bld-btn:disabled{opacity:.45;cursor:not-allowed}.bld-table{width:100%;border-collapse:collapse;font-size:13px}.bld-table th{text-align:left;font-size:10px;text-transform:uppercase;letter-spacing:.07em;color:var(--text-tertiary);padding:6px 8px;border-bottom:1px solid var(--border-em)}.bld-table td{padding:6px 8px;border-bottom:1px solid var(--border)}.bld-table .bld-input{padding:4px 8px;font-size:12.5px}.bld-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border-em);border-radius:16px;padding:5px 12px;font-size:12.5px;cursor:pointer;background:var(--bg);margin:0 6px 6px 0}.bld-chip.on{background:var(--green);color:var(--cream);border-color:var(--green)}.bld-badge{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;border-radius:9px;padding:2px 8px;white-space:nowrap}.bld-badge.ok{background:#e6f4ec;color:#18794e}.bld-badge.warn{background:#fdf3e3;color:#b7791f}.bld-badge.err{background:#fdeaea;color:#c53030}.bld-badge.mut{background:var(--bg-secondary);color:var(--text-tertiary)}.bld-warnbox{border:1px solid #b7791f;border-left-width:5px;background:#fdf3e3;color:#7a5010;border-radius:0 8px 8px 0}.bld-errbox,.bld-warnbox{padding:12px 14px;font-size:13px;margin:12px 0}.bld-errbox{border:1px solid #c53030;border-left-width:5px;background:#fdeaea;color:#8c2323;border-radius:0 8px 8px 0}.bld-steps{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.bld-step{font-size:12px;border:1px solid var(--border-em);border-radius:16px;padding:5px 13px;color:var(--text-tertiary)}.bld-step.cur{background:var(--green);color:var(--cream);border-color:var(--green)}.bld-step.done{border-color:var(--green);color:var(--text-primary)}.bld-tree{font-size:13px}.bld-tree .camp{border:1px solid var(--border-em);border-radius:10px;margin-bottom:12px;overflow:hidden}.bld-tree .camp-h{background:var(--green);color:var(--cream);padding:9px 14px;display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}.bld-tree .as{border-top:1px solid var(--border);padding:8px 14px 8px 22px}.bld-tree .as-h{font-weight:650;display:flex;gap:10px;align-items:center;flex-wrap:wrap}.bld-tree .ad{padding:6px 0 6px 20px;border-top:1px dashed var(--border)}.bld-tree .ad-h{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.bld-copy{background:var(--bg-secondary);margin:8px 0 4px 20px;font-size:12.5px}.bld-copy,.bld-log{border-radius:8px;padding:10px 12px;white-space:pre-wrap}.bld-log{background:var(--bg-tertiary);font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:11.5px;max-height:220px;overflow-y:auto}