:root{--bg:#fff7ed;--card:#ffffff;--ink:#3f2d20;--accent:#e11d63;--accent-soft:#ffe4ec;--line:#f3e2d3}*{box-sizing:border-box}body{margin:0;font-family:M PLUS Rounded\ 1c,Hiragino Maru Gothic ProN,Hiragino Kaku Gothic ProN,Noto Sans JP,system-ui,sans-serif;background:var(--bg);color:var(--ink)}button,input,select,textarea{font-family:inherit}.wrap{max-width:1080px;margin:0 auto;padding:20px 16px 64px}header.hero{text-align:center;padding:28px 0 8px}header.hero h1{font-size:clamp(26px,5vw,40px);margin:0 0 6px;font-weight:800;letter-spacing:.04em}.logo-wrap{display:inline-block;background:transparent;padding:0;margin-bottom:10px}.loading-box{padding:36px 0 8px}.loading-logo{display:block;width:min(250px,62vw);height:auto;margin:0 auto;image-rendering:pixelated;animation:purupuru .16s linear infinite;transform-origin:50% 60%}@keyframes purupuru{0%{transform:translate(0) rotate(0deg)}20%{transform:translate(1.6px,-1px) rotate(.5deg)}40%{transform:translate(-1.4px,.6px) rotate(-.5deg)}60%{transform:translate(1.2px,1px) rotate(.4deg)}80%{transform:translate(-1.6px,-.6px) rotate(-.4deg)}to{transform:translate(0) rotate(0deg)}}.loading-text{margin-top:14px;font-weight:800;color:#7c6652;letter-spacing:.12em}@media (prefers-reduced-motion:reduce){.loading-logo{animation:none}}header.hero p.dopaneko-note{margin:8px 0 2px;font-weight:800;font-size:15px;color:var(--accent)}.logo{display:block;width:min(500px,80vw);height:auto;image-rendering:pixelated}header.hero p{margin:4px 0;color:#7c6652}.notice{margin:16px auto;max-width:640px;text-align:center;background:var(--accent-soft);border-radius:999px;padding:10px 18px;font-weight:700}.notice.done{background:#dcfce7}.admin-counts{font-weight:700;color:var(--accent);background:var(--accent-soft);border-radius:10px;padding:6px 10px}.counts-summary{font-weight:700;line-height:1.7}.admin-btn.logout{background:#6b7280;margin-top:8px}.admin-ranking{margin-top:16px;background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px}.admin-ranking h2{margin:0 0 10px;font-size:20px}.rank2-row{display:flex;align-items:center;gap:12px;padding:8px 10px;border-radius:12px;border:2px solid transparent}.rank2-row.prize{background:linear-gradient(135deg,#fff7d6,#ffe4f1);border-color:#f5b301}.rank2-pos{font-weight:800;font-size:17px;min-width:50px;text-align:center}.rank2-pos.p1{color:#d97706;font-size:21px}.rank2-pos.p2{color:#64748b;font-size:20px}.rank2-pos.p3{color:#b45309}.rank2-img{width:52px;height:52px;border-radius:50%;object-fit:cover;background:#fff;flex-shrink:0}.rank2-img.fallback{display:flex;align-items:center;justify-content:center;font-size:24px}.rank2-main{flex:1 1;min-width:0}.rank2-name{font-weight:800;margin-bottom:5px}.prize-tag{color:#b45309;font-size:12px;font-weight:800;margin-left:8px}.rank2-bar-wrap{background:#f7e8da;border-radius:999px;height:14px;overflow:hidden}.rank2-bar{height:100%;border-radius:999px;transition:width .6s ease}.rank2-meta{text-align:right;font-weight:700;white-space:nowrap;line-height:1.5}.notice.event{background:linear-gradient(135deg,#ffe4f1,#fff3d6);border:2px solid var(--accent);line-height:1.7}.grid{display:grid;grid-gap:16px;gap:16px;margin-top:20px;grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}.card{background:var(--card);border:2px solid var(--line);border-radius:20px;padding:14px 10px 16px;text-align:center;display:flex;flex-direction:column;align-items:center;gap:8px;transition:transform .18s ease,box-shadow .18s ease}.card:hover{transform:translateY(-3px);box-shadow:0 8px 22px rgba(120,80,40,.14)}.card.voted{border-color:var(--accent);box-shadow:0 6px 20px rgba(225,29,99,.18)}.avatar{width:84px;height:84px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:44px;overflow:hidden;flex:none;cursor:zoom-in;transition:transform .22s ease,box-shadow .22s ease}.card:hover .avatar{transform:scale(1.14) rotate(-3deg);box-shadow:0 6px 16px rgba(120,80,40,.25)}.avatar:active{transform:scale(1.05)}.avatar img{width:100%;height:100%;object-fit:cover}.card .name{font-weight:800;font-size:17px}.card .votes{font-size:13px;color:#7c6652}.vote-btn{margin-top:auto;border:none;cursor:pointer;background:var(--accent);color:#fff;font-weight:800;padding:10px 18px;border-radius:999px;font-size:15px}.vote-btn:disabled{background:#d8c9bb;cursor:default}.vote-btn:not(:disabled):hover{filter:brightness(1.08)}section.results{margin-top:44px}section.results h2{text-align:center;font-size:24px}.rank{max-width:640px;margin:0 auto;display:flex;flex-direction:column;gap:10px}.rank-row{display:grid;grid-template-columns:34px 1fr auto;align-items:center;grid-gap:10px;gap:10px}.rank-row .pos{font-weight:800;text-align:center}.rank-row .bar-wrap{background:#f7e8da;border-radius:999px;height:16px;overflow:hidden}.rank-row .bar{height:100%;border-radius:999px;background:var(--accent);transition:width .6s ease}.rank-row .meta{font-size:13px;color:#7c6652;white-space:nowrap}footer{text-align:center;color:#a08b76;font-size:13px;margin-top:48px;line-height:1.8}footer .credit a{color:var(--accent);font-weight:700;text-decoration:none}footer .credit a:hover{text-decoration:underline}.admin-form{max-width:720px;margin:0 auto;gap:10px}.admin-form,.admin-row{display:flex;flex-direction:column}.admin-row{gap:8px;padding:12px;border:1.5px solid var(--line);border-radius:14px;background:#fff}.admin-row-top{display:flex;align-items:center;gap:8px}.admin-row-top input[type=text]{flex:1 1}.photo-drop{position:relative;min-height:110px;border:2px dashed var(--line);border-radius:12px;display:flex;align-items:center;justify-content:center;cursor:pointer;background:#fdf8f2;overflow:hidden;text-align:center}.photo-drop.dragging{border-color:var(--accent);background:#fdeef7}.photo-drop img{width:100%;height:180px;object-fit:cover;display:block}.photo-drop-text{color:#a08b76;font-size:14px;line-height:1.6;padding:18px 8px}.photo-clear{position:absolute;top:8px;right:8px;border:none;cursor:pointer;background:rgba(0,0,0,.65);color:#fff;padding:6px 10px;border-radius:999px;font-size:12px}input[type=password],input[type=text],input[type=url]{padding:9px 12px;border:1.5px solid var(--line);border-radius:10px;font-size:15px;width:100%}button.admin-btn{border:none;cursor:pointer;background:var(--ink);color:#fff;padding:10px 18px;border-radius:999px;font-weight:700}button.danger{background:#b91c1c}.msg{text-align:center;font-weight:700}.modal-overlay{position:fixed;inset:0;z-index:50;background:rgba(62,42,28,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);justify-content:center;padding:16px;animation:fadeIn .18s ease}.modal-overlay,.modal-panel{display:flex;align-items:center}.modal-panel{position:relative;background:#fff;border-radius:24px;padding:22px 22px 26px;width:min(92vw,400px);text-align:center;flex-direction:column;gap:10px;box-shadow:0 24px 60px rgba(0,0,0,.35);animation:pop .28s cubic-bezier(.2,1.4,.4,1)}.modal-photo{width:100%;border-radius:16px;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:90px;min-height:200px}.modal-photo img{width:100%;max-height:52vh;object-fit:contain;display:block;background:#fff}.modal-name{font-weight:800;font-size:24px}.modal-close{position:absolute;top:10px;right:10px;z-index:1;width:34px;height:34px;border-radius:50%;border:none;cursor:pointer;background:rgba(0,0,0,.55);color:#fff;font-size:15px;line-height:1}.modal-close:hover{background:rgba(0,0,0,.75)}.vote-btn.modal-vote{font-size:17px;padding:12px 30px;margin-top:4px}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.78) translateY(14px)}to{opacity:1;transform:scale(1) translateY(0)}}.party-overlay{position:fixed;inset:0;z-index:100;background:rgba(62,32,48,.45);display:flex;align-items:center;justify-content:center;padding:16px;overflow:hidden;animation:fadeIn .18s ease;cursor:pointer}.party-flash{position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 42%,rgba(255,196,0,.5),rgba(255,61,130,.35) 55%,transparent 75%);animation:partyFlash .55s ease-out forwards}@keyframes partyFlash{0%{opacity:.9}to{opacity:0}}.party-canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:4}.party-panel{position:relative;z-index:3;background:#fff;border-radius:28px;width:min(92vw,400px);padding:26px 20px 24px;text-align:center;box-shadow:0 24px 70px rgba(0,0,0,.4);animation:pop .3s cubic-bezier(.2,1.4,.4,1)}@keyframes partyShake{0%{transform:translate(0)}25%{transform:translate(6px,-4px)}55%{transform:translate(-5px,3px)}80%{transform:translate(3px,1px)}to{transform:translate(0)}}.party-stage{position:relative;width:230px;height:230px;margin:0 auto 6px}.party-rays{position:absolute;inset:0;border-radius:50%;background:repeating-conic-gradient(from 0deg,rgba(255,196,0,.28) 0deg 14deg,rgba(255,61,130,.16) 14deg 28deg);animation:partySpin 7s linear infinite,partyRaysFade .6s ease 2.4s forwards}@keyframes partyRaysFade{to{opacity:0}}.party-hint{margin-top:10px;font-size:11px;color:#b8a08c;font-weight:700;opacity:0;animation:partyHintIn .5s ease 3.4s forwards}@keyframes partyHintIn{to{opacity:1}}@keyframes partySpin{to{transform:rotate(1turn)}}.party-ring{position:absolute;inset:26px;border-radius:50%;border:5px solid #ff3d82;opacity:0;pointer-events:none;animation:partyRing 1s ease-out forwards}.party-ring.delay1{border-color:#ffb700;animation-delay:.18s}.party-ring.delay2{border-color:#28aaff;animation-delay:.36s}@keyframes partyRing{0%{transform:scale(.68);opacity:1}to{transform:scale(1.32);opacity:0}}.party-cat{position:absolute;inset:42px;border-radius:50%;overflow:hidden;display:flex;align-items:center;justify-content:center;font-size:72px;background:#fff;box-shadow:0 10px 30px rgba(225,29,99,.3);animation:partyHop 1.15s cubic-bezier(.3,1.6,.4,1)}.party-cat img{width:100%;height:100%;object-fit:cover}@keyframes partyHop{0%{transform:translateY(0) scale(1)}22%{transform:translateY(-30px) scale(1.13) rotate(-2deg)}42%{transform:translateY(0) scale(.97)}62%{transform:translateY(-20px) scale(1.09) rotate(2deg)}82%{transform:translateY(0) scale(1)}to{transform:translateY(0) scale(1.02)}}.party-heart{position:absolute;top:2px;font-size:24px;opacity:0;pointer-events:none;animation:partyHeart 1.5s ease-out forwards}.party-heart.h1{left:26px;animation-delay:.15s}.party-heart.h2{left:100px;top:-8px;font-size:30px;animation-delay:.3s}.party-heart.h3{right:26px;animation-delay:.45s}@keyframes partyHeart{0%{opacity:0;transform:translateY(16px) scale(.5)}30%{opacity:1}to{opacity:0;transform:translateY(-30px) scale(1.15)}}.party-plus{position:absolute;right:6px;top:96px;font-size:27px;font-weight:800;color:#ff8c00;opacity:0;pointer-events:none;text-shadow:0 2px 0 #fff;animation:partyPlus 1.15s ease-out forwards}.party-plus.p2{right:26px;animation-delay:.3s}.party-plus.p3{right:2px;animation-delay:.6s}@keyframes partyPlus{0%{opacity:0;transform:translateY(12px) scale(.6) rotate(-8deg)}25%{opacity:1}to{opacity:0;transform:translateY(-66px) scale(1.25) rotate(6deg)}}.party-big{font-size:42px;font-weight:800;letter-spacing:.02em;color:#ff3d82;text-shadow:0 3px 0 #ffb700,0 6px 14px rgba(255,61,130,.35);animation:partyBig .8s cubic-bezier(.2,2.2,.4,1) .1s both}@keyframes partyBig{0%{opacity:0;transform:scale(.4)}60%{opacity:1;transform:scale(1.14)}to{opacity:1;transform:scale(1)}}.party-ribbon{display:inline-block;margin-top:12px;background:linear-gradient(90deg,#ff3d82,#ff8c00);color:#fff;font-weight:800;font-size:16px;padding:8px 20px;border-radius:999px;box-shadow:0 6px 16px rgba(255,61,130,.35);animation:partyRibbon .5s cubic-bezier(.2,1.6,.4,1) .45s both}@keyframes partyRibbon{0%{opacity:0;transform:scaleX(.2)}to{opacity:1;transform:scaleX(1)}}.party-sub{margin-top:12px;font-size:13px;color:#7c6652;font-weight:700}@media (prefers-reduced-motion:reduce){.party-cat,.party-heart,.party-plus,.party-rays,.party-ring{animation:none}.party-heart,.party-plus,.party-ring{display:none}}.notice.done.replay{cursor:pointer}.notice.done.replay:hover{filter:brightness(.98)}.replay-hint{display:block;font-size:12px;color:#15803d;margin-top:2px}