/* Cursor Bridge shared theme: Cryptowatch (2022) terminal style on a white base.
   Fonts are self-hosted (SIL OFL 1.1, see fonts/OFL-*.txt). Use only the tokens in :root.

   Classes
   - Page:      body.cb
   - Header:    .cb-header .cb-logo .cb-nav .cb-nav-item ([aria-current="page"] | .active) .cb-header-right
   - Ticker:    .cb-ticker .cb-ticker-scroll .cb-tick (b = symbol)
   - Footer:    .cb-footer
   - Layout:    .cb-page .cb-page-title .cb-section-title
   - Panels:    .cb-panel .cb-panel-header .cb-panel-body
   - Tables:    .cb-table (.num, .dense, .wrap, tr.active) .cb-table-wrap .cb-sort (th[aria-sort])
   - Tabs:      .cb-tabs .cb-tab (.active | [aria-selected="true"])
   - Buttons:   .cb-btn .cb-btn-secondary .cb-btn-ghost .cb-btn-danger .cb-btn-sm
   - Inputs:    .cb-input .cb-select .cb-textarea ([aria-invalid="true"] | .is-invalid)
   - Badges:    .cb-badge (.long .short .alert .cta .muted)   Tags: .cb-tag (same variants, 9px caps)
   - Code:      .cb-pre (pre.cb-pre) .cb-code (code.cb-code)
   - Notices:   .cb-notice (.info .ok .warn .error)
   - Key/value: .cb-kv (children alternate key, value; dl/dt/dd works)
   - Utility:   .cb-label .cb-mono .cb-muted .cb-up .cb-long .cb-down .cb-short .cb-empty
                .cb-row (.wrap) .cb-grow .cb-sr-only .cb-tip[data-tip]
   - Modal:     .cb-modal-backdrop .cb-modal
*/

@font-face{font-family:"DM Sans";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/dmsans-400.ttf) format("truetype")}
@font-face{font-family:"DM Sans";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/dmsans-700.ttf) format("truetype")}
@font-face{font-family:"Iosevka Custom";font-style:normal;font-weight:400;font-display:swap;src:url(fonts/iosevka-400.woff2) format("woff2")}
@font-face{font-family:"Iosevka Custom";font-style:normal;font-weight:700;font-display:swap;src:url(fonts/iosevka-700.woff2) format("woff2")}

:root{
  --bg:#ffffff;
  --bg-2:#fafafa;--bg-5:#f2f2f2;--bg-10:#e6e6e6;
  --surface:#ffffff;
  --text:#1f1f1f;--text-strong:#050505;--text-weak:#454545;--text-weaker:#6b6b6b;
  --icon:#797979;--placeholder:rgba(31,31,31,.4);
  --border-weaker:#e9e9e9;--border-weak:#d2d2d2;--border-mid:#bcbcbc;--border-strong:#a5a5a5;
  --cta:#98b4dc;--cta-highlight:#7299cf;--cta-weak:#c1d2ea;
  --cta-bg-20:#eaf0f8;
  --cta-bg-30:#e0e9f5;
  --cta-bg-50:#ccdaee;
  --cta-bg-70:#b7cbe7;
  --cta-bg-90:#a2bce0;
  --row-hover:rgba(152,180,220,.35);
  --cta-ink:#2b5797;
  --long:#1c6b3b;--long-highlight:#114124;--long-bg-20:#d2e1d8;
  --short:#ea0d3f;--short-highlight:#b70b33;--short-bg-20:#fbcfd9;
  --alert:#f9a52a;--alert-bg-20:#feedd4;--alert-ink:#8a5300;
  --channel:#41afcf;--focus:#3b99fc;
  --font-sans:"DM Sans",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --font-mono:"Iosevka Custom",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --header-h:40px;--ticker-h:33px;--footer-h:30px;--panel-head-h:33px;
}

