:root{color-scheme:light;--ink:#30352f;--muted:#83877d;--line:rgba(91,99,82,.14);--panel:rgba(255,255,252,.89)}
*{box-sizing:border-box}
html,body{width:100%;height:100%;height:100dvh;margin:0;overflow:hidden}
body{font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;color:var(--ink);background:#f3f2ed}
#viewer{position:fixed;inset:0;touch-action:none}
canvas{display:block;width:100%;height:100%;touch-action:none}
.heading{position:absolute;top:max(32px,env(safe-area-inset-top));left:max(38px,env(safe-area-inset-left));pointer-events:none}
.eyebrow{font-size:10px;letter-spacing:.17em;font-weight:700;color:#858a7e;display:flex;align-items:center;gap:9px}
.eyebrow span{width:7px;height:7px;border-radius:50%;background:#a4ab8c;box-shadow:0 0 0 4px #a4ab8c22}
h1{font-family:"Noto Serif TC",Georgia,serif;font-size:clamp(28px,4vw,43px);font-weight:500;letter-spacing:-.055em;margin:12px 0 4px}
h1 em{font-family:Georgia,serif;font-weight:400;font-style:italic;color:#858a7e;letter-spacing:-.03em}
.heading p{font-size:13px;color:#85887f;margin:0;letter-spacing:.02em}
.controls{position:absolute;right:max(32px,env(safe-area-inset-right));top:max(30px,env(safe-area-inset-top));display:flex;align-items:center;gap:4px;padding:6px;background:var(--panel);border:1px solid var(--line);border-radius:14px;box-shadow:0 8px 28px #41483813;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
button{font:inherit;border:0;background:transparent;color:#484d44;cursor:pointer;border-radius:9px;min-height:40px;min-width:40px;padding:0 10px;display:flex;align-items:center;justify-content:center;gap:7px;font-size:12px;font-weight:600;-webkit-tap-highlight-color:transparent}
button:hover,button:focus-visible{background:#eeefe8;outline:none}
button:focus-visible{box-shadow:0 0 0 2px #99a082}
button svg{width:17px;height:17px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.square{font-size:21px;font-weight:400;width:40px;padding:0}
.divider{height:22px;width:1px;background:#e3e5dd;margin:0 2px}
.hint{position:absolute;bottom:max(26px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:var(--panel);border:1px solid var(--line);border-radius:99px;padding:11px 18px;color:#777c70;font-size:11px;white-space:nowrap;box-shadow:0 7px 24px #41483810;pointer-events:none;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.touch-hint{display:none}
#error{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:min(360px,calc(100% - 40px));background:#fffefa;border:1px solid var(--line);padding:20px 22px;border-radius:14px;box-shadow:0 14px 40px #41483818;color:#55594f;font-size:14px;line-height:1.5}
@media (pointer:coarse){.desktop-hint{display:none}.touch-hint{display:inline}}
@media(max-width:640px){
  .heading{top:max(21px,env(safe-area-inset-top));left:max(20px,env(safe-area-inset-left))}
  h1{margin-top:8px;font-size:30px}
  .heading p{font-size:12px}
  .eyebrow{font-size:8px;letter-spacing:.15em}
  .controls{top:auto;bottom:max(76px,calc(env(safe-area-inset-bottom) + 66px));right:50%;transform:translateX(50%);white-space:nowrap}
  .hint{bottom:max(20px,env(safe-area-inset-bottom));font-size:10px;padding:10px 14px}
}
@media(max-width:370px){.heading{left:14px}.controls{gap:1px;padding:4px}.controls button{min-width:36px;padding:0 7px}.controls .square{width:36px;padding:0}.hint{font-size:9px}}
@media(orientation:landscape) and (max-height:520px){
  .heading{top:max(14px,env(safe-area-inset-top));left:max(18px,env(safe-area-inset-left))}
  h1{font-size:25px;margin:5px 0 2px}.heading p{font-size:11px}.eyebrow{font-size:8px}
  .controls{top:max(12px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));bottom:auto;transform:none}
  .hint{bottom:max(12px,env(safe-area-inset-bottom));padding:8px 12px}
}
