/* Talonfall theme layer. Loaded after portal.css and feature-views.css; restyles only,
   never moves or hides controls. Pick a variant with <html data-theme="ember|blood|storm|canopy">. */
@property --spin{syntax:"<angle>";inherits:false;initial-value:0deg}

:root[data-theme]{font-family:"Bahnschrift","Segoe UI",Arial,sans-serif;--cut:16px;--cut-sm:10px}
:root[data-theme="ember"]{--bg:#0c0a09;--panel:#16110e;--panel-2:#1e1712;--sidebar:#080605;--accent:#ff6a1f;--accent-2:#ffb347;--g:255,106,31;--line:#36261c;--text:#f7ede5;--muted:#a48d7f;--faint:#6c5a4f;--gold:#f2b84b}
:root[data-theme="blood"]{--bg:#0a0708;--panel:#150f10;--panel-2:#1d1415;--sidebar:#060404;--accent:#e3263d;--accent-2:#ff6b7c;--g:227,38,61;--line:#3d1f23;--text:#f5e9e5;--muted:#a68b87;--faint:#6f5654;--gold:#dcbc82}
:root[data-theme="storm"]{--bg:#090d12;--panel:#111821;--panel-2:#18212d;--sidebar:#06090d;--accent:#5fa3ff;--accent-2:#a8d0ff;--g:95,163,255;--line:#223142;--text:#e9eff8;--muted:#8a9bb1;--faint:#5b6a7d;--gold:#c9d6e8}
:root[data-theme="canopy"]{--bg:#090e0a;--panel:#111912;--panel-2:#172219;--sidebar:#060a07;--accent:#8be05a;--accent-2:#d2f58c;--g:139,224,90;--line:#24382b;--text:#edf4e7;--muted:#8fa48a;--faint:#5d705a;--gold:#e8c46a}
:root[data-theme]{--accent-soft:rgba(var(--g),.10)}

/* Atmosphere: lit backdrop, film grain, particle canvas underneath everything. */
[data-theme] body{background:radial-gradient(1100px 650px at 80% -8%,rgba(var(--g),.16),transparent 60%),radial-gradient(900px 600px at 0% 105%,rgba(var(--g),.08),transparent 60%),var(--bg) fixed}
[data-theme] body:after{content:"";position:fixed;inset:0;z-index:60;pointer-events:none;opacity:.5;background:repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,transparent 1px 3px)}
#fx-canvas{position:fixed;inset:0;z-index:0;pointer-events:none}
[data-theme] .workspace{position:relative;z-index:1}

/* Top bar and brand. */
[data-theme] .topbar{background:linear-gradient(180deg,rgba(0,0,0,.62),rgba(0,0,0,.28));backdrop-filter:blur(14px);border-bottom:0}
[data-theme] .topbar:after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(var(--g),.9),var(--accent-2),rgba(var(--g),.9),transparent);background-size:200% 100%;animation:tf-flow 6s linear infinite}
[data-theme] .brand{gap:13px}
[data-theme] .brand span{font-weight:700;font-size:21px;letter-spacing:6px;background:linear-gradient(90deg,var(--text),var(--accent-2) 50%,var(--accent),var(--text));background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:tf-flow 8s linear infinite}
[data-theme] .brand img{filter:drop-shadow(0 0 12px rgba(var(--g),.6));animation:tf-breathe 3.6s ease-in-out infinite}
[data-theme] .status-btn{border:1px solid rgba(var(--g),.5);color:var(--accent-2);background:rgba(var(--g),.07);clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%);padding:10px 22px}
[data-theme] .status-btn:hover{background:rgba(var(--g),.18)}
[data-theme] .avatar{border-color:rgba(var(--g),.6);box-shadow:0 0 14px rgba(var(--g),.25)}

