:root{
  --ink:#111827;--muted:#667085;--line:#e7eaf0;--paper:#fff;--wash:#f5f7fb;
  --accent:#2255ff;--accent-2:#6d8cff;--danger:#d73a49;--ok:#16865c;
  --shadow:0 18px 50px rgba(28,42,76,.09);--radius:22px;
  font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;
  color:var(--ink);background:var(--wash);font-synthesis:none
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%}
body{background:var(--wash)}
a{color:inherit;text-decoration:none}
button,input,textarea{font:inherit}
button{cursor:pointer}
.eyebrow{display:block;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.18em}
.hero{position:relative;min-height:390px;overflow:hidden;color:white;background:
  radial-gradient(circle at 78% 18%,rgba(119,153,255,.65),transparent 24%),
  radial-gradient(circle at 18% 110%,rgba(29,128,255,.45),transparent 38%),
  linear-gradient(135deg,#102966 0%,#173fa8 52%,#1e57e8 100%)}
.hero-grid,.visual-grid{position:absolute;inset:0;background-image:
  linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),
  linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);
  background-size:34px 34px;mask-image:linear-gradient(to right,transparent,#000)}
.hero-inner{position:relative;z-index:2;max-width:1180px;margin:auto;padding:88px 28px 70px}
.hero .eyebrow{color:#b9caff}
.hero h1{max-width:780px;margin:17px 0 16px;font-size:clamp(42px,6vw,76px);line-height:1.03;letter-spacing:-.055em}
.hero p{max-width:700px;margin:0;color:#dce5ff;font-size:clamp(16px,2vw,21px);line-height:1.8}
.hero-meta{display:flex;align-items:baseline;gap:10px;margin-top:44px}
.hero-meta strong{font-size:32px}.hero-meta span{color:#c6d3f8;font-size:14px}
.hero-orbit{position:absolute;border:1px solid rgba(255,255,255,.2);border-radius:50%;transform:rotate(-18deg)}
.orbit-one{width:440px;height:170px;right:-70px;bottom:20px}
.orbit-two{width:250px;height:90px;right:90px;bottom:58px}
.public-main{max-width:1180px;margin:auto;padding:42px 28px 80px}
.toolbar{display:flex;align-items:center;gap:14px;margin-bottom:28px}
.search-box{display:flex;align-items:center;gap:10px;max-width:520px;flex:1;padding:0 16px;border:1px solid var(--line);border-radius:14px;background:white;box-shadow:0 8px 28px rgba(20,34,70,.05)}
.search-box span{color:#98a2b3;font-size:22px}.search-box input,.table-search input{width:100%;height:50px;border:0;outline:0;background:transparent}
.category-select{height:50px;display:flex;align-items:center;gap:9px;padding:0 12px 0 14px;border:1px solid var(--line);border-radius:14px;background:white;color:#98a2b3;font-size:12px;white-space:nowrap;box-shadow:0 8px 28px rgba(20,34,70,.04)}
.category-select select{min-width:112px;border:0;outline:0;color:#344054;background:white;font-size:14px;cursor:pointer}
.result-count{margin-left:auto;color:var(--muted);font-size:14px;white-space:nowrap}
.animation-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.animation-card{overflow:hidden;border:1px solid var(--line);border-radius:var(--radius);background:var(--paper);box-shadow:0 12px 38px rgba(21,35,69,.06);transition:.25s ease}
.animation-card:hover{transform:translateY(-5px);box-shadow:var(--shadow);border-color:#d7def4}
.card-visual{position:relative;display:block;height:200px;overflow:hidden;background:linear-gradient(145deg,#101c3e,#1b55d2)}
.card-visual::after{content:"";position:absolute;width:190px;height:190px;border:1px solid rgba(255,255,255,.18);border-radius:50%;right:-46px;top:-64px}
.preview-frame{position:absolute;z-index:1;left:0;top:0;width:750%;height:750%;max-width:none;border:0;background:white;transform:scale(.1333333333);transform-origin:0 0;pointer-events:none}
.preview-shade{position:absolute;z-index:2;inset:0;background:linear-gradient(to bottom,rgba(8,18,42,.08),transparent 58%,rgba(8,18,42,.2));pointer-events:none}
.card-hit{position:absolute;z-index:4;inset:0}
.visual-axis{position:absolute;display:block;background:rgba(255,255,255,.36)}
.axis-x{left:32px;right:30px;bottom:41px;height:1px}.axis-y{left:44px;top:30px;bottom:30px;width:1px}
.visual-path{position:absolute;left:48px;bottom:42px;width:160px;height:90px;border-top:2px solid #94b2ff;border-radius:50%;transform:rotate(-12deg)}
.visual-ball{position:absolute;z-index:2;left:147px;bottom:111px;width:20px;height:20px;border-radius:50%;background:#fff;box-shadow:0 0 0 7px rgba(255,255,255,.12)}
.featured-badge{position:absolute;z-index:5;right:18px;top:18px;padding:7px 10px;border:1px solid rgba(255,255,255,.25);border-radius:999px;color:#ffe2a1;background:rgba(8,19,46,.56);backdrop-filter:blur(8px);font-size:12px;pointer-events:none}
.card-body{padding:23px}.card-category{display:block;margin-bottom:7px;color:var(--accent);font-size:12px;font-weight:800;letter-spacing:.04em}.card-body h2{margin:0 0 10px;font-size:19px;line-height:1.45}.card-body p{min-height:48px;margin:0;color:var(--muted);font-size:14px;line-height:1.72}
.open-link{display:flex;justify-content:space-between;align-items:center;margin-top:21px;padding-top:17px;border-top:1px solid var(--line);color:var(--accent);font-size:14px;font-weight:700}.open-link b{font-size:18px}
.empty-state{text-align:center;padding:70px 20px;color:var(--muted)}.empty-state h2{color:var(--ink)}
.empty-orbit,.error-orbit{width:90px;height:90px;margin:auto;border:1px solid #b7c6ef;border-radius:50%;box-shadow:inset 0 0 0 20px #e9eefc}
.site-footer{display:flex;justify-content:space-between;max-width:1180px;margin:auto;padding:28px;border-top:1px solid var(--line);color:#8b95a6;font-size:13px}
.player-shell{height:100vh;display:flex;flex-direction:column;background:#111827}
.player-bar{height:64px;flex:0 0 64px;display:grid;grid-template-columns:180px 1fr 180px;align-items:center;padding:0 20px;color:white;background:#111827;border-bottom:1px solid #263249}
.back-link{font-size:14px;color:#c8d0dd}.player-title{text-align:center}.player-title strong{display:block;font-size:15px}.player-title span{display:inline-block;margin-left:6px;color:#8f9bb0;font-size:12px}.preview-flag{color:#ffd36d!important}
.fullscreen-button{justify-self:end;border:1px solid #3c4a64;border-radius:10px;padding:9px 13px;color:white;background:#202d44}
.frame-wrap{flex:1;min-height:0}.frame-wrap iframe{width:100%;height:100%;display:block;border:0;background:white}
.admin-shell{background:#f3f5f9}.admin-nav{position:sticky;z-index:10;top:0;display:flex;align-items:center;gap:25px;height:62px;padding:0 max(24px,calc((100vw - 1180px)/2));color:#46516a;background:rgba(255,255,255,.94);border-bottom:1px solid var(--line);backdrop-filter:blur(14px);font-size:14px}
.admin-nav a:first-child{font-weight:800;color:var(--ink)}.admin-nav form{margin-left:auto}.link-button,.table-actions button{padding:0;border:0;background:none;color:inherit}
.admin-main{max-width:1180px;margin:auto;padding:46px 28px 80px}.admin-main.narrow{max-width:760px}
.admin-header{display:flex;justify-content:space-between;align-items:flex-end;gap:30px;margin-bottom:30px}.admin-header.compact{display:block}
.admin-header h1{margin:9px 0 8px;font-size:38px;letter-spacing:-.04em}.admin-header p,.panel-heading p{margin:0;color:var(--muted);line-height:1.7}
.stat-strip{display:flex;overflow:hidden;border:1px solid var(--line);border-radius:16px;background:white}
.stat-strip div{min-width:110px;padding:16px 20px;border-left:1px solid var(--line)}.stat-strip div:first-child{border-left:0}
.stat-strip strong,.stat-strip span{display:block}.stat-strip strong{font-size:22px}.stat-strip span{margin-top:4px;color:var(--muted);font-size:12px}
.admin-panel{margin-top:24px;padding:28px;border:1px solid var(--line);border-radius:20px;background:white;box-shadow:0 10px 35px rgba(24,35,64,.04)}
.panel-heading{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:24px}.panel-heading h2{margin:0 0 6px;font-size:20px}
.upload-form{display:grid;grid-template-columns:290px 1fr;gap:20px}.file-drop{grid-row:span 3;min-height:210px;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:24px;border:1.5px dashed #b8c5e8;border-radius:16px;text-align:center;background:#f7f9ff;cursor:pointer}.file-drop:hover{border-color:var(--accent);background:#f2f6ff}.file-drop input{position:absolute;opacity:0;width:1px;height:1px}.file-icon{display:grid;place-items:center;width:42px;height:42px;margin-bottom:13px;border-radius:50%;color:white;background:var(--accent);font-size:25px}.file-drop small{margin-top:8px;color:var(--muted);line-height:1.5}
.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.form-grid .wide{grid-column:1/-1}
label{display:block;color:#344054;font-size:13px;font-weight:700}input,textarea{width:100%;margin-top:8px;border:1px solid #d9deea;border-radius:11px;padding:12px 13px;outline:none;color:var(--ink);background:white;transition:.15s}textarea{resize:vertical}input:focus,textarea:focus{border-color:#7898ff;box-shadow:0 0 0 3px rgba(34,85,255,.1)}
.check-line{display:flex;align-items:center;gap:9px;font-weight:600}.check-line input{width:17px;height:17px;margin:0}.check-line span{font-size:13px}
.primary-button,.secondary-button{display:inline-flex;align-items:center;justify-content:center;width:max-content;border:0;border-radius:11px;padding:12px 18px;font-weight:800}
.primary-button{color:white;background:var(--accent);box-shadow:0 8px 20px rgba(34,85,255,.22)}.secondary-button{border:1px solid var(--line);background:white}.full{width:100%}.button-row{display:flex;gap:10px}
.table-search{width:240px}.table-search input{height:42px;padding:0 12px;border:1px solid var(--line);border-radius:10px}
.table-wrap{overflow:auto}.content-table{width:100%;border-collapse:collapse;white-space:nowrap}.content-table th{text-align:left;padding:12px 14px;color:#8a94a6;border-bottom:1px solid var(--line);font-size:11px;letter-spacing:.08em}.content-table td{padding:17px 14px;border-bottom:1px solid #eef0f4;font-size:13px}.content-table td:first-child{white-space:normal;min-width:260px}.content-table td strong,.content-table td small{display:block}.content-table td small{margin-top:5px;color:#9099aa}.date-cell{color:#7f899a}.table-category{padding:6px 9px;border-radius:8px;background:#f0f3f8;color:#596579}.status-pill{display:inline-flex;align-items:center;gap:6px;padding:6px 9px;border-radius:999px;font-size:12px;font-weight:700}.status-pill::before{content:"";width:6px;height:6px;border-radius:50%}.status-pill.online{color:#117653;background:#eaf8f1}.status-pill.online::before{background:#20a875}.status-pill.offline{color:#7a8495;background:#f1f3f6}.status-pill.offline::before{background:#9aa3b1}
.table-actions{display:flex;align-items:center;gap:13px}.table-actions a,.table-actions button{font-size:13px}.danger-link{color:var(--danger)!important}.success-link{color:var(--ok)!important}.empty-cell{text-align:center!important;padding:50px!important;color:var(--muted)}
.stack-form{display:grid;gap:18px}.stack-form small{display:block;margin-top:7px;color:var(--muted);font-weight:400}.form-error{padding:11px 13px;border-radius:10px;color:#b42318;background:#fef3f2;font-size:13px}
.login-page{min-height:100vh;display:grid;place-items:center;padding:30px;background:radial-gradient(circle at 50% 0,#dce6ff,transparent 42%),#f3f5fa}.login-card{width:min(420px,100%);padding:42px;border:1px solid var(--line);border-radius:24px;background:white;box-shadow:var(--shadow)}.login-card h1{margin:10px 0 7px;font-size:30px}.muted{color:var(--muted)}.login-mark{display:flex;gap:5px;margin-bottom:25px}.login-mark span{width:8px;height:28px;border-radius:4px;background:var(--accent);transform:skew(-16deg)}.login-mark span:nth-child(2){height:20px;margin-top:8px;background:#6a8aff}.login-mark span:nth-child(3){height:13px;margin-top:15px;background:#afc0ff}
.error-page{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center}.error-page h1{max-width:600px;margin:18px 0 28px;font-size:30px}
[hidden],.is-hidden{display:none!important}
@media(max-width:900px){.animation-grid{grid-template-columns:repeat(2,1fr)}.upload-form{grid-template-columns:1fr}.file-drop{grid-row:auto}.admin-header{align-items:flex-start;flex-direction:column}.stat-strip{width:100%}.stat-strip div{flex:1}.player-bar{grid-template-columns:90px 1fr 90px}.fullscreen-button{font-size:0}.fullscreen-button::after{content:"全屏";font-size:13px}}
@media(max-width:620px){
  .hero{min-height:250px}
  .hero-inner{padding:46px 18px 34px}
  .hero h1{margin:12px 0 11px;font-size:36px;line-height:1.08;letter-spacing:-.045em}
  .hero p{font-size:14px;line-height:1.62}
  .hero-meta{margin-top:21px}.hero-meta strong{font-size:25px}.hero-meta span{font-size:12px}
  .orbit-one{width:260px;height:100px;right:-100px;bottom:15px}.orbit-two{display:none}
  .public-main,.admin-main{padding:22px 14px 54px}
  .toolbar{display:grid;grid-template-columns:1fr auto;gap:10px;margin-bottom:18px}
  .search-box{grid-column:1/-1;max-width:none;padding:0 13px;border-radius:12px}
  .search-box input{height:46px;font-size:15px}
  .category-select{height:44px;border-radius:11px;padding-left:12px}
  .category-select select{min-width:100px;font-size:13px}
  .result-count{align-self:center;font-size:12px}
  .animation-grid{grid-template-columns:1fr;gap:16px}
  .animation-card{border-radius:17px}
  .animation-card:hover{transform:none}
  .card-visual{height:min(56vw,220px)}
  .card-body{padding:17px 18px 18px}
  .card-category{margin-bottom:5px;font-size:11px}
  .card-body h2{margin-bottom:7px;font-size:17px}
  .card-body p{min-height:0;font-size:13px;line-height:1.6}
  .open-link{margin-top:15px;padding-top:13px}
  .site-footer{flex-direction:column;gap:7px;padding:20px 18px}
  .player-shell{height:100vh;height:100dvh}
  .player-bar{height:56px;flex-basis:56px;grid-template-columns:64px minmax(0,1fr) 64px;padding:0 10px}
  .back-link{font-size:12px}.player-title{min-width:0}
  .player-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px}
  .player-title span{display:none}
  .fullscreen-button{padding:8px 10px;border-radius:8px}
  .admin-nav{height:56px;gap:16px;padding:0 14px;overflow:auto}
  .admin-nav a{white-space:nowrap}.admin-nav form{margin-left:0}
  .admin-header{gap:16px;margin-bottom:20px}.admin-header h1{font-size:29px}
  .stat-strip{display:grid;grid-template-columns:repeat(3,1fr)}
  .stat-strip div{min-width:0;padding:12px 8px;text-align:center}
  .stat-strip strong{font-size:19px}.stat-strip span{font-size:10px}
  .admin-panel{margin-top:16px;padding:17px;border-radius:16px}
  .form-grid{grid-template-columns:1fr}.form-grid .wide{grid-column:auto}
  .panel-heading{align-items:stretch;flex-direction:column;margin-bottom:17px}
  .upload-form{gap:16px}.file-drop{min-height:165px}
  .table-search{width:100%}.content-table td:first-child{min-width:220px}
  .login-page{padding:16px}.login-card{padding:30px 22px;border-radius:20px}
}
