/* Expiry Data (expirydata.shop): dark terminal / expiry-dashboard layout.
   Own pages: body.xd.xd-own. Shared checkout/order pages: body.xd on top of
   style.css + od.css: those keep a light page with this site's header/footer. */
body.xd {
  --paper: #f4f6f5; --sheet: #ffffff; --ink: #0d1110; --ink-soft: #56605c; --rule: #dfe4e2;
  --blue: #0b7d5a; --blue-deep: #08603f; --blue-wash: #e2f3ec; --hl: #ffb000;
  --night: #07090a; --night-2: #12171a; --glow: rgba(57, 255, 136, .18);
  --accent: var(--blue); --wash: var(--blue-wash);
  --t-bg: #07090a; --t-tile: #0e1214; --t-line: #1f282b; --t-ink: #d6e2dc; --t-dim: #7d8f88;
  --t-green: #39ff88; --t-amber: #ffb000; --t-red: #ff5d5d;
}
.xd-own { margin: 0; background: var(--t-bg); color: var(--t-ink); font: 15.5px/1.65 ui-sans-serif, -apple-system, 'Segoe UI', Roboto, Arial, sans-serif; }
.xd-own *, .xd-own *::before, .xd-own *::after { box-sizing: border-box; }
.xd-own a { color: var(--t-green); text-decoration: none; }
.xd-own a:hover { text-decoration: underline; }
.xd-own h1, .xd-own h2, .xd-own h3 { font-family: 'IBM Plex Mono', ui-monospace, monospace; font-weight: 600; letter-spacing: -0.02em; line-height: 1.2; color: #f2f7f4; margin: 0 0 .55em; }
.xd-own h1 { font-size: clamp(1.7rem, 3.6vw, 2.5rem); }
.xd-own h2 { font-size: 1.25rem; }
.xd-own h3 { font-size: 1rem; }
.xd-own code { font-family: 'IBM Plex Mono', monospace; font-size: .86em; background: #142024; color: var(--t-green); padding: 1px 5px; border-radius: 2px; word-break: break-all; }
.xd .skip { position: absolute; left: -9999px; }
.xd .skip:focus { left: 8px; top: 8px; background: var(--t-amber); color: #000; padding: 8px 12px; z-index: 99; }

/* tape + header */
.tx-tape { display: flex; gap: 34px; overflow: hidden; white-space: nowrap; background: #000; border-bottom: 1px solid var(--t-line); font: 500 .72rem/26px 'IBM Plex Mono', monospace; color: var(--t-dim); padding: 0 18px; text-transform: uppercase; letter-spacing: .08em; }
.tx-tape span::before { content: '▲ '; color: var(--t-green); }
.tx-tape span:nth-child(even)::before { content: '▼ '; color: var(--t-red); }
.tx-head { display: flex; align-items: center; gap: 22px; padding: 12px 18px; border-bottom: 1px solid var(--t-line); background: var(--t-bg); flex-wrap: wrap; font-family: 'IBM Plex Mono', monospace; }
.tx-logo { color: #f2f7f4 !important; font-weight: 600; font-size: 1.05rem; text-decoration: none !important; }
.tx-prompt { color: var(--t-green); margin-right: 6px; }
.tx-dot { color: var(--t-amber); }
.tx-nav { display: flex; gap: 2px; flex: 1; flex-wrap: wrap; }
.tx-nav a { color: var(--t-dim) !important; font-size: .86rem; padding: 4px 10px; border: 1px solid transparent; text-decoration: none !important; }
.tx-nav a::before { content: '['; color: #3a4a45; } .tx-nav a::after { content: ']'; color: #3a4a45; }
.tx-nav a:hover { color: var(--t-green) !important; border-color: var(--t-line); }
.tx-key { color: #000 !important; background: var(--t-amber); padding: 6px 12px; font: 600 .82rem 'IBM Plex Mono', monospace; text-decoration: none !important; }

/* dashboard grid */
.tx-main { max-width: 1240px; margin: 0 auto; padding: 18px; }
.tx-dash { display: grid; grid-template-columns: repeat(12, 1fr); gap: 12px; }
.tx-tile { background: var(--t-tile); border: 1px solid var(--t-line); padding: 18px 20px; grid-column: span 4; min-width: 0; }
.tx-hero { grid-column: span 8; grid-row: span 2; padding: 28px 30px; }
.tx-hero p { color: #b9c8c1; max-width: 70ch; }
.tx-cal { grid-column: span 4; }
.tx-chartbox { grid-column: span 4; }
.tx-ls { grid-column: span 5; }
.tx-steps { grid-column: span 3; }
.tx-dash-pack .tx-hero { grid-row: span 1; }
.tx-dash-pack .tx-spec { grid-column: span 12; }
.tx-label { font: 500 .72rem/1.3 'IBM Plex Mono', monospace; text-transform: uppercase; letter-spacing: .1em; color: var(--t-amber); margin: 0 0 12px; }
.tx-label a { color: var(--t-amber) !important; }
.tx-note { font-size: .82rem; color: var(--t-dim); }
.tx-sub { color: var(--t-dim); max-width: 80ch; }
.tx-cta { display: flex; gap: 10px; flex-wrap: wrap; margin: 22px 0 10px; }
.tx-btn { display: inline-block; font: 600 .9rem 'IBM Plex Mono', monospace; background: var(--t-green); color: #001b0b !important; padding: 10px 18px; text-decoration: none !important; border: 1px solid var(--t-green); }
.tx-btn:hover { background: #7dffb0; }
.tx-btn-o { background: transparent; color: var(--t-green) !important; }
.tx-btn-o:hover { background: rgba(57, 255, 136, .08); }
.tx-cal-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.tx-cal-cols b { font: 600 .85rem 'IBM Plex Mono', monospace; color: #f2f7f4; }
.tx-cal ul { list-style: none; padding: 0; margin: 8px 0 0; }
.tx-cal li { font: .88rem 'IBM Plex Mono', monospace; padding: 6px 8px; border-left: 2px solid var(--t-line); margin: 4px 0; color: var(--t-ink); }
.tx-cal li:first-child { border-left-color: var(--t-green); background: rgba(57, 255, 136, .06); color: var(--t-green); }
.tx-q { list-style: none; padding: 0; margin: 0; }
.tx-q li { padding: 8px 0 8px 22px; border-bottom: 1px dashed var(--t-line); position: relative; font-size: .92rem; }
.tx-q li::before { content: '?'; position: absolute; left: 0; color: var(--t-amber); font-family: 'IBM Plex Mono', monospace; }
.tx-ls pre { background: #000; border: 1px solid var(--t-line); padding: 12px 14px; overflow-x: auto; margin: 0 0 10px; }
.tx-ls code { background: none; color: #cfe; font-size: .78rem; word-break: normal; padding: 0; }
.tx-c { color: var(--t-dim); }
.tx-steps ol { list-style: none; counter-reset: s; padding: 0; margin: 0; }
.tx-steps li { counter-increment: s; padding: 8px 0 8px 34px; position: relative; font-size: .9rem; }
.tx-steps li::before { content: '0' counter(s); position: absolute; left: 0; color: var(--t-green); font-family: 'IBM Plex Mono', monospace; }
.tx-steps b { color: #f2f7f4; font-family: 'IBM Plex Mono', monospace; font-weight: 500; }

/* chart */
.xd-chart { margin: 0; }
.xd-chart svg { width: 100%; height: auto; display: block; background: #000; border: 1px solid var(--t-line); }
.xd-grid line { stroke: #14201c; stroke-width: 1; }
.xd-chart polyline { fill: none; stroke-width: 2; stroke-linejoin: round; }
.xd-st { stroke: var(--t-amber); }
.xd-sp { stroke: var(--t-green); stroke-width: 1.4 !important; opacity: .85; }
.xd-axis { display: flex; justify-content: space-between; font: .66rem 'IBM Plex Mono', monospace; color: var(--t-dim); margin-top: 4px; }
.xd-chart figcaption { font-size: .8rem; color: var(--t-ink); margin-top: 8px; }
.xd-chart figcaption small { color: var(--t-dim); }
.k { display: inline-block; width: 12px; height: 2px; vertical-align: middle; margin-right: 4px; }
.k-st { background: var(--t-amber); } .k-sp { background: var(--t-green); }

/* pack boards */
.tx-packs { margin-top: 36px; }
.tx-packs > h2 { border-bottom: 1px solid var(--t-line); padding-bottom: 8px; }
.tx-board { margin: 22px 0; border: 1px solid var(--t-line); background: var(--t-tile); }
.tx-board-head { display: flex; gap: 16px; align-items: baseline; flex-wrap: wrap; padding: 12px 16px; border-bottom: 1px solid var(--t-line); background: #0a0e0f; }
.tx-board-head h3 { margin: 0; color: var(--t-amber); text-transform: uppercase; font-size: .85rem; letter-spacing: .08em; }
.tx-board-head p { margin: 0; color: var(--t-dim); font-size: .85rem; flex: 1 1 300px; }
.tx-row { display: grid; grid-template-columns: minmax(0, 3fr) 50px minmax(0, 1.6fr) 100px 70px; gap: 12px; align-items: center; padding: 10px 16px; border-top: 1px solid #151c1e; }
.tx-row:hover { background: #10181a; }
.tx-row:target { background: rgba(255, 176, 0, .08); }
.tx-row-h { border-top: 0; font: 500 .68rem 'IBM Plex Mono', monospace; text-transform: uppercase; letter-spacing: .1em; color: var(--t-dim); padding-top: 8px; padding-bottom: 8px; }
.tx-row-h:hover { background: none; }
.tx-row a:not(.tx-get) { color: #f2f7f4 !important; font-weight: 500; }
.tx-row small { display: block; color: var(--t-dim); font-size: .76rem; }
.tx-row > span { font-size: .88rem; }
.tx-res { font: 600 .8rem 'IBM Plex Mono', monospace; color: var(--t-green); }
.tx-px { font: 600 .92rem 'IBM Plex Mono', monospace; color: var(--t-amber); text-align: right; }
.tx-get { display: inline-block; font: 600 .78rem 'IBM Plex Mono', monospace; color: #001b0b !important; background: var(--t-green); padding: 4px 12px; text-decoration: none !important; }
.tx-get::before { content: '→ '; }

/* pack page */
.tx-buy { grid-column: span 4; border-color: #3a3214; }
.tx-big { font: 600 2.2rem/1 'IBM Plex Mono', monospace; color: var(--t-amber); margin: 0 0 12px; }
.tx-spec dl { display: grid; grid-template-columns: 180px 1fr; margin: 0; }
.tx-spec dt { font: 500 .8rem 'IBM Plex Mono', monospace; color: var(--t-dim); padding: 8px 0; border-top: 1px solid var(--t-line); text-transform: uppercase; letter-spacing: .05em; }
.tx-spec dd { margin: 0; padding: 8px 0; border-top: 1px solid var(--t-line); }

/* pages, blog */
.tx-pagehead { padding: 26px 0 8px; max-width: 860px; }
.tx-pagehead p:not(.tx-label) { color: #b9c8c1; }
.tx-postgrid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 12px; margin-top: 14px; }
.tx-post { display: block; background: var(--t-tile); border: 1px solid var(--t-line); padding: 16px 18px; text-decoration: none !important; }
.tx-post:hover { border-color: var(--t-green); }
.tx-post time { display: block; font: .72rem 'IBM Plex Mono', monospace; color: var(--t-dim); }
.tx-post b { display: block; color: #f2f7f4; font: 500 .98rem/1.35 'IBM Plex Mono', monospace; margin: 4px 0 8px; }
.tx-post span { color: var(--t-dim); font-size: .86rem; }
.tx-read { max-width: 820px; }
.tx-lede { font-size: 1.08rem; color: #b9c8c1; }
.tx-faq details { border-top: 1px solid var(--t-line); }
.tx-faq summary { cursor: pointer; padding: 12px 0; font-weight: 600; color: #f2f7f4; }
.tx-faq summary::marker { color: var(--t-green); }
.tx-faq p { margin: 0 0 14px; color: #b9c8c1; }
.tx-aside { margin: 32px 0; }
.tx-mini { display: grid; grid-template-columns: minmax(0, 2.4fr) minmax(0, 1.4fr) 90px 60px; gap: 10px; align-items: center; padding: 8px 0; border-top: 1px solid var(--t-line); font-size: .88rem; }
.tx-mini a:not(.tx-get) { color: #f2f7f4 !important; }
.tx-mini span { color: var(--t-dim); }
.tx-more { display: flex; flex-direction: column; gap: 6px; margin: 28px 0; }
.tx-more a::before { content: '> '; color: var(--t-dim); }
.ms-prose { line-height: 1.75; }
.ms-prose h2 { margin-top: 2.2rem; }
.ms-prose li { margin: .35rem 0; }
.ms-prose p, .ms-prose li { color: #c9d6d0; }
.ms-code { background: #000; color: #cfe; border: 1px solid var(--t-line); padding: 1rem 1.1rem; overflow-x: auto; font-size: .84rem; line-height: 1.55; }
.ms-code code { background: none !important; color: inherit; padding: 0; word-break: normal; }
.ms-table { border-collapse: collapse; width: 100%; margin: 1rem 0; font-size: .92rem; }
.ms-table th, .ms-table td { border-bottom: 1px solid var(--t-line); padding: .5rem .7rem; text-align: left; vertical-align: top; }
.ms-note { font-size: .88rem; color: var(--t-dim); }

/* footer */
.tx-foot { border-top: 1px solid var(--t-line); margin-top: 56px; background: #000; color: var(--t-dim); font-size: .88rem; }
.tx-foot-grid { max-width: 1240px; margin: 0 auto; padding: 28px 18px; display: grid; grid-template-columns: 2fr 1fr 1fr 1fr; gap: 24px; }
.tx-foot-grid a { display: block; color: var(--t-ink) !important; padding: 2px 0; text-decoration: none !important; font-family: 'IBM Plex Mono', monospace; font-size: .84rem; }
.tx-foot-grid a:hover { color: var(--t-green) !important; }
.tx-foot-grid p { margin: 0 0 8px; }
.tx-status { display: flex; gap: 22px; flex-wrap: wrap; margin: 0; padding: 8px 18px; border-top: 1px solid var(--t-line); font: .72rem 'IBM Plex Mono', monospace; color: var(--t-dim); }
.tx-status span:first-child { color: var(--t-green); }

/* shared checkout/order pages under this chrome (light page, dark chrome) */
body.xd:not(.xd-own) .od-cartbar, body.xd:not(.xd-own) .od-disclaimer { display: none !important; }
body.xd:not(.xd-own) .tx-head, body.xd:not(.xd-own) .tx-foot { font-family: 'IBM Plex Mono', monospace; }
body.xd:not(.xd-own) .tx-head { background: #07090a; }
body.xd:not(.xd-own) .tx-head nav, body.xd:not(.xd-own) .tx-foot nav { background: transparent; border: 0; padding: 0; box-shadow: none; position: static; }
body.xd:not(.xd-own) .tx-logo { color: #f2f7f4 !important; }
body.xd:not(.xd-own) .tx-nav a { color: #9fb1aa !important; }
body.xd:not(.xd-own) footer.tx-foot { color: #7d8f88; }
body.xd:not(.xd-own) .tx-foot-grid a { color: #d6e2dc !important; }
body.xd:not(.xd-own) .tx-label { color: #ffb000; }

@media (max-width: 960px) {
  .tx-tile, .tx-hero, .tx-cal, .tx-chartbox, .tx-ls, .tx-steps, .tx-buy { grid-column: span 12; grid-row: auto; }
  .tx-row { grid-template-columns: minmax(0, 1fr) 70px; }
  .tx-row > span:nth-child(2), .tx-row > span:nth-child(3) { display: none; }
  .tx-row-h > span:nth-child(5) { display: none; }
  .tx-row > span:nth-child(4) { grid-column: 2; }
  .tx-row > span:nth-child(5) { grid-column: 1 / -1; }
  .tx-foot-grid { grid-template-columns: 1fr 1fr; }
  .tx-mini { grid-template-columns: 1fr auto; }
  .tx-mini span:not(.tx-px) { display: none; }
}
