@import "https://fonts.googleapis.com/css2?family=Zen+Maru+Gothic:wght@400;500;700&family=Shippori+Mincho:wght@500;700;800&family=Noto+Sans+JP:wght@400;600;800&display=swap";:root{--mist-100:#f6f2fb;--mist-200:#ece3f6;--mist-300:#dccdec;--spirit-cyan:#35e6e0;--spirit-cyan-deep:#0fb8c8;--blossom:#ff5fb0;--blossom-deep:#e01f88;--blossom-soft:#ffc2e2;--lacquer:#c81e33;--lacquer-bright:#ec3350;--lacquer-deep:#97121f;--gold:#f0c06a;--gold-soft:#ffe0a8;--ink:#2a1740;--ink-dim:#6a5786;--ink-soft:#8a78a4;--paper:#fff;--font-display:"Shippori Mincho", "Noto Sans JP", serif;--font-ui:"Zen Maru Gothic", "Noto Sans JP", system-ui, sans-serif;--font-jp:"Noto Sans JP", "Zen Maru Gothic", sans-serif;--title-color:#7a1f52;--accent:#b06a1e;--accent-strong:#b06a1e;--btn-primary-grad:linear-gradient(180deg, #a9743f, #8a5a2c, #6f461f);--btn-primary-border:#462c148c;--reel-frame-grad:linear-gradient(180deg, #e9d3ac, #d8bd93);--reel-frame-border:#966e4680;--winner-name-color:#7a1f52;--mist-veil:#fffdff80;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;font-family:var(--font-ui);color:var(--ink)}:root[data-theme=poster]{--title-color:#b81c1c;--accent:#c8860f;--accent-strong:#b81c1c;--btn-primary-grad:linear-gradient(180deg, #e4342b, #c21f1f, #8a1414);--btn-primary-border:#5a0c0c99;--reel-frame-grad:linear-gradient(180deg, #f0c040, #d89a1e);--reel-frame-border:#965a1499;--winner-name-color:#b81c1c;--mist-veil:#fffaeb8c}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background-color:#0000;background-image:-webkit-image-set(url(./spirit-garden-B8cHlbw-.webp) 1x type("image/webp")),-webkit-linear-gradient(285deg,#efe6fb 0%,#e6ecfb 45%,#f3e8f7 100%);background-image:image-set("./spirit-garden-B8cHlbw-.webp" 1x type("image/webp")),linear-gradient(165deg,#efe6fb 0%,#e6ecfb 45%,#f3e8f7 100%);background-position:50%,0 0;background-repeat:no-repeat,repeat;background-size:cover,auto;background-attachment:fixed;background-origin:padding-box,padding-box;background-clip:border-box,border-box;min-height:100%;overflow-x:hidden}:root[data-theme=poster] body{background-color:#0000;background-image:radial-gradient(120% 80% at 50% -10%,#ffffff80,#0000 55%),repeating-conic-gradient(from 90deg at 50% 32%,#ffffff24 0deg 6deg,#fff0 6deg 12deg),linear-gradient(170deg,#fbe7bf 0%,#f6d79a 40%,#e9b64e 100%);background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,repeat;background-size:auto,auto,auto;background-attachment:fixed;background-origin:padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box}:root[data-theme=poster] body:after{content:"";pointer-events:none;z-index:0;position:fixed;inset:0;box-shadow:inset 0 0 0 14px #e4342b}body:before{content:"";pointer-events:none;z-index:0;background:radial-gradient(58% 46% at 50% 42%, var(--mist-veil), #fffdff47 55%, transparent 78%);position:fixed;inset:0}button{font-family:inherit}::selection{background:var(--blossom);color:var(--paper)}.confetti-canvas{z-index:40;pointer-events:none;width:100vw;height:100vh;position:fixed;inset:0}.app{z-index:1;flex-direction:column;justify-content:center;align-items:center;gap:clamp(1.5rem,4vh,3rem);min-height:100dvh;padding:clamp(1.5rem,4vh,3rem) 1.25rem;display:flex;position:relative}.app__header{z-index:20;text-align:center;background:radial-gradient(60% 90% at 50% 45%,#fffdf8b3,#0000 75%);border-radius:40px;padding:.5rem 2rem;position:relative}.app__eyebrow{font-family:var(--font-jp);letter-spacing:.5em;color:var(--accent);text-indent:.5em;margin:0 0 .4rem;font-size:.85rem}.app__title{font-family:var(--font-display);color:var(--title-color);text-shadow:0 1px #ffffffb3,0 8px 26px #fff9;margin:0;font-size:clamp(2.4rem,7vw,4.5rem);font-weight:800;line-height:1}.app__subtitle{color:#6a4a5e;margin:.75rem 0 0;font-size:clamp(.95rem,2vw,1.15rem)}.app__main{justify-content:center;width:100%;max-width:960px;display:flex}.app__main--with-winners{max-width:1600px}.app:has(.app__main--with-winners){justify-content:flex-start;height:100dvh}.app:has(.app__main--with-winners) .app__main{flex:auto;min-height:0}.app:has(.app__main--with-winners) .stage-layout{height:100%}.stage-layout{justify-content:center;align-items:start;gap:clamp(1rem,2.5vw,2rem);width:100%;display:flex}.stage-layout .stage{flex:0 auto}.file-drop{flex-direction:column;align-items:center;gap:1rem;width:min(560px,100%);display:flex}.dropzone{cursor:pointer;width:100%;color:var(--ink);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:radial-gradient(130% 100% at 50% 0,#fffdf7f5,#fbf2e2e6 70%),linear-gradient(#fdf6eaeb,#f6ead3e6);border:2px dashed #b46e3c80;border-radius:22px;flex-direction:column;align-items:center;gap:.6rem;padding:clamp(2rem,6vw,3.5rem);transition:transform .2s,border-color .2s,box-shadow .2s;display:flex;box-shadow:inset 0 1px #fffcf5e6,0 20px 44px -26px #5a3c2880}.dropzone:hover:not(:disabled),.dropzone--active{border-color:var(--blossom-deep);transform:translateY(-2px);box-shadow:inset 0 1px #fffcf5f2,0 26px 54px -26px #5a3c288c}.dropzone:disabled{cursor:progress;opacity:.8}.dropzone__glyph{font-family:var(--font-jp);color:#c93277;text-shadow:0 1px #fffcf5b3;font-size:clamp(3rem,9vw,4.5rem);line-height:1}.dropzone__title{font-family:var(--font-display);font-size:clamp(1.1rem,3vw,1.5rem);font-weight:700}.dropzone__hint{color:#8a6a48;font-size:.9rem}.file-drop__error{color:var(--lacquer-deep);background:#ff5fb024;border:1px solid #ec335080;border-radius:12px;margin:0;padding:.6rem 1rem;font-size:.9rem}.file-drop__sample{color:#8a6a48;border-bottom:1px dashed #b46e3c80;padding-bottom:1px;font-size:.88rem;text-decoration:none;transition:color .2s,border-color .2s}.file-drop__sample:hover{color:var(--blossom-deep);border-color:var(--blossom-deep)}.stage{flex-direction:column;align-items:center;gap:1.75rem;width:100%;display:flex}.stage__controls{flex-direction:column;align-items:stretch;gap:.85rem;width:min(760px,100%);display:flex}.speed{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);color:#6a4a2e;background:#fffbf4b8;border:1px solid #966e4638;border-radius:12px;align-items:center;gap:.7rem;padding:.5rem .85rem;font-size:.85rem;display:flex}.speed__label{flex:none;font-weight:700}.speed__range{cursor:pointer;appearance:none;background:0 0;flex:auto;height:22px;margin:0}.speed__range::-webkit-slider-runnable-track{background:linear-gradient(90deg,#b98a4e,#d8bd93);border:1px solid #78522e66;border-radius:999px;height:6px}.speed__range::-moz-range-track{background:linear-gradient(90deg,#b98a4e,#d8bd93);border:1px solid #78522e66;border-radius:999px;height:6px}.speed__range::-webkit-slider-thumb{appearance:none;background:radial-gradient(circle at 35% 30%,#fdf3e2,#a9743f 75%);border:1px solid #462c148c;border-radius:50%;width:20px;height:20px;margin-top:-7px;box-shadow:0 2px 5px -2px #462c1499}.speed__range::-moz-range-thumb{background:radial-gradient(circle at 35% 30%,#fdf3e2,#a9743f 75%);border:1px solid #462c148c;border-radius:50%;width:20px;height:20px;box-shadow:0 2px 5px -2px #462c1499}.speed__range:disabled{opacity:.5;cursor:not-allowed}.speed__value{text-align:right;font-variant-numeric:tabular-nums;color:#4a3016;flex:none;min-width:2.6rem;font-weight:700}.order-toggle{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);cursor:pointer;color:#6a4a2e;background:#fffbf4b8;border:1px solid #966e4638;border-radius:12px;align-items:center;gap:.6rem;padding:.5rem .85rem;display:flex}.order-toggle__input{width:1.15rem;height:1.15rem;accent-color:var(--accent-strong);cursor:pointer;flex:none}.order-toggle__input:disabled{cursor:not-allowed;opacity:.5}.order-toggle__input:disabled+.order-toggle__text{opacity:.55}.order-toggle__text{flex-direction:column;font-size:.85rem;font-weight:700;line-height:1.2;display:flex}.order-toggle__hint{color:#8a6a48;font-size:.75rem;font-weight:400}.stage__controls-secondary{flex-wrap:wrap;justify-content:center;gap:.6rem;display:flex}.stage__meta{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.chip{color:#6a4a2e;background:#fffbf4c7;border:1px solid #966e4647;border-radius:999px;padding:.35rem .8rem;font-size:.82rem;box-shadow:0 2px 8px -6px #5a3c2880}.btn{cursor:pointer;font-size:1.05rem;font-weight:700;font-family:var(--font-ui);border:none;border-radius:14px;padding:.85rem 1.6rem;transition:transform .15s,box-shadow .2s,filter .2s}.btn:disabled{cursor:not-allowed;opacity:.55}.btn--hero{width:100%;font-family:var(--font-display);letter-spacing:.02em;border-radius:18px;padding:clamp(1rem,2.2vw,1.35rem) 1.6rem;font-size:clamp(1.15rem,2.6vw,1.6rem)}.btn--sm{border-radius:11px;padding:.5rem 1rem;font-size:.9rem;font-weight:600}.btn--primary{color:#fdf3e2;background:var(--btn-primary-grad);border:1px solid var(--btn-primary-border);text-shadow:0 1px 1px #3c240e66;box-shadow:inset 0 1px #fff0d866,inset 0 -2px 4px #3c240e4d,0 10px 22px -12px #462c1499}.btn--primary:hover:not(:disabled){filter:brightness(1.05);transform:translateY(-2px);box-shadow:inset 0 1px #fff0d880,inset 0 -2px 4px #3c240e4d,0 16px 30px -12px #462c14b3}.btn--ghost{color:#6a4a2e;background:#fffbf4b8;border:1px solid #966e4666}.btn--ghost:hover:not(:disabled){color:#4a3016;background:#fffbf4e6;border-color:#78522e99}.reel{width:min(760px,100%)}.reel__frame{background:repeating-linear-gradient(92deg,#96693c17 0 1px,#0000 1px 9px),linear-gradient(#f4ddb8 0%,#e7c79b 48%,#dcb888 100%);border:1px solid #78522e59;border-radius:22px;padding:clamp(14px,2.4vw,22px);position:relative;overflow:hidden;box-shadow:inset 0 2px 2px #fff7e8d9,inset 0 -3px 6px #78522e38,0 22px 46px -26px #5a3c288c}.reel__frame:before{content:"";pointer-events:none;border:1px solid #78522e40;border-radius:14px;position:absolute;inset:clamp(9px,1.6vw,15px);box-shadow:0 1px #fffaf099}.reel__columns{background:radial-gradient(130% 100% at 50% 0,#fffdf7,#fbf2e2 70%),linear-gradient(#fdf6ea,#f6ead3);border-radius:13px;grid-auto-columns:1fr;grid-auto-flow:column;gap:6px;height:clamp(190px,34vh,300px);display:grid;position:relative;overflow:hidden;box-shadow:inset 0 0 26px #966e4638}.reel-col{background:linear-gradient(#ffffff80,#0000 40%);border-left:1px solid #ffffff80;border-right:1px solid #966e4624;justify-content:center;align-items:center;display:flex;position:relative;overflow:hidden}.reel-col__strip{will-change:transform;flex-direction:column;animation-name:reel-scroll;animation-timing-function:linear;animation-iteration-count:infinite;display:flex}.reel-col__rest{justify-content:center;align-items:center;animation:.5s cubic-bezier(.16,1.4,.4,1) reel-settle;display:flex}.reel-col__glyph{font-family:var(--font-jp);text-align:center;color:#9a2a63;text-shadow:0 1px #fffcf599;-webkit-user-select:none;user-select:none;font-size:clamp(2.4rem,7vw,4rem);font-weight:800;line-height:1.4}@keyframes reel-scroll{0%{transform:translateY(0)}to{transform:translateY(-50%)}}@keyframes reel-settle{0%{filter:blur(3px);opacity:.2;transform:translateY(-40px)}to{filter:blur();opacity:1;transform:translateY(0)}}.reel__payline{opacity:.8;pointer-events:none;background:linear-gradient(90deg,#0000,#9a2a6380,#0000);height:1px;position:absolute;top:50%;left:22px;right:22px;transform:translateY(-50%)}.reel__winner{opacity:0;transform-origin:50%;pointer-events:none;background:radial-gradient(130% 90% at 50% 0,#fffdf7,#fbf1df 72%),linear-gradient(#fdf6ea,#f6ead3);border-radius:16px;justify-content:center;align-items:center;transition:opacity .5s,transform .6s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;inset:18px;transform:rotateX(90deg)scale(.9)}.reel__winner--shown{opacity:1;transform:rotateX(0)scale(1)}.reel__winner-card{text-align:center;padding:1rem 2rem;animation:.7s cubic-bezier(.16,1,.3,1) winner-pop}.reel__winner-kicker,.reel__winner-sub{font-family:var(--font-jp);color:#b06a1e;letter-spacing:.25em;font-size:clamp(.75rem,2vw,1rem);display:block}.reel__winner-sub{color:var(--blossom-deep);letter-spacing:.15em;margin-top:.75rem}.reel__winner-name{font-family:var(--font-display);color:var(--winner-name-color);text-shadow:0 1px #fffcf5b3;margin:.5rem 0;font-size:clamp(2rem,8vw,4rem);font-weight:800;line-height:1.05;display:block}@keyframes winner-pop{0%{opacity:0;transform:scale(.6)}60%{transform:scale(1.06)}to{opacity:1;transform:scale(1)}}.reel__winner-prize{font-family:var(--font-display);color:var(--accent);margin:.1rem 0 0;font-size:clamp(1.1rem,3.4vw,1.7rem);font-weight:700;line-height:1.15;display:block}.reel__prize{opacity:0;pointer-events:none;background:radial-gradient(130% 90% at 50% 0,#fffdf7,#fbf1df 72%),linear-gradient(#fdf6ea,#f6ead3);border-radius:16px;justify-content:center;align-items:center;transition:opacity .45s,transform .5s cubic-bezier(.16,1,.3,1);display:flex;position:absolute;inset:18px;transform:scale(.94)}.reel__prize--shown{opacity:1;transform:scale(1)}.reel__prize-card{text-align:center;padding:1rem 2rem}.reel__prize-kicker,.reel__prize-sub{font-family:var(--font-jp);color:var(--accent);letter-spacing:.25em;font-size:clamp(.75rem,2vw,1rem);display:block}.reel__prize-sub{letter-spacing:.15em;color:var(--blossom-deep);margin-top:.75rem}.reel__prize-name{font-family:var(--font-display);color:var(--title-color);text-shadow:0 1px #fffcf5b3;margin:.6rem 0;font-size:clamp(1.8rem,6.5vw,3.4rem);font-weight:800;line-height:1.08;display:block}.prizes{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffbf4d1;border:1px solid #966e4647;border-radius:18px;flex-direction:column;flex:0 0 clamp(260px,22vw,340px);align-self:stretch;min-height:0;max-height:100%;padding:1.1rem 1.1rem .6rem;display:flex;box-shadow:0 18px 44px -30px #5a3c2880}.prizes__title{font-family:var(--font-display);color:var(--title-color);flex:none;align-items:center;gap:.5rem;margin:0 0 .7rem;font-size:1.2rem;display:flex}.prizes__count{font-family:var(--font-ui);color:#6a4a2e;background:#b4784629;border:1px solid #966e4647;border-radius:999px;margin-left:auto;padding:.1rem .5rem;font-size:.75rem;font-weight:700}.prizes__list{scrollbar-width:thin;scrollbar-color:#966e4680 transparent;flex-direction:column;gap:.35rem;margin:0;padding:0 .35rem .5rem 0;list-style:none;display:flex;overflow-y:auto}.prizes__list::-webkit-scrollbar{width:8px}.prizes__list::-webkit-scrollbar-thumb{background:#966e4666;border-radius:999px}.prizes__item{background:#b478461a;border-radius:10px;align-items:center;gap:.6rem;padding:.5rem .6rem;transition:background .25s,opacity .25s;display:flex}.prizes__item--won{opacity:.5}.prizes__item--won .prizes__name{-webkit-text-decoration:line-through #5a3c2866;text-decoration:line-through #5a3c2866}.prizes__item--next{background:#e6aa4647;box-shadow:inset 0 0 0 1px #b4782880}.prizes__rank{color:#fff8ec;background:linear-gradient(160deg,#b98a4e,#8a5a2c);border-radius:999px;flex:none;place-items:center;width:1.7rem;height:1.7rem;font-size:.8rem;font-weight:700;display:grid}.prizes__item--next .prizes__rank{background:linear-gradient(160deg,#e6a83c,#c8801a)}.prizes__name{color:#4a2038;font-size:.92rem;font-weight:600;line-height:1.2}.winners{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffbf4d1;border:1px solid #966e4647;border-radius:18px;flex-direction:column;flex:0 0 clamp(280px,24vw,360px);align-self:stretch;min-height:0;max-height:100%;padding:1.1rem 1.1rem .6rem;display:flex;box-shadow:0 18px 44px -30px #5a3c2880}.winners__title{font-family:var(--font-display);color:var(--title-color);flex:none;align-items:center;gap:.5rem;margin:0 0 .7rem;font-size:1.2rem;display:flex}.winners__count{font-family:var(--font-ui);color:#6a4a2e;background:#b4784629;border:1px solid #966e4647;border-radius:999px;padding:.1rem .5rem;font-size:.75rem;font-weight:700}.winners__list{scrollbar-width:thin;scrollbar-color:#966e4680 transparent;flex-direction:column;gap:.35rem;margin:0;padding:0 .35rem .5rem 0;list-style:none;display:flex;overflow-y:auto}.winners__list::-webkit-scrollbar{width:8px}.winners__list::-webkit-scrollbar-thumb{background:#966e4666;border-radius:999px}.winners__item{background:#b478461a;border-radius:10px;align-items:center;gap:.6rem;padding:.45rem .55rem;display:flex}.winners__rank{color:#fff8ec;background:linear-gradient(160deg,#b98a4e,#8a5a2c);border-radius:999px;flex:none;place-items:center;width:1.7rem;height:1.7rem;font-size:.8rem;font-weight:700;display:grid}.winners__body{flex-direction:column;gap:.1rem;min-width:0;display:flex}.winners__name{color:#4a2038;font-size:.95rem;font-weight:600}.winners__prize{color:#8a5a2c;font-size:.78rem;line-height:1.2}@media (width<=1100px){.stage-layout{flex-direction:column;align-items:center}.stage{order:-1}.prizes,.winners{flex:none;align-self:auto;width:min(560px,100%);max-height:38vh}}.sakura{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.sakura__petal{opacity:.55;filter:drop-shadow(0 1px 1px #963c6e2e);will-change:transform;background:radial-gradient(circle at 32% 30%,#ffe0ee,#f79ac6 78%);border-radius:100% 0;animation-name:petal-fall;animation-timing-function:linear;animation-iteration-count:infinite;position:absolute;top:-6vh}@keyframes petal-fall{0%{transform:translate3d(0, -10vh, 0) rotate(var(--rot));opacity:0}10%{opacity:.55}90%{opacity:.55}to{transform:translate3d(var(--drift), 110vh, 0) rotate(calc(var(--rot) + 320deg));opacity:0}}@media (prefers-reduced-motion:reduce){.sakura,.reel-col__strip{animation:none!important}}.theme-switch{z-index:30;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fffbf4cc;border:1px solid #966e464d;border-radius:999px;gap:.25rem;padding:.25rem;display:flex;position:fixed;top:.9rem;right:.9rem;box-shadow:0 10px 26px -18px #5a3c2899}.theme-switch__btn{cursor:pointer;color:#6a4a2e;background:0 0;border:none;border-radius:999px;padding:.4rem .8rem;font-size:.8rem;font-weight:700;transition:background .2s,color .2s}.theme-switch__btn:hover{background:#b4784624}.theme-switch__btn--active{color:#fff8ec;background:var(--btn-primary-grad)}:root[data-theme=poster] .reel__frame{background:var(--reel-frame-grad);border:1px solid var(--reel-frame-border)}:root[data-theme=poster] .reel__frame:before{border-color:#b41c1c80}:root[data-theme=poster] .reel__winner,:root[data-theme=poster] .reel__prize{background:radial-gradient(130% 90% at 50% 0,#fffdf5,#fdf1d6 72%),linear-gradient(#fdf6e6,#f8ecc9)}:root[data-theme=poster] .winners,:root[data-theme=poster] .prizes{border-color:#b4782866}:root[data-theme=poster] .winners__rank,:root[data-theme=poster] .prizes__rank{background:linear-gradient(160deg,#e4342b,#a01818)}:root[data-theme=poster] .prizes__item--next{background:#e4342b29;box-shadow:inset 0 0 0 1px #b41c1c80}:root[data-theme=poster] .prizes__item--next .prizes__rank{background:linear-gradient(160deg,#f0c040,#d89a1e)}
