/* GxMed Radar. Variables come from tokens.css; nothing here sets a colour literal except the logo. */
*{box-sizing:border-box}
body{min-height:100vh}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
.ico{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round;flex:none;vertical-align:-3px}
.ico.big{width:40px;height:40px;color:var(--ink-3)}
.top{display:flex;align-items:center;gap:var(--s3);height:56px;padding:0 var(--s3);background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.brand{display:flex;align-items:center;gap:var(--s1);color:var(--ink)}
.brand:hover{text-decoration:none}
.brand b{font-weight:600;font-size:var(--fs-body)}
.top nav{display:flex;gap:var(--half);flex:1;overflow-x:auto}
.top nav a{display:flex;align-items:center;gap:var(--s1);height:32px;padding:0 12px;border-radius:var(--radius);color:var(--ink-2)}
.top nav a:hover{background:var(--accent-weak);text-decoration:none}
.top nav a.on{background:var(--accent-weak);color:var(--accent);font-weight:600}
.tools{display:flex;gap:var(--s1)}
.icon-btn{display:flex;align-items:center;gap:6px;height:32px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius);background:transparent;color:var(--ink-2);font:inherit;cursor:pointer}
.icon-btn b{font-weight:600}
.icon-btn:hover{background:var(--accent-weak);text-decoration:none}
.sun{display:none}
:root[data-theme="dark"] .sun{display:inline}
:root[data-theme="dark"] .moon{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .sun{display:inline}:root:not([data-theme="light"]) .moon{display:none}}
.demo{background:var(--new);color:#10201B;text-align:center;padding:4px var(--s2);font-size:var(--fs-caption);font-weight:600}
main{max-width:var(--content-max);margin:0 auto;padding:var(--s3)}
h1,h2{margin:0;font-weight:600}
h1.hero{font-size:var(--fs-body);font-weight:400;color:var(--ink-2);display:flex;align-items:baseline;gap:var(--s1);margin-bottom:var(--s2)}
h1.hero b{font-size:var(--fs-figure);color:var(--ink);line-height:40px;font-variant-numeric:tabular-nums}
h1.company{font-size:var(--fs-title);margin:var(--s1) 0 var(--half)}
h2{font-size:var(--fs-caption);color:var(--ink-2);margin:var(--s4) 0 var(--s1);display:flex;gap:var(--s1);align-items:baseline}
h2 small{color:var(--ink-3);font-weight:400;font-size:inherit}
.meta{margin:0;color:var(--ink-2)}
.back{display:inline-flex;gap:6px;align-items:center;color:var(--ink-2)}
.list{list-style:none;margin:0;padding:0;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
.table{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow-x:auto}
.row{display:grid;grid-template-columns:96px minmax(180px,1.4fr) minmax(0,2fr) 96px 28px 88px;gap:var(--s2);align-items:center;min-height:var(--row);padding:0 var(--s2);border-top:1px solid var(--line);color:var(--ink)}
.list>.row:first-child,.table>.row:first-child{border-top:0}
.row>*{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
a.row:hover{background:var(--accent-weak);text-decoration:none}
.name{font-weight:600;color:var(--ink)}
a.name{color:var(--accent)}
.name.plain{color:var(--ink)}
.why,.date,.kind,.small{color:var(--ink-2)}
.small{font-size:var(--fs-caption)}
.num small,.state small{display:block;color:var(--ink-3);font-size:var(--fs-caption);line-height:14px}
.thead{color:var(--ink-3);font-size:var(--fs-caption);min-height:32px;background:var(--bg)}
.src{display:inline-flex;color:var(--ink-3)}
.tag{display:inline-block;padding:0 8px;border-radius:var(--radius);font-size:var(--fs-caption);line-height:20px;background:var(--accent-weak);color:var(--accent);font-weight:600;width:max-content}
.tag.shortage{background:transparent;color:var(--alert);box-shadow:inset 0 0 0 1px var(--alert)}
.tag.tender{background:transparent;color:var(--warn);box-shadow:inset 0 0 0 1px var(--warn)}
.tag.bought{background:transparent;color:var(--ink-2);box-shadow:inset 0 0 0 1px var(--line)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s1);height:36px;padding:0 var(--s2);border:1px solid var(--accent);border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font:600 var(--fs-body) var(--font);cursor:pointer}
.btn:hover{text-decoration:none;filter:brightness(1.08)}
.btn.small{height:28px;padding:0 12px;background:transparent;color:var(--accent)}
.btn.small:hover{background:var(--accent-weak)}
.btn:disabled{opacity:.5;cursor:wait}
.btn.ok{background:var(--accent-weak);color:var(--accent)}
.size{font-weight:600}
.size.none{font-weight:400;color:var(--ink-3)}
.basis{border-bottom:1px dotted var(--ink-3);cursor:help}
.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--radius);background:var(--accent-weak);color:var(--accent);font-size:var(--fs-caption);width:max-content;cursor:help}
.chip.hot{background:transparent;box-shadow:inset 0 0 0 1px var(--alert);color:var(--alert)}
.chip.ghost{background:transparent;box-shadow:inset 0 0 0 1px var(--line);color:var(--ink-2)}
.chips{display:flex;flex-wrap:wrap;gap:var(--s1);align-items:center}
.fit{display:grid;grid-template-columns:96px minmax(0,1fr);gap:var(--s1) 0;align-items:start}
.fit .lbl{color:var(--ink-3);font-size:var(--fs-caption);line-height:24px}
.more{margin-left:var(--s1);color:var(--ink-3);font-size:var(--fs-caption);cursor:help}
.filters{display:flex;flex-wrap:wrap;gap:var(--s2);align-items:end;margin-bottom:var(--s2)}
.filters label{display:flex;flex-direction:column;gap:4px;color:var(--ink-3);font-size:var(--fs-caption)}
.filters label.search{flex-direction:row;align-items:center;gap:var(--s1);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);padding:0 10px;height:36px;color:var(--ink-3)}
.filters input,.filters select{font:inherit;color:var(--ink);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);height:36px;padding:0 10px}
.filters input{border:0;outline:0;height:34px;padding:0;min-width:200px}
.filters select{max-width:240px}
.filters .btn{margin-bottom:4px}
.row.deal{grid-template-columns:96px 80px minmax(120px,1fr) minmax(0,1.4fr) 96px 28px}
.row.who{grid-template-columns:minmax(0,1fr) 96px 96px 120px;justify-content:start}
.table .row{grid-template-columns:minmax(200px,2fr) 64px 56px 140px 112px 120px}
.table.mols .row{grid-template-columns:minmax(140px,1.2fr) 56px 80px 80px 152px minmax(0,1.5fr) minmax(0,1.5fr)}
.table.data .row{grid-template-columns:minmax(140px,1fr) 120px 90px minmax(0,2fr) 110px}
.state{display:flex;align-items:center;gap:var(--s1);flex-wrap:wrap}
.state i{width:8px;height:8px;border-radius:50%;background:var(--ink-3)}
.state.ok i{background:var(--accent)}
.state.bad{color:var(--alert)}
.state.bad i{background:var(--alert)}
.num.hot{color:var(--alert);font-weight:600}
/* Gap marker: one segment per score part, filled from the bottom to its 0..3 level (--l). */
.gapm{display:inline-flex;gap:2px;vertical-align:middle;cursor:help}
.gapm i{display:block;width:6px;height:12px;border-radius:1px;box-shadow:inset 0 0 0 1px var(--line);background:linear-gradient(to top,var(--accent) calc(var(--l,0) * 100% / 3),transparent 0)}
.row.op{grid-template-columns:96px minmax(180px,1.4fr) minmax(0,2fr) 40px 96px 28px 88px}
.row.alert{grid-template-columns:120px 96px minmax(120px,1fr) minmax(0,1.4fr) 96px 28px}
.who{color:var(--ink-2)}
a.who{color:var(--accent);font-weight:600}
.date.warn{color:var(--warn)}
a.chip{cursor:pointer}
a.chip:hover{text-decoration:none;filter:brightness(.97)}
.chip.on{background:var(--accent);color:var(--on-accent)}
.head>.chips{margin-top:var(--s1)}
.name small{margin-left:var(--s1);font-weight:400;color:var(--ink-3);font-size:var(--fs-caption)}
.stats{display:flex;flex-wrap:wrap;gap:var(--s6);margin:var(--s3) 0 0}
.stat b{display:block;font-size:var(--fs-figure);line-height:40px;font-weight:600;font-variant-numeric:tabular-nums}
.stat span{color:var(--ink-2);font-size:var(--fs-caption)}
.stat .src{margin-left:6px}
.stat small{display:block;color:var(--ink-3);font-size:var(--fs-caption)}
.chart,.spark{display:block;max-width:100%}
.chart{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--s2);width:100%;height:auto;max-width:720px}
.bar{fill:var(--accent);opacity:.6}
.bar.last{opacity:1}
.axis{stroke:var(--line);stroke-width:1}
.val,.yr{fill:var(--ink-3);font-size:var(--fs-caption);font-family:var(--font)}
.row .spark{width:96px;height:28px}
.spark:not(:has(:not(.axis))){visibility:hidden}
.head{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--s2)}
.head>.btn{margin-top:var(--s4);flex:none}
.contact .links{display:flex;flex-wrap:wrap;gap:var(--s3);color:var(--ink-2)}
.contact .links a{display:inline-flex;gap:6px;align-items:center}
.empty{display:flex;flex-direction:column;align-items:center;gap:var(--s1);padding:var(--s6) 0;color:var(--ink-2)}
.print-only{display:none}
.flash{margin:0 0 var(--s2);color:var(--ink-2)}
@media screen and (max-width:900px){
  main{padding:var(--s2)}
  .top{gap:var(--s1);padding:0 var(--s2)}
  .brand b{display:none}
  .top nav a{padding:0 var(--s1)}
  .top nav a:not(.on) span{display:none}
  .icon-btn{padding:0 var(--s1)}
  .row,.row.deal,.row.who{grid-template-columns:1fr auto;row-gap:2px;padding:var(--s1) var(--s2)}
  .row .why{grid-column:1/-1}
  .row.op,.row.alert{grid-template-columns:auto minmax(0,1fr) auto;column-gap:var(--s1)}
  .row.op{grid-template-areas:"tag name num" "why why mk"}
  .row.alert{grid-template-areas:"tag name num" "date who who"}
  .row.op .tag,.row.alert .tag{grid-area:tag}
  .row.op .name,.row.alert .name{grid-area:name}
  .row.op .num,.row.alert .num{grid-area:num}
  .row.op .why{grid-area:why}
  .row.op .gapm{grid-area:mk;justify-self:end}
  .row.alert .date{grid-area:date}
  .row.alert .who{grid-area:who}
  .row.op .src,.row.op .btn,.row.alert .src{display:none}
  .table .row{grid-template-columns:minmax(0,1fr) auto;column-gap:var(--s1)}
  .table.cos .row{grid-template-areas:"name num" "kind size"}
  .table.cos .name{grid-area:name}.table.cos .num{grid-area:num}.table.cos .kind{grid-area:kind}.table.cos .size{grid-area:size;justify-self:end}
  .table.cos .since,.table.cos .trend{display:none}
  .table.mols .row{grid-template-areas:"name mk" "buyers spend"}
  .table.mols .name{grid-area:name}.table.mols .mk{grid-area:mk}.table.mols .buyers{grid-area:buyers}.table.mols .spend{grid-area:spend}
  .table.mols .labs,.table.mols .short,.table.mols .winners{display:none}
  .table.data .row{grid-template-areas:"name state" "when btn"}
  .table.data .name{grid-area:name}.table.data .state{grid-area:state}.table.data .when{grid-area:when}.table.data .btn{grid-area:btn}
  .table.data .rows,.table.data .state small,.table.data .name small{display:none}
  .table.cos .size.none{visibility:hidden}
  .filters label,.filters select{min-width:0;max-width:100%;width:100%}
  .filters input{min-width:0;width:100%}
  .row.deal{grid-template-columns:auto minmax(0,1fr) auto auto;grid-template-areas:"date tag num src" "name name name name" "why why why why"}
  .row.deal .date{grid-area:date}.row.deal .tag{grid-area:tag}.row.deal .num{grid-area:num}.row.deal .src{grid-area:src}.row.deal .name{grid-area:name}.row.deal .why{grid-area:why}
  .thead{display:none}
  .head{flex-direction:column}
  .head>.btn{margin-top:0}
  .stats{gap:var(--s3)}
}
@media screen and (max-width:600px){
  .top nav a span,.icon-btn:has(b) .ico{display:none}
  .top{gap:var(--s1);padding:0 var(--s2)}
  .top nav{gap:0;overflow:visible}
  .top nav a{padding:0 6px}
  .chart .val,.chart .yr{font-size:24px}
}
@page{size:A4;margin:12mm}
@media print{
  :root,:root[data-theme],:root:not([data-theme="light"]){--bg:#fff;--surface:#fff;--ink:#000;--ink-2:#333;--ink-3:#555;--line:#ccc;--accent:#0A6447;--accent-weak:#E2F0EA;--alert:#B3261E;--warn:#8A5300;color-scheme:light}
  body{font-size:12px}
  .top,.btn,.back,.demo,.icon-btn,.src{display:none!important}
  main{padding:0;max-width:none}
  h2{margin:var(--s2) 0 var(--half)}
  .stats{margin-top:var(--s1);gap:var(--s4)}
  .chart{max-width:480px;padding:var(--s1)}
  .row{min-height:24px}
  .list,.table{break-inside:auto}
  .list>.row:nth-child(n+11){display:none}
  .print-only{display:block;margin-top:var(--s2);padding-top:var(--s1);border-top:1px solid var(--line);color:var(--ink-3);font-size:var(--fs-caption)}
}

/* Draft sheet (the only shadow), playbook page, running state */
.sheet{max-width:640px;width:calc(100% - 2 * var(--s3));padding:var(--s3);border:1px solid var(--line);border-radius:var(--radius);background:var(--bg);color:var(--ink);box-shadow:0 8px 24px rgba(0,0,0,.18)}
.sheet::backdrop{background:rgba(0,0,0,.35)}
.sheet .subject{font-weight:600;margin:var(--s2) 0}
.sheet .subject small{display:block;color:var(--ink-3);font-weight:400;font-size:var(--fs-caption)}
.draft{font:inherit;white-space:pre-wrap;max-height:50vh;overflow:auto;border:1px solid var(--line);border-radius:6px;padding:var(--s2);margin:0 0 var(--s2)}
.sheet .actions{display:flex;justify-content:flex-end;gap:var(--s1);align-items:center}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.ink2{color:var(--ink-2)}
.state.run i{background:var(--accent);animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.3}}
@media (prefers-reduced-motion:reduce){.state.run i{animation:none}}