/* ---- Reset / base ---------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
html{font-size:14px;-webkit-text-size-adjust:100%;text-size-adjust:100%;color-scheme:light}
body{margin:0;background:var(--bg);color:var(--text);font:400 14px/1.43 var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
body.cb{min-height:100vh}
[hidden]{display:none!important}
h1,h2,h3,h4,h5,h6{margin:0 0 8px;font-weight:700;color:var(--text-strong)}
h1,h2{font-size:18px;line-height:24px}
h3{font-size:14px;line-height:20px}
h4,h5,h6{font-size:12px;line-height:16px}
strong,b{font-weight:700}
small{font-size:11px}
a{color:var(--cta-ink);text-decoration:underline;text-decoration-color:rgba(43,87,151,.35);text-underline-offset:2px}
a:where(:hover){text-decoration-color:currentColor}
code,kbd,samp,pre{font-family:var(--font-mono);font-size:12px}
pre{margin:0}
kbd{display:inline-block;padding:0 4px;border:1px solid var(--border-weak);border-bottom-width:2px;background:var(--bg-2);line-height:16px;font-size:11px}
img,svg{vertical-align:middle}
table{border-collapse:collapse}
hr{border:0;border-top:1px solid var(--border-weak);margin:16px 0}
button,input,select,textarea{font:inherit;color:inherit;letter-spacing:inherit}
::selection{background:var(--cta-weak);color:var(--text-strong)}
/* Outline geometry is preset so "transition:all" never animates the focus ring in from 3px. */
:where(a,button,input,select,textarea,summary,[tabindex]){outline-color:var(--focus);outline-width:1px;outline-offset:-1px}
:focus-visible{outline:1px solid var(--focus);outline-offset:-1px}
*{scrollbar-width:thin;scrollbar-color:var(--cta) transparent}
::-webkit-scrollbar{width:6px;height:6px}
::-webkit-scrollbar-thumb{background:var(--cta)}
::-webkit-scrollbar-thumb:hover{background:var(--cta-highlight)}
::-webkit-scrollbar-track,::-webkit-scrollbar-corner{background:transparent}

