:root{--brand:#1668c8;--navy:#0e4a91;--blue:#2f86dd;--orange:#ff8c1a;--yellow:#ffd23f;--cream:#fff8e7;--ink:#1d2b3a}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}body,html{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Noto Sans JP,Yu Gothic,sans-serif;color:var(--ink);background:radial-gradient(circle at 50% -10%,#2f86dd 0,var(--brand) 45%,#0d4a92 100%);background-attachment:fixed;min-height:100dvh}.wrap{max-width:720px;margin:0 auto;padding:24px 16px 64px}.header{display:flex;align-items:center;gap:14px;margin:4px 0 24px}.logo{width:124px;height:auto;flex-shrink:0;background:#fff;border-radius:12px;padding:8px 10px;box-shadow:0 3px 10px rgba(0,0,0,.18)}.header-text{min-width:0}.title{color:#fff;margin:0;font-size:26px;font-weight:800;letter-spacing:.02em;text-shadow:0 2px 0 rgba(0,0,0,.2)}.subtitle{color:var(--yellow);font-weight:700;font-size:13px;margin:3px 0 0;line-height:1.4}@media (max-width:380px){.logo{width:96px}.title{font-size:21px}.subtitle{font-size:12px}}.gate-wrap{min-height:100dvh;justify-content:center}.gate,.gate-wrap{display:flex;align-items:center}.gate{width:100%;max-width:380px;background:var(--cream);border-radius:24px;padding:32px 24px;box-shadow:0 12px 36px rgba(0,0,0,.3);flex-direction:column;gap:12px}.gate-logo{width:170px;height:auto;margin-bottom:4px}.gate-title{margin:0;font-size:24px;color:var(--navy)}.gate-sub{margin:0 0 8px;font-size:13px;font-weight:700;color:rgba(18,58,107,.6)}.gate input{width:100%;padding:14px;border:2px solid rgba(18,58,107,.25);border-radius:12px;font-size:16px;font-family:inherit;text-align:center;background:#fff}.gate input:focus{outline:none;border-color:var(--blue)}.gate .btn{width:100%}.gate .error{width:100%;margin-bottom:0}.form{background:var(--cream);border-radius:18px;padding:16px;margin-bottom:20px;display:grid;grid-gap:12px;gap:12px}.field{display:grid;grid-gap:5px;gap:5px}.field>span{font-size:12px;font-weight:800;color:var(--navy)}.field input,.field select{width:100%;padding:12px;border:2px solid rgba(18,58,107,.25);border-radius:10px;font-size:16px;font-family:inherit;background:#fff;color:var(--ink)}.field input:focus,.field select:focus{outline:none;border-color:var(--blue)}.field-note{margin:0;font-size:12px;color:rgba(18,58,107,.75);min-height:1.5em}.form.loading .field input,.form.loading .field select{color:#999;background:#f4f1ea}.hint{text-align:center;color:rgba(255,255,255,.7);font-size:12px;margin:14px 0 0}.buttons{display:grid;grid-gap:14px;gap:14px}.btn{position:relative;border:none;border-radius:18px;padding:20px 18px;font-size:19px;font-weight:800;color:#fff;cursor:pointer;box-shadow:0 6px 0 rgba(0,0,0,.22);transition:transform .08s,box-shadow .08s,filter .15s;display:flex;align-items:center;justify-content:center;gap:10px;font-family:inherit}.btn:active:not(:disabled){transform:translateY(4px);box-shadow:0 2px 0 rgba(0,0,0,.22)}.btn:disabled{filter:grayscale(.7) brightness(.7);cursor:not-allowed}.btn-lv1{background:linear-gradient(180deg,#a3adb9,#6b7684)}.btn-lv2{background:linear-gradient(180deg,#ffa63d,#ef7d00)}.btn-lv3{background:linear-gradient(180deg,#5cc98a,#2e9e5b)}.btn-lv4{background:linear-gradient(180deg,#b07fdd,#7b3fb5)}.btn-next{background:linear-gradient(180deg,#ffa63d,#ef7d00);width:100%;max-width:280px}.btn-lv{position:absolute;left:14px;top:50%;transform:translateY(-50%);background:rgba(0,0,0,.22);border-radius:8px;padding:4px 9px;font-size:13px;font-weight:800;letter-spacing:.02em}.btn-main{flex:1 1;text-align:center}.stage{background:var(--cream);border-radius:24px;padding:24px 18px;box-shadow:0 10px 30px rgba(0,0,0,.3)}.stage-label{text-align:center;font-weight:800;color:var(--navy);margin:0 0 16px;font-size:15px}.reels{gap:12px}.reel,.reels{display:flex;justify-content:center}.reel{flex:1 1;max-width:180px;background:#fff;border:3px solid var(--navy);border-radius:16px;overflow:hidden;position:relative;aspect-ratio:3/4;align-items:center}.reel.spinning{animation:shake .18s infinite}@keyframes shake{0%,to{transform:translateY(0)}50%{transform:translateY(-3px)}}.reel.landed{animation:pop .45s cubic-bezier(.34,1.56,.64,1);border-color:var(--orange);box-shadow:0 0 0 4px rgba(255,210,63,.6)}@keyframes pop{0%{transform:scale(.8)}60%{transform:scale(1.08)}to{transform:scale(1)}}.reel img{width:100%;height:100%;object-fit:contain;padding:8px}.reel.spinning img{filter:blur(1.5px);opacity:.85}.reel-name{text-align:center;font-size:12px;font-weight:700;color:var(--navy);margin-top:8px;min-height:2.6em;line-height:1.3;word-break:break-word}.result-names{display:flex;justify-content:center;gap:12px;margin-top:0}.result-names>*{flex:1 1;max-width:180px}.actions{margin-top:24px;display:grid;grid-gap:12px;gap:12px}.btn-confirm{background:linear-gradient(180deg,#4caf50,#2e7d32)}.btn-back{background:rgba(0,0,0,.06);color:var(--navy);box-shadow:none;border:2px solid rgba(18,58,107,.25);font-size:15px;padding:14px}.redraw{display:block;margin:14px auto 0;background:none;border:none;color:rgba(18,58,107,.4);font-size:12px;text-decoration:underline;cursor:pointer;font-family:inherit;padding:6px}.redraw:hover{color:rgba(18,58,107,.75)}.redraw:disabled{opacity:.4;cursor:not-allowed}.lv-chip{display:inline-block;padding:2px 8px;border-radius:999px;font-weight:800;font-size:12px;color:var(--navy)}.lv1{background:#d9d9d9}.lv2{background:#fcd5b4}.lv3{background:#d7e4bc}.lv4{background:#b8cce4}.lv0{background:transparent;border:1px dashed rgba(18,58,107,.35)}.lv-next,.lv0{color:rgba(18,58,107,.55)}.lv-next{margin-left:8px;font-size:11px}.refresh-roster{justify-self:start;margin:2px 0 0;padding:4px 0;background:none;border:none;font-family:inherit;font-size:11px;color:rgba(18,58,107,.42);text-decoration:underline;cursor:pointer}.refresh-roster:hover{color:rgba(18,58,107,.8)}.refresh-roster:disabled{opacity:.5;cursor:not-allowed}.warn-existing{display:block;margin-top:4px;font-size:11px;font-weight:700;color:#b26a00}.done-stage{position:relative;overflow:hidden}.done{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;min-height:280px;padding:20px 0}.done h2{color:#2e7d32;font-size:26px;margin:0}.prizes{flex:1 1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px 0}.prize{color:var(--navy);font-weight:800;font-size:30px;line-height:1.25;animation:prize-in .5s cubic-bezier(.34,1.56,.64,1) both}.prize:nth-child(2){animation-delay:.12s}.prize:nth-child(3){animation-delay:.24s}@keyframes prize-in{0%{opacity:0;transform:scale(.7)}to{opacity:1;transform:scale(1)}}.grand-stage{background:linear-gradient(160deg,#fff6d8,#ffe9f2 55%,#efe4ff)}.done.grand{min-height:360px;gap:4px}.grand-lv{margin:0;font-size:13px;font-weight:800;letter-spacing:.16em;color:#7b3fb5;background:rgba(123,63,181,.1);border-radius:999px;padding:5px 16px}.grand-title{margin:10px 0 0;font-size:44px;line-height:1.1;color:#d81b60;text-shadow:0 3px 0 rgba(255,255,255,.9),0 5px 10px rgba(0,0,0,.12)}.grand-title span{display:inline-block;animation:bounce-in .6s cubic-bezier(.34,1.56,.64,1) both}.grand-title span:first-child{animation-delay:.05s}.grand-title span:nth-child(2){animation-delay:.13s}.grand-title span:nth-child(3){animation-delay:.21s}.grand-title span:nth-child(4){animation-delay:.29s}.grand-title span:nth-child(5){animation-delay:.37s}.grand-title span:nth-child(6){animation-delay:.45s}@keyframes bounce-in{0%{opacity:0;transform:translateY(-28px) scale(.5) rotate(-12deg)}to{opacity:1;transform:translateY(0) scale(1) rotate(0)}}.grand-sub{margin:6px 0 0;font-weight:800;color:var(--navy);animation:prize-in .5s cubic-bezier(.34,1.56,.64,1) .55s both}.grand-prize{margin:22px 0;padding:16px 18px;border-radius:16px;background:#fff;border:3px solid #ffd23f;box-shadow:0 6px 18px rgba(0,0,0,.1);display:grid;grid-gap:8px;gap:8px;animation:prize-in .6s cubic-bezier(.34,1.56,.64,1) .7s both}.grand-prize-label{font-size:11px;font-weight:800;letter-spacing:.14em;color:#b26a00}.grand-prize strong{font-size:20px;line-height:1.5;color:var(--navy)}.confetti{position:absolute;inset:0;pointer-events:none;z-index:0}.confetti i{position:absolute;top:-20px;opacity:0;animation-name:confetti-fall;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes confetti-fall{0%{opacity:1;transform:translate3d(0,-20px,0) rotate(0deg)}to{opacity:0;transform:translate3d(var(--drift),340px,0) rotate(2turn)}}@media (prefers-reduced-motion:reduce){.confetti{display:none}}.admin-link{display:block;text-align:center;margin-top:32px;color:rgba(255,255,255,.28);font-size:11px;text-decoration:none}.admin-link:hover{color:rgba(255,255,255,.7)}.error{background:#ffe0e0;border:2px solid #e03b2f;color:#a11;border-radius:12px;padding:12px 14px;font-size:14px;font-weight:700;margin-bottom:16px;text-align:center}.sheet-error{text-align:left}.sheet-error code{display:block;margin-top:8px;padding:8px;background:rgba(0,0,0,.06);border-radius:6px;font-size:11px;font-weight:400;word-break:break-all;line-height:1.5}.admin{background:#fff;border-radius:20px;padding:24px 20px}.admin h1{font-size:20px;margin:0 0 20px;color:var(--navy)}.admin h3{font-size:15px;margin:24px 0 10px;padding-bottom:6px;border-bottom:2px solid var(--yellow);color:var(--navy)}.row{display:flex;align-items:center;gap:10px;padding:8px 0;border-bottom:1px solid #eee}.row img{width:34px;height:46px;object-fit:contain;flex-shrink:0}.row .name{flex:1 1;font-size:13px;font-weight:600;line-height:1.3}.row.zero .name{color:#aaa;text-decoration:line-through}.stepper{display:flex;align-items:center;gap:6px;flex-shrink:0}.stepper button{width:32px;height:32px;border-radius:8px;border:1px solid #ccc;background:#f7f7f7;font-size:17px;font-weight:800;cursor:pointer;line-height:1;color:var(--navy)}.stepper button:active{background:#e5e5e5}.stepper input{width:56px;height:32px;text-align:center;border:1px solid #ccc;border-radius:8px;font-size:15px;font-weight:700;font-family:inherit}.login{display:flex;gap:8px}.login input{flex:1 1;padding:12px;border:2px solid #ccc;border-radius:10px;font-size:16px;font-family:inherit}.login button{padding:12px 20px;border:none;border-radius:10px;background:var(--navy);color:#fff;font-weight:700;cursor:pointer;font-family:inherit}.back-link{display:inline-block;margin-top:20px;color:var(--navy);font-size:13px}.admin-note{font-size:12px;color:#777;margin:0 0 8px;line-height:1.6}.row.changed{background:#fff8e1;box-shadow:inset 3px 0 0 var(--orange)}.row .name{display:flex;flex-direction:column;gap:2px}.was{font-style:normal;font-size:11px;font-weight:600;color:#b26a00}.stepper input.bad{border-color:#e03b2f;background:#ffe9e7}.savebar{position:-webkit-sticky;position:sticky;bottom:0;margin:16px -16px 0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:rgba(255,255,255,.96);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-top:2px solid #e2e2e2;display:flex;align-items:center;justify-content:space-between;gap:12px}.savebar.active{border-top-color:var(--orange)}.savebar-status{font-size:13px;font-weight:700;color:#777}.savebar-status .ok{color:#2e7d32}.savebar-status .ng{color:#e03b2f}.savebar-actions{display:flex;gap:8px;flex-shrink:0}.btn-discard,.btn-save{padding:12px 22px;border-radius:10px;font-size:15px;font-weight:800;font-family:inherit;cursor:pointer;border:none}.btn-save{background:var(--orange);color:#fff;box-shadow:0 3px 0 #c96a00}.btn-save:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 #c96a00}.btn-discard{background:#fff;color:#666;border:1px solid #ccc}.btn-discard:disabled,.btn-save:disabled{opacity:.4;cursor:not-allowed;box-shadow:none}