/* Trends */
.table.trends .row{grid-template-columns:minmax(140px,1fr) minmax(0,2.4fr) 96px 104px}
.table.trends .chips{gap:var(--s1)}
.table.nextgen .row{grid-template-columns:minmax(160px,1.2fr) minmax(0,1fr) minmax(0,1fr) 88px 28px}
.tag.trend{background:var(--accent-weak);margin-left:var(--s1)}
.tag.trend:hover{text-decoration:none}
@media (max-width:900px){
  .table.trends .row{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name spend" "chips chips"}
  .table.trends .name{grid-area:name}.table.trends .num{grid-area:spend}.table.trends .chips{grid-area:chips}
  .table.trends .spark-cell,.table.nextgen .row>span:nth-child(3){display:none}
  .table.nextgen .row{grid-template-columns:minmax(0,1fr) auto}
  .table.nextgen .row>span:nth-child(2){display:none}
}
.table.leaving .row{grid-template-columns:minmax(160px,1.4fr) 110px 100px 28px}
@media (max-width:900px){.table.leaving .row{grid-template-columns:minmax(0,1fr) auto 28px}.table.leaving .row>span:nth-child(3){display:none}}
.row.deal .name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row.moving{grid-template-columns:minmax(120px,200px) minmax(0,1fr)}
.table.watch .row{grid-template-columns:minmax(160px,1.2fr) minmax(0,2fr) 100px 28px}
@media (max-width:900px){.table.watch .row{grid-template-columns:minmax(0,1fr) 28px;grid-template-areas:"name src" "chips chips"}.table.watch .name{grid-area:name}.table.watch .chips{grid-area:chips}.table.watch .src{grid-area:src}.table.watch .when{display:none}.row.moving{grid-template-columns:1fr}}

/* Cards: the row's main link covers the whole row; other links stay on top */
.row.link,.row.op,.row.alert,.row.who,.row.deal{position:relative}
div.row.link>a.name{color:var(--ink)}
div.row.link>a.name::after{content:"";position:absolute;inset:0}
div.row.link:hover{background:var(--accent-weak)}
.row .chips a,.row .why a{position:relative;z-index:1}
@media screen and (max-width:900px){
  .row.op>a.name::after,.row.alert>a.who::after,.row.who>a.name::after,.row.deal>a.src::after{content:"";position:absolute;inset:0}
  .row:is(.op,.alert,.who,.deal):active,div.row.link:active{background:var(--accent-weak)}
}

/* Phone: 44 px touch targets, tab bar at the bottom for the thumb */
@media screen and (max-width:600px){
  .top{justify-content:space-between;gap:var(--s1)}
  .brand,.icon-btn{min-width:44px;height:44px;justify-content:center}
  .icon-btn:has(b) .ico{display:none}
  .top nav{position:fixed;left:0;right:0;bottom:0;z-index:5;gap:0;overflow:visible;padding-bottom:env(safe-area-inset-bottom);background:var(--surface);border-top:1px solid var(--line)}
  .top nav a,.top nav a:not(.on){flex:1 1 0;min-width:0;height:56px;padding:0 2px;flex-direction:column;justify-content:center;gap:2px;border-radius:0;font-size:var(--fs-caption)}
  .top nav a span,.top nav a:not(.on) span{display:block;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  main{padding-bottom:calc(56px + var(--s3) + env(safe-area-inset-bottom))}
  .btn,.btn.small,.filters input,.filters select,.filters label.search{min-height:44px}
  .back,.contact .links a{display:inline-flex;align-items:center;min-height:44px}
  a.chip,.tag.trend,.meta a{position:relative}
  a.chip::before,.tag.trend::before,.meta a::before{content:"";position:absolute;inset:-12px -4px}
  .row a.src{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;margin:-14px -14px -14px 0}
}
.tools form.logout{display:contents}
.loginpage{display:grid;min-height:100vh;place-items:center;padding:var(--s3)}
.loginpage main{width:100%;max-width:340px;padding:0}
.loginpage .lang{position:fixed;top:var(--s3);right:var(--s3)}
form.login{display:grid;gap:var(--s2);justify-items:stretch;text-align:center}
form.login img{justify-self:center}
form.login .flash.bad{color:var(--alert);margin:0}
form.login h1{font-size:20px;margin:0;font-weight:600}
form.login input[type=password]{height:44px;padding:0 var(--s3);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);font-size:16px}
form.login .btn{height:44px;justify-content:center}
form.login input:disabled,form.login .btn:disabled{opacity:.5}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* Phone: one card per opportunity (type and amount, then the company, then the reason and the marker), nothing cut off, no sideways scroll */
@media screen and (max-width:600px){
  .list.ops{display:grid;gap:var(--s1);background:none;border:0;border-radius:0}
  .list.ops>.row.op{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"tag num" "name name" "why mk";align-items:start;gap:var(--half) var(--s1);padding:var(--s2);background:var(--surface);border:1px solid var(--line);border-radius:var(--radius)}
  .list.ops>.row.op>*{overflow:visible;text-overflow:clip;white-space:normal}
  .list.ops>.row.op .tag{justify-self:start}
  .list.ops>.row.op .num{justify-self:end;font-weight:600;white-space:nowrap}
  .list.ops>.row.op .name{font-size:16px;font-weight:600;line-height:1.3;overflow-wrap:anywhere}
  .list.ops>.row.op .why{grid-column:auto;color:var(--ink-2)}
  .list.ops>.row.op .gapm{align-self:center}
}

/* Home-screen app (viewport-fit=cover): clear of the notch, the rounded corners and the home bar. env() is 0 in a browser tab. */
@media screen{
  .top{height:calc(56px + env(safe-area-inset-top));padding-top:env(safe-area-inset-top);padding-left:max(var(--s3),env(safe-area-inset-left));padding-right:max(var(--s3),env(safe-area-inset-right))}
  main{padding-left:max(var(--s3),env(safe-area-inset-left));padding-right:max(var(--s3),env(safe-area-inset-right))}
  .loginpage{padding:max(var(--s3),env(safe-area-inset-top)) max(var(--s3),env(safe-area-inset-right)) max(var(--s3),env(safe-area-inset-bottom)) max(var(--s3),env(safe-area-inset-left))}
  .loginpage .lang{top:max(var(--s3),env(safe-area-inset-top));right:max(var(--s3),env(safe-area-inset-right))}
  .chart{overflow:visible}
}
@media screen and (max-width:900px){
  .table.mols .row,.table.data .row{grid-template-columns:minmax(0,1fr) auto}   /* their desktop columns outrank .table .row */
  .top{padding-left:max(var(--s2),env(safe-area-inset-left));padding-right:max(var(--s2),env(safe-area-inset-right))}
  main{padding-left:max(var(--s2),env(safe-area-inset-left));padding-right:max(var(--s2),env(safe-area-inset-right))}
}
@media screen and (max-width:600px){
  .top nav{padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}
}
@media screen and (max-width:400px){
  .top nav a,.top nav a:not(.on){padding:0 1px;font-size:11px;letter-spacing:-.01em}
}
.gapm .lvl{display:none}
@media screen and (max-width:600px){
  .gapm{align-items:center}
  .gapm .lvl{display:inline;margin-left:var(--half);font-size:var(--fs-caption);font-weight:600;color:var(--ink-2)}
}
.contact .noemail{display:inline-flex;gap:6px;align-items:center;color:var(--ink-3)}
