:root{--ink:#1a1612;--paper:#f2eadf;--mute:#4a433c;--line:#1a16122e;--accent:#b4332a;--fill:#1a1612;--white:#fffaf3}*{box-sizing:border-box;margin:0;padding:0}html,body{background:var(--ink);min-height:100%;color:var(--ink)}body{font-family:var(--font-gothic), "Hiragino Sans", sans-serif}button,input,label{font:inherit}.app-shell{background:#120f0c;justify-content:center;min-height:100dvh;display:flex}.screen{flex-direction:column;width:min(100%,430px);min-height:100dvh;display:flex;position:relative}@media (min-width:600px) and (min-height:1000px){.app-shell{align-items:center;padding:32px 0}.screen{border:1px solid #fffaf324;height:min(932px,100dvh - 64px);min-height:0;overflow-y:auto}}.screen-photo{background:var(--ink);color:var(--white);justify-content:flex-end;overflow:hidden}.screen-photo-image{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.screen-photo-shade{background:linear-gradient(#120f0c57 0%,#120f0c14 38%,#120f0c1a 46%,#120f0ccc 66%,#120f0ceb 100%);position:absolute;inset:0}.screen-photo-title{top:calc(20px + env(safe-area-inset-top));flex-direction:column;align-items:center;gap:12px;display:flex;position:absolute;right:20px}.screen-photo-title h1{writing-mode:vertical-rl;font-family:var(--font-mincho), "Hiragino Mincho ProN", serif;letter-spacing:.14em;-webkit-text-stroke:5px #14110ecc;paint-order:stroke fill;text-shadow:0 0 14px #120f0cbf;margin:0;font-size:clamp(36px,11vw,44px);font-weight:700;line-height:1.1}.screen-photo-title .hanko{background:var(--white)}.screen-photo-body{padding:0 20px calc(18px + env(safe-area-inset-bottom));text-shadow:0 0 6px #120f0ccc;margin-top:300px;position:relative}.screen-photo-body .lead{font-family:var(--font-mincho), "Hiragino Mincho ProN", serif;color:var(--white);margin-top:0}.screen-photo-body .note,.screen-photo-body .auth-status,.screen-photo-body .auth-open,.screen-photo-body .screen-photo-album-link{color:var(--white)}.screen-photo-body .actions{margin-top:14px;padding-top:0}.screen-photo-body .btn{text-shadow:none}.screen-photo-body .btn-fill{background:var(--white);color:var(--ink)}.screen-photo-body .btn-ghost{color:var(--white);background:#120f0c59;border-color:#fffaf3b3}.screen-photo-body .error{color:#ffd9d3}.screen-photo-body .auth-panel{text-align:center;border-top:0;margin-top:14px;padding-top:0}.screen-photo-body .auth-row input{color:var(--white);background:#120f0c8c;border-color:#fffaf38c}.screen-photo-body .auth-row input::placeholder{color:#fffaf3bf}.kicker{color:var(--accent);letter-spacing:.08em;font-size:13px}.hanko{background:var(--paper);border:1.5px solid var(--accent);width:48px;height:48px;color:var(--accent);font-family:var(--font-mincho), "Hiragino Mincho ProN", serif;letter-spacing:.08em;flex-direction:row-reverse;flex-shrink:0;justify-content:center;align-items:center;gap:1px;font-size:13px;font-weight:700;display:flex}.hanko span{writing-mode:vertical-rl}.lead{color:var(--mute);margin-top:22px;font-size:17px;line-height:1.7}.note{color:var(--mute);margin-top:14px;font-size:14px}.actions{flex-direction:column;gap:12px;margin-top:auto;padding-top:56px;display:flex}.actions.row{flex-direction:row}.btn{cursor:pointer;text-align:center;border:1px solid #0000;border-radius:4px;justify-content:center;align-items:center;width:100%;min-height:52px;padding:0 18px;display:flex}.btn input{display:none}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-fill{background:var(--fill);color:var(--white)}.btn-ghost{color:var(--ink);border-color:var(--line);background:0 0}.error{color:var(--accent);margin-top:16px;font-size:14px}.auth-panel{border-top:1px solid var(--line);margin-top:16px;padding-top:12px}.auth-open{color:var(--mute);padding-top:0;font-size:13px}.auth-status{color:var(--mute);margin-bottom:8px;font-size:13px}.auth-row{flex-wrap:wrap;gap:8px;margin-top:8px;display:flex}.auth-row input{border:1px solid var(--line);min-width:200px;color:var(--ink);background:0 0;border-radius:6px;flex:1;padding:10px 12px;font-size:16px}.screen-photo-bg,.screen-complete{color:var(--white);background:#000}.bg-photo{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.bg-shade{background:linear-gradient(#120f0c2e 0%,#120f0c47 52%,#120f0ce0 100%);position:absolute;inset:0}.verse-stage{z-index:1;min-height:0;padding-top:calc(20px + env(safe-area-inset-top));flex:1;padding-bottom:8px;position:relative}.verse-preview{top:calc(20px + env(safe-area-inset-top));writing-mode:vertical-rl;font-family:var(--font-mincho), "Hiragino Mincho ProN", serif;letter-spacing:.18em;text-shadow:0 0 8px #1a1612b3;-webkit-text-stroke:.14em #14110ed9;paint-order:stroke fill;z-index:1;flex-direction:column;gap:18px;display:flex;position:absolute;right:22px}.verse-preview.is-inline{writing-mode:horizontal-tb;letter-spacing:.04em;white-space:nowrap;flex-direction:row;gap:.8em;font-size:14px}.sheet{z-index:1;padding:18px 18px calc(20px + env(safe-area-inset-bottom));margin-top:auto;position:relative}.sheet-head{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.sheet-meta{justify-content:space-between;align-items:baseline;gap:12px;display:flex}.tabs{gap:8px;min-width:0;display:flex}.tab{color:var(--white);text-align:left;cursor:pointer;white-space:nowrap;background:#120f0cad;border:0;border-radius:4px;min-width:0;padding:8px 10px}.tab.is-current{background:var(--white);color:var(--ink)}.text-link{color:inherit;text-underline-offset:3px;cursor:pointer;white-space:nowrap;background:0 0;border:0;padding-top:8px;text-decoration:underline}.screen-photo-album-link{color:var(--mute);align-self:center;padding-top:4px;font-size:14px}.screen-photo-album-link:disabled{opacity:.45;cursor:not-allowed}.sheet-hint{color:#fffaf3eb;text-shadow:0 0 6px #120f0ce6;margin:14px 0 12px;font-size:14px}.context-badge{letter-spacing:.04em;color:#fffaf3eb;text-shadow:0 0 6px #120f0ce6;margin:10px 0 0;font-size:14px}.meta-probe{color:#fffaf38c;word-break:break-all;border-top:1px solid #fffaf32e;margin-top:14px;padding-top:12px;font-size:11px;line-height:1.6}.phrase-list{grid-template-columns:1fr 1fr;gap:8px;list-style:none;display:grid}.phrase{width:100%;min-height:48px;color:var(--white);cursor:pointer;font-family:var(--font-mincho), serif;background:#120f0c59;border:1px solid #fffaf33d;border-radius:4px;font-size:16px}.phrase.is-selected{background:var(--white);color:var(--ink);border-color:var(--white)}.phrase-custom{color:#fffaf3b3;font-family:var(--font-gothic), "Hiragino Sans", sans-serif;border-style:dashed;font-size:13px}.custom-phrase-input{margin-top:10px}.custom-phrase-input input{width:100%;min-height:48px;color:var(--white);font-family:var(--font-mincho), serif;background:#120f0c80;border:1px solid #fffaf366;border-radius:4px;padding:0 12px;font-size:16px}.custom-phrase-input input::placeholder{color:#fffaf359;font-family:var(--font-gothic), "Hiragino Sans", sans-serif;font-size:13px}.custom-phrase-input input:focus{border-color:#fffaf3bf;outline:none}.custom-phrase-input .actions{gap:8px;margin-top:8px;padding-top:0;display:flex}.custom-phrase-input .actions .btn{flex:1;min-height:44px;font-size:14px}.custom-phrase-input .btn-ghost{color:#fffaf3bf;border-color:#fffaf34d}.custom-phrase-input .btn-fill{background:var(--white);color:var(--ink)}.screen-complete{padding:calc(24px + env(safe-area-inset-top)) 18px calc(20px + env(safe-area-inset-bottom));justify-content:center}.complete-frame{justify-content:center;align-items:center;min-height:0;display:flex}.complete-frame img{object-fit:contain;max-width:100%;max-height:calc(100dvh - 340px);box-shadow:0 12px 40px #00000059}.screen-complete .actions{margin-top:20px;padding-top:0}.screen-complete .actions .actions{gap:12px;margin-top:0;padding-top:0}.save-hint{color:#fffaf3b8;text-align:center;margin-top:12px;font-size:13px;line-height:1.6}.screen-complete .btn-ghost{color:var(--white);border-color:#fffaf34d}.screen-album{background:var(--paper);padding:calc(48px + env(safe-area-inset-top)) 24px calc(32px + env(safe-area-inset-bottom))}.screen-album h1{font-family:var(--font-mincho), "Hiragino Mincho ProN", serif;margin-top:12px;font-size:clamp(24px,7vw,30px);font-weight:700}.album-grid{grid-template-columns:repeat(2,1fr);gap:16px 12px;margin-top:24px;padding:0;list-style:none;display:grid}.album-item{min-width:0}.album-item img{aspect-ratio:3/4;object-fit:contain;background:var(--ink);width:100%;display:block}.album-item-fallback{aspect-ratio:3/4;background:var(--line);width:100%}.album-item-open{cursor:pointer;background:0 0;border:0;width:100%;padding:0;display:block}.album-overlay{z-index:10;padding:calc(24px + env(safe-area-inset-top)) 24px calc(24px + env(safe-area-inset-bottom));background:#120f0ceb;flex-direction:column;justify-content:center;align-items:center;display:flex;position:fixed;inset:0}.album-overlay img{object-fit:contain;max-width:100%;max-height:calc(100dvh - 120px)}.album-overlay-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;margin-top:20px;display:flex}.album-overlay-close{color:var(--white);cursor:pointer;background:0 0;border:1px solid #fffaf34d;border-radius:4px;padding:10px 20px}.album-overlay-close:disabled{opacity:.45;cursor:not-allowed}.album-overlay-close.is-danger{color:#e06a5e;border-color:#e06a5e}.album-overlay-confirm{text-align:center;color:var(--white);flex-basis:100%;font-size:14px}.album-overlay-error{text-align:center;color:#e06a5e;flex-basis:100%;font-size:14px}.album-item-caption{-webkit-line-clamp:2;line-clamp:2;min-height:3.4em;color:var(--mute);-webkit-box-orient:vertical;margin-top:8px;padding:0 8px;font-size:12px;line-height:1.6;display:-webkit-box;overflow:hidden}.reselect-row{flex-wrap:wrap;justify-content:center;gap:18px;margin-top:16px;display:flex}.reselect{color:var(--white);cursor:pointer;text-align:left;background:0 0;border:0;padding:4px 0}.reselect-label{color:#fffaf399;font-size:11px;display:block}.reselect-phrase{font-family:var(--font-mincho), "Hiragino Mincho ProN", serif;text-underline-offset:4px;font-size:15px;-webkit-text-decoration:underline #fffaf366;text-decoration:underline #fffaf366}.verse-options{flex-wrap:wrap;justify-content:center;gap:24px;margin-top:14px;display:flex}.choice-group{align-items:center;gap:4px;font-size:13px;display:flex}.choice-label{color:#fffaf399;margin-right:6px}.choice{color:#fffaf399;cursor:pointer;background:0 0;border:0;padding:6px 8px}.choice.is-current{color:var(--white);text-underline-offset:4px;font-weight:700;text-decoration:underline}.choice:disabled{opacity:.4;cursor:default}.screen-photo-terms{color:#fff;text-shadow:0 1px 3px #000c;margin:8px 0 0;font-size:11px}.screen-photo-terms a{color:inherit;text-decoration:underline}.terms{color:#f3efe6;max-width:40rem;margin:0 auto;padding:32px 16px 64px;line-height:1.8}.terms h1{font-size:24px}.terms h2{margin-top:28px;font-size:17px}.terms ul{padding-left:1.2em}.terms a{color:inherit;text-decoration:underline}.btn.is-waiting{opacity:.55;cursor:wait}.withdraw-panel{text-align:left;margin-top:12px}.withdraw-panel .note{margin-top:0;margin-bottom:6px}.complete-album-link{color:var(--white);align-self:center}.complete-album-error{text-align:center;color:#ffd9d3;margin-top:0}.screen-complete .auth-panel{text-align:center;border-top:0;margin-top:0;padding-top:0}.screen-complete .auth-status,.screen-complete .auth-open{color:var(--white)}.screen-complete .auth-row input{color:var(--white);background:#120f0c8c;border-color:#fffaf38c}.screen-complete .auth-row input::placeholder{color:#fffaf3bf}.reset-password input{width:100%;color:var(--white);background:#120f0c8c;border:1px solid #fffaf38c;border-radius:6px;margin:12px 0;padding:10px 12px;font-size:16px;display:block}.reset-password .error{color:#ffd9d3}.reset-password .btn{color:var(--white);border-color:#fffaf38c}.reset-password .btn:disabled{opacity:.5;cursor:default}.reveal-stack{display:grid;position:relative}.reveal-stack>img{grid-area:1/1;justify-self:center}.reveal-layer{opacity:0;transition:opacity .7s}.reveal-layer.is-on{opacity:1}.hanamaru{width:34%;max-width:150px;animation:.4s 2.8s forwards hanamaru-out;position:absolute;bottom:6%;left:6%;overflow:visible}.hanamaru-line{fill:none;stroke:#d4342c;stroke-width:3.2px;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:.9s ease-out forwards hanamaru-draw}.hanamaru-line.is-spiral{animation-duration:.6s;animation-delay:.7s}@keyframes hanamaru-draw{to{stroke-dashoffset:0}}@keyframes hanamaru-out{to{opacity:0}}
