:root{
  --brand:#004AB5;
  --brand-dark:#003a8f;
  --warm:#EBEAE7;
  --ink:#111418;
  --ink-2:#3a3f47;
  --line:#e3e2dd;
  --bg:#f4f3f0;
  --shadow: 0 10px 30px rgba(0,0,0,.10), 0 2px 8px rgba(0,0,0,.06);
  --top-h: 56px;
  --foot-h: 96px;
}
*{box-sizing:border-box}
html,body{height:100%;margin:0}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang TC","Noto Sans TC","Helvetica Neue",Arial,sans-serif;
  background:var(--bg);color:var(--ink);
  display:flex;flex-direction:column;
  overflow:hidden;
  -webkit-font-smoothing:antialiased;
}

/* Topbar */
.topbar{
  height:var(--top-h);flex:0 0 var(--top-h);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 16px;background:#fff;border-bottom:1px solid var(--line);
  z-index:5;
}
.brand{display:flex;align-items:baseline;gap:10px;min-width:0}
.brand-mark{font-weight:800;letter-spacing:.08em;color:var(--brand);font-size:18px}
.brand-sub{color:var(--ink-2);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.toolbar{display:flex;align-items:center;gap:10px}

.lang-switch{
  display:inline-flex;background:var(--warm);border-radius:999px;padding:3px;
}
.lang-btn{
  border:0;background:transparent;color:var(--ink-2);
  padding:6px 14px;border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;
  transition:background .15s,color .15s;
}
.lang-btn.active{background:var(--brand);color:#fff}
.lang-btn:not(.active):hover{color:var(--ink)}

.dl-btn{
  display:inline-flex;align-items:center;gap:6px;
  background:var(--brand);color:#fff;text-decoration:none;
  padding:7px 14px;border-radius:8px;font-size:13px;font-weight:600;
  transition:background .15s;
}
.dl-btn:hover{background:var(--brand-dark)}
.dl-btn svg{flex:0 0 auto}

.icon-btn{
  width:36px;height:36px;border-radius:8px;border:1px solid var(--line);
  background:#fff;color:var(--ink-2);cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .15s,color .15s,border-color .15s;
}
.icon-btn:hover{color:var(--brand);border-color:var(--brand)}

/* Viewer */
.viewer{
  flex:1;min-height:0;position:relative;
  display:flex;align-items:center;justify-content:center;
  padding:18px 12px;
}
.stage{
  position:relative;
  aspect-ratio:1/1;
  height:100%;
  max-height:100%;
  max-width:min(100%, calc(100vh - var(--top-h) - var(--foot-h) - 36px));
  display:flex;align-items:center;justify-content:center;
  background:#fff;
  box-shadow:var(--shadow);
  border-radius:4px;
  overflow:hidden;
}
.page-img{
  width:100%;height:100%;
  object-fit:contain;background:#fff;
  user-select:none;-webkit-user-drag:none;
  transition:opacity .18s;display:block;
}
.page-img.loading{opacity:.35}
.page-frame{
  width:100%;height:100%;
  border:0;display:block;background:#fff;
}

.nav-btn{
  position:absolute;top:50%;transform:translateY(-50%);
  width:44px;height:64px;border:0;border-radius:8px;
  background:rgba(255,255,255,.85);backdrop-filter:blur(6px);
  color:var(--ink);cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 4px 12px rgba(0,0,0,.10);
  transition:background .15s,color .15s,transform .15s;
  z-index:3;
}
.nav-btn:hover{background:var(--brand);color:#fff}
.nav-btn:disabled{opacity:.35;cursor:not-allowed;background:rgba(255,255,255,.6);color:var(--ink-2)}
.nav-btn:disabled:hover{background:rgba(255,255,255,.6);color:var(--ink-2)}
.nav-prev{left:12px}
.nav-next{right:12px}

/* Footbar */
.footbar{
  flex:0 0 var(--foot-h);
  display:flex;flex-direction:column;align-items:center;gap:8px;
  padding:10px 12px;background:#fff;border-top:1px solid var(--line);
}
.page-jump{display:flex;align-items:center;gap:6px;color:var(--ink-2);font-size:14px}
.page-jump input{
  width:56px;height:30px;text-align:center;border:1px solid var(--line);
  border-radius:6px;font:inherit;color:var(--ink);background:var(--warm);
}
.page-jump input:focus{outline:2px solid var(--brand);border-color:var(--brand);background:#fff}
.page-sep{color:var(--ink-2);opacity:.6}
.page-step{
  width:30px;height:30px;border-radius:6px;border:1px solid var(--line);
  background:#fff;color:var(--ink-2);cursor:pointer;font-size:14px;line-height:1;
}
.page-step:hover{color:var(--brand);border-color:var(--brand)}

.thumb-rail{
  display:flex;gap:6px;overflow-x:auto;max-width:100%;
  padding:2px 4px 6px;
  scrollbar-width:thin;
}
.thumb-rail::-webkit-scrollbar{height:6px}
.thumb-rail::-webkit-scrollbar-thumb{background:#cfcec8;border-radius:3px}
.thumb-item{
  flex:0 0 auto;width:32px;height:42px;border:1.5px solid transparent;
  border-radius:3px;cursor:pointer;background:var(--warm);
  display:flex;align-items:center;justify-content:center;
  font-size:11px;color:var(--ink-2);font-weight:600;
  transition:border-color .12s,background .12s,color .12s;
}
.thumb-item:hover{background:#dedcd6;color:var(--ink)}
.thumb-item.active{border-color:var(--brand);background:var(--brand);color:#fff}

/* Mobile */
@media (max-width: 640px){
  :root{--top-h:52px;--foot-h:88px}
  .brand-sub{display:none}
  .dl-btn span{display:none}
  .dl-btn{padding:7px 9px}
  .nav-btn{width:38px;height:54px}
  .nav-prev{left:4px}
  .nav-next{right:4px}
  .viewer{padding:10px 6px}
  .thumb-item{width:26px;height:34px;font-size:10px}
}

/* Fullscreen */
:fullscreen{background:#000}
:fullscreen .topbar,:fullscreen .footbar{display:none}
:fullscreen .viewer{padding:8px}
:fullscreen .page-img{box-shadow:none}