/* Sidebar. */
[data-theme] .sidebar{background:linear-gradient(180deg,rgba(0,0,0,.55),rgba(0,0,0,.25)),var(--sidebar);border-right:1px solid var(--line);z-index:25}
[data-theme] .sidebar-account strong{color:var(--accent-2)}
[data-theme] .server-select{background:linear-gradient(135deg,var(--panel-2),var(--panel));border:1px solid var(--line);clip-path:polygon(0 0,calc(100% - var(--cut-sm)) 0,100% var(--cut-sm),100% 100%,var(--cut-sm) 100%,0 calc(100% - var(--cut-sm)))}
[data-theme] .server-select select{color:var(--accent-2)}
[data-theme] .side-link{margin-right:12px;border-right:0;border-radius:0 10px 10px 0;transition:background .2s,color .2s,transform .2s}
[data-theme] .side-link:hover{background:rgba(var(--g),.07);color:var(--text);transform:translateX(3px)}
[data-theme] .side-link.active{color:var(--text);box-shadow:inset 3px 0 0 var(--accent);background:linear-gradient(90deg,rgba(var(--g),.26),rgba(var(--g),.02));animation:tf-active 3s ease-in-out infinite}
[data-theme] .side-link.active svg{color:var(--accent);filter:drop-shadow(0 0 7px rgba(var(--g),.8))}

/* Headings. */
[data-theme] .eyebrow{color:var(--accent);letter-spacing:4px;display:inline-flex;align-items:center;gap:10px}
[data-theme] .eyebrow:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--accent);box-shadow:0 0 10px var(--accent);animation:tf-blink 1.6s ease-in-out infinite}
[data-theme] .page-head h1,[data-theme] .feature-heading h1{font-weight:700;letter-spacing:1px;background:linear-gradient(100deg,var(--text) 0 40%,#fff 48%,var(--accent-2) 52%,var(--text) 60% 100%);background-size:300% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:tf-shine 7s ease-in-out infinite;filter:drop-shadow(0 4px 18px rgba(var(--g),.18))}
[data-theme] .feature-kicker{color:var(--accent);letter-spacing:3px}

/* Stat chips become angled plates. */
[data-theme] .stat-chip,[data-theme] .feature-balance{border:0;border-radius:0;background:linear-gradient(135deg,rgba(var(--g),.18),rgba(var(--g),.03) 45%),var(--panel-2);clip-path:polygon(12px 0,100% 0,calc(100% - 12px) 100%,0 100%);padding:13px 26px;box-shadow:inset 0 1px 0 rgba(255,255,255,.06)}
[data-theme] .stat-chip svg{color:var(--accent);filter:drop-shadow(0 0 6px rgba(var(--g),.7))}

/* Panels: HUD cut corners, gradient edge, inner glow. */
[data-theme] .panel,[data-theme] .specimen-panel,[data-theme] .tactical-panel,[data-theme] .feature-dino-card,[data-theme] .feature-skin-card,[data-theme] .feature-inventory-card,[data-theme] .podium-card{border-radius:0;border:1px solid transparent;
 background:linear-gradient(180deg,var(--panel-2),var(--panel)) padding-box,linear-gradient(140deg,rgba(var(--g),.75),rgba(var(--g),.08) 30%,rgba(255,255,255,.04) 70%,rgba(var(--g),.45)) border-box;
 clip-path:polygon(0 0,calc(100% - var(--cut)) 0,100% var(--cut),100% 100%,var(--cut) 100%,0 calc(100% - var(--cut)))}
[data-theme] .tactical-panel{position:relative}
[data-theme] .tactical-panel:before,[data-theme] .specimen-panel:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(var(--g),.10),transparent 30%)}
[data-theme] .panel-title{font-weight:700;letter-spacing:1.5px}
[data-theme] .panel-title .icon{color:var(--accent);filter:drop-shadow(0 0 8px rgba(var(--g),.7))}

/* Specimen: rotating light border, lit stage, ground pulse, light sweep. */
[data-theme] .specimen-panel{position:relative;isolation:isolate;
 background:radial-gradient(520px 340px at 55% 60%,rgba(var(--g),.26),transparent 70%) padding-box,linear-gradient(180deg,var(--panel-2),var(--panel)) padding-box,
 conic-gradient(from var(--spin),rgba(var(--g),.05),var(--accent) 12%,rgba(var(--g),.05) 25%,rgba(var(--g),.05) 50%,var(--accent-2) 62%,rgba(var(--g),.05) 75%) border-box;
 animation:tf-spin 9s linear infinite}
