:root{--color-bg:#f7f3ee;--color-wood:#b8a48c;--color-wood-dark:#8c7860;--color-warm-gray:#a89f94;--color-gold:#f0c060;--color-candle:#f5a623;--color-text:#3d3326;--color-text-light:#7a6652;--color-panel-bg:#e4d4b8f5;--color-overlay:#00000026;--font-zh:"KaiTi", "STKaiti", "AR PL UKai CN", "Noto Serif SC", serif;--font-ui:-apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", "Source Han Sans SC", "Noto Sans SC", system-ui, sans-serif;--radius-sm:6px;--radius-md:12px;--radius-full:9999px;--transition-slow:1.5s ease;--transition-normal:.3s ease;--shadow-soft:0 2px 16px #0000000f;--shadow-float:0 4px 24px #00000014;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px);--utility-control-size:44px;--utility-control-gap:8px}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{width:100%;height:100%;font-family:var(--font-ui);color:var(--color-text);background:var(--color-bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow:hidden}.fatal-error{color:#c8a870;text-align:center;background:#1a1410;place-content:center;justify-items:center;gap:16px;min-height:100vh;padding:24px;display:grid}.fatal-error h1,.fatal-error p{margin:0}.fatal-error button{color:#e0c890;cursor:pointer;background:#c8a8701f;border:1px solid #c8a87080;border-radius:999px;min-height:44px;padding:0 20px}button{cursor:pointer;font:inherit;color:inherit;background:0 0;border:none}button:focus-visible{outline:2px solid var(--color-gold);outline-offset:2px}@keyframes float-up{0%{opacity:1;top:0;scale:1}60%{opacity:.8}to{opacity:0;top:-80px;scale:1.2}}.animate-float-up{pointer-events:none;animation:1.2s ease-out forwards float-up;position:relative}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:.4s ease-out forwards fade-in}@keyframes crossfade{0%{opacity:0}to{opacity:1}}.animate-crossfade{animation:1.5s crossfade}@keyframes soft-pulse{0%,to{opacity:.7}50%{opacity:1}}.animate-soft-pulse{animation:2s ease-in-out infinite soft-pulse}.utility-control{z-index:110;width:var(--utility-control-size);height:var(--utility-control-size);position:fixed;bottom:28px}.utility-control-reset{right:28px}.utility-control-fullscreen{right:calc(28px + var(--utility-control-size) + var(--utility-control-gap))}.utility-control-version{right:calc(28px + var(--utility-control-size) + var(--utility-control-gap) + var(--utility-control-size) + var(--utility-control-gap))}.reset-view-btn{color:#c8a860b3;cursor:pointer;transition:all var(--transition-normal);background:#00000059;border:none;border-radius:50%;justify-content:center;align-items:center;font-size:18px;display:flex;box-shadow:0 2px 8px #00000026}.reset-view-btn:hover{color:#c8a860;background:#0009}.floating-nav{z-index:100;flex-direction:column;gap:12px;display:flex;position:fixed;top:50%;right:24px;transform:translateY(-50%)}.nav-btn{width:56px;height:56px;transition:all var(--transition-normal);-webkit-backdrop-filter:blur(12px);background:#00000040;border:1px solid #ffffff0d;border-radius:50%;justify-content:center;align-items:center;display:flex;box-shadow:0 4px 16px #0000001a}.nav-btn:hover{background:#0006;border-color:#f0c0604d}.nav-btn:hover .nav-icon{color:var(--color-gold);text-shadow:0 0 8px #f0c06080}.nav-btn[aria-pressed=true]{background:#f0c060d9;border-color:#f0c060;box-shadow:0 0 20px #f0c0604d}.nav-icon{font-size:16px;font-family:var(--font-zh);color:#f0dcb4e6;letter-spacing:.05em;transition:all var(--transition-normal)}.nav-btn[aria-pressed=true] .nav-icon{color:var(--color-text);text-shadow:none}.panel-shell.panel-center{left:50%;right:auto;transform:translate(-50%,-50%)}.panel-shell.panel-left{left:max(40px,12%);right:auto;transform:translateY(-50%)}.panel-shell.panel-right{left:auto;right:110px;transform:translateY(-50%)}@media (max-width:640px){.utility-control{top:calc(16px + var(--safe-top));bottom:auto}.utility-control-reset{right:16px}.utility-control-fullscreen{right:calc(16px + var(--utility-control-size) + var(--utility-control-gap))}.utility-control-version{right:calc(16px + var(--utility-control-size) + var(--utility-control-gap) + var(--utility-control-size) + var(--utility-control-gap))}.panel-shell{border-radius:var(--radius-md) var(--radius-md) 0 0;max-height:85vh;padding-bottom:calc(24px + env(safe-area-inset-bottom,0px));width:min(96vw,360px)!important;top:auto!important;bottom:0!important;left:50%!important;transform:translate(-50%)!important}.floating-nav{top:auto;left:0;right:0;bottom:calc(16px + var(--safe-bottom));flex-direction:row;justify-content:center;gap:8px;padding:0 8px;transform:none}.nav-btn{width:48px;height:48px}.nav-icon{font-size:14px}}@media (orientation:landscape) and (max-height:600px){.floating-nav{flex-direction:column;gap:8px;padding:0;inset:50% 16px auto auto;transform:translateY(-50%)}.nav-btn{width:44px;height:44px}.nav-icon{font-size:14px}.panel-shell{max-height:94vh;border-radius:var(--radius-md)!important;width:min(90vw,420px)!important;padding:16px!important;top:50%!important;bottom:auto!important;left:50%!important;transform:translate(-50%,-50%)!important}.reset-view-btn{bottom:24px!important;right:24px!important}}@media (prefers-reduced-motion:reduce){.animate-fade-in,.animate-crossfade,.animate-float-up,.animate-soft-pulse{animation:none}}@keyframes cylinder-shake{0%,to{transform:translate(0)rotate(0)}15%{transform:translate(-6px)rotate(-5deg)}35%{transform:translate(8px)rotate(6deg)}55%{transform:translate(-4px)rotate(-3deg)}75%{transform:translate(6px)rotate(4deg)}90%{transform:translate(-2px)rotate(-1deg)}}.stick-falling{transform-origin:top;animation:1s linear forwards stick-fall}@keyframes stick-fall{0%{opacity:1;transform:translate(-50%)translateY(0)rotate(0)}10%{opacity:1;transform:translate(20px)translateY(-44px)rotate(12deg)}20%{opacity:1;transform:translate(50px)translateY(-76px)rotate(22deg)}32%{opacity:1;transform:translate(85px)translateY(-88px)rotate(32deg)}45%{opacity:1;transform:translate(120px)translateY(-68px)rotate(45deg)}55%{opacity:1;transform:translate(155px)translateY(-28px)rotate(58deg)}68%{opacity:1;transform:translate(200px)translateY(24px)rotate(72deg)}82%{opacity:1;transform:translate(260px)translateY(56px)rotate(85deg)}to{opacity:1;transform:translate(330px)translateY(80px)rotate(90deg)}}
