:root{--sidebar-bg:#0f1729;--sidebar-bg-hover:#1a2438;--sidebar-text:#a6b2cc;--sidebar-text-active:#ffffff;--sidebar-line:#212c46;--bg:#f4f6fb;--panel:#ffffff;--panel-hover:#fbfcfe;--line:#e5e8f1;--line-hover:#d3d8e8;--text:#171b2e;--muted:#6b7385;--accent:#f26522;--accent-hover:#d9551a;--accent-soft:#fff0e6;--accent-2:#2f6fed;--accent-2-soft:#eaf1ff;--success:#17a558;--success-soft:#e7f9ef;--warn:#d97706;--warning:#d97706;--warning-soft:#fff6e6;--danger:#e0362b;--danger-soft:#fdecec;--radius:12px;--radius-sm:8px;--shadow-sm:0 1px 2px rgba(23,27,46,0.05),0 1px 1px rgba(23,27,46,0.04);--shadow-md:0 8px 24px rgba(23,27,46,0.08);--ease:cubic-bezier(0.4,0,0.2,1);--sidebar-w:226px}*{box-sizing:border-box}body,html{padding:0;margin:0;background:var(--bg);color:var(--text);font:15px/1.55 -apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit}::selection{background:var(--accent);color:#fff}::-webkit-scrollbar{height:8px;width:8px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--line-hover);border-radius:8px}::-webkit-scrollbar-thumb:hover{background:#b7bfd6}.sidebar{position:fixed;top:0;left:0;bottom:0;width:var(--sidebar-w);background:var(--sidebar-bg);border-right:1px solid var(--sidebar-line);display:flex;flex-direction:column;z-index:40;padding:16px 12px}.sidebar-brand{display:flex;align-items:center;gap:10px;padding:8px 10px 18px;color:#fff;text-decoration:none}.sidebar-brand .mark{width:32px;height:32px;border-radius:9px;background:linear-gradient(135deg,var(--accent),#ff8a4c);display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 8px rgba(242,101,34,.35)}.sidebar-brand .word{font-weight:700;font-size:14.5px;letter-spacing:-.01em;line-height:1.2}.sidebar-brand .word small{display:block;font-weight:500;font-size:11px;color:var(--sidebar-text);margin-top:1px}.sidebar-nav{display:flex;flex-direction:column;gap:2px;overflow-y:auto;flex:1 1}.sidebar-section-label{font-size:10.5px;text-transform:uppercase;letter-spacing:.07em;color:#5b6784;padding:14px 12px 6px}.sidebar-link{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:9px;color:var(--sidebar-text);text-decoration:none;font-size:13.5px;font-weight:500;transition:background-color .12s var(--ease),color .12s var(--ease);position:relative}.sidebar-link svg{flex-shrink:0;opacity:.85}.sidebar-link:hover{background:var(--sidebar-bg-hover);color:#fff}.sidebar-link:hover svg{opacity:1}.sidebar-link.active{background:rgba(242,101,34,.16);color:var(--sidebar-text-active)}.sidebar-link.active svg{opacity:1;color:var(--accent)}.sidebar-link.active:before{content:"";position:absolute;left:-12px;top:6px;bottom:6px;width:3px;border-radius:0 4px 4px 0;background:var(--accent)}.sidebar-footer{border-top:1px solid var(--sidebar-line);padding-top:10px;margin-top:6px}.sidebar-signout{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;color:var(--sidebar-text);font-size:13.5px;font-weight:500;padding:9px 12px;border-radius:9px;cursor:pointer;text-align:left;transition:background-color .12s var(--ease),color .12s var(--ease)}.sidebar-signout:hover{background:var(--sidebar-bg-hover);color:#fff}@media (max-width:860px){.sidebar{top:auto;bottom:0;left:0;right:0;height:auto;width:100%;flex-direction:row;align-items:center;border-right:0;border-top:1px solid var(--sidebar-line);padding:6px 8px max(6px,env(safe-area-inset-bottom))}.sidebar-brand,.sidebar-section-label{display:none}.sidebar-nav{flex-direction:row;overflow-x:auto;overflow-y:hidden;flex:1 1;gap:2px}.sidebar-link{flex-direction:column;gap:3px;padding:6px 10px;font-size:10.5px;white-space:nowrap}.sidebar-link.active:before{left:10px;right:10px;top:auto;bottom:-6px;height:3px;width:auto;border-radius:4px 4px 0 0}.sidebar-footer{border-top:0;padding-top:0;margin-top:0;margin-left:4px}.sidebar-signout span{display:none}}.wrap{max-width:1080px;margin:0 auto;padding:28px 32px 64px}.sidebar~.wrap{margin-left:var(--sidebar-w);margin-right:0}@media (max-width:860px){.wrap{padding:20px 16px 40px}.sidebar~.wrap{margin-left:0;padding-bottom:96px}}h1{font-size:23px;margin:0 0 4px;letter-spacing:-.01em;font-weight:700}.sub{color:var(--muted);font-size:13.5px;margin:0 0 22px;max-width:640px}.page-header{justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:4px}.page-header,.page-header .titles{display:flex;align-items:flex-start}.page-header .titles{gap:12px}.page-header .icon-badge{width:38px;height:38px;border-radius:10px;flex-shrink:0;display:flex;align-items:center;justify-content:center;background:var(--accent-soft);color:var(--accent);margin-top:1px}.page-header .actions{display:flex;gap:8px;flex-wrap:wrap}.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px;box-shadow:var(--shadow-sm);transition:border-color .14s var(--ease),transform .14s var(--ease),box-shadow .14s var(--ease)}.card.hoverable:hover,a .card:hover{border-color:var(--line-hover);box-shadow:var(--shadow-md);transform:translateY(-1px)}.row{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.name{font-weight:600;color:var(--text)}.meta{font-size:13px;margin-top:2px}.badge,.meta{color:var(--muted)}.badge{font-size:11px;text-transform:uppercase;letter-spacing:.04em;padding:4px 9px;border-radius:999px;border:1px solid transparent;background:#eef0f6;white-space:nowrap;font-weight:600}.badge.lead{color:#2058c8;background:var(--accent-2-soft)}.badge.on{color:#0f7a41;background:var(--success-soft)}.badge.off{color:var(--muted);background:#eef0f6}.badge.warn{color:#a15a04;background:var(--warning-soft)}.badge.danger{color:#b5271e;background:var(--danger-soft)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--accent);color:#fff;border:0;border-radius:10px;padding:12px 18px;font-weight:600;font-size:14px;text-decoration:none;cursor:pointer;box-shadow:0 1px 2px rgba(217,85,26,.25);transition:background-color .12s var(--ease),transform 80ms var(--ease),opacity .12s var(--ease),box-shadow .12s var(--ease)}.btn:hover{background:var(--accent-hover);box-shadow:0 4px 12px rgba(217,85,26,.3)}.btn:active{transform:scale(.97)}.btn:disabled{opacity:.55;cursor:default;transform:none;box-shadow:none}.btn:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px}.btn-secondary{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:#fff;color:var(--text);border:1px solid var(--line);border-radius:10px;padding:11px 17px;font-weight:600;font-size:14px;text-decoration:none;cursor:pointer;transition:border-color .12s var(--ease),background-color .12s var(--ease),transform 80ms var(--ease)}.btn-secondary:hover{border-color:var(--line-hover);background:var(--panel-hover)}.btn-secondary:active{transform:scale(.97)}.btn-secondary:disabled{opacity:.55;cursor:default;transform:none}.btn-danger{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:none;color:var(--danger);border:1px solid var(--danger-soft);border-radius:10px;padding:7px 12px;font-weight:600;font-size:13px;cursor:pointer;text-decoration:none;transition:background-color .12s var(--ease),border-color .12s var(--ease)}.btn-danger:hover{background:var(--danger-soft);border-color:var(--danger)}.btn-danger:disabled{opacity:.55;cursor:default}.notice{border-left:3px solid var(--accent);padding:10px 14px;background:var(--accent-soft);border-radius:8px;margin-bottom:16px;color:#7a3512}.notice.warn{border-left-color:var(--warn);background:var(--warning-soft);color:#7a4c04}.err{border-left-color:var(--danger);background:var(--danger-soft);color:#8c211a}code{background:#eef0f6;padding:2px 6px;border-radius:6px;font-size:12px}.lbl{display:block;font-size:13px;color:var(--muted);margin:14px 0 6px;font-weight:500}.input{width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--line);background:#fff;color:var(--text);font-size:16px;transition:border-color .12s var(--ease),box-shadow .12s var(--ease)}.input:hover{border-color:var(--line-hover)}.input:focus{outline:none;border-color:var(--accent-2);box-shadow:0 0 0 3px var(--accent-2-soft)}.select{padding:8px 10px;border-radius:8px;border:1px solid var(--line);background:#fff;color:var(--text);font-size:13px;cursor:pointer;transition:border-color .12s var(--ease)}.select:hover{border-color:var(--line-hover)}.select:focus-visible{outline:2px solid var(--accent-2);outline-offset:1px}.topbar{display:flex;justify-content:space-between;gap:12px;margin-bottom:18px;flex-wrap:wrap}.linkbtn,.topbar{align-items:center}.linkbtn{background:#fff;border:1px solid var(--line);color:var(--text);border-radius:9px;padding:7px 12px;font-size:13px;cursor:pointer;text-decoration:none;display:inline-flex;gap:6px;font-weight:500;transition:border-color .12s var(--ease),color .12s var(--ease),background-color .12s var(--ease)}.linkbtn:hover{border-color:var(--line-hover);background:var(--panel-hover)}.linkbtn:active{transform:scale(.97)}.linkbtn:disabled{opacity:.5;cursor:default}.card.pending{opacity:.55;pointer-events:none}.searchbar{width:100%;max-width:320px}.empty-state{display:flex;flex-direction:column;align-items:center;text-align:center;padding:36px 20px;color:var(--muted);gap:8px}.empty-state .icon{color:#c3c9dc;margin-bottom:4px}.empty-state .title{color:var(--text);font-weight:600;font-size:14px}@keyframes shimmer{0%{background-position:-400px 0}to{background-position:400px 0}}.skel{background:linear-gradient(90deg,#edeff5 25%,#f6f7fb 37%,#edeff5 63%);background-size:800px 100%;animation:shimmer 1.4s ease-in-out infinite;border-radius:6px}.skel-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;margin-bottom:10px}.skel-line{height:12px;border-radius:6px}