[data-theme] .specimen-panel:after{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.06) 50%,transparent 65%);background-size:250% 100%;animation:tf-sweep 6s ease-in-out infinite;z-index:2}
[data-theme] .specimen-illustration{position:relative}
[data-theme] .specimen-illustration:before{content:"";position:absolute;left:12%;right:12%;bottom:6%;height:18%;border-radius:50%;background:radial-gradient(closest-side,rgba(var(--g),.45),transparent);filter:blur(4px);animation:tf-breathe 4s ease-in-out infinite}
[data-theme] .specimen-name{font-weight:700;font-size:46px;letter-spacing:1px;margin-top:22px;text-shadow:0 0 30px rgba(var(--g),.35)}
[data-theme] .badge-cyan{background:rgba(var(--g),.14);border-color:rgba(var(--g),.55);color:var(--accent-2)}
[data-theme] .character-topline .micro{color:var(--accent-2);letter-spacing:3px}
[data-theme] .vital-bar{height:7px;border-radius:0;background:rgba(255,255,255,.06);clip-path:polygon(0 0,100% 0,calc(100% - 4px) 100%,0 100%)}
[data-theme] .vital-bar span{border-radius:0;background:linear-gradient(90deg,var(--accent),var(--accent-2),var(--accent));background-size:200% 100%;animation:tf-flow 3s linear infinite;box-shadow:0 0 14px rgba(var(--g),.6)}
[data-theme] .vital-row label{letter-spacing:1.8px}
[data-theme] .vital-row label span:last-child{color:var(--text)}

/* Tactical command. */
[data-theme] .daily-prime{border-radius:0;border:1px solid rgba(242,184,75,.5);background:linear-gradient(110deg,rgba(242,184,75,.16),rgba(242,184,75,.03) 60%);clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));position:relative;overflow:hidden}
[data-theme] .daily-prime:after{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,220,140,.14) 50%,transparent 60%);background-size:250% 100%;animation:tf-sweep 4.5s ease-in-out infinite}
[data-theme] .quick-action{border-radius:0;border:1px solid var(--line);background:radial-gradient(70px 40px at 50% 38%,rgba(var(--g),.12),transparent) ,linear-gradient(180deg,rgba(255,255,255,.04),rgba(255,255,255,.01));min-height:88px;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));transition:transform .18s,background .18s,border-color .18s}
[data-theme] .quick-action svg{color:var(--accent);width:28px;height:28px;filter:drop-shadow(0 0 8px rgba(var(--g),.65))}
[data-theme] .quick-action:hover,[data-theme] .management-action:hover{border-color:var(--accent);background:rgba(var(--g),.14);transform:translateY(-2px)}
[data-theme] .management-action{border-radius:0;border:1px solid var(--line);background:linear-gradient(90deg,rgba(var(--g),.08),rgba(255,255,255,.01) 40%);clip-path:polygon(0 0,100% 0,100% calc(100% - 10px),calc(100% - 10px) 100%,0 100%);transition:transform .18s,background .18s}
[data-theme] .management-action svg{color:var(--accent);filter:drop-shadow(0 0 6px rgba(var(--g),.6))}
[data-theme] .action-label{color:var(--accent);letter-spacing:3px;opacity:.85}
[data-theme] .server-connection{border-radius:0;border:1px solid rgba(var(--g),.4);background:rgba(var(--g),.07)}
[data-theme] .server-connection strong{color:var(--accent-2)}
[data-theme] .dot.live{background:var(--accent);box-shadow:0 0 10px var(--accent);animation:tf-blink 1.6s ease-in-out infinite}

