/* ============================================================
   base.css — 重置 / 变量 / 布局 / 通用
   ============================================================ */
:root{
  /* 表层色板 */
  --sf-star-bg:#211540;
  --sf-gray:#c9c9c9;
  --sf-gray-light:#dfdfdf;
  --sf-gray-dark:#868686;
  --sf-link:#0000ee;
  --sf-title-blue:linear-gradient(90deg,#000080,#1084d0);
  /* 里层色板 */
  --dp-wall:#3a3f36;
  --dp-mold:#5c6b52;
  --dp-dark:#0c0d0a;
  --dp-blood:#b31b1b;
  --dp-warn-yellow:#e8c33a;
  --dp-led:#ff2b2b;
  /* UI */
  --ui-purple:#2b2350;
  --ui-purple-2:#6b4fc0;
  --ui-gold:#ffd34d;
  /* 字体 */
  --f-sans:"Microsoft YaHei","PingFang SC","Noto Sans CJK SC","Heiti SC",sans-serif;
  --f-serif:"SimSun","Songti SC","Noto Serif CJK SC",serif;
  --f-mono:Consolas,"Courier New","Noto Sans Mono CJK SC",monospace;
}

*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent;}
html,body{height:100%;width:100%;overflow:hidden;background:#000;}
body{font-family:var(--f-sans);font-size:15px;color:#222;user-select:none;-webkit-user-select:none;}

/* ---------- 根布局 ---------- */
#game-root{position:fixed;inset:0;overflow:hidden;background:#000;}
#screen-layer{position:absolute;inset:0;}
#transition-layer{position:absolute;inset:0;pointer-events:none;z-index:60;}
#ui-layer{position:absolute;inset:0;pointer-events:none;z-index:70;}
#ui-layer > *{position:absolute;}
#filter-layer{position:absolute;inset:0;pointer-events:none;z-index:80;}

/* ---------- 场景 ---------- */
.scene{position:absolute;inset:0;display:none;opacity:0;}
.scene.active{display:block;animation:sceneFadeIn .55s ease forwards;}
@keyframes sceneFadeIn{from{opacity:0;}to{opacity:1;}}
.scene.leaving{animation:sceneFadeOut .4s ease forwards;}
@keyframes sceneFadeOut{from{opacity:1;}to{opacity:0;}}

/* ---------- 热点 ---------- */
.hotspot{cursor:pointer;position:relative;}
.hotspot.hint-glow::after{
  content:"";position:absolute;inset:-6px;border-radius:50%;
  box-shadow:0 0 0 2px rgba(255,230,120,.9),0 0 14px 4px rgba(255,210,80,.55);
  animation:hintPulse 1.3s ease-in-out infinite;pointer-events:none;
}
@keyframes hintPulse{50%{opacity:.35;}}
.hotspot:active{filter:brightness(.9);}

/* ---------- 通用 ---------- */
.hidden{display:none !important;}
.pointer-auto{pointer-events:auto;}
button{font-family:inherit;cursor:pointer;}
.btn{
  background:var(--sf-gray);border:1px solid;border-color:#fff #000 #000 #fff;
  padding:4px 14px;font-size:13px;color:#000;min-width:74px;
}
.btn:active{border-color:#000 #fff #fff #000;}
.btn:disabled{color:#888;text-shadow:1px 1px 0 #fff;cursor:not-allowed;}
.btn-primary{background:linear-gradient(180deg,#fdfdfd,#d8d8d8);}

.centered{display:flex;align-items:center;justify-content:center;}
.text-center{text-align:center;}
.scrollbox{overflow:auto;}
.scrollbox::-webkit-scrollbar{width:16px;height:16px;}
.scrollbox::-webkit-scrollbar-track{background:#dfdfdf;}
.scrollbox::-webkit-scrollbar-thumb{background:silver;border:1px outset #fff;}
.scrollbox::-webkit-scrollbar-button:vertical:start{
  background:silver;border:1px outset #fff;height:16px;display:block;
}
.scrollbox::-webkit-scrollbar-button:vertical:end{
  background:silver;border:1px outset #fff;height:16px;display:block;
}

/* ---------- 开机加载 ---------- */
#boot-loading{position:fixed;inset:0;background:#05030a;z-index:200;
  display:flex;align-items:center;justify-content:center;transition:opacity .6s;}
#boot-loading.gone{opacity:0;pointer-events:none;}
.boot-box{width:340px;text-align:center;color:#cfc8e6;}
.boot-title{font-size:26px;font-weight:900;letter-spacing:3px;margin-bottom:24px;
  background:linear-gradient(180deg,#ffe14d,#ff7a3d,#ff3d77,#3ddc84,#3db7ff,#b14dff);
  -webkit-background-clip:text;background-clip:text;color:#d84b9c;}
.boot-bar{height:14px;border:1px solid #6b4fc0;background:#120b26;overflow:hidden;}
#boot-bar-fill{height:100%;width:0;background:linear-gradient(90deg,#6b4fc0,#b14dff);transition:width .25s;}
.boot-tip{margin-top:14px;font-size:12px;color:#8f86b8;min-height:18px;}

/* 降低动画（无障碍） */
body.no-motion *{animation-duration:.001s !important;transition-duration:.001s !important;}

/* ---------- 卡关软提示（环境化） ---------- */
.sh-attention{animation:shAttention 1.6s ease-in-out 2;}
@keyframes shAttention{
  0%,100%{}
  30%{filter:brightness(1.4) drop-shadow(0 0 8px rgba(255,225,150,.85));}
  60%{filter:brightness(1.22) drop-shadow(0 0 4px rgba(255,225,150,.5));}}
#sh-whisper{position:fixed;left:50%;bottom:98px;transform:translate(-50%,12px);max-width:80vw;
  background:rgba(20,14,26,.92);color:#f4e7cb;border:1px solid rgba(190,150,90,.55);border-radius:10px;
  padding:9px 18px;font:14px/1.7 "STKaiti","KaiTi",var(--f-serif);letter-spacing:.5px;
  opacity:0;transition:opacity .5s,transform .5s;pointer-events:none;z-index:140;text-align:center;
  box-shadow:0 12px 36px rgba(0,0,0,.45);}
#sh-whisper.show{opacity:1;transform:translate(-50%,0);}
@media(prefers-reduced-motion:reduce){
  .sh-attention{animation:none;outline:1px solid rgba(255,225,150,.75);}
}