/* ---- Header (40px) --------------------------------------------------- */
.cb-header{display:flex;align-items:stretch;flex:none;height:var(--header-h);background:var(--cta-bg-30);border-bottom:1px solid var(--border-weak);color:var(--text)}
.cb-logo{display:flex;align-items:center;gap:8px;flex:none;padding:0 12px;font:700 16px/1 var(--font-sans);color:var(--text-strong);text-decoration:none;white-space:nowrap;transition:all .2s}
.cb-logo:hover{background:var(--cta-bg-70);color:var(--text-strong)}
.cb-logo img{display:block;width:20px;height:20px;flex:none}
.cb-nav{display:flex;align-items:stretch;flex:0 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.cb-nav::-webkit-scrollbar{display:none}
.cb-nav-item{display:inline-flex;align-items:center;flex:none;gap:6px;height:100%;margin:0;padding:0 10px;background:transparent;border:0;border-top:3px solid transparent;border-bottom:3px solid transparent;border-radius:0;font:400 14px/1 var(--font-sans);color:var(--text-weak);text-decoration:none;white-space:nowrap;cursor:pointer;transition:all .2s}
.cb-nav-item:hover{background:var(--cta-bg-70);color:var(--text-strong)}
.cb-nav-item[aria-current="page"],.cb-nav-item.active,.cb-nav-item[aria-selected="true"]{background:var(--cta-bg-70);border-top-color:var(--cta-highlight);color:var(--text-strong)}
.cb-header-right{display:flex;align-items:center;gap:8px;flex:0 0 auto;margin-left:auto;padding:0 10px}

/* ---- Ticker strip (33px, mono) --------------------------------------- */
.cb-ticker{display:flex;align-items:stretch;flex:none;height:var(--ticker-h);background:var(--bg);border-bottom:1px solid var(--border-weak);font:400 11px/1 var(--font-mono);color:var(--text-weak);overflow:hidden;white-space:nowrap}
.cb-ticker-scroll{display:flex;align-items:stretch;flex:1 1 auto;min-width:0;overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.cb-ticker-scroll::-webkit-scrollbar{display:none}
.cb-tick{display:flex;align-items:center;flex:none;gap:6px;padding:0 10px;border-right:1px solid var(--border-weak);color:var(--text-weak);text-decoration:none;white-space:nowrap;transition:all .2s}
.cb-tick:hover{background:var(--cta-bg-20);color:var(--text-strong)}
.cb-tick b{color:var(--text-strong);font-weight:400}

/* ---- Footer status bar (30px) ---------------------------------------- */
.cb-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:2px 12px;flex:none;min-height:var(--footer-h);padding:6px 10px;background:var(--bg);border-top:1px solid var(--border-strong);font-size:11px;line-height:16px;color:var(--text-weak)}
.cb-footer a{color:var(--text);text-decoration:none}
.cb-footer a:hover{color:var(--text-strong);text-decoration:underline}

/* ---- Layout ----------------------------------------------------------- */
.cb-page{width:100%;max-width:1180px;margin:0 auto;padding:0 20px 40px}
.cb-page-title{margin:0;padding:28px 0 8px;font-size:18px;line-height:24px;font-weight:700;color:var(--text-strong)}
.cb-section-title{margin:0 0 8px;font-size:18px;line-height:24px;font-weight:700;color:var(--text-strong)}

/* ---- Panels ----------------------------------------------------------- */
.cb-panel{min-width:0;background:var(--surface);border:1px solid var(--border-weak)}
.cb-panel-header{display:flex;align-items:center;gap:8px;min-height:var(--panel-head-h);padding:0 10px;border-bottom:1px solid var(--border-weak);font-size:12px;line-height:16px;font-weight:700;color:var(--text-strong)}
.cb-panel-header h1,.cb-panel-header h2,.cb-panel-header h3,.cb-panel-header h4{margin:0;font-size:inherit;line-height:inherit}
.cb-panel-body{padding:10px}

/* ---- Tables (CW markets) --------------------------------------------- */
.cb-table-wrap{overflow-x:auto;max-width:100%}
.cb-table{width:100%;border-collapse:collapse;border-spacing:0;font:400 12px/16px var(--font-mono);color:var(--text)}
/* The 2px header rules are inset shadows so they stay attached while the header is sticky. */
.cb-table th{position:sticky;top:0;z-index:1;height:32px;padding:0 10px;background:var(--bg);border-top:0;border-bottom:0;box-shadow:inset 0 2px 0 var(--cta-bg-50),inset 0 -2px 0 var(--cta-bg-50);font:700 12px/16px var(--font-sans);color:var(--text-strong);text-align:left;white-space:nowrap;vertical-align:middle}
.cb-table td{height:32px;padding:0 10px;white-space:nowrap;vertical-align:middle}
.cb-table tbody tr{transition:background-color .2s}
.cb-table tbody tr:nth-child(odd){background:var(--cta-bg-20)}
.cb-table tbody tr:hover{background:var(--row-hover)}
.cb-table tbody tr.active,.cb-table tbody tr[aria-selected="true"]{background:var(--cta-bg-50)}
.cb-table tbody tr.active>:first-child,.cb-table tbody tr[aria-selected="true"]>:first-child{box-shadow:inset 3px 0 0 var(--cta-highlight)}
.cb-table .num{text-align:right;font-variant-numeric:tabular-nums}
.cb-table.dense th,.cb-table.dense td{height:24px;font-size:11px}
.cb-table.wrap td{white-space:normal}
.cb-sort{display:inline-flex;align-items:center;gap:6px;width:100%;height:100%;min-height:28px;margin:0;padding:0;background:none;border:0;font:inherit;color:inherit;text-align:inherit;cursor:pointer;white-space:nowrap;transition:all .2s}
.cb-table th.num .cb-sort{justify-content:flex-end}
.cb-sort:hover{color:var(--cta-ink)}
th[aria-sort] .cb-sort::after{font-size:9px;line-height:1;color:var(--cta-highlight)}
th[aria-sort="ascending"] .cb-sort::after{content:"\25B2"}
th[aria-sort="descending"] .cb-sort::after{content:"\25BC"}

/* ---- Tabs ------------------------------------------------------------- */
/* The 1px base rule is an inset shadow so the active 2px underline covers it and the strip can scroll. */
.cb-tabs{display:flex;align-items:stretch;height:40px;border-bottom:0;box-shadow:inset 0 -1px 0 var(--border-weak);overflow-x:auto;overflow-y:hidden;scrollbar-width:none}
.cb-tabs::-webkit-scrollbar{display:none}
.cb-tab{display:inline-flex;align-items:center;justify-content:center;flex:none;margin:0;padding:0 16px;background:transparent;border:0;border-bottom:2px solid transparent;border-radius:0;font:400 14px/1 var(--font-sans);color:var(--text-weak);text-decoration:none;white-space:nowrap;cursor:pointer;transition:all .2s}
.cb-tab:hover{color:var(--text-strong)}
.cb-tab.active,.cb-tab[aria-selected="true"]{color:var(--text-strong);border-bottom-color:var(--text-strong)}

/* ---- Buttons ---------------------------------------------------------- */
.cb-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:30px;margin:0;padding:0 10px;background:var(--cta-weak);border:1px solid var(--cta-weak);border-radius:0;font:400 13px/1 var(--font-sans);color:var(--text-strong);text-decoration:none;white-space:nowrap;vertical-align:middle;cursor:pointer;user-select:none;transition:all .2s}
.cb-btn:hover:not(:disabled),.cb-btn:active:not(:disabled){background:var(--cta-highlight);border-color:var(--cta-highlight);color:var(--text-strong)}
.cb-btn-secondary{background:transparent;border-color:var(--cta-weak)}
.cb-btn-secondary:hover:not(:disabled),.cb-btn-secondary:active:not(:disabled){background:var(--cta-bg-20);border-color:var(--cta)}
.cb-btn-ghost{background:transparent;border-color:transparent}
.cb-btn-ghost:hover:not(:disabled),.cb-btn-ghost:active:not(:disabled){background:var(--cta-bg-20);border-color:transparent}
.cb-btn-danger{background:rgba(234,13,63,.12);border-color:rgba(234,13,63,.6);color:var(--short-highlight)}
.cb-btn-danger:hover:not(:disabled),.cb-btn-danger:active:not(:disabled){background:rgba(234,13,63,.2);border-color:var(--short);color:var(--short-highlight)}
.cb-btn-sm{min-height:24px;padding:0 6px;font-size:12px}
.cb-btn:disabled,.cb-btn[aria-disabled="true"]{opacity:.5;cursor:not-allowed}

