*{box-sizing:border-box;margin:0;padding:0}html,body,#root{color:#f5f0e8;touch-action:manipulation;overscroll-behavior:none;background-color:#111;width:100%;height:100%;font-family:Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif;overflow:hidden}body{position:fixed;inset:0}.app{width:100%;height:100%;position:relative}.app canvas{width:100%;height:100%;display:block}.museum-wall{--wall-light:#fff;background-color:#e9e5dc;background-image:url(/assets/wall-plaster-Bv98cFjD.webp);background-position:50%;background-size:cover;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.museum-wall[data-time=morning]{--wall-light:#eef2fa}.museum-wall[data-time=evening]{--wall-light:#f6d6b0}.museum-wall[data-time=night]{--wall-light:#a7acbb}.museum-wall:after{content:"";z-index:1;pointer-events:none;background-color:var(--wall-light);mix-blend-mode:multiply;transition:background-color 3s;position:absolute;inset:0}.artwork{z-index:2;flex-direction:column;align-items:center;gap:clamp(12px,2.4vmin,26px);width:min(86vw,82.6667vh,1300px);display:flex;position:relative;top:calc(-1*clamp(6px,2vh,24px))}.art-frame{--frame-width:clamp(6px, 1.1vmin, 12px);aspect-ratio:4/3;border:var(--frame-width) solid #7c7459;border-image:linear-gradient(135deg,#9a8f6c 0%,#7c7459 30%,#8b8264 55%,#6a634b 80%,#787055 100%) 1;width:100%;position:relative;box-shadow:0 18px 50px #00000038,0 4px 12px #0000002e}.art-frame:before{content:"";inset:calc(-1 * var(--frame-width));z-index:1;padding:var(--frame-width);pointer-events:none;-webkit-mask-composite:xor;background:url(/assets/metal-grime-W9gWC3df.webp) 0 0/256px;position:absolute;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor,source-over;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}.art-frame-inner{background-color:#0a0908;border:1px solid #2a2d33;width:100%;height:100%;position:relative;overflow:hidden}.art-frame-inner:after{content:"";pointer-events:none;position:absolute;inset:0;box-shadow:inset 0 3px 8px #0006,inset 0 0 16px #00000040}.art-plate{flex-direction:column;align-items:center;gap:4px;display:flex}.art-plate-image{border-radius:2px;width:auto;height:clamp(56px,9vmin,84px);display:block;box-shadow:0 6px 16px #00000040,0 1px 3px #0000004d}.art-plate-caption{letter-spacing:.18em;color:#4a4537;padding-left:.18em;font-size:clamp(.58rem,1.1vmin,.7rem)}.frame-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.memory-place-button{color:#f7f3e6;text-shadow:0 1px 1px #00000059;letter-spacing:.15em;cursor:pointer;background:url(/assets/metal-grime-W9gWC3df.webp) 0 0/256px,linear-gradient(#958a65 0%,#736a4c 100%);border:1px solid #5c5540;border-radius:3px;padding:8px 22px;font-size:.8rem;box-shadow:0 4px 10px #322c1e40,inset 0 1px #ffffff2e}.memory-place-button:hover{background:url(/assets/metal-grime-W9gWC3df.webp) 0 0/256px,linear-gradient(#a09570 0%,#7e7556 100%)}.frame-quiet-button{color:#322d20;text-shadow:none;background:url(/assets/metal-grime-W9gWC3df.webp) 0 0/256px,linear-gradient(#c6bd9a 0%,#b0a682 100%);border-color:#8a8263;box-shadow:0 2px 6px #322c1e2e}.frame-quiet-button:hover{background:url(/assets/metal-grime-W9gWC3df.webp) 0 0/256px,linear-gradient(#d0c7a5 0%,#bab08c 100%)}.about-link{letter-spacing:.12em;color:#4a4537;text-underline-offset:3px;cursor:pointer;background:0 0;border:none;padding:4px 8px;font-size:.68rem;-webkit-text-decoration:underline #4a453766;text-decoration:underline #4a453766}.about-link:hover{text-decoration-color:currentColor}.about-body{overscroll-behavior:contain;padding:18px 22px 22px;overflow-y:auto}.about-image{border:1px solid #d8c9a340;width:100%;height:auto;margin-bottom:1.4em;display:block}.about-paragraph{letter-spacing:.04em;color:#e8e0cc;white-space:pre-wrap;overflow-wrap:anywhere;margin-bottom:1em;font-size:.88rem;line-height:1.95}.about-signature{text-align:right;letter-spacing:.1em;color:#c8bb98;margin-top:1.4em;font-size:.8rem}.memory-list-overlay{z-index:30;background-color:#0000008c;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.memory-list-panel{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#110e0af2;border:1px solid #d8c9a359;flex-direction:column;width:min(560px,100%);max-height:min(640px,86%);display:flex}.memory-list-header{border-bottom:1px solid #d8c9a340;justify-content:space-between;align-items:center;padding:14px 18px 10px;display:flex}.memory-list-title{letter-spacing:.15em;color:#d8c9a3;font-size:1rem;font-weight:400}.memory-list-items{overscroll-behavior:contain;flex-direction:column;flex:1;gap:16px;padding:14px 18px;display:flex;overflow-y:auto}.memory-list-form-title{letter-spacing:.08em;color:#a89f92;font-size:.75rem}.memory-list-source{letter-spacing:.08em;color:#8d8272;white-space:nowrap;border:1px solid #d8c9a34d;border-radius:9px;padding:1px 8px;font-size:.68rem}.today-memory{z-index:20;color:#f5f0e8;background-color:#14100ac7;border:1px solid #d8c9a373;width:min(360px,100% - 24px);padding:8px 14px 10px;animation:.8s ease-out today-memory-in;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 4px 14px #00000080}@keyframes today-memory-in{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}@media (prefers-reduced-motion:reduce){.today-memory{animation:none}}.today-memory-label{letter-spacing:.12em;color:#d8c9a3}.today-memory-close{color:#a89f92;cursor:pointer;background:0 0;border:none;width:28px;height:28px;font-size:1rem;position:absolute;top:2px;right:2px}.today-memory-body{overflow-wrap:break-word;padding-right:20px;font-size:.82rem;line-height:1.6}.today-memory-foot{justify-content:space-between;align-items:center;gap:8px;margin-top:4px;display:flex}.today-memory-credit{text-overflow:ellipsis;white-space:nowrap;color:#a89f92;min-width:0;font-size:.72rem;overflow:hidden}.memory-list-goto.today-memory-goto{margin:0}@media (width<=600px){.today-memory{width:calc(100% - 12px);padding:5px 10px;bottom:6px}.today-memory-close{width:24px;height:24px}.today-memory-body{-webkit-line-clamp:1;-webkit-box-orient:vertical;font-size:.74rem;line-height:1.5;display:-webkit-box;overflow:hidden}.today-memory-foot{margin-top:2px}.today-memory-goto{min-height:28px;padding:2px 10px}}.comment-share{flex-wrap:wrap;align-items:center;gap:6px 10px;padding:10px 18px 0;display:flex}.comment-share-button{letter-spacing:.08em;color:#d8c9a3;cursor:pointer;background:0 0;border:1px solid #d8c9a373;border-radius:14px;min-height:32px;padding:4px 12px;font-size:.72rem}.comment-share-button:hover{background-color:#d8c9a326}.comment-share-notice{color:#a89f92;font-size:.72rem}.comment-share-url{color:#f5f0e8;background-color:#0000004d;border:1px solid #d8c9a34d;width:100%;padding:6px 8px;font-size:.75rem}.memory-list-goto{letter-spacing:.08em;color:#d8c9a3;cursor:pointer;background:0 0;border:1px solid #d8c9a373;border-radius:14px;min-height:32px;margin:6px 0 0 auto;padding:4px 12px;font-size:.72rem;display:block}.memory-list-goto:hover{background-color:#d8c9a326}.marker-toggle{cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;padding:4px 6px;display:flex}.marker-toggle-label{letter-spacing:.12em;color:#4a4537;font-size:.72rem}.marker-toggle-track{background:#60583e24 url(/assets/metal-grime-W9gWC3df.webp) 0 0/128px;border:1px solid #8a8263;border-radius:10px;width:36px;height:20px;transition:background-color .15s ease-out;position:relative}.marker-toggle-on{background-color:#6a634b}.marker-toggle-knob{background:url(/assets/metal-grime-W9gWC3df.webp) 0 0/96px,radial-gradient(circle at 35% 30%,#e0d9bf 0%,#b3a986 100%);border-radius:50%;width:14px;height:14px;transition:transform .15s ease-out;position:absolute;top:2px;left:2px;box-shadow:0 1px 3px #322c1e66}.marker-toggle-on .marker-toggle-knob{transform:translate(16px)}.spot-create-overlay{z-index:30;background-color:#0000008c;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.spot-create-card{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#110e0af2;border:1px solid #d8c9a359;flex-direction:column;gap:12px;width:min(360px,100%);padding:22px 24px;display:flex}.spot-create-form{flex-direction:column;gap:12px;display:flex}.spot-create-title{letter-spacing:.15em;color:#d8c9a3;font-size:1rem;font-weight:400}.spot-create-text{color:#a89f92;font-size:.85rem;line-height:1.7}.spot-create-input{color:#f5f0e8;background-color:#f5f0e814;border:1px solid #d8c9a34d;width:100%;padding:8px 10px;font-size:.85rem}.spot-create-buttons{flex-direction:column;gap:8px;margin-top:4px;display:flex}.spot-create-primary,.spot-create-secondary,.spot-create-cancel{letter-spacing:.1em;cursor:pointer;padding:9px 12px;font-size:.85rem}.spot-create-primary{color:#1c1710;background-color:#d8c9a3;border:none}.spot-create-primary:disabled{opacity:.4;cursor:default}.spot-create-secondary{color:#d8c9a3;background:0 0;border:1px solid #d8c9a366}.spot-create-cancel{color:#a89f92;background:0 0;border:none}.loading-screen{z-index:10;background-color:#111;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;display:flex;position:absolute;inset:0}.loading-title{letter-spacing:.5em;padding-left:.5em;font-size:2.5rem;font-weight:400}.loading-subtitle{letter-spacing:.3em;color:#a89f92;padding-left:.3em;font-size:.9rem}.loading-bar{background-color:#333;width:min(280px,60vw);height:2px;margin-top:1.5rem}.loading-bar-fill{background-color:#d8c9a3;height:100%;transition:width .2s ease-out}.loading-percent{color:#a89f92;font-size:.8rem}.loading-memory{letter-spacing:.06em;text-align:center;color:#8d8272;opacity:0;max-width:min(440px,80vw);min-height:2.6em;margin-top:2rem;font-size:.8rem;line-height:1.8;transition:opacity 1.6s ease-in-out}.loading-memory-visible{opacity:1}.loading-bar-preparing{animation:1.6s ease-in-out infinite loading-preparing-pulse}@keyframes loading-preparing-pulse{0%,to{opacity:1}50%{opacity:.4}}.touch-controls{left:0;right:0;bottom:max(20px, env(safe-area-inset-bottom));z-index:20;pointer-events:none;justify-content:center;gap:clamp(48px,16vw,140px);display:flex;position:absolute}.touch-stick{pointer-events:auto;flex-direction:column;align-items:center;gap:8px;display:flex}.touch-stick-base{touch-action:none;background-color:#60583e0d;border:1px solid #60583e4d;border-radius:50%;justify-content:center;align-items:center;width:120px;height:120px;display:flex;box-shadow:inset 0 2px 8px #0000001f}.touch-stick-knob{pointer-events:none;background:url(/assets/metal-grime-W9gWC3df.webp) 0 0/128px,linear-gradient(#a89d78 0%,#7a7256 55%,#665e45 100%);border-radius:50%;width:52px;height:52px;box-shadow:0 3px 8px #322c1e66,inset 0 1px #fff3}.touch-stick-label{letter-spacing:.25em;color:#4a4537;-webkit-user-select:none;user-select:none;padding-left:.25em;font-size:.72rem}@media (orientation:landscape){.touch-controls{padding:0 max(18px, env(safe-area-inset-left), env(safe-area-inset-right));justify-content:space-between}}@media (pointer:coarse) and (orientation:portrait){.museum-wall{padding-bottom:176px}.artwork{width:min(86vw,133.333svh - 453.333px);top:0}.memory-place-button{padding:7px 14px;font-size:.72rem}}@media (pointer:coarse) and (orientation:portrait) and (height<=700px){.museum-wall{padding-bottom:140px}.artwork{gap:8px}.art-plate{gap:2px}.art-plate-image{height:48px}.art-plate-caption{font-size:.55rem}.frame-actions{gap:6px 8px}.memory-place-button{padding:5px 9px;font-size:.66rem}.marker-toggle-label{font-size:.64rem}.touch-controls{transform-origin:bottom;bottom:10px;transform:scale(.8)}}.controls-guide{z-index:30;background-color:#0000008c;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.controls-guide-card{background-color:#1c1a17;border:1px solid #3a362f;flex-direction:column;align-items:center;gap:1.25rem;max-width:min(320px,85vw);padding:2rem 2.5rem;display:flex}.controls-guide-title{letter-spacing:.2em;padding-left:.2em;font-size:1.1rem;font-weight:400}.controls-guide-list{color:#cfc8bc;flex-direction:column;gap:.5rem;font-size:.9rem;line-height:1.6;list-style:none;display:flex}.controls-guide-button{color:#d8c9a3;letter-spacing:.15em;cursor:pointer;background:0 0;border:1px solid #d8c9a3;padding:.6rem 2.5rem;font-size:.9rem}.controls-guide-button:hover{background-color:#d8c9a326}.viewer-root{width:100%;height:100%;position:relative;overflow:hidden}.spot-marker-layer{z-index:15;pointer-events:none;position:absolute;inset:0;overflow:hidden}.spot-marker-anchor{pointer-events:auto;will-change:transform;position:absolute;top:0;left:0}.spot-marker{cursor:pointer;color:#f5f0e8;background:0 0;border:none;flex-direction:column;align-items:center;gap:4px;display:flex}.spot-marker-icon{background-color:#14100aa6;border:2px solid #d8c9a3;border-radius:50%;justify-content:center;align-items:center;width:44px;height:44px;font-size:20px;transition:transform .15s ease-out;display:flex;box-shadow:0 2px 10px #00000080}.spot-marker:hover .spot-marker-icon,.spot-marker-selected .spot-marker-icon{background-color:#d8c9a3e6;transform:scale(1.15)}.spot-marker-highlighted .spot-marker-icon{animation:1s ease-out infinite spot-marker-arrive}@keyframes spot-marker-arrive{0%{box-shadow:0 2px 10px #00000080,0 0 #d8c9a3cc}to{box-shadow:0 2px 10px #00000080,0 0 0 18px #d8c9a300}}@media (prefers-reduced-motion:reduce){.spot-marker-highlighted .spot-marker-icon{animation:none;box-shadow:0 0 0 4px #d8c9a3cc}}.spot-marker-label{letter-spacing:.1em;text-shadow:0 1px 4px #000000e6;white-space:nowrap;font-size:12px}.comment-panel-overlay{z-index:30;background-color:#0000008c;justify-content:center;align-items:center;padding:16px;display:flex;position:absolute;inset:0}.comment-panel{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background-color:#110e0af2;border:1px solid #d8c9a359;flex-direction:column;width:min(420px,100%);max-height:min(600px,86%);display:flex}.comment-panel-header{border-bottom:1px solid #d8c9a340;justify-content:space-between;align-items:flex-start;gap:8px;padding:16px 18px 12px;display:flex}.comment-panel-title{letter-spacing:.15em;color:#d8c9a3;font-size:1rem;font-weight:400}.comment-panel-description{color:#a89f92;margin-top:4px;font-size:.75rem}.comment-panel-close{color:#a89f92;cursor:pointer;background:0 0;border:none;padding:2px 6px;font-size:1.4rem;line-height:1}.comment-panel-close:hover{color:#f5f0e8}.comment-list{overscroll-behavior:contain;flex-direction:column;flex:1;gap:14px;padding:12px 18px;display:flex;overflow-y:auto}.comment-list-status{color:#a89f92;padding:8px 18px;font-size:.85rem;line-height:1.7}.comment-list .comment-list-status{padding:8px 0}.comment-item-meta{justify-content:space-between;align-items:baseline;gap:8px;display:flex}.comment-item-nickname{color:#d8c9a3;font-size:.85rem}.comment-item-date{color:#7d766b;font-size:.7rem}.comment-item-body{white-space:pre-wrap;overflow-wrap:break-word;margin-top:4px;font-size:.85rem;line-height:1.7}.comment-posted{border-top:1px solid #d8c9a340;flex-direction:column;align-items:center;gap:10px;padding:14px 18px 16px;display:flex}.comment-posted-message{letter-spacing:.05em;color:#d8c9a3;font-size:.85rem}.comment-form{border-top:1px solid #d8c9a340;flex-direction:column;gap:8px;padding:12px 18px 16px;display:flex}.comment-form-nickname,.comment-form-body{color:#f5f0e8;background-color:#f5f0e814;border:1px solid #d8c9a34d;width:100%;padding:8px 10px;font-family:inherit;font-size:.85rem}.comment-form-nickname::placeholder,.comment-form-body::placeholder{color:#7d766b}.comment-form-body{resize:vertical;min-height:60px}.comment-form-footer{justify-content:space-between;align-items:center;display:flex}.comment-form-counter{color:#7d766b;font-size:.7rem}.comment-form-submit{color:#d8c9a3;letter-spacing:.1em;cursor:pointer;background:0 0;border:1px solid #d8c9a3;padding:6px 20px;font-size:.85rem}.comment-form-submit:hover:not(:disabled){background-color:#d8c9a326}.comment-form-submit:disabled{opacity:.4;cursor:default}.comment-form-notice{color:#e0b18a;font-size:.75rem}.post-policy{color:#7d766b;font-size:.68rem;line-height:1.6}.report-note{letter-spacing:.04em;color:#6f685d;border-top:1px solid #d8c9a326;padding:8px 18px 12px;font-size:.66rem}.report-note a{color:#8d8272}.camera-debug{z-index:100;color:#9f9;white-space:pre;pointer-events:none;background-color:#0009;padding:6px 10px;font-family:ui-monospace,monospace;font-size:12px;position:fixed;bottom:8px;left:8px}.camera-debug canvas{background-color:#0006;margin-top:6px;display:block}.walk-editor{z-index:110;color:#eee;font-family:ui-monospace,monospace;font-size:12px;position:fixed;top:8px;left:8px}.walk-editor button{color:#9f9;font:inherit;cursor:pointer;background-color:#000000b3;border:1px solid #9f9;border-radius:3px;padding:4px 10px}.walk-editor button:hover{background-color:#9f93}.walk-editor button:disabled{opacity:.5;cursor:wait}.walk-editor button.walk-editor-deploy{color:#ff6;border-color:#ff6}.walk-editor button.walk-editor-deploy:hover{background-color:#ff63}.walk-editor-panel{background-color:#000000d9;border:1px solid #555;border-radius:4px;max-width:calc(100vw - 16px);padding:8px}.walk-editor-toolbar{flex-wrap:wrap;align-items:center;gap:6px;margin-bottom:6px;display:flex}.walk-editor-toolbar span{color:#9f9;margin-right:6px}.walk-editor-panel canvas{cursor:crosshair;touch-action:none;background-color:#111;max-width:100%;display:block}.walk-editor-hint{color:#aaa;max-width:560px;margin-top:6px;line-height:1.5}.walk-editor-message{color:#ff6;margin-top:4px}.walk-editor-open .camera-debug{display:none}.fallback{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:.75rem;height:100%;padding:2rem;display:flex}.fallback-title{letter-spacing:.5em;padding-left:.5em;font-size:2.5rem;font-weight:400}.fallback-subtitle{letter-spacing:.3em;color:#a89f92;padding-left:.3em;font-size:.9rem}.fallback-message{color:#cfc8bc;max-width:32em;margin-top:1.5rem;font-size:.95rem;line-height:1.8}
