/* Shared finishing layer. Keep the approved surfaces and colors in theme.css. */
/* Stretch each desktop row as a unit; the next row then has one consistent gap. */
.page-radar .workspace,.page-radar .lower-grid{align-items:stretch}
.page-radar .watches{display:flex;flex-direction:column}
.page-radar .watches .panel-title{min-height:28px;flex:none}
.page-radar .create .panel-title{min-height:28px}
.page-radar .watches :is(#watches,#alerts){flex:1}
.page-radar .watches #watches:has(>.empty),.page-radar .watches #alerts:has(>.empty){display:flex;align-items:center;justify-content:center}
.page-radar .watch-explainer{flex:none}
:is(.page-swap,.page-radar,.page-earn) {text-size-adjust:100%;-webkit-text-size-adjust:100%}
:is(.page-swap,.page-radar,.page-earn) :is(button,input,select,a) {touch-action:manipulation}
:is(.page-swap,.page-radar,.page-earn) :is(.intro>div,.stats>div,.pair>label,.filter-pair>label,.detail-rates>div,.lp-stats>div) {min-width:0}
:is(.page-radar,.page-earn) .intro-detail {width:100%}
:is(.page-radar,.page-earn) .stats strong {line-height:1.35;font-variant-numeric:tabular-nums}
:is(.page-radar,.page-earn) .panel-title {flex-wrap:wrap;row-gap:10px}
:is(.page-radar,.page-earn) .pair {align-items:start}
:is(.page-radar,.page-earn) .pair label {grid-template-rows:auto minmax(50px,auto);align-content:start}
:is(.page-radar,.page-earn) :is(input,select) {max-width:100%}
:is(.page-radar,.page-earn) .intro h1 {text-wrap:balance}
.page-swap .amount-card {container-type:inline-size}
.page-swap .amount-row>strong {font-size:clamp(23px,9cqi,34px);overflow-wrap:anywhere}
.page-swap :is(.field-top,.field-bottom) {gap:10px;line-height:1.5}
.page-swap .field-top>span:last-child {text-align:right}
.page-swap .token-button {max-width:55%;min-width:0}
.page-swap .token-button strong {min-width:0}
.page-swap :is(.route-name,.route-hop,.route-result,.swap-topline,.modal-copy) {overflow-wrap:anywhere}
.page-swap .route-result strong {font-variant-numeric:tabular-nums}
.page-swap .route-options {scroll-padding-block:8px}
:is(.page-swap,.page-radar,.page-earn) dialog {max-height:calc(100dvh - 32px);overscroll-behavior:contain;scrollbar-gutter:stable}
.page-earn :is(.detail-rates strong,.lp-stats b,.components b) {overflow-wrap:anywhere;font-variant-numeric:tabular-nums}
.page-earn .lp-stats {grid-template-columns:repeat(3,minmax(0,1fr))}
.page-earn .compare-tray {bottom:max(16px,env(safe-area-inset-bottom))}

/* Cap the canvas on large monitors while retaining full-width section colors. */
@media(min-width:1600px) {
 .page-swap {--gutter:max(4.4vw,calc((100vw - 1600px)/2 + 70px))}
 .page-swap .hero {gap:64px}
 .page-swap .hero-copy h1 {font-size:clamp(80px,5vw,96px)}
 .page-swap .footer-word {font-size:min(13.6vw,218px)}
}

/* Tablet: give data tables and navigation enough room before they collide. */
@media(min-width:801px) and (max-width:1000px) {
 .page-swap .site-header nav a[href^="#"] {display:none}
 .page-swap .site-header nav {margin-left:auto}
 .page-swap .site-header {gap:12px}
 .page-swap .header-social {gap:5px}
 .page-swap .hero {grid-template-columns:minmax(0,1fr) 350px;gap:24px}
 .page-swap .hero-copy h1 {font-size:clamp(42px,5.7vw,57px)}
}
@media(min-width:561px) and (max-width:1000px) {
 :is(.page-radar,.page-earn)>header {gap:12px}
 :is(.page-radar,.page-earn)>header .brand {font-size:29px}
 :is(.page-radar,.page-earn)>header nav a {padding-inline:12px}
 :is(.page-radar,.page-earn) .intro {grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px}
 :is(.page-radar,.page-earn) .intro h1 {font-size:clamp(38px,5.4vw,54px);line-height:1.02;letter-spacing:-.045em}
 :is(.page-radar,.page-earn) .intro-detail {max-width:340px;justify-self:end}
 .page-radar .workspace,.page-radar .lower-grid {grid-template-columns:1fr}
 .page-radar .watches {min-height:430px}
 .page-earn .earn-workspace {grid-template-columns:minmax(0,1fr)}
 .page-earn .filter-panel {position:static}
 .page-earn .filters {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:20px}
 .page-earn .filters>label:first-child {grid-column:1/-1}
 .page-earn .type-field {grid-row:span 2}
 .page-earn .results-heading {flex-direction:row;align-items:center}
 .page-earn .sort-field {max-width:176px}
 .page-earn .table-head,.page-earn .yield-row {grid-template-columns:minmax(0,1fr) 150px 75px;gap:18px}
}
@media(min-width:561px) and (max-width:720px) {
 :is(.page-radar,.page-earn)>header {flex-wrap:wrap}
 :is(.page-radar,.page-earn)>header .brand {order:0}
 :is(.page-radar,.page-earn)>header .theme-toggle {order:1;margin-left:auto}
 :is(.page-radar,.page-earn)>header #wallet {order:2}
 :is(.page-radar,.page-earn)>header nav {order:3;flex-basis:100%;margin:0;justify-content:center}
 :is(.page-radar,.page-earn)>header nav a {flex:1;text-align:center}
}

/* Phone: consistent hierarchy, left-aligned copy and usable form controls. */
@media(max-width:560px) {
 :is(.page-radar,.page-earn)>header {padding:16px 18px}
 :is(.page-radar,.page-earn)>header .brand {font-size:28px;letter-spacing:-1.5px}
 :is(.page-radar,.page-earn) .intro {padding:30px 0 26px}
 :is(.page-radar,.page-earn) .intro h1 {font-size:clamp(36px,10vw,52px);line-height:1.02;letter-spacing:-.045em;text-wrap:initial}
 :is(.page-radar,.page-earn) .intro-detail {justify-self:start;margin:20px 0 0;max-width:none;width:100%;text-align:left}
 :is(.page-radar,.page-earn) .intro .lede {display:block;font-size:16px;line-height:1.45;margin:0 0 10px}
 :is(.page-radar,.page-earn) .intro-detail>p:not(.lede) {font-size:12px;line-height:1.65}
 :is(.page-radar,.page-earn) :is(input:not([type=checkbox]):not([type=radio]),select,#protocol,#from-custom,#to-custom,.filter-pair select,.sort-field select) {font-size:16px;min-height:48px}
 :is(.page-radar,.page-earn)>header nav a {min-height:40px;display:flex;align-items:center;justify-content:center}
 :is(.page-radar,.page-earn) .text-link {font-size:12px;line-height:1.5;padding-block:5px}
 :is(.page-radar,.page-earn) .panel-title>.text-button {min-height:36px}
 .page-radar .connection-top {flex-wrap:wrap}
 .page-radar .included {margin-left:0}
 .page-radar .live-copy .button {min-height:44px}
 .page-radar .watch {grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
 .page-earn .filter-pair {grid-template-columns:repeat(2,minmax(0,1fr))}
 .page-earn .rate-value {font-size:clamp(21px,5.8vw,27px)}
 .page-earn .load-more {align-items:start;flex-wrap:wrap}
 .page-earn .compare-tray {gap:10px;flex-wrap:wrap}
 .page-earn .compare-tray>div {min-width:110px}
 .page-earn .compare-tray .button {min-height:44px}
 .page-swap .site-header {column-gap:8px}
 .page-swap .wordmark {font-size:25px}
 .page-swap .hero-copy h1 {font-size:clamp(41px,10.8vw,60px)}
 .page-swap .hero {padding-top:30px}
 .page-swap .trade-panel {padding:18px}
 .page-swap .trade-panel .amount-card {padding:13px}
 .page-swap .amount-row input {font-size:30px}
 .page-swap :is(.route-picker-input,.stock-search) {font-size:16px}
 .page-swap .token-button {padding:7px 9px;gap:6px;font-size:13px}
 .page-swap .token-button strong {max-width:72px}
 .page-swap .trade-panel .route-option {grid-template-columns:12px minmax(0,1fr) minmax(82px,.75fr);gap:8px}
 .page-swap .ranking-switch button {min-height:40px}
 .page-swap .swap-grid>div {min-width:0}
 .page-swap .swap-actions {flex-wrap:wrap}
 .page-swap .swap-actions>* {min-height:44px}
}
@media(max-width:380px) {
 .page-swap .wordmark {font-size:23px}
 .page-swap .site-header .button.small {padding-inline:10px}
 .page-swap .trade-panel {padding:15px}
 .page-swap .field-top {font-size:10px}
 .page-swap .token-button {font-size:12px;max-width:52%}
 .page-swap .token-button strong {max-width:59px}
 .page-swap .route-name,.page-swap .route-result strong {font-size:11px}
 .page-earn .lp-stats {grid-template-columns:repeat(2,minmax(0,1fr))}
 .page-earn .lp-stats>div:last-child {grid-column:1/-1}
}
/* Full precision needs its own line on narrow cards; never split a quote mid-number. */
@media(max-width:560px) {
 .page-swap .receive-card .amount-row {display:grid;grid-template-columns:minmax(0,1fr);gap:12px}
 .page-swap .receive-card .token-button {grid-row:1;justify-self:end}
 .page-swap .receive-card .amount-row>strong {grid-row:2;font-size:clamp(23px,9cqi,32px);line-height:1.2}
 .page-swap .trade-panel .route-option {grid-template-columns:12px minmax(0,1fr);row-gap:12px}
 .page-swap .route-option>.route-result {grid-column:2;display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 10px;text-align:left}
 .page-swap .route-result strong {font-size:14px;line-height:1.35}
 .page-swap .route-result small {font-size:10px}
 .page-swap .route-name {font-size:13px}
}
