:root{--color-bg: #0a0a0a;--color-surface: #121212;--color-fg: #f2f0ec;--color-fg-dim: #b9b6b0;--color-gray: #8a8a8a;--color-white-stone: #f5f5f0;--color-black-stone: #17171a;--color-border: rgba(255, 255, 255, .14);--color-border-strong: rgba(255, 255, 255, .28);--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px);--font-jp: system-ui, -apple-system, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Yu Gothic", "YuGothic", "Noto Sans JP", sans-serif}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0;overscroll-behavior:none;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}body{background:var(--color-bg);color:var(--color-fg);font-family:var(--font-jp);font-weight:300;letter-spacing:.02em;overflow:hidden}#app{position:relative;height:100dvh;width:100vw;padding:var(--safe-top) var(--safe-right) var(--safe-bottom) var(--safe-left);background:var(--color-bg);overflow:hidden}#stage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--color-bg)}#stage canvas{display:block;max-width:100%;max-height:100%}#hud{position:absolute;inset:0;pointer-events:none;padding:calc(var(--safe-top) + 12px) calc(var(--safe-right) + 12px) calc(var(--safe-bottom) + 12px) calc(var(--safe-left) + 12px)}#hud>*{pointer-events:auto}.no-touch-zoom{touch-action:none}h1,h2,h3{font-weight:200;letter-spacing:.12em;margin:0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 22px;border-radius:999px;border:1px solid var(--color-border);background:#ffffff0f;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);color:var(--color-fg);font-family:var(--font-jp);font-weight:300;font-size:15px;letter-spacing:.06em;cursor:pointer;transition:background-color .2s ease,border-color .2s ease,transform .1s ease}.btn:active{transform:scale(.96);background:#ffffff1f}.btn-primary{background:var(--color-fg);color:var(--color-bg);border-color:transparent;font-weight:400}.btn-primary:active{background:var(--color-fg-dim)}.shutter-btn{position:absolute;left:50%;bottom:calc(var(--safe-bottom) + 28px);transform:translate(-50%);width:72px;height:72px;border-radius:50%;background:#ffffff14;border:3px solid var(--color-white-stone);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);cursor:pointer;padding:0;transition:transform .12s ease,background-color .2s ease}.shutter-btn:active{transform:translate(-50%) scale(.92);background:#fff3}.toast{position:absolute;left:50%;top:18%;transform:translate(-50%);padding:10px 20px;border-radius:999px;background:#121212d1;border:1px solid var(--color-border);color:var(--color-fg);font-size:13px;letter-spacing:.08em;white-space:nowrap;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.turn-indicator{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:#ffffff0d;border:1px solid var(--color-border);font-size:12px;letter-spacing:.1em;color:var(--color-fg-dim)}.turn-indicator .dot{width:10px;height:10px;border-radius:50%;background:var(--color-white-stone);box-shadow:0 0 0 1px var(--color-border-strong)}.turn-indicator .dot.black{background:var(--color-black-stone)}.screen{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:calc(var(--safe-top) + 24px) 24px calc(var(--safe-bottom) + 24px);background:var(--color-bg)}.screen.hidden{display:none}.gallery-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;width:100%;overflow-y:auto}.gallery-grid .thumb{aspect-ratio:1 / 1;border-radius:4px;overflow:hidden;background:var(--color-surface);border:1px solid var(--color-border)}.gallery-grid .thumb img{width:100%;height:100%;object-fit:cover;display:block}.poem{max-width:30ch;text-align:center;font-weight:200;font-size:16px;line-height:2.1;letter-spacing:.08em;color:var(--color-fg-dim)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes fade-out{0%{opacity:1}to{opacity:0}}.fade-in{animation:fade-in .4s ease forwards}.fade-out{animation:fade-out .4s ease forwards}
