/* Direct Pool v1 and Curve Launch (Bonding v1) surfaces: Discover launch cards, the launch page, its trade panel
 * and fee collection, the create steps and the portfolio. Extends the site tokens (style.css :root) and the
 * project page's swap panel; no new motion beyond hover colour. */

.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* Figures (direct-format.mjs figure()): a number never breaks across lines. Four or more zeros after the
 * decimal point are drawn as a count, 0.0₈1446: the zeros stay in the text for copying and screen readers,
 * and the drawn "0₈" is decorative (the second content value gives it empty alternative text). A browser
 * that cannot give generated content empty alternative text shows every zero instead, so screen readers
 * never read the drawn count. */
.direct-num{white-space:nowrap;font-variant-numeric:tabular-nums}
@supports (content:"0"/""){
 .direct-zeros:before{content:"0"/""}
 .direct-zeros:after{content:attr(data-zeros)/"";font-size:.72em;line-height:0;vertical-align:-.28em;margin:0 .06em 0 .03em;opacity:.85}
 /* Hidden inline (not absolutely positioned), so selecting and copying the figure gives it on one line. */
 .direct-zeros-run{display:inline-block;width:1px;height:1px;margin:0 -1px 0 0;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
}

/* ----- Discover ----- */
#direct-launches:not([hidden]):has(.direct-card)~.discover-empty,#direct-launches.direct-launches-failed:not([hidden])~.discover-empty{display:none}
.direct-launches{max-width:1440px;margin:0 auto;padding:36px 28px 18px}
.direct-launches-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;flex-wrap:wrap;margin-bottom:20px}
.direct-launches-head h2{font-family:Unbounded,sans-serif;font-size:clamp(24px,2.6vw,34px);letter-spacing:-.04em;margin:0}
.direct-launches-head p{color:var(--muted);margin:8px 0 0;font-size:14px}
.direct-sort,.direct-intervals{display:inline-flex;gap:4px;padding:4px;border-radius:9px;background:#0a1715;border:1px solid #2b3d3a}
.direct-sort button,.direct-intervals button{min-height:36px;padding:0 14px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-weight:750;font-size:12px}
.direct-sort button:hover,.direct-intervals button:hover{color:var(--fg);background:#1b2c29}
.direct-sort button[aria-pressed=true],.direct-intervals button[aria-pressed=true]{background:#baf1e2;color:#16302b}
.direct-launches-status{color:var(--muted);margin:0 0 12px;min-height:1px}
.direct-launches-status:empty{display:none}
.direct-retry,.direct-more{min-height:40px;padding:0 18px;border-radius:8px;border:1px solid #42615a;background:#132522;color:var(--fg);font-weight:750;font-size:13px}
.direct-retry:hover,.direct-more:hover{background:#1f3532}
.direct-more{display:block;margin:20px auto 0}
.direct-more:disabled{opacity:.6;cursor:progress}
.direct-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px}
.direct-card{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"art id change" "figures figures figures" "meta meta meta";gap:12px 14px;align-items:center;height:100%;padding:18px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(160deg,#192220,#111817);transition:border-color .2s,background-color .2s}
.direct-card:hover{border-color:#558f80}
.direct-card:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.direct-card-withheld{background:#131a18;border-style:dashed}
.direct-card-withheld:hover{border-color:var(--line)}
.direct-card-withheld .direct-card-art{background:#22302d;color:#86a09a}
.direct-card-name,.direct-card-symbol,.direct-title-row h1{unicode-bidi:isolate}
.launch-official-badge,.official-badge{display:inline-flex;align-items:center;font-size:11px;font-weight:750;color:#0c201c;background:var(--accent);border-color:transparent;padding:3px 8px;border-radius:5px}
.direct-card-identity .launch-official-badge{justify-self:start;width:max-content}
.direct-card-art{grid-area:art;display:grid;place-items:center;width:48px;height:48px;border-radius:12px;font-family:Unbounded,sans-serif;font-weight:700;font-size:16px;letter-spacing:-.02em;color:#0c201c}
.tone-0{background:linear-gradient(145deg,#b1ffe9,#97e7d3)}.tone-1{background:linear-gradient(145deg,#b9dbf5,#71a6cf)}.tone-2{background:linear-gradient(145deg,#cfe3ff,#8fb1ea)}.tone-3{background:linear-gradient(145deg,#ffe0a8,#e9b35f)}.tone-4{background:linear-gradient(145deg,#e7d2ff,#b594ea)}
.direct-card-identity{grid-area:id;display:flex;flex-direction:column;gap:3px;min-width:0}
.direct-card-name{font-size:15px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.direct-card-symbol{color:var(--muted);font-size:12px;font-weight:700}
.direct-card-change,.direct-change{grid-area:change;font-size:12px;font-weight:800;font-variant-numeric:tabular-nums}
.direct-card-change.up,.direct-change.up{color:#97fce4}.direct-card-change.down,.direct-change.down{color:#f1a7a4}.direct-card-change.flat,.direct-card-change.none,.direct-change.flat,.direct-change.none{color:var(--muted)}
.direct-card-figures{grid-area:figures;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}
.direct-card-figures [data-figure=price]{grid-column:1/-1}
.direct-card-figures div{min-width:0}
.direct-card-figures dt{color:var(--muted);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.direct-card-figures dd{margin:4px 0 0;font-size:12px;font-weight:750;font-variant-numeric:tabular-nums;overflow-wrap:break-word}
.direct-card-meta{grid-area:meta;color:var(--muted);font-size:11px}
.direct-card-pending,.direct-pending{color:#f0d39c}

/* ----- Launch page ----- */
.direct-launch{display:block}
.direct-page-loading{color:var(--muted);padding:40px 0}
.direct-header{display:flex;align-items:center;gap:18px;margin-bottom:18px}
.direct-header-art{width:72px;height:72px;border-radius:18px;font-size:22px;flex:none}
.direct-header-identity{min-width:0}
.direct-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.direct-title-row h1{font-family:Unbounded,sans-serif;font-size:clamp(26px,3.4vw,42px);letter-spacing:-.04em;line-height:1.1;margin:0;overflow-wrap:anywhere}
.direct-symbol{color:var(--muted);font-weight:750;margin:6px 0 0}
.direct-address{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px;font-size:12px;color:var(--muted)}
.direct-address-value{color:var(--fg);font-size:12px;padding:5px 8px;border-radius:6px;background:#0d1b19;border:1px solid #2b3d3a}
.direct-copy,.direct-refresh,.direct-stop,.direct-check{border:1px solid #42615a;background:#132522;color:var(--fg);border-radius:6px;padding:5px 10px;font-size:12px;font-weight:700}
.direct-copy:hover,.direct-refresh:hover,.direct-stop:hover,.direct-check:hover{background:#1f3532}
.direct-check:disabled{opacity:.6;cursor:progress}
.direct-refresh:disabled{opacity:.5;cursor:default}
.direct-explorer{display:inline-flex;align-items:center;gap:6px;color:var(--accent);font-weight:750}
.direct-explorer svg{width:14px;height:14px}
.direct-page-status{color:var(--muted);margin:0 0 12px;font-size:13px}
.direct-page-status:empty{display:none}
.direct-stats{margin-bottom:22px}
.direct-stats-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px;margin:0}
.direct-stats-list div{padding:14px 16px;border:1px solid var(--line);border-radius:12px;background:var(--surface);min-width:0}
.direct-stats-list dt{color:var(--muted);font-size:11px;font-weight:700}
.direct-stats-list dd{margin:6px 0 0;font-size:16px;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:break-word}
.direct-layout{display:grid;grid-template-columns:minmax(0,1fr) 370px;gap:22px;align-items:start}
.direct-main,.direct-side{display:grid;gap:22px;min-width:0}
.direct-panel{padding:20px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(160deg,#161f1d,#101615);min-width:0}
.direct-panel h2{font-family:Unbounded,sans-serif;font-size:18px;letter-spacing:-.03em;margin:0 0 14px}
.direct-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.direct-panel-head h2{margin:0}
.direct-chart{height:320px;border-radius:10px;background:#0b1312;border:1px solid #22302e}
.direct-chart.empty{background:repeating-linear-gradient(0deg,transparent 0 63px,#1c2826 63px 64px),#0b1312}
.direct-chart-note,.direct-section-note{color:var(--muted);font-size:13px;margin:12px 0 0}
.direct-chart-note:empty,.direct-section-note:empty{display:none}
.direct-table-wrap{overflow-x:auto;scrollbar-width:thin;scrollbar-color:#4c6863 #0b1514;border-radius:8px}
.direct-table-wrap::-webkit-scrollbar{height:7px}.direct-table-wrap::-webkit-scrollbar-track{background:#0b1514}.direct-table-wrap::-webkit-scrollbar-thumb{background:#4c6863;border:2px solid #0b1514;border-radius:8px}.direct-table-wrap::-webkit-scrollbar-thumb:hover{background:#649a8d}
.direct-table-wrap:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.direct-table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums;min-width:560px}
.direct-table th{text-align:left;color:var(--muted);font-weight:700;padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.direct-table td{padding:10px;border-bottom:1px solid #1e2a28;white-space:nowrap}
.direct-table a,.direct-holders a,.direct-facts a{color:var(--fg);text-decoration:underline;text-decoration-color:#4c6863;text-underline-offset:3px}
.direct-table a:hover,.direct-holders a:hover,.direct-facts a:hover{text-decoration-color:var(--accent)}
.direct-buy{color:#97fce4;font-weight:800}.direct-sell{color:#f1a7a4;font-weight:800}
.direct-holders,.direct-system-holders{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:2px;font-size:12px;font-variant-numeric:tabular-nums}
.direct-holders{counter-reset:holder}
.direct-holders li,.direct-system-holders li{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) auto auto;gap:10px;align-items:center;padding:9px 4px;border-bottom:1px solid #1e2a28}
.direct-holders li:before{counter-increment:holder;content:counter(holder);display:none}
.direct-system-holders{margin-top:16px}
.direct-system-holders li{color:var(--muted)}
.direct-share{color:var(--muted);text-align:right}
.direct-facts{margin:0;display:grid;gap:12px;font-size:13px}
.direct-facts div{display:flex;justify-content:space-between;gap:14px}
.direct-facts dt{color:var(--muted)}
.direct-facts dd{margin:0;text-align:right;overflow-wrap:anywhere}

/* ----- Trade panel (project.css .swap-panel base) ----- */
.direct-trade .swap-heading h2{font-family:Unbounded,sans-serif;letter-spacing:-.03em;margin:0}
.direct-trade-settings{padding:0 0 16px;margin-bottom:16px;border-bottom:1px solid var(--line)}
.direct-settings-label{display:block;font-size:12px;margin-bottom:10px}
/* Keep the custom value aligned with the preset percentages; its column is wider so "Custom" fits at 16px on phones (the user, 3 Nov: it read "Custon"). */
.direct-trade .slippage-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,1.5fr);gap:7px}
.direct-trade .slippage-choices input{box-sizing:border-box;width:100%;min-width:0;min-height:40px;padding:9px 4px;font-family:inherit;font-size:12px;line-height:1.25;text-align:center}
.direct-trade .slippage-choices input::placeholder{font-size:inherit;color:var(--muted);opacity:1}
.direct-trade .slippage-choices input:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(pointer:coarse){.direct-trade .slippage-choices input{font-size:16px;min-height:44px}.direct-trade .slippage-choices input::placeholder{font-size:13px}}
.direct-trade .slippage-choices button[aria-pressed=true]{background:#baf1e2;color:#16302b;border-color:#baf1e2!important}
.direct-slippage-note{color:var(--muted);font-size:11px;margin:10px 0 0}
.direct-trade .amount-label{flex-wrap:wrap;row-gap:6px}
.direct-balance{margin-left:auto;min-width:0;text-align:right;font-variant-numeric:tabular-nums}
.direct-max{border:1px solid #42615a;background:#132522;color:var(--accent);border-radius:5px;padding:3px 8px;font-size:11px;font-weight:800}
.direct-max:disabled{color:#6c7d79;cursor:default}
/* 25% · 50% · 75% · Max under "You pay" (the user, 3 Nov): four equal chips, the one that matches the amount lit. */
.direct-trade .trade-shares{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:12px}
.direct-trade .trade-share{min-height:34px;padding:6px 4px;border:1px solid #36504c;border-radius:999px;background:#12211f;color:#b9d3ce;font-family:inherit;font-size:12px;font-weight:750;line-height:1.2;font-variant-numeric:tabular-nums;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease,transform .12s ease}
.direct-trade .trade-share:hover:not(:disabled){background:#1c302d;border-color:#83b6af;color:#eff8f7}
.direct-trade .trade-share:active:not(:disabled){transform:scale(.95)}
.direct-trade .trade-share[aria-pressed=true]{background:#baf1e2;border-color:#baf1e2;color:#16302b}
.direct-trade .trade-share:disabled{opacity:.45;cursor:default}
.direct-trade .trade-share:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
@media(pointer:coarse),(max-width:600px){.direct-trade .trade-share{min-height:44px;font-size:13px}}
@media(prefers-reduced-motion:reduce){.direct-trade .trade-share{transition:none}.direct-trade .trade-share:active:not(:disabled){transform:none}}
.direct-trade .amount-entry input:disabled{color:#90a09d}
.direct-trade .amount-entry input[aria-invalid=true]{color:#f1a7a4}
.direct-trade .amount-entry output{overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.direct-trade-feedback{min-height:18px;margin:14px 0;font-size:12px;line-height:1.5;color:var(--muted)}
.direct-trade-feedback[data-tone=error]{color:#f1a7a4}.direct-trade-feedback[data-tone=warn]{color:#f0d39c}.direct-trade-feedback[data-tone=success]{color:#97fce4}
.direct-trade-feedback a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.direct-trade .swap-submit[aria-busy=true]{cursor:progress}
.direct-recovery{display:flex;flex-wrap:wrap;justify-content:center;gap:8px}
.direct-recovery>button{margin-top:10px;min-height:36px}
.direct-trade .swap-summary dd[data-tone=warn]{color:#f0d39c}.direct-trade .swap-summary dd[data-tone=error]{color:#f1a7a4}
.direct-trade .swap-summary dd{display:flex;align-items:center;gap:8px;justify-content:flex-end;text-align:right;overflow-wrap:anywhere}
.direct-trade-activity{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}
.direct-trade-activity h3{font-size:12px;margin:0 0 10px;color:var(--muted);font-weight:750}
.direct-activity{list-style:none;margin:0;padding:0;display:grid;gap:8px;font-size:12px}
.direct-activity li{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;gap:8px;align-items:center}
.direct-activity-kind{font-weight:800}
.direct-activity-amounts{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.direct-activity li[data-state=settled] .direct-activity-state{color:#97fce4}
.direct-activity li[data-state=failed] .direct-activity-state,.direct-activity li[data-state=rejected] .direct-activity-state,.direct-activity li[data-state=dropped] .direct-activity-state{color:#f1a7a4}
.direct-activity li[data-state=dispatched] .direct-activity-state,.direct-activity li[data-state=submitted] .direct-activity-state,.direct-activity li[data-state=included] .direct-activity-state{color:#f0d39c}
.direct-activity a{color:var(--fg);text-decoration:underline;text-underline-offset:3px}
.direct-activity .direct-activity-launch{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ----- Create step (launch.html review) ----- */
.direct-create-slot{margin-top:25px}
.direct-create{padding:18px;border:1px solid #365450;border-radius:10px;background:#122724}
.direct-create h3{font-size:14px;margin:0 0 14px}
.direct-create-terms{margin-bottom:14px}
.direct-create-terms dd{font-variant-numeric:tabular-nums}
.direct-create-note{color:var(--muted);font-size:12px;line-height:1.5;margin:0 0 4px}
.direct-create .swap-submit[aria-busy=true]{cursor:progress}
.direct-create .direct-trade-activity h3{font-size:12px;color:var(--muted)}
/* Your first buy (v3 factory; the user, 5 Nov, after Ascend's step): amount in HYPE, preset chips, estimate. */
.direct-first-buy{margin:16px 0 4px;padding:16px;border:1px solid #2f4b47;border-radius:10px;background:#0f201e}
.direct-first-buy-head{display:flex;align-items:center;gap:10px;margin-bottom:12px}
.direct-first-buy-head h3{margin:0;font-size:15px}
.direct-first-buy-tag{padding:3px 9px;border-radius:999px;background:#1c302d;color:#a9c0bb;font-size:11px;font-weight:700}
.direct-first-buy-entry{display:flex;align-items:center;gap:10px;padding:12px 14px;border:1px solid #36504c;border-radius:10px;background:#12211f}
.direct-first-buy-entry:focus-within{border-color:#7fcfba}
.direct-first-buy-entry input{flex:1;min-width:0;border:0;background:transparent;color:var(--fg);font:inherit;font-size:20px;font-weight:700;font-variant-numeric:tabular-nums;outline:none}
.direct-first-buy-entry input[aria-invalid=true]{color:#f1a7a4}
.direct-first-buy-entry input:disabled{color:#90a09d}
.direct-first-buy-unit{padding:6px 12px;border:1px solid #36504c;border-radius:999px;color:#e3f7f2;font-size:13px;font-weight:800}
.direct-first-buy-hint{min-height:18px;margin:8px 2px 12px;color:var(--muted);font-size:12px;line-height:1.5}
.direct-first-buy-hint[data-tone=error]{color:#f1a7a4}
.direct-first-buy-presets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px}
.direct-create .direct-first-buy-preset{min-height:38px;padding:7px 6px;border:1px solid #36504c;border-radius:999px;background:#12211f;color:#b9d3ce;font-family:inherit;font-size:12px;font-weight:750;font-variant-numeric:tabular-nums;cursor:pointer;transition:background-color .15s ease,border-color .15s ease,color .15s ease}
.direct-create .direct-first-buy-preset:hover:not(:disabled):not([aria-pressed=true]){background:#1c302d;border-color:#83b6af;color:#eff8f7}
.direct-create .direct-first-buy-preset[aria-pressed=true]{background:#baf1e2;border-color:#baf1e2;color:#16302b}
.direct-create .direct-first-buy-preset:disabled{opacity:.45;cursor:default}
.direct-create .direct-first-buy-preset:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.direct-first-buy-facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:14px 0 0}
.direct-first-buy-fact{display:flex;flex-direction:column;gap:4px;padding:10px 12px;border:1px solid #2a4440;border-radius:9px;background:#12211f;min-width:0}
.direct-first-buy-fact dt{color:var(--muted);font-size:11px}
.direct-first-buy-fact dd{margin:0;font-size:15px;font-weight:800;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.direct-first-buy-fact small{color:var(--muted);font-size:11px}
@media(max-width:600px){.direct-first-buy{padding:13px}.direct-first-buy-facts{grid-template-columns:1fr 1fr}.direct-first-buy-fact[data-fact=cap]{grid-column:1/-1}}
@media(pointer:coarse),(max-width:600px){.direct-create .direct-first-buy-preset{min-height:44px;font-size:13px}.direct-first-buy-entry input{font-size:18px}}
@media(max-width:420px){.direct-create .direct-first-buy-preset{padding:7px 2px;font-size:12px;white-space:nowrap}}
@media(prefers-reduced-motion:reduce){.direct-create .direct-first-buy-preset{transition:none}}

/* ----- Fee collection (launch page, Fees panel) ----- */
.direct-collect{margin-top:18px;padding-top:16px;border-top:1px solid var(--line)}
.direct-collect h3{font-size:14px;margin:0 0 8px}
.direct-collect-note,.direct-collect-claim{color:var(--muted);font-size:12px;line-height:1.5;margin:0 0 12px}
.direct-collect-claim{margin:12px 0 0}
.direct-collect-claim a,.direct-portfolio a{color:var(--fg);text-decoration:underline;text-decoration-color:#4c6863;text-underline-offset:3px}
.direct-collect-claim a:hover,.direct-portfolio a:hover{text-decoration-color:var(--accent)}
.direct-collect-submit,.direct-claim-button{width:100%;min-height:42px;border-radius:7px;border:0;background:#baf1e2;color:#17302b;font-weight:800;font-size:13px}
.direct-collect-submit:hover:not(:disabled),.direct-claim-button:hover:not(:disabled){background:#c8f8eb}
.direct-collect-submit:disabled,.direct-claim-button:disabled{background:#3b514d;color:#bfcbc9}
.direct-collect-submit[aria-busy=true],.direct-claim-button[aria-busy=true]{cursor:progress}
.direct-collect-submit:focus-visible,.direct-claim-button:focus-visible,.direct-refresh:focus-visible,.direct-check:focus-visible,.direct-stop:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.direct-trade-activity h4{font-size:12px;margin:0 0 10px;color:var(--muted);font-weight:750}

/* ----- Portfolio (portfolio.html) ----- */
.direct-portfolio{margin-bottom:22px}
.direct-portfolio[hidden]{display:none}
.direct-portfolio h2{font-family:Unbounded,sans-serif;font-size:20px;letter-spacing:-.03em;margin:0}
.direct-portfolio-account{color:var(--muted);font-size:13px;margin:6px 0 0}
.direct-portfolio-connect{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;padding:16px;border:1px solid var(--line);border-radius:12px}
.direct-portfolio-connect p{margin:0;color:var(--muted)}
.direct-portfolio-totals{margin:0 0 16px}
.direct-holdings-table{min-width:520px}
.direct-holding{display:flex;align-items:center;gap:10px;text-decoration:none!important}
.direct-holding-art{width:32px;height:32px;border-radius:9px;font-size:11px;flex:none}
.direct-holding-name{display:flex;flex-direction:column;gap:2px;min-width:0}
.direct-holding-name strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;max-width:220px}
.direct-holding-name small{color:var(--muted);font-weight:700}
.direct-usd{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.direct-portfolio-note{color:var(--muted);font-size:12px;line-height:1.5;margin:12px 0 0}
.direct-portfolio-note:empty{display:none}
.direct-claims{margin-top:26px;padding-top:20px;border-top:1px solid var(--line)}
.direct-claims h3{font-family:Unbounded,sans-serif;font-size:16px;letter-spacing:-.02em;margin:0}
.direct-claim-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:10px}
.direct-claim-list>li{padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.direct-claim-launch{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;font-size:13px;font-weight:800}
.direct-claim-role{color:var(--muted);font-weight:700;font-size:12px}
.direct-claim-row{display:grid;grid-template-columns:80px minmax(0,1fr) 150px;gap:12px;align-items:center;padding:8px 0;border-top:1px solid #1e2a28;font-size:13px;font-variant-numeric:tabular-nums}
.direct-claim-asset{font-weight:800}
.direct-claim-amount{min-width:0;overflow-wrap:anywhere}
.direct-claim-amount small{display:block;color:var(--muted);font-size:11px;margin-top:2px}
.direct-claim-button{min-height:36px}

/* ----- Curve Launch (bonding) ----- */
.direct-card-kind{display:inline-block;padding:2px 7px;border-radius:999px;border:1px solid #3f5a55;color:#c3e3db;font-weight:750;font-size:10px;letter-spacing:.02em}
.bonding-card .direct-card-kind{border-color:#558f80;color:#ddf7f0;background:#1c2f2c}
.bonding-card .direct-card-figures [data-figure=progress]{grid-column:1/-1}
.bonding-card-bar{display:block;height:6px;border-radius:999px;background:#22302e;overflow:hidden;margin:2px 0 6px}
.bonding-card-fill,.bonding-progress-fill{display:block;height:100%;border-radius:inherit;background:#baf1e2}
.bonding-card-graduated{color:#97fce4}
.bonding-phase{background:#1c2f2c;color:#ddf7f0}
.bonding-progress-panel{margin-bottom:22px}
.bonding-progress-track{height:12px;border-radius:999px;background:#0b1312;border:1px solid #22302e;overflow:hidden}
.bonding-progress.ready .bonding-progress-fill{background:#97fce4}
.bonding-progress-text{margin:10px 0 0;font-size:14px;font-variant-numeric:tabular-nums}
.bonding-progress-note{color:var(--muted);font-size:13px;line-height:1.6;margin:10px 0 0}
.bonding-target-label{color:var(--muted);font-size:12px;font-weight:750}
.bonding-pool-list{list-style:none;margin:14px 0 0;padding:0;display:grid;gap:12px}
.bonding-pool-list>li{padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);min-width:0}
.bonding-pool-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px;flex-wrap:wrap;margin-bottom:10px}
.bonding-pool-fee{color:var(--muted);font-size:12px;font-weight:700}
.bonding-pools code,.bonding-vault code{font-size:12px}
.bonding-venue{color:var(--muted);font-size:12px;margin:0 0 12px}
.bonding-markets{display:flex;flex-wrap:wrap;gap:4px;padding:4px;border-radius:9px;background:#0a1715;border:1px solid #2b3d3a;margin-bottom:14px}
.bonding-markets[hidden]{display:none}
.bonding-markets button{flex:1 1 auto;min-height:36px;padding:0 12px;border:0;border-radius:6px;background:transparent;color:var(--muted);font-weight:750;font-size:12px}
.bonding-markets button:hover{color:var(--fg);background:#1b2c29}
.bonding-markets button[aria-pressed=true]{background:#baf1e2;color:#16302b}
.bonding-markets button:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.bonding-cap-note{margin:12px 0 0;padding:10px 12px;border-radius:8px;border:1px solid #365450;background:#122724;font-size:12px;line-height:1.55;color:#cbe6df}
.bonding-cap-note[data-tone=warn]{border-color:#7a6236;background:#2a2314;color:#f0d39c}
.bonding-lock-note{margin:16px 0 0;font-size:12px;line-height:1.55;color:var(--muted)}
.bonding-graduate h2,.bonding-vault h2{margin-bottom:10px}
.bonding-graduate[hidden]{display:none}
.bonding-vault-holdings{margin:4px 0 0}
.bonding-vault-claims{margin-top:12px}
.bonding-collect-pools{margin-top:12px}.bonding-collect-pools .direct-claim-row{grid-template-columns:minmax(0,1fr) minmax(0,auto);row-gap:8px}.bonding-collect-pools .direct-claim-amount{text-align:right}.bonding-collect-pools .direct-claim-button{grid-column:1/-1}
.bonding-vault a,.bonding-pools a{color:var(--fg);text-decoration:underline;text-decoration-color:#4c6863;text-underline-offset:3px}
/* Launch wizard (launch.html): market weights and each target's outcome. */
.weight-editor-head{display:flex;align-items:center;justify-content:space-between;gap:12px}
.weight-editor-head h3{margin:0}
.weight-split{min-height:36px;padding:0 12px;border-radius:7px;border:1px solid #42615a;background:#132522;color:var(--fg);font-weight:750;font-size:12px}
.weight-split:hover{background:#1f3532}
.weight-split:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.weight-editor .weight-row{grid-template-columns:minmax(0,1fr) 105px 56px}
.weight-share{text-align:right;color:#aed6cc;font-size:13px;font-variant-numeric:tabular-nums}
.weight-status{margin:8px 0 0;font-size:12px;color:#a9bfbb}
.weight-status:empty{display:none}
.asset-option.asset-unoffered{border-style:dashed!important;color:#f0d39c}
.asset-mark{display:inline-grid;place-items:center;flex:none;width:28px;height:28px;border-radius:50%;background:#1e3431;color:#bbf2e3;font-size:12px;font-weight:750;line-height:1}
.weight-row .asset-mark{width:23px;height:23px;font-size:11px}
@media(max-width:600px){.asset-option .asset-mark{width:23px;height:23px}}
.bonding-terms-slot{margin-top:4px}
.bonding-terms{padding:18px;border:1px solid #365450;border-radius:10px;background:#122724}
.bonding-terms h3{font-size:14px;margin:0 0 6px}
.bonding-terms-note{color:var(--muted);font-size:12px;line-height:1.55;margin:0 0 12px}
.bonding-terms-note:empty{display:none}
.bonding-targets{list-style:none;margin:0 0 12px;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px}
.bonding-target{padding:14px;border:1px solid #2f4642;border-radius:10px;background:#0f1d1b;min-width:0}
.bonding-target.chosen{border-color:#b6efe0;background:#1b2f2c}
.bonding-target-usd{display:block;font-size:16px}
.bonding-target-chosen{color:#baf1e2;font-size:12px;font-weight:750}
.bonding-target-eth{display:block;color:#aed6cc;font-size:13px;margin:4px 0 10px;font-variant-numeric:tabular-nums}
.bonding-target dl{margin:0;display:grid;gap:6px;font-size:12px}
.bonding-target dl div{display:flex;justify-content:space-between;gap:10px}
.bonding-target dt{color:var(--muted)}
.bonding-target dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}

/* ----- Wallet network state (account.js, bound pages) ----- */
.wallet-button.wallet-wrong-network{background:#3a2d17;color:#f0d39c;border-color:#9e7b44}
.account-network-warning{color:#f0d39c;font-size:13px;margin:12px 0 0}

@media(max-width:900px){
 .direct-layout{grid-template-columns:minmax(0,1fr)}
 .direct-side{order:-1}
}
@media(max-width:600px){
 .direct-launches{padding:28px 16px 12px}
 .bonding-terms{padding:14px}
 .bonding-targets{grid-template-columns:minmax(0,1fr)}
 .weight-editor .weight-row{grid-template-columns:minmax(0,1fr) 92px 48px;gap:10px}
 .direct-launches-head{align-items:flex-start}
 .direct-grid{grid-template-columns:minmax(0,1fr)}
 .direct-header{align-items:flex-start}
 .direct-header-art{width:56px;height:56px;border-radius:14px;font-size:18px}
 .direct-stats-list{grid-template-columns:repeat(2,minmax(0,1fr))}
 .direct-panel{padding:16px}
 .direct-chart{height:240px}
 .direct-holders li,.direct-system-holders li{grid-template-columns:minmax(0,1fr) auto;row-gap:2px}
 .direct-create{padding:14px}
 .direct-claim-row{grid-template-columns:minmax(0,1fr) auto;row-gap:8px}
 .direct-claim-row .direct-claim-button{grid-column:1/-1}
}
/* Narrow phones: the trade panel's balance label is drawn as "Bal" and still reads "Balance". Without
 * empty alternative text for generated content, "Balance" stays and the row wraps. */
@media(max-width:420px){
 @supports (content:"Bal"/""){
  .direct-balance:before{content:"Bal"/""}
  .direct-balance-word{display:inline-block;width:1px;height:1px;margin:0 -1px 0 0;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}
 }
}
@media(prefers-reduced-motion:reduce){
 .direct-card,.direct-sort button,.direct-intervals button{transition:none}
}

/* Asset identity stays beside its symbol in both directions. */
.direct-trade .asset-token{display:inline-flex;align-items:center;justify-content:flex-end;gap:8px;flex-shrink:0}
.direct-trade .trade-asset-mark{display:grid;place-items:center;width:28px;height:28px;flex:0 0 28px;border-radius:50%;overflow:hidden;background:#19312e}
.direct-trade .trade-asset-mark img{display:block;width:100%;height:100%;object-fit:contain}
.direct-trade .trade-asset-mark .project-mark{border-radius:50%}
.direct-trade .asset-token-symbol{line-height:1.2}


/* Keep identity and large amounts legible inside the narrow project sidebar. */
.project-page .direct-trade .swap-heading{gap:12px;align-items:flex-start}
.project-page .direct-trade .swap-heading h2{font-size:clamp(18px,1.8vw,23px);line-height:1.35;overflow-wrap:anywhere;min-width:0}
.project-page .direct-trade .icon-control{flex:none;min-width:44px;min-height:44px}
.project-page .direct-trade .amount-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}
.project-page .direct-trade .amount-entry output{line-height:1.2}
.project-page .direct-trade .asset-token-symbol{overflow-wrap:anywhere;max-width:12ch}
.project-page .direct-trade .swap-summary>div{align-items:baseline;gap:12px}
.project-page .direct-trade .swap-summary dt{flex:1;min-width:0}
.project-page .direct-trade .swap-summary dd{flex-wrap:wrap;max-width:65%}
@media(max-width:600px){
 .project-page .direct-trade .swap-direction button,.project-page .direct-trade .bonding-markets button{min-height:44px}
 .project-page .direct-trade .swap-heading h2{font-size:22px}
 .project-page .direct-trade .amount-entry input,.project-page .direct-trade .amount-entry output{font-size:28px}
 .project-page .direct-trade .swap-summary{font-size:12px}
}
@media(max-width:380px){
 .project-page .direct-trade .amount-entry{grid-template-columns:minmax(0,1fr);gap:8px}
 .project-page .direct-trade .asset-token{justify-self:end}
}

/* Pool selection is navigation; reserve solid lime for trading actions. */
.project-page .direct-trade .bonding-markets{gap:8px;padding:0;background:transparent;border:0;border-radius:0;margin-bottom:16px}
.project-page .direct-trade .bonding-markets button{flex:0 1 auto;min-width:72px;min-height:44px;padding:0 16px;background:transparent;color:#b6c9c6;border:1px solid #3b514e;border-radius:7px;font-size:12px;font-weight:650}
.project-page .direct-trade .bonding-markets button[aria-pressed=true]{background:#223936;color:#d4eeea;border-color:#83b6af;box-shadow:inset 0 -2px #83b6af}
.project-page .direct-trade .bonding-markets button:hover:not(:disabled){background:#294440;color:#eff8f7}

/* Asset marks keep breathing room inside their circular container. */
.direct-trade .trade-asset-mark[data-asset-type=stock] img{box-sizing:border-box;padding:5px;border-radius:0}
.direct-trade .bonding-markets .asset-token{justify-content:center;gap:7px;font-size:inherit}
.direct-trade .bonding-markets .trade-asset-mark{width:22px;height:22px;flex-basis:22px}
.direct-trade .bonding-markets .trade-asset-mark[data-asset-type=stock] img{padding:4px}
.direct-trade .swap-submit{display:flex;align-items:center;justify-content:center;gap:9px}
.direct-trade .swap-submit[data-action-state=connect]{background:linear-gradient(110deg,#a4efdb,#bbe9e2);color:#152b27}
.direct-trade .swap-submit[data-action-state=connect]:hover{filter:brightness(1.05)}
.direct-trade .swap-submit .trade-action-icon{display:block;width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.direct-trade .swap-submit[data-action-state=pending] .trade-action-icon{animation:trade-action-turn 1s linear infinite}
.direct-trade .swap-submit[data-action-state=confirmed]{background:#284a45;color:#cdf7ed}
.direct-trade .trade-settings-close{display:block;margin:12px 0 0 auto;min-height:36px;padding:6px 12px;border:1px solid #4d6663;border-radius:6px;background:#203734;color:#dfefeb;font-size:12px;font-weight:700}
.direct-trade .trade-settings-close:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.direct-trade .swap-submit[data-action-state=confirmed] .trade-action-icon path{stroke-dasharray:24;stroke-dashoffset:0;animation:trade-action-check 220ms ease-out both}
@keyframes trade-action-check{from{stroke-dashoffset:24}to{stroke-dashoffset:0}}
@keyframes trade-action-turn{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.direct-trade .swap-submit[data-action-state=pending] .trade-action-icon,.direct-trade .swap-submit[data-action-state=confirmed] .trade-action-icon path{animation:none}}

.trade-impact-consent { display: flex; align-items: flex-start; gap: 12px; margin: 0 0 16px; padding: 12px; border: 1px solid #997345; border-radius: 10px; color: #f2d5aa; font-size: .875rem; line-height: 1.5; cursor: pointer; }
.trade-impact-consent[hidden] { display: none; }
.trade-impact-consent input { flex: 0 0 auto; width: 18px; height: 18px; margin: 2px 0 0; accent-color: #b6f2e2; }
.trade-impact-consent input:focus-visible { outline: 2px solid #b6f2e2; outline-offset: 4px; }
.chart-pool-valuation { flex-basis: 100%; margin: 0; font-size: .8125rem; line-height: 1.5; color: var(--muted); }
.chart-pool-valuation:empty { display: none; }

/* Fee actions need real insets, including wrapped and pending labels. */
.direct-collect-submit,.direct-claim-button{box-sizing:border-box;min-height:44px;padding:12px 18px;line-height:1.4;white-space:normal;overflow-wrap:anywhere}
@media(max-width:600px){
 .direct-max,.direct-refresh,.direct-stop,.direct-check{min-height:44px;min-width:44px;padding:10px 12px;line-height:1.4}
}