/* ---- Inputs ----------------------------------------------------------- */
.cb-input,.cb-select,.cb-textarea{max-width:100%;min-height:30px;margin:0;padding:0 8px;background:var(--cta-bg-20);border:1px solid transparent;border-bottom-color:var(--cta-bg-90);border-radius:0;font:400 12px/16px var(--font-mono);color:var(--text);transition:all .2s}
.cb-textarea{display:block;padding:8px;line-height:1.5;resize:vertical}
.cb-select{appearance:none;-webkit-appearance:none;padding-right:26px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M0 0h10L5 6z' fill='%23454545'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 9px center;background-size:8px 5px}
.cb-input:hover,.cb-select:hover,.cb-textarea:hover{background-color:var(--cta-bg-30)}
.cb-input:focus,.cb-select:focus,.cb-textarea:focus{background-color:var(--surface);outline:1px solid var(--focus);outline-offset:-1px}
.cb-input::placeholder,.cb-textarea::placeholder{color:var(--placeholder);opacity:1}
.cb-input[aria-invalid="true"],.cb-select[aria-invalid="true"],.cb-textarea[aria-invalid="true"],.cb-input.is-invalid,.cb-select.is-invalid,.cb-textarea.is-invalid{border-color:var(--short)}
.cb-input:user-invalid,.cb-textarea:user-invalid{border-color:var(--short)}
.cb-input:disabled,.cb-select:disabled,.cb-textarea:disabled{opacity:.6;cursor:not-allowed}

/* ---- Badges and tags ---------------------------------------------------- */
.cb-badge{display:inline-block;padding:0 6px;background:var(--bg-2);border:1px solid var(--border-weak);border-radius:2px;font:400 11px/16px var(--font-mono);color:var(--text-weak);white-space:nowrap;vertical-align:middle;font-variant-numeric:tabular-nums}
.cb-badge.long{background:var(--long-bg-20);border-color:rgba(28,107,59,.45);color:var(--long)}
.cb-badge.short{background:var(--short-bg-20);border-color:rgba(234,13,63,.45);color:var(--short-highlight)}
.cb-badge.alert{background:var(--alert-bg-20);border-color:var(--alert);color:var(--alert-ink)}
.cb-badge.cta{background:var(--cta-bg-20);border-color:var(--cta-weak);color:var(--cta-ink)}
.cb-badge.muted{background:transparent;border-color:var(--border-weak);color:var(--text-weaker)}
.cb-tag{display:inline-block;padding:0 4px;border:1px solid var(--border-weak);border-radius:2px;font:700 9px/13px var(--font-sans);letter-spacing:.04em;text-transform:uppercase;color:var(--text-weak);white-space:nowrap;vertical-align:middle}
.cb-tag.long{background:var(--long-bg-20);border-color:rgba(28,107,59,.45);color:var(--long)}
.cb-tag.short{background:var(--short-bg-20);border-color:rgba(234,13,63,.45);color:var(--short-highlight)}
.cb-tag.alert{background:var(--alert-bg-20);border-color:var(--alert);color:var(--alert-ink)}
.cb-tag.cta{background:var(--cta-bg-20);border-color:var(--cta-weak);color:var(--cta-ink)}
.cb-tag.muted{border-color:var(--border-weak);color:var(--text-weaker)}

/* ---- Code ------------------------------------------------------------- */
.cb-pre,pre.cb-pre{margin:0;padding:10px;background:var(--bg-2);border:1px solid var(--border-weak);font:400 12px/1.5 var(--font-mono);color:var(--text);white-space:pre;overflow:auto;tab-size:2}
.cb-pre code{font:inherit;color:inherit;background:none;padding:0}
.cb-code{padding:0 4px;background:var(--bg-5);font-family:var(--font-mono);font-size:12px;color:var(--text-strong);overflow-wrap:anywhere}

/* ---- Notices ---------------------------------------------------------- */
.cb-notice{padding:8px 12px;background:var(--bg-2);border:1px solid var(--border-weak);color:var(--text)}
.cb-notice>:last-child{margin-bottom:0}
.cb-notice.info{background:var(--cta-bg-20);border-color:var(--cta-weak)}
.cb-notice.ok{background:var(--long-bg-20);border-color:var(--long);color:var(--long)}
.cb-notice.warn{background:var(--alert-bg-20);border-color:var(--alert);color:var(--alert-ink)}
.cb-notice.error{background:var(--short-bg-20);border-color:var(--short);color:var(--short-highlight)}

/* ---- Key / value grid --------------------------------------------------- */
.cb-kv{display:grid;grid-template-columns:140px minmax(0,1fr);gap:4px 12px;margin:0;align-items:baseline}
.cb-kv>:nth-child(odd){margin:0;font-size:12px;line-height:18px;color:var(--text-weaker)}
.cb-kv>:nth-child(even){margin:0;min-width:0;font:400 12px/18px var(--font-mono);color:var(--text);overflow-wrap:anywhere}

/* ---- Utilities -------------------------------------------------------- */
.cb-label{font-size:11px;line-height:16px;font-weight:400;color:var(--text-weaker)}
.cb-mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}
.cb-muted{color:var(--text-weaker)}
.cb-up,.cb-long{color:var(--long)}
.cb-down,.cb-short{color:var(--short)}
.cb-empty{padding:30px;text-align:center;color:var(--text-weaker)}
.cb-row{display:flex;align-items:center;gap:8px}
.cb-row.wrap{flex-wrap:wrap}
.cb-grow{flex:1;min-width:0}
.cb-sr-only{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.cb-tip{position:relative}
.cb-tip[data-tip]::before,.cb-tip[data-tip]::after{position:absolute;left:50%;z-index:70;pointer-events:none;opacity:0;visibility:hidden;transition:all .2s ease-out}
.cb-tip[data-tip]::before{content:"";bottom:calc(100% + 1px);transform:translate(-50%,4px);border:5px solid transparent;border-top-color:var(--border-mid)}
.cb-tip[data-tip]::after{content:attr(data-tip);bottom:calc(100% + 10px);transform:translate(-50%,4px);padding:5px 6px;background:rgba(255,255,255,.96);border:1px solid var(--border-weak);font:400 11px/1.3 var(--font-sans);color:var(--text);white-space:nowrap}
.cb-tip[data-tip]:hover::before,.cb-tip[data-tip]:hover::after,.cb-tip[data-tip]:focus-visible::before,.cb-tip[data-tip]:focus-visible::after{opacity:1;visibility:visible;transform:translate(-50%,0)}

/* ---- Modal ------------------------------------------------------------ */
.cb-modal-backdrop{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;background:rgba(255,255,255,.6)}
.cb-modal{position:relative;width:min(480px,100%);max-height:calc(100vh - 32px);overflow:auto;padding:25px;background:var(--bg);border:1px solid var(--border-strong);border-radius:0;box-shadow:none}

/* ---- Responsive ------------------------------------------------------- */
@media (max-width:640px){
  .cb-page{padding:0 12px 32px}
  .cb-page-title{padding:20px 0 6px}
  .cb-header-right{padding:0 8px}
  .cb-modal{padding:16px}
}
@media (max-width:480px){
  .cb-logo{padding:0 10px}
  .cb-logo span{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
  .cb-nav-item{padding:0 8px}
  .cb-kv{grid-template-columns:110px minmax(0,1fr)}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{transition:none!important;scroll-behavior:auto!important}
}
