/* mSamex Economic Calendar v3 — time is the spine, impact is physical.
   Self-sufficient: every token var carries a hard fallback. */
:root{--ec-red:#F6465D;--ec-gold:#F0B90B;--ec-purp:#B47AFF;--ec-blue:#7FB8FF;--ec-mint:#00D68F;--ec-mono:'Geist Mono',ui-monospace,monospace;--ec-font:'Geist',system-ui,sans-serif}
.ec-page{max-width:1100px;margin:0 auto;padding:34px 22px 80px;font:400 14px var(--ec-font);color:var(--snow,#EDF1F5)}
.ec-kicker{font:700 11px var(--ec-font);letter-spacing:.2em;color:var(--ec-mint);margin-bottom:8px}
.ec-title{font:800 40px/1.05 var(--ec-font);letter-spacing:-1px;margin:0 0 10px}
.ec-sub{color:var(--mute,#8B95A3);font-size:14.5px;line-height:1.6;max-width:64ch;margin:0 0 24px}
.ec-page a{color:var(--ec-mint);text-decoration:none}.ec-page a:hover{color:#5ce8b8}
/* ── Hero: next high impact ── */
.ec-hero{position:relative;border:1px solid rgba(246,70,93,.32);background:linear-gradient(135deg,rgba(246,70,93,.09),rgba(246,70,93,.02) 55%),var(--surface,#12161C);border-radius:16px;padding:22px 26px;margin-bottom:26px;overflow:hidden}
.ec-hero::before{content:"";position:absolute;inset-inline-start:0;top:0;bottom:0;width:3px;background:var(--ec-red);box-shadow:0 0 18px rgba(246,70,93,.55)}
.ec-hero.soon{border-color:rgba(246,70,93,.6);box-shadow:0 0 44px rgba(246,70,93,.12)}
.ec-hero-in{display:flex;gap:28px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.ec-hero .tag{display:inline-flex;align-items:center;gap:8px;font:700 10.5px var(--ec-font);letter-spacing:.16em;color:var(--ec-red);text-transform:uppercase}
.ec-hero .tag .p{width:8px;height:8px;border-radius:50%;background:var(--ec-red);box-shadow:0 0 10px rgba(246,70,93,.8);animation:ecPulse 2s infinite}
@keyframes ecPulse{0%,100%{opacity:1}50%{opacity:.35}}
.ec-hero h2{font:700 26px/1.15 var(--ec-font);letter-spacing:-.5px;margin:9px 0 7px}
.ec-hero .when{font:500 13px var(--ec-mono);color:var(--mute,#8B95A3);font-variant-numeric:tabular-nums}
.ec-hero .when .tz{color:#5A6472}
.ec-hmkts{display:flex;flex-wrap:wrap;gap:6px;margin-top:14px}
.ec-cdwrap{text-align:end;flex:none}
.ec-cd{display:flex;gap:6px;align-items:baseline;justify-content:flex-end}
.ec-cd .sg{display:flex;flex-direction:column;align-items:center;gap:5px;min-width:64px;background:rgba(11,14,17,.55);border:1px solid var(--line,#252A33);border-radius:10px;padding:10px 8px 8px}
.ec-cd .sg b{font:700 38px/1 var(--ec-mono);font-variant-numeric:tabular-nums;color:var(--snow,#EDF1F5)}
.ec-cd .sg i{font:600 9.5px var(--ec-font);font-style:normal;letter-spacing:.16em;color:#5A6472;text-transform:uppercase}
.ec-cd .sep{font:700 26px var(--ec-mono);color:#39424E;transform:translateY(-8px)}
.ec-hero.soon .ec-cd .sg b{color:var(--ec-red)}
.ec-cdlbl{font:600 10px var(--ec-font);letter-spacing:.14em;color:#5A6472;text-transform:uppercase;margin-top:8px}
/* ── Filter system ── */
.ec-bar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:8px;position:sticky;top:0;z-index:20;background:linear-gradient(var(--bg,#0B0E11) 82%,transparent);padding:10px 0 14px}
.ec-tabs{display:flex;gap:4px;background:var(--surface,#12161C);border:1px solid var(--line,#252A33);border-radius:999px;padding:4px}
.ec-tab{display:inline-flex;align-items:center;gap:7px;border:0;background:transparent;color:var(--mute,#8B95A3);font:600 12.5px var(--ec-font);border-radius:999px;padding:7px 15px;cursor:pointer;transition:color .15s,background .15s}
.ec-tab i{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.85}
.ec-tab[data-class="macro"] i{background:var(--ec-blue)}.ec-tab[data-class="earnings"] i{background:var(--ec-gold)}.ec-tab[data-class="crypto"] i{background:var(--ec-purp)}
.ec-tab:hover{color:var(--snow,#EDF1F5)}
.ec-tab[data-on]{color:#0B0E11;background:var(--ec-mint)}
.ec-tab[data-on] i{background:#0B0E11}
.ec-hi{margin-left:auto;display:inline-flex;align-items:center;gap:9px;color:var(--mute,#8B95A3);font:600 12.5px var(--ec-font);cursor:pointer;user-select:none}
.ec-hi input{position:absolute;opacity:0;width:0}
.ec-hi .sw{width:34px;height:19px;border-radius:999px;background:#1C2127;border:1px solid var(--line,#252A33);position:relative;transition:background .18s}
.ec-hi .sw::after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:#5A6472;transition:transform .18s,background .18s}
.ec-hi input:checked+.sw{background:rgba(246,70,93,.25);border-color:rgba(246,70,93,.5)}
.ec-hi input:checked+.sw::after{transform:translateX(15px);background:var(--ec-red)}
.ec-hi input:checked~span{color:var(--snow,#EDF1F5)}
/* ── Timeline spine ── */
.ec-tl{position:relative;padding-inline-start:26px}
.ec-tl::before{content:"";position:absolute;inset-inline-start:6px;top:10px;bottom:6px;width:1.5px;background:linear-gradient(var(--line,#252A33),var(--line,#252A33) 92%,transparent)}
.ec-day{position:relative;display:flex;align-items:center;gap:11px;margin:30px 0 12px;font:700 11.5px var(--ec-font);letter-spacing:.14em;color:var(--mute,#8B95A3);text-transform:uppercase}
.ec-day:first-child{margin-top:6px}
.ec-day .dot{position:absolute;inset-inline-start:-26px;margin-inline-start:1.5px;width:11px;height:11px;border-radius:50%;background:var(--bg,#0B0E11);border:2.5px solid #39424E;box-sizing:border-box}
.ec-day.today{color:var(--ec-mint)}
.ec-day.today .dot{border-color:var(--ec-mint);box-shadow:0 0 12px rgba(0,214,143,.5)}
.ec-day .rule{flex:1;height:1px;background:var(--line-soft,#1A1E25)}
.ec-now{position:relative;display:flex;align-items:center;gap:10px;margin:4px 0}
.ec-now::before{content:"";position:absolute;inset-inline-start:-23px;width:7px;height:7px;border-radius:50%;background:var(--ec-mint)}
.ec-now .ln{flex:1;height:1px;background:linear-gradient(90deg,var(--ec-mint),rgba(0,214,143,.05))}
.ec-now .t{font:700 10px var(--ec-mono);letter-spacing:.12em;color:var(--ec-mint)}
/* ── Rows: impact is physical ── */
.ec-row{display:grid;grid-template-columns:78px auto 1fr auto;gap:0 16px;align-items:start;padding:13px 16px 13px 14px;border-radius:12px;margin:3px 0;border:1px solid transparent;transition:border-color .15s,background .15s,transform .15s}
.ec-row:hover{background:var(--surface,#12161C);border-color:var(--line,#252A33)}
.ec-row .t b{display:block;font:600 15px var(--ec-mono);font-variant-numeric:tabular-nums;color:var(--snow,#EDF1F5)}
.ec-row .t span{display:block;font:500 11px var(--ec-mono);color:#5A6472;margin-top:3px;font-variant-numeric:tabular-nums}
.ec-row .t .tba{color:var(--ec-gold);font-size:13px}
.ec-imp{width:4px;border-radius:99px;background:#2A313B;align-self:stretch;min-height:34px}
.ec-row .nm{font:600 15px/1.35 var(--ec-font)}
.ec-cty{display:inline-block;font:700 10px var(--ec-mono);letter-spacing:.08em;color:var(--mute,#8B95A3);border:1px solid var(--line,#252A33);border-radius:5px;padding:1.5px 6px;margin-inline-start:9px;vertical-align:2px}
.ec-cls{display:inline-block;font:700 9.5px var(--ec-font);letter-spacing:.1em;border-radius:5px;padding:2px 7px;margin-inline-start:6px;vertical-align:2px;text-transform:uppercase}
.ec-cls.macro{color:var(--ec-blue);background:rgba(127,184,255,.09)}
.ec-cls.earnings{color:var(--ec-gold);background:rgba(240,185,11,.09)}
.ec-cls.crypto{color:var(--ec-purp);background:rgba(180,122,255,.09)}
/* market chips — the product edge, always visible */
.ec-mkts{display:flex;flex-wrap:wrap;gap:5px;margin-top:9px}
.ec-mkt{font:600 11px var(--ec-mono);color:var(--ec-mint);background:var(--mint-wash,rgba(0,214,143,.07));border:1px solid rgba(0,214,143,.22);border-radius:6px;padding:2.5px 8px;text-decoration:none;transition:background .12s,border-color .12s}
.ec-mkt:hover{background:rgba(0,214,143,.16);border-color:rgba(0,214,143,.5);color:#5ce8b8}
.ec-more{font:600 11px var(--ec-mono);color:var(--mute,#8B95A3);background:transparent;border:1px dashed var(--line,#252A33);border-radius:6px;padding:2.5px 8px;cursor:pointer}
.ec-more:hover{color:var(--snow,#EDF1F5);border-color:#39424E}
.ec-mkts:not(.open) .ec-mkt:nth-child(n+9){display:none}
.ec-mkts.open .ec-more{display:none}
/* scoreboard */
.ec-nums{display:flex;gap:8px;align-self:center}
.ec-nums .c{min-width:66px;text-align:end;background:rgba(11,14,17,.4);border:1px solid var(--line-soft,#1A1E25);border-radius:8px;padding:6px 10px 5px}
.ec-nums .c i{display:block;font:600 9px var(--ec-font);font-style:normal;letter-spacing:.13em;color:#5A6472;text-transform:uppercase;margin-bottom:3px}
.ec-nums .c b{font:600 13.5px var(--ec-mono);font-variant-numeric:tabular-nums;color:var(--mute,#8B95A3)}
.ec-nums .c.act.on{border-color:rgba(0,214,143,.4);background:rgba(0,214,143,.06)}
.ec-nums .c.act.on b{color:var(--snow,#EDF1F5)}
.ec-nums .c.act.on i{color:var(--ec-mint)}
.ec-nums .d{font:700 11px var(--ec-mono);margin-inline-start:4px;color:var(--ec-gold)}
@keyframes ecLand{0%{background:rgba(0,214,143,.35)}100%{background:rgba(0,214,143,.06)}}
.ec-nums .c.act.on.fresh{animation:ecLand 1.6s var(--ease-decel,ease-out)}
/* impact levels */
.ec-row.i3{background:var(--surface,#12161C);border-color:var(--line,#252A33)}
.ec-row.i3 .ec-imp{background:var(--ec-red);box-shadow:0 0 12px rgba(246,70,93,.45)}
.ec-row.i3 .nm{font-size:16.5px;font-weight:700}
.ec-row.i3:hover{border-color:rgba(246,70,93,.4);transform:translateY(-1px)}
.ec-row.i2 .ec-imp{background:var(--ec-gold)}
.ec-row.i1{opacity:.62}
.ec-row.i1 .nm{font-weight:500}
.ec-row.i1:hover{opacity:1}
.ec-row.past{opacity:.5}
.ec-row.past .t b{color:#5A6472}
/* ── states ── */
.ec-skel .r{display:grid;grid-template-columns:78px 4px 1fr;gap:16px;padding:16px 14px}
.ec-skel .b{border-radius:6px;background:linear-gradient(90deg,rgba(255,255,255,.05) 0%,rgba(255,255,255,.11) 50%,rgba(255,255,255,.05) 100%);background-size:200% 100%;animation:ecShim 1.3s linear infinite}
@keyframes ecShim{100%{background-position-x:-200%}}
.ec-state{display:flex;flex-direction:column;align-items:center;text-align:center;gap:8px;padding:56px 24px;color:var(--mute,#8B95A3)}
.ec-state svg{color:#39424E;margin-bottom:6px}
.ec-state b{font:600 15px var(--ec-font);color:var(--snow,#EDF1F5)}
.ec-state p{font-size:13px;line-height:1.55;max-width:36ch;margin:0}
.ec-state button{margin-top:10px;font:600 13px var(--ec-font);color:#0B0E11;background:var(--ec-mint);border:0;border-radius:999px;padding:9px 20px;cursor:pointer}
.ec-note{margin-top:34px;color:#5A6472;font-size:12.5px;line-height:1.7}
.ec-note .hi3{color:var(--ec-red)}.ec-note .hi2{color:var(--ec-gold)}.ec-note .hi1{color:#39424E}
/* ── mobile ≤820 ── */
@media (max-width:820px){
.ec-page{padding:22px 16px 110px}
.ec-title{font-size:29px}
.ec-hero{padding:18px}
.ec-hero-in{gap:18px}
.ec-hero h2{font-size:20px}
.ec-cdwrap{text-align:start;width:100%}
.ec-cd{justify-content:flex-start}
.ec-cd .sg{min-width:56px;padding:8px 6px 6px}
.ec-cd .sg b{font-size:30px}
.ec-bar{position:static;padding:6px 0 10px}
.ec-tabs{overflow-x:auto;max-width:100%}
.ec-hi{margin-left:0;width:100%}
.ec-tl{padding-inline-start:18px}
.ec-tl::before{inset-inline-start:3px}
.ec-day .dot{inset-inline-start:-18px;margin-inline-start:-1px}
.ec-now::before{inset-inline-start:-16px}
.ec-row{grid-template-columns:56px auto 1fr;gap:0 11px;padding:12px 10px}
.ec-row .t b{font-size:13.5px}
.ec-row .nm{font-size:14px}
.ec-row.i3 .nm{font-size:15px}
.ec-nums{grid-column:3;justify-self:start;margin-top:9px;gap:6px}
.ec-nums .c{min-width:58px;padding:4px 8px}
.ec-mkts:not(.open) .ec-mkt:nth-child(n+6){display:none}
}
@media (prefers-reduced-motion:reduce){.ec-hero .tag .p{animation:none}.ec-nums .c.act.on.fresh{animation:none}.ec-skel .b{animation:none}}
