:root{--ink:#0d0d0d;--ink-2:#5d5d5d;--ink-3:#6e6e6e;--line:#e6e6e6;--line-2:#efefef;--line-strong:#d4d4d4;--bg:#ffffff;--surface:#f7f7f8;--surface-2:#f0f0f1;--side:#f9f9f9;--green:#10a37f;--green-ink:#0b7a5f;--green-bg:#e8f6f1;--green-line:#bfe5d7;--amber:#d97706;--amber-ink:#b45309;--amber-bg:#fdf3e4;--red:#d92d20;--red-ink:#b42318;--red-bg:#fdeceb;--red-line:#f5c9c4;--blue:#2563eb;--blue-ink:#1d4ed8;--blue-bg:#ebf1fe;--blue-line:#c7d7fb;--r-chip:8px;--r-input:12px;--r-card:16px;--r-modal:20px}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);font-family:Geist,system-ui,sans-serif;font-size:14px;line-height:20px;-webkit-font-smoothing:antialiased;font-feature-settings:"tnum" 1}body,h1,h2,h3,h4,p{margin:0}a{color:inherit;text-decoration:none}button{cursor:pointer}button,input{font:inherit;color:inherit}svg{flex-shrink:0;display:block}.t-32{font-size:32px;line-height:40px;letter-spacing:-.02em}.t-24,.t-32{font-weight:600}.t-24{font-size:24px;line-height:32px;letter-spacing:-.015em}.t-20{font-size:20px;line-height:28px;font-weight:600;letter-spacing:-.01em}.t-16{font-size:16px;line-height:24px}.t-14{font-size:14px}.t-13,.t-14{line-height:20px}.t-13{font-size:13px}.t-12{font-size:12px;line-height:16px}.w-500{font-weight:500}.w-600{font-weight:600}.c-2{color:var(--ink-2)}.c-3{color:var(--ink-3)}.c-green{color:var(--green-ink)}.c-red{color:var(--red-ink)}.c-amber{color:var(--amber-ink)}.c-blue{color:var(--blue-ink)}.mono{font-family:Geist Mono,ui-monospace,monospace;font-size:13px;line-height:20px}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.app{display:flex;flex-wrap:wrap;min-height:100%;background:var(--bg)}.side-col{flex:0 0 248px;background:var(--side);border-right:1px solid var(--line-2)}.main-col{flex:999 1 560px;min-width:0}.main-col,.page{display:flex;flex-direction:column}.page{padding:32px 40px 40px;gap:24px;max-width:1280px;width:100%}.row{align-items:center}.row,.stack{display:flex}.stack{flex-direction:column}.g-4{gap:4px}.g-8{gap:8px}.g-12{gap:12px}.g-16{gap:16px}.g-20{gap:20px}.g-24{gap:24px}.g-32{gap:32px}.grow{flex:1 1 auto;min-width:0}.ml-auto{margin-left:auto}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--line-strong);background:#fff;font-size:14px;line-height:20px;font-weight:500;white-space:nowrap;color:var(--ink)}.btn-sm{height:32px;padding:0 12px;font-size:13px;gap:6px}.btn-lg{height:48px;padding:0 20px;font-size:15px}.btn-primary{background:var(--ink);border-color:var(--ink);color:#fff}.btn-green{background:var(--green-ink);border-color:var(--green-ink);color:#fff}.btn-danger{background:var(--red-ink);border-color:var(--red-ink);color:#fff}.btn-ghost{border-color:transparent;background:transparent}.btn-block{width:100%}.btn-icon{width:40px;padding:0}.btn-icon.btn-sm{width:32px}.label{display:block;font-size:13px;line-height:20px;font-weight:500;margin-bottom:8px}.hint{font-size:12px;line-height:16px;color:var(--ink-3);margin-top:8px}.input{display:flex;align-items:center;gap:8px;height:44px;padding:0 14px;border:1px solid var(--line-strong);border-radius:var(--r-input);background:#fff;font-size:14px;color:var(--ink);width:100%}.input input{border:0;outline:0;background:transparent;flex:1 1;min-width:0;padding:0;height:100%}.input.is-focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(13,13,13,.08)}.input.is-error{border-color:var(--red-ink);box-shadow:0 0 0 3px rgba(180,35,24,.08)}.select-chev{margin-left:auto;color:var(--ink-3)}.tag{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;line-height:16px;font-weight:500;background:var(--surface-2);color:#3f3f3f;white-space:nowrap}.tag-green{background:var(--green-bg);color:var(--green-ink)}.tag-amber{background:var(--amber-bg);color:var(--amber-ink)}.tag-red{background:var(--red-bg);color:var(--red-ink)}.tag-blue{background:var(--blue-bg);color:var(--blue-ink)}.tag-ink{background:var(--ink);color:#fff}.dot{width:8px;height:8px;border-radius:50%;flex:0 0 8px;background:#c4c4c4}.dot-green{background:var(--green)}.dot-amber{background:var(--amber)}.dot-red{background:var(--red)}.dot-blue{background:var(--blue)}.card{background:#fff;border:1px solid var(--line);border-radius:var(--r-card)}.card-h{display:flex;align-items:center;gap:12px;height:56px;padding:0 20px;border-bottom:1px solid var(--line-2)}.card-h .title{font-size:14px;line-height:20px;font-weight:600}.card-b{padding:20px}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:16px;gap:16px}.kpi{padding:20px}.kpi-l{display:flex;align-items:center;gap:8px;font-size:13px;line-height:20px;color:var(--ink-2)}.kpi-v{font-size:28px;line-height:36px;font-weight:600;letter-spacing:-.02em;margin-top:8px}.kpi-d{font-size:13px;line-height:20px;color:var(--ink-3);margin-top:4px}.li{display:flex;gap:12px;padding:16px 20px;border-bottom:1px solid var(--line-2)}.li:last-child{border-bottom:0}.tbl{width:100%;border-collapse:collapse}.tbl th{height:40px;text-align:left;font-size:12px;line-height:16px;font-weight:500;color:var(--ink-3)}.tbl td,.tbl th{padding:0 16px;border-bottom:1px solid var(--line-2);white-space:nowrap}.tbl td{height:64px;font-size:14px;line-height:20px}.tbl tr:last-child td{border-bottom:0}.scroll-x{overflow-x:auto}.thumb{position:relative;width:56px;height:40px;border-radius:8px;border:1px solid var(--line);background:var(--surface);overflow:hidden;flex:0 0 56px}.thumb i{position:absolute;display:block;border-radius:2px;background:#dcdcdc}.seg{padding:4px;gap:4px;background:var(--surface-2);border-radius:var(--r-input)}.seg,.seg-i{display:flex}.seg-i{flex:1 1;align-items:center;justify-content:center;gap:6px;height:32px;padding:0 12px;border-radius:8px;border:0;background:transparent;font-size:13px;font-weight:500;color:var(--ink-2);white-space:nowrap}.seg-i.is-on{background:#fff;color:var(--ink);box-shadow:0 1px 2px rgba(13,13,13,.08),0 0 0 1px rgba(13,13,13,.04)}.tog{position:relative;width:36px;height:20px;border-radius:999px;background:#d4d4d4;border:0;padding:0;flex:0 0 36px}.tog:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 2px rgba(0,0,0,.2)}.tog.is-on{background:var(--green-ink)}.tog.is-on:after{left:18px}.tabs{gap:24px;border-bottom:1px solid var(--line-2)}.tab,.tabs{display:flex}.tab{height:40px;align-items:center;gap:8px;font-size:14px;color:var(--ink-2)}.tab.is-on{color:var(--ink);font-weight:500;box-shadow:inset 0 -2px 0 var(--ink)}.nav{display:flex;align-items:center;gap:12px;height:36px;padding:0 12px;border-radius:10px;font-size:14px;line-height:20px;color:#3a3a3a}.nav.is-on{background:#ececec;color:var(--ink);font-weight:500}.nav .count{margin-left:auto;font-size:12px;color:var(--ink-3)}.nav .count.is-new{color:var(--green-ink);font-weight:600}.scrim{inset:0;background:rgba(13,13,13,.4)}.modal,.scrim{position:absolute}.modal{left:50%;top:50%;transform:translate(-50%,-50%);background:#fff;border-radius:var(--r-modal);box-shadow:0 24px 64px rgba(13,13,13,.24);overflow:hidden}.modal-h{padding:24px 24px 0}.modal-b{padding:20px 24px 24px}.modal-f{display:flex;justify-content:flex-end;gap:8px;padding:16px 24px;border-top:1px solid var(--line-2);background:var(--surface)}.icon-tile{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex:0 0 40px}.toast{display:flex;align-items:center;gap:12px;min-height:52px;padding:12px 16px;border-radius:14px;background:var(--ink);color:#fff;box-shadow:0 12px 32px rgba(13,13,13,.24)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}@media (max-width:720px){.hide-sm{display:none!important}}body,html{height:100%}.app{min-height:100vh}.side-col{position:-webkit-sticky;position:sticky;top:0;height:100vh;overflow-y:auto}@media (max-width:900px){.side-col{display:none}.page{padding:20px 16px 96px}.topbar{padding:0 16px!important}.topbar-search{display:none!important}}.btn:focus-visible,.input:focus-within,.nav:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:2px}.btn:hover{background:var(--surface)}.btn-primary:hover{background:#262626}.btn-green:hover{background:#0a6b53}.btn-danger:hover{background:#991b1b}.btn-ghost:hover,.nav:hover{background:var(--surface-2)}.li-link:hover,.tbl tbody tr:hover{background:#fafafa}.btn[aria-disabled=true],.btn[disabled]{opacity:.5;pointer-events:none}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.toast-stack{position:fixed;right:24px;bottom:24px;display:flex;flex-direction:column;gap:8px;z-index:50;max-width:420px}@media (max-width:600px){.toast-stack{left:16px;right:16px;bottom:88px}}.modal,.scrim{position:fixed}.modal{max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto}.mobile-nav{display:none}@media (max-width:900px){.mobile-nav{display:flex;position:fixed;left:0;right:0;bottom:0;height:72px;padding:0 8px 12px;border-top:1px solid var(--line-2);background:#fff;z-index:40}.mobile-nav a{flex:1 1;display:flex;flex-direction:column;align-items:center;gap:4px;justify-content:center;color:var(--ink-3);font-size:12px}.mobile-nav a.is-on{color:var(--ink);font-weight:500}}.diff-line{padding:4px 12px;border-radius:8px;white-space:pre-wrap;word-break:break-word}.diff-add{background:var(--green-bg);color:var(--green-ink)}.diff-del{background:var(--red-bg);color:var(--red-ink)}.code-input{width:48px;height:52px;border:1px solid var(--line-strong);border-radius:12px;text-align:center;font-size:20px;font-weight:600}.code-input:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(13,13,13,.08);outline:0}.cand{display:flex;gap:10px;align-items:center;width:100%;text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#fff}.cand.is-on{border-color:var(--ink);box-shadow:0 0 0 3px rgba(13,13,13,.06)}.cand:hover{background:var(--surface)}input[type=checkbox]{width:16px;height:16px;accent-color:#0d0d0d}select.input{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:36px;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236e6e6e' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 12px center}textarea.input{height:auto;min-height:88px;padding:12px 14px;resize:vertical;font-family:inherit}.page-preview{border:1px solid var(--line);border-radius:16px;background:#fff;box-shadow:0 8px 24px rgba(13,13,13,.05);overflow:hidden}.excerpt{white-space:pre-wrap;font-size:13px;line-height:20px;color:var(--ink-2);max-height:420px;overflow:auto;padding:16px 20px}.excerpt mark{background:#fff3bf;color:var(--ink);border-radius:3px;padding:0 2px}