:root{--bg:#FAF7F2;--card:#F6DDE3;--ink:#4B3A3F;--soft:#7a5560;--pink:#B97C8C;--head:#4B3A3F;--line:#E6B9C6;
box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#3a2c31;--card:#4B3A3F;--ink:#FAF7F2;--soft:#E6B9C6;--pink:#B97C8C;--head:#F6DDE3;--line:#6a5359;color-scheme:dark}}
:root[data-theme="dark"]{--bg:#3a2c31;--card:#4B3A3F;--ink:#FAF7F2;--soft:#E6B9C6;--pink:#B97C8C;--head:#F6DDE3;--line:#6a5359;color-scheme:dark}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Georgia,"Times New Roman",serif;line-height:1.6}
main{max-width:760px;margin:0 auto;padding:20px 18px 60px}
section{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:24px 20px;margin:22px 0;text-align:center}
h1{font-size:2.2rem;margin:.2em 0;color:var(--head)}
h2{font-size:1.4rem;margin:0 0 .6em;color:var(--head)}
p{margin:.4em 0;color:var(--soft)}
button,label.btn{background:var(--pink);color:#fff;border:0;border-radius:999px;padding:10px 20px;font:inherit;cursor:pointer;display:inline-block}
button:active{transform:scale(.97)}
.count{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-top:14px}
.count div{min-width:70px;padding:10px;border:1px solid var(--line);border-radius:14px}
.count b{display:block;font-size:1.6rem;color:var(--ink)}
.count span{font-size:.8rem;color:var(--soft)}
#reason{min-height:3.2em;margin:16px 0;font-size:1.15rem;color:var(--ink);font-style:italic}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:14px;margin-top:16px}
.pol{background:#FAF7F2;padding:8px 8px 22px;border-radius:4px;box-shadow:0 3px 10px rgba(0,0,0,.2);transform:rotate(var(--r,0deg))}
.pol img{width:100%;aspect-ratio:1;object-fit:cover;display:block}
.pol input{width:100%;border:0;background:transparent;font:inherit;font-size:.8rem;text-align:center;color:#444;margin-top:6px}
.mem{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;max-width:360px;margin:16px auto}
.card{aspect-ratio:1;border-radius:14px;border:1px solid var(--line);background:var(--line);font-size:1.9rem;display:flex;align-items:center;justify-content:center;cursor:pointer;color:transparent;user-select:none}
.card.on{background:var(--bg);color:inherit}
.card.done{background:var(--pink);color:#fff}
#letter{display:none;text-align:left;white-space:pre-line;margin-top:16px;color:var(--ink)}
input[type=file]{display:none}
.page{display:none}.page.on{display:block}
.line{opacity:0;transition:opacity 1.4s;font-size:1.15rem;color:var(--ink);margin:1em 0}.line.show{opacity:1}
#enter{margin-top:18px;font-size:1.05rem;animation:pulse 1.8s infinite}
@keyframes pulse{50%{transform:scale(1.06)}}
nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:5;display:flex;gap:6px;overflow-x:auto;justify-content:center;padding:10px 12px;background:var(--bg);border-bottom:1px solid var(--line)}
nav a{white-space:nowrap;text-decoration:none;color:var(--soft);padding:6px 14px;border-radius:999px;font-size:.95rem}
nav a.on{background:var(--pink);color:#fff}
.chat{max-height:50vh;overflow-y:auto;text-align:left;margin:14px 0;padding:6px}
.msg{max-width:80%;margin:8px 0;padding:8px 14px;border-radius:16px;background:var(--bg);color:var(--ink);border:1px solid var(--line)}
.msg.me{margin-left:auto;background:var(--pink);color:#fff;border-color:var(--pink)}
.msg small{display:block;font-size:.72rem;opacity:.75}
.row{display:flex;gap:8px}.row input,.f input[type=text],.f input[type=password]{flex:1;min-width:0;padding:10px 14px;border-radius:999px;border:1px solid var(--line);background:var(--bg);color:var(--ink);font:inherit}
.note{font-size:.85rem}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin:10px 0}
.cal b{font-size:.75rem;color:var(--soft)}
.cal button{aspect-ratio:1;padding:0;background:var(--bg);color:var(--ink);border:1px solid var(--line);border-radius:10px;font-size:.9rem;position:relative}
.cal button.has{background:var(--line)}.cal button.has::after{content:"\1F4F7";position:absolute;right:2px;bottom:0;font-size:.6rem}
.cal button.sel{outline:2px solid var(--pink)}
.cal button.ann{border:2px solid var(--pink);border-radius:50%;background:radial-gradient(circle,#F6DDE3,#E6B9C6);color:#4B3A3F;font-weight:bold;box-shadow:0 0 0 3px var(--bg),0 0 0 5px var(--pink);animation:beat 1.6s infinite}
.cal button.ann::before{content:"\1F380";position:absolute;left:-4px;top:-9px;font-size:.85rem;transform:rotate(-20deg)}
.cal button.mon{border:2px dotted var(--pink);border-radius:50%}
.cal button.mon::before{content:"\1F338";position:absolute;left:-3px;top:-7px;font-size:.7rem}
@keyframes beat{50%{transform:scale(1.1)}}
@media (prefers-reduced-motion:reduce){.cal button.ann{animation:none}}
.mh{display:flex;justify-content:space-between;align-items:center}
.entry{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:10px;margin:10px 0}
.entry img{max-width:100%;border-radius:8px}
.f{display:flex;flex-direction:column;gap:8px;margin-top:12px;align-items:center}
.chips{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin:10px 0}
.chips button{background:var(--bg);color:var(--ink);border:1px dashed var(--pink);font-size:.8rem;padding:6px 12px}
.ticket{text-align:left;margin:12px 0;padding:14px 18px;background:var(--bg);border:2px dashed var(--pink);border-radius:14px;display:flex;justify-content:space-between;align-items:center;gap:10px}
.ticket b{color:var(--ink)}.ticket small{display:block;color:var(--soft)}
.ticket.used{opacity:.55;border-style:solid}