/* Feature pages: shop, skins, inventory, casino, leaderboards, profile. */
[data-theme] .feature-dino-card,[data-theme] .feature-skin-card,[data-theme] .feature-inventory-card{transition:transform .2s;position:relative}
[data-theme] .feature-dino-card:hover,[data-theme] .feature-skin-card:hover,[data-theme] .feature-inventory-card:hover{transform:translateY(-4px)}
[data-theme] .feature-dino-card h3{letter-spacing:1px}
[data-theme] .feature-grow-buy{border-radius:0;border:1px solid rgba(var(--g),.55);background:linear-gradient(90deg,rgba(var(--g),.22),rgba(var(--g),.05));color:var(--text);clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%)}
[data-theme] .feature-grow-buy:hover:not(:disabled){background:linear-gradient(90deg,rgba(var(--g),.4),rgba(var(--g),.12))}
[data-theme] .feature-tier-heading h2{letter-spacing:2px}
[data-theme] .tab.active,[data-theme] .feature-tier-filter.active{color:var(--accent-2);border-color:rgba(var(--g),.6);background:rgba(var(--g),.12);box-shadow:0 0 18px rgba(var(--g),.18)}
[data-theme] .btn-primary{background:linear-gradient(90deg,var(--accent),var(--accent-2));border:0;color:#120a06;clip-path:polygon(8px 0,100% 0,calc(100% - 8px) 100%,0 100%)}
[data-theme] .podium-card{border-top:0}
[data-theme] .leader-table td{background:rgba(255,255,255,.02)}
[data-theme] .leader-table tr:hover td{background:rgba(var(--g),.08)}
[data-theme] .toast{border-radius:0;clip-path:polygon(0 0,calc(100% - 12px) 0,100% 12px,100% 100%,12px 100%,0 calc(100% - 12px));backdrop-filter:blur(10px)}

/* Cooldown and store timers on the action buttons. */
.action-timer{margin-left:auto;font-variant-numeric:tabular-nums;font-size:13px;font-weight:700;color:var(--gold);letter-spacing:1px}
.quick-action .action-timer{margin:0;font-size:15px}
.is-waiting{opacity:1!important;cursor:progress!important}
.is-waiting svg{opacity:.45}
[data-theme] .quick-action.is-waiting,[data-theme] .management-action.is-waiting{border-color:rgba(242,184,75,.45);background:repeating-linear-gradient(135deg,rgba(242,184,75,.06) 0 8px,transparent 8px 16px)}
.management-action{position:relative;overflow:hidden}
.action-progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.06)}
.action-progress i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--accent),var(--gold));box-shadow:0 0 10px var(--accent);transition:width 1s linear}
.store-cancel{border-color:rgba(255,104,108,.55)!important;background:rgba(255,104,108,.08)!important;color:#ffb3b5!important}
.store-cancel svg{color:#ff686c!important;filter:none!important}
/* Casino rounds: every game animates for its full play time, then lands. */
.feature-game-art{perspective:900px}
.feature-coin.is-pending{animation:cg-flip .55s linear infinite!important;transform-style:preserve-3d}
.feature-coin.is-landed{animation:cg-land .7s cubic-bezier(.2,1.6,.4,1)}
.feature-dice.is-pending{animation:cg-tumble .45s linear infinite}
.feature-dice.is-landed{animation:cg-land .6s cubic-bezier(.2,1.6,.4,1)}
.feature-slots.is-pending span{animation:cg-reel .18s linear infinite;filter:blur(1.5px)}
.feature-slots.is-pending span:nth-child(2){animation-duration:.15s}
.feature-slots.is-pending span:nth-child(3){animation-duration:.21s}
.feature-slots.is-landed span{animation:cg-stop .5s cubic-bezier(.2,1.6,.4,1) both}
.feature-slots.is-landed span:nth-child(2){animation-delay:.18s}
.feature-slots.is-landed span:nth-child(3){animation-delay:.36s}
.feature-scratch{position:relative;overflow:hidden}
.feature-scratch.is-pending:after{content:"";position:absolute;inset:-40%;background:repeating-linear-gradient(115deg,transparent 0 14px,rgba(255,255,255,.18) 14px 18px);animation:cg-scratch .5s linear infinite}
.feature-scratch.is-landed{animation:cg-land .6s cubic-bezier(.2,1.6,.4,1)}
.feature-wheel.is-pending{animation:cg-spin .4s linear infinite}
.feature-wheel.is-landed{animation:cg-settle 1.1s cubic-bezier(.1,.8,.2,1)}
.feature-game-result{animation:cg-pop .45s cubic-bezier(.2,1.6,.4,1)}
.feature-game-result.is-win strong{color:var(--gold);font-size:28px;text-shadow:0 0 22px var(--gold),0 0 44px rgba(242,184,75,.5)}
.feature-game-result.is-loss strong{color:var(--muted);animation:cg-shake .45s}
@keyframes cg-flip{to{transform:rotateY(360deg)}}
@keyframes cg-tumble{0%{transform:rotate(0) translateY(0)}25%{transform:rotate(90deg) translateY(-14px)}50%{transform:rotate(180deg) translateY(0)}75%{transform:rotate(270deg) translateY(-8px)}100%{transform:rotate(360deg) translateY(0)}}
@keyframes cg-reel{from{transform:translateY(-30%)}to{transform:translateY(30%)}}
@keyframes cg-stop{0%{transform:translateY(-40%)}100%{transform:translateY(0)}}
@keyframes cg-scratch{to{transform:translateX(30%)}}
@keyframes cg-spin{to{transform:rotate(360deg)}}
@keyframes cg-settle{from{transform:rotate(-540deg)}to{transform:rotate(0)}}
@keyframes cg-land{0%{transform:scale(.8)}100%{transform:scale(1)}}
@keyframes cg-pop{0%{transform:scale(.6);opacity:0}100%{transform:scale(1);opacity:1}}
@keyframes cg-shake{0%,100%{transform:translateX(0)}25%{transform:translateX(-6px)}75%{transform:translateX(6px)}}
@keyframes tf-flow{to{background-position:200% 0}}
@keyframes tf-shine{0%,60%{background-position:100% 0}100%{background-position:-100% 0}}
@keyframes tf-sweep{0%{background-position:150% 0}100%{background-position:-100% 0}}
@keyframes tf-spin{to{--spin:360deg}}
@keyframes tf-breathe{0%,100%{opacity:.75;transform:scale(1)}50%{opacity:1;transform:scale(1.04)}}
@keyframes tf-blink{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes tf-active{0%,100%{box-shadow:inset 3px 0 0 var(--accent)}50%{box-shadow:inset 3px 0 0 var(--accent),inset 30px 0 30px -30px rgba(var(--g),.5)}}
@media (prefers-reduced-motion:reduce){[data-theme] *,[data-theme] *:before,[data-theme] *:after{animation:none!important}}

/* Wanted: bounty circles on the map and the bounty panel */
.map-wanted-zone{animation:wanted-pulse 2.4s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.map-wanted-label{fill:#ffd2c4;font-family:inherit;font-weight:800;letter-spacing:.08em;paint-order:stroke;stroke:#1a0503;stroke-width:.35px;pointer-events:none}
@keyframes wanted-pulse{0%,100%{fill-opacity:.12;stroke-opacity:.9}50%{fill-opacity:.28;stroke-opacity:.4}}
.wanted-panel{margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(255,90,40,.25)}
.wanted-panel h3{color:#ff6a3d;letter-spacing:.18em}
.wanted-warning{background:rgba(255,40,20,.14);border:1px solid rgba(255,70,40,.55);color:#ffd2c4;padding:8px 10px;font-size:12px;line-height:1.5;animation:wanted-pulse-box 2.4s ease-in-out infinite}
@keyframes wanted-pulse-box{50%{border-color:rgba(255,70,40,.15)}}
.wanted-list{list-style:none;margin:8px 0;padding:0;display:grid;gap:6px}
.wanted-row{display:grid;grid-template-columns:1fr auto;gap:2px 8px;padding:7px 9px;background:rgba(255,60,30,.07);border-left:2px solid #ff3b1f}
.wanted-row small{grid-column:1/-1;font-size:10.5px}
.wanted-row.is-me{background:rgba(255,40,20,.16)}
.wanted-amount{color:#ffb15c;font-weight:800}
.wanted-form{display:grid;gap:8px;margin-top:10px}
.wanted-form label{display:grid;gap:4px;font-size:11px;letter-spacing:.08em;text-transform:uppercase;color:var(--muted,#9aa)}
.wanted-form input{background:rgba(0,0,0,.35);border:1px solid rgba(255,120,60,.35);color:inherit;padding:7px 9px;font:inherit;text-transform:none;letter-spacing:0}
.wanted-help{font-size:10.5px;line-height:1.5;margin:0}
@media (prefers-reduced-motion:reduce){.map-wanted-zone,.wanted-warning{animation:none}}
