/* Copyright (c) 2025-2026 马建军. All rights reserved. 专有软件,详见 LICENSE.zh-CN.txt */ /* 科技感增强层 — 与 base.html 变量配合 */ @view-transition { navigation: auto; } ::view-transition-old(app-main), ::view-transition-new(app-main) { animation-duration: .18s; } ::view-transition-old(app-tech-bg), ::view-transition-new(app-tech-bg), ::view-transition-old(site-header), ::view-transition-new(site-header) { animation: none; } .tech-bg{ position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden; view-transition-name:app-tech-bg; } .tech-grid{ position:absolute;inset:0; background-image: linear-gradient(var(--bg-grid) 1px,transparent 1px), linear-gradient(90deg,var(--bg-grid) 1px,transparent 1px); background-size:32px 32px; mask-image:radial-gradient(ellipse 85% 75% at 50% 35%,#000 20%,transparent 75%); } .tech-glow{ position:absolute;width:70vmax;height:70vmax; top:-25%;left:50%;transform:translateX(-50%); background:radial-gradient(circle,var(--ambient-glow) 0%,transparent 65%); animation:tech-pulse 8s ease-in-out infinite; } .tech-glow-2{ position:absolute;width:50vmax;height:50vmax; bottom:-20%;right:-10%; background:radial-gradient(circle,var(--ambient-glow-2) 0%,transparent 70%); animation:tech-pulse 10s ease-in-out infinite reverse; } .tech-scanline{ position:absolute;inset:0; background:repeating-linear-gradient( 0deg, transparent, transparent 2px, var(--scanline) 2px, var(--scanline) 3px ); opacity:.35; animation:tech-scan 12s linear infinite; } @keyframes tech-pulse{ 0%,100%{opacity:.55;transform:translateX(-50%) scale(1)} 50%{opacity:.85;transform:translateX(-50%) scale(1.05)} } @keyframes tech-scan{ 0%{transform:translateY(0)} 100%{transform:translateY(32px)} } @keyframes tech-shine{ 0%,100%{opacity:.45} 50%{opacity:.9} } @media (prefers-reduced-motion: reduce){ .tech-glow,.tech-glow-2,.tech-scanline,.card::after,.site-header::after{animation:none} } .page-wrap{position:relative;z-index:1} .site-header{ border-bottom:1px solid var(--border-header); background:transparent; backdrop-filter:none; view-transition-name:site-header; } .site-header::after{ content:"";display:block;height:1px;margin-top:-1px; background:linear-gradient(90deg,transparent,var(--accent),var(--accent-2),transparent); opacity:.7;animation:tech-shine 4s ease-in-out infinite; } .site-title{ letter-spacing:.04em; background:linear-gradient(135deg,var(--text-title) 0%,var(--accent) 45%,var(--accent-2) 100%); -webkit-background-clip:text;-webkit-text-fill-color:transparent; background-clip:text; filter:drop-shadow(0 0 24px var(--title-glow)); } .site-title-sub{ display:block;font-size:.72rem;font-weight:500; letter-spacing:.12em;text-transform:uppercase; color:var(--text-muted);margin-top:.4rem; -webkit-text-fill-color:var(--text-muted); filter:none; } .site-nav a{ border-radius:999px; letter-spacing:.02em; position:relative;overflow:hidden; transition:transform .2s,box-shadow .2s,border-color .2s,background .2s; } .site-nav a::before{ content:"";position:absolute;inset:0; background:linear-gradient(120deg,transparent,rgba(255,255,255,.06),transparent); opacity:0;transition:opacity .25s; } .site-nav a:hover::before{opacity:1} .site-nav a:hover{ transform:translateY(-1px); box-shadow:0 4px 20px var(--nav-hover-glow); } .site-nav a.active{ background:linear-gradient(135deg,var(--nav-active),var(--accent-2)); border-color:transparent; box-shadow:0 0 20px var(--nav-active-glow),inset 0 1px 0 rgba(255,255,255,.15); } .theme-switch-btn:hover{ color:var(--text-primary); } .theme-switch-btn.active{ box-shadow:0 0 12px var(--btn-glow); } .card{ border-radius:14px; transition:transform .25s,box-shadow .25s,border-color .25s; } .card:hover{ transform:translateY(-2px); border-color:var(--card-border-hover); box-shadow:var(--shadow-card-hover); } .card::after{ animation:tech-shine 5s ease-in-out infinite; } .card h2{letter-spacing:.03em} .card h2:before{ box-shadow:0 0 12px var(--accent),0 0 4px var(--accent-2); } input:focus,select:focus,textarea:focus{ box-shadow:0 0 0 3px var(--focus-ring),0 0 16px var(--focus-glow); } button.btn-primary{ font-weight:600;letter-spacing:.04em; box-shadow:0 4px 20px var(--btn-glow); transition:transform .15s,box-shadow .2s,opacity .2s; } button.btn-primary:hover{ transform:translateY(-1px); box-shadow:0 6px 28px var(--btn-glow-strong); opacity:1; } .list-item{ transition:border-color .2s,box-shadow .2s,transform .2s; } .list-item:hover{ border-color:var(--card-border-hover); box-shadow:0 4px 16px var(--card-glow); } table tbody tr{transition:background .15s} table tbody tr:hover{background:var(--row-hover)} .stat-item{ backdrop-filter:blur(8px); transition:transform .2s,box-shadow .2s; } .stat-item:hover{ transform:translateY(-2px); box-shadow:0 8px 24px var(--card-glow); } .stat-item .value{ font-variant-numeric:tabular-nums; letter-spacing:.02em; } .pos-card{ position:relative;overflow:hidden; transition:border-color .2s,box-shadow .2s; } .pos-card::before{ content:"";position:absolute;top:0;left:0;right:0;height:2px; background:linear-gradient(90deg,var(--accent),var(--accent-2)); opacity:.5; } .pos-card:hover{ border-color:var(--card-border-hover); box-shadow:0 6px 24px var(--card-glow); } .badge{letter-spacing:.02em;border:1px solid transparent} .badge.dir{border-color:rgba(76,194,255,.25)} .badge.profit{border-color:rgba(76,217,127,.3)} .badge.loss{border-color:rgba(255,102,102,.3)} .modal-box{ border:1px solid var(--card-border-hover); box-shadow:var(--shadow-card-hover),0 0 60px var(--card-glow); } .flash{ box-shadow:0 0 24px var(--focus-glow); letter-spacing:.02em; } .profile-spec{ border:1px solid var(--card-border-hover); box-shadow:inset 0 0 40px var(--card-glow); } .key-live .live-price-line,.live-price{ text-shadow:0 0 12px var(--focus-glow); } .preset-tabs a.active{ box-shadow:0 0 12px var(--focus-glow); }