@font-face{font-family:Shippori Mincho;font-style:normal;font-display:swap;font-weight:600;src:url(/assets/shippori-mincho-latin-600-normal-6Q85HP94.woff2)format("woff2"),url(/assets/shippori-mincho-latin-600-normal-BtWD08KL.woff)format("woff")}@font-face{font-family:Shippori Mincho;font-style:normal;font-display:swap;font-weight:800;src:url(/assets/shippori-mincho-latin-800-normal-DrzYBqYW.woff2)format("woff2"),url(/assets/shippori-mincho-latin-800-normal-B2RKu3mb.woff)format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:400;src:url(/assets/nunito-latin-400-normal-r8SDr6Up.woff2)format("woff2"),url(/assets/nunito-latin-400-normal-DKg4f3fz.woff)format("woff")}@font-face{font-family:Nunito;font-style:normal;font-display:swap;font-weight:700;src:url(/assets/nunito-latin-700-normal-Dort48En.woff2)format("woff2"),url(/assets/nunito-latin-700-normal-OcDqTBcA.woff)format("woff")}:root{--paper:#f6eedf;--paper-2:#efe4cf;--ink:#2f2a24;--ink-soft:#6d6255;--jade:#3f8f6a;--jade-dark:#2c6b4e;--jade-light:#d5e8db;--sakura:#e2849d;--gold:#c9963a;--vermilion:#c2452f;--card:#fffbf3db;--line:#503c1e24;--shadow:0 10px 30px #3c281426;--radius:18px;--serif:"Shippori Mincho", "Hiragino Mincho ProN", "Yu Mincho", Georgia, serif;--sans:"Nunito", system-ui, -apple-system, "Segoe UI", sans-serif;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{overscroll-behavior:none;height:100%;margin:0;overflow:hidden}body{background:var(--paper);color:var(--ink);font-family:var(--sans);-webkit-user-select:none;user-select:none;touch-action:manipulation;font-size:16px}button,input,select{font:inherit;color:inherit}button{cursor:pointer}.scenery{z-index:0;transition:opacity .6s,filter .6s;position:fixed;inset:0}.scenery>svg:first-child{width:100%;height:100%}.scenery .branch{width:min(48vw,360px);position:absolute;top:-10px;right:-10px}body[data-screen=play] .scenery,body[data-screen=r] .scenery{opacity:.55;filter:saturate(.7)}body[data-screen=play] .scenery .branch,body[data-screen=r] .scenery .branch{opacity:.35}#petals{pointer-events:none;z-index:50;width:100%;height:100%;position:fixed;inset:0}#app{z-index:1;height:100dvh;position:relative}.screen{height:100%;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);flex-direction:column;animation:.35s ease-out fade-in;display:flex}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}}.btn{border:1px solid var(--line);background:var(--card);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);letter-spacing:.01em;border-radius:999px;justify-content:center;align-items:center;gap:10px;min-height:48px;padding:10px 22px;font-weight:700;transition:transform .12s,box-shadow .12s,background .2s;display:inline-flex;box-shadow:0 2px #503c1e1f,0 6px 18px #3c281414}.btn:active{transform:translateY(2px);box-shadow:0 0 #503c1e1f,0 2px 8px #3c281414}.btn.primary{background:linear-gradient(180deg, #4c9f78, var(--jade-dark));color:#fffdf6;border-color:#0000;box-shadow:0 3px #1f4e38,0 8px 22px #2c6b4e59}.btn.primary:active{box-shadow:0 1px #1f4e38,0 3px 10px #2c6b4e4d}.btn.ghost{box-shadow:none;color:var(--ink-soft);background:0 0;border-color:#0000}.btn.big{width:100%;min-height:58px;font-size:1.1rem}.btn.small{min-height:44px;padding:8px 18px}.btn .ico,.icon-btn .ico{width:22px;height:22px;display:inline-flex}.btn .ico svg,.icon-btn .ico svg{width:100%;height:100%}.badge{background:var(--paper-2);color:var(--ink-soft);border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:700}.corner-btn{top:calc(env(safe-area-inset-top) + 12px);right:calc(env(safe-area-inset-right) + 12px);border:1px solid var(--line);background:var(--card);z-index:5;border-radius:50%;place-items:center;width:46px;height:46px;padding:11px;display:grid;position:absolute}.corner-btn.static{flex:none;position:static}.corner-btn svg{width:100%;height:100%}.home{justify-content:center;align-items:center;gap:clamp(20px,5vh,48px);padding-inline:20px}.title{text-align:center}.title h1{font-family:var(--serif);letter-spacing:.04em;color:var(--ink);margin:0;font-size:clamp(2.8rem,12vw,4.6rem);font-weight:800}.subtitle{font-family:var(--serif);color:var(--jade-dark);letter-spacing:.3em;text-transform:uppercase;margin:4px 0 0;font-size:1.15rem}.seal{background:var(--vermilion);color:#fff4ec;width:64px;height:64px;font-family:var(--serif);writing-mode:vertical-rl;border-radius:12px;place-items:center;margin-bottom:10px;font-size:1.45rem;line-height:1;display:inline-grid;transform:rotate(-4deg);box-shadow:inset 0 0 0 3px #fff0e659,0 6px 16px #c2452f4d}.menu{flex-direction:column;gap:14px;width:min(100%,360px);display:flex}.join-row{gap:8px;margin-top:8px;display:flex}.text-input,.select{border:1px solid var(--line);-webkit-user-select:text;user-select:text;background:#ffffffd9;border-radius:14px;width:100%;min-height:48px;padding:10px 16px;font-size:1rem}.code-input{text-transform:uppercase;letter-spacing:.2em;text-align:center}.text-input:focus,.select:focus{outline:2px solid var(--jade);outline-offset:1px}.bar{align-items:center;gap:12px;padding:12px 14px 8px;display:flex}.bar h2{font-family:var(--serif);white-space:nowrap;text-overflow:ellipsis;flex:1;margin:0;font-size:1.25rem;font-weight:800;overflow:hidden}.stats{gap:8px;display:flex}.stat{font-variant-numeric:tabular-nums;background:var(--card);border:1px solid var(--line);white-space:nowrap;border-radius:999px;padding:6px 12px;font-size:.9rem;font-weight:700}.scroll{-webkit-overflow-scrolling:touch;flex:1;padding:4px 14px 28px;overflow-y:auto}.tier h3{font-family:var(--serif);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:10px;margin:18px 4px 10px;font-size:1rem;font-weight:800;display:flex}.tier h3:after{content:"";background:var(--line);flex:1;height:1px}.level-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:12px;display:grid}.level-grid.compact{grid-template-columns:repeat(auto-fill,minmax(110px,1fr));max-height:60vh;padding:2px;overflow-y:auto}.level-card{border-radius:var(--radius);border:1px solid var(--line);background:var(--card);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);flex-direction:column;align-items:center;gap:6px;padding:14px 10px 12px;transition:transform .15s;display:flex;position:relative;overflow:hidden;box-shadow:0 2px #503c1e14,0 8px 20px #3c281412}.level-card:before{content:"";background:var(--tier-color);height:4px;position:absolute;inset:0 0 auto}.level-card.tier0{--tier-color:#8cc49a}.level-card.tier1{--tier-color:#e2b65a}.level-card.tier2{--tier-color:#e08a6a}.level-card.tier3{--tier-color:#9c6bb8}.level-card:active{transform:scale(.97)}.level-card.locked{opacity:.55}.level-card.locked .preview{filter:grayscale()}.level-card .name{font-family:var(--serif);font-size:1.05rem;font-weight:800}.level-card .meta{color:var(--ink-soft);font-size:.8rem}.level-card .lock{width:20px;height:20px;color:var(--ink-soft)}.preview{width:100%;height:64px}.compact .preview{height:44px}.pv{stroke:#28463273;stroke-width:.4px}.pv.z0{fill:#e7dcc4}.pv.z1{fill:#efe6d1}.pv.z2{fill:#f5eedf}.pv.z3{fill:#faf6ec}.pv.z4{fill:#fff}.stars{gap:2px;display:inline-flex}.stars span{color:#d8cdb8;width:18px;height:18px}.stars span.on{color:var(--gold)}.stars svg{width:100%;height:100%}.win .stars span{width:40px;height:40px;animation:.5s backwards pop}.win .stars span:nth-child(2){animation-delay:.15s}.win .stars span:nth-child(3){animation-delay:.3s}@keyframes pop{0%{transform:scale(0)rotate(-30deg)}70%{transform:scale(1.25)}}.game-bar{padding-bottom:4px}.players{flex-wrap:wrap;gap:6px;padding:0 14px 4px;display:flex}.chip{background:var(--card);border:1px solid var(--line);border-radius:999px;align-items:center;gap:6px;padding:3px 10px 3px 6px;font-size:.85rem;font-weight:700;display:inline-flex}.chip i{background:var(--pc);border-radius:50%;width:12px;height:12px}.chip.code{background:var(--jade-light);color:var(--jade-dark);letter-spacing:.06em;padding-left:10px}.chip.me{border-color:var(--pc)}.board-area{background:radial-gradient(at 50% 40%,#ffffff59,#0000 70%),linear-gradient(160deg,#dfe7d3,#c8d5bf);border-radius:22px;flex:1;min-height:0;margin:4px 10px;position:relative;overflow:hidden;box-shadow:inset 0 2px 12px #283c1e2e,0 1px #fff9}.board-host{touch-action:none;position:absolute;inset:0;overflow:hidden}.board{transform-origin:0 0;position:absolute;top:0;left:0}.tile{background:linear-gradient(150deg, var(--t1) 0%, var(--t2) 60%, var(--t3) 100%);width:60px;height:80px;box-shadow:inset 0 0 0 1px #ffffffb3, inset -1px -1px 0 #96825a40, 1px 1px 0 #e3d8bf, 2px 2px 0 #d6c8a8, 3px 3px 0 #c9b893, 4px 4px 0 #4f9a76, 5px 5px 0 #3f8a67, 6px 6px 0 #2f7354, 8px 10px var(--blur) rgba(30, 45, 25, var(--sh));cursor:pointer;border-radius:8px;transition:transform .15s ease-out,background .2s;position:absolute}.tile.z0{--t1:#ebe2cd;--t2:#ddd0b3;--t3:#cdbd9b;--blur:8px;--sh:.3}.tile.z1{--t1:#f6efe0;--t2:#ebe1ca;--t3:#ddcfb1;--blur:14px;--sh:.4}.tile.z2{--t1:#fcf8ee;--t2:#f3ecdb;--t3:#e8ddc4;--blur:14px;--sh:.42}.tile.z3{--t1:#fffdf7;--t2:#f7f1e3;--t3:#ede3cd;--blur:16px;--sh:.45}.tile.z4{--t1:#fff;--t2:#fbf7ee;--t3:#f1e9d6;--blur:18px;--sh:.48}.tile img{pointer-events:none;width:calc(100% - 12px);height:calc(100% - 13px);transition:opacity .25s;position:absolute;inset:6px 6px 7px}.tile:after{content:"";pointer-events:none;opacity:0;border-radius:8px;transition:opacity .15s;position:absolute;inset:0}.tile.sel{background:linear-gradient(150deg,#fbfff6 0%,#e6f4e7 60%,#d3eadb 100%);transform:translate(-1px,-3px)}.tile.sel:after{opacity:1;box-shadow:inset 0 0 0 3px var(--jade), 0 0 0 2px #3f8f6a59}.tile.hint:after{box-shadow:inset 0 0 0 3px var(--gold), 0 0 16px 4px #e9b446b3;animation:1.1s ease-in-out infinite hint-pulse}@keyframes hint-pulse{0%,to{opacity:.35}50%{opacity:1}}.tile.remote:before{content:"";border:3px dashed var(--pc);pointer-events:none;border-radius:10px;position:absolute;inset:-3px}.board.hl .tile.blocked{background:linear-gradient(150deg,#ece6d8 0%,#ddd5c2 100%)}.board.hl .tile.blocked img{opacity:.5}.tile.gone{opacity:0;pointer-events:none;transition:transform .4s ease-in,opacity .4s ease-in;transform:translateY(-26px)scale(1.08)rotate(-3deg)}.tile.shake{animation:.32s shake}@keyframes shake{20%,60%{transform:translate(-4px)}40%,80%{transform:translate(4px)}}.tile.drop{animation:.55s cubic-bezier(.2,.9,.3,1.2) backwards drop}@keyframes drop{0%{opacity:0;transform:translateY(-60px)scale(1.05)}}.tile.flip{animation:.5s ease-in-out backwards flip}@keyframes flip{0%{transform:scaleX(1)}50%{transform:scaleX(.05)}}.toolbar{padding:6px 10px calc(env(safe-area-inset-bottom) + 10px);justify-content:center;gap:6px;display:flex}.icon-btn{border:1px solid var(--line);background:var(--card);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-radius:16px;flex-direction:column;flex:1;align-items:center;gap:3px;max-width:96px;padding:8px 4px 6px;transition:transform .12s,opacity .2s;display:flex;position:relative;box-shadow:0 2px #503c1e1a}.icon-btn:active{transform:translateY(2px)}.icon-btn .lbl{color:var(--ink-soft);font-size:.72rem;font-weight:700}.icon-btn.accent{color:var(--jade-dark)}.icon-btn[data-count]:not([data-count=""]):after{content:attr(data-count);background:var(--jade);color:#fff;text-align:center;border-radius:10px;min-width:20px;height:20px;padding:0 5px;font-size:.72rem;font-weight:700;line-height:20px;position:absolute;top:-6px;right:6px}.icon-btn.spent,.icon-btn:disabled{opacity:.45}.icon-btn.spent:after{background:#a99c88!important}.conn-status{background:var(--card);box-shadow:var(--shadow);z-index:10;border-radius:999px;padding:12px 20px;font-weight:700;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#2f2a2459;place-items:center;padding:20px;animation:.25s fade;display:grid;position:fixed;inset:0}.modal-backdrop.out{opacity:0;transition:opacity .25s}@keyframes fade{0%{opacity:0}}.modal{background:linear-gradient(#fffaf0,#f6ecda);border-radius:24px;width:min(100%,400px);max-height:90dvh;padding:26px 22px 20px;animation:.35s cubic-bezier(.2,.9,.3,1.15) rise;overflow-y:auto;box-shadow:0 20px 60px #281e0a4d,inset 0 0 0 1px #fffc}@keyframes rise{0%{opacity:0;transform:translateY(30px)scale(.96)}}.modal h2{font-family:var(--serif);margin:0;font-size:1.6rem;font-weight:800}.stack{flex-direction:column;gap:14px;display:flex}.stack.center{text-align:center;align-items:stretch}.stack.center .stars{justify-content:center}.stack p{color:var(--ink-soft);margin:0;line-height:1.45}.room-code{font-family:var(--serif);letter-spacing:.25em;background:var(--jade-light);color:var(--jade-dark);-webkit-user-select:text;user-select:text;border-radius:14px;padding:8px 0 8px .25em;font-size:2.4rem;font-weight:800}.field{flex-direction:column;gap:6px;font-size:.95rem;font-weight:700;display:flex}.field.toggle{flex-direction:row;justify-content:space-between;align-items:center;gap:16px}.field input[type=range]{width:100%;accent-color:var(--jade)}.field input[type=checkbox]{width:22px;height:22px;accent-color:var(--jade);flex:none}.credits{font-size:.78rem}.toasts{left:50%;bottom:calc(env(safe-area-inset-bottom) + 96px);z-index:120;pointer-events:none;flex-direction:column;align-items:center;gap:8px;width:min(92vw,420px);display:flex;position:fixed;transform:translate(-50%)}.toast{pointer-events:auto;color:#fbf5ea;box-shadow:var(--shadow);background:#2f2a24e6;border-radius:16px;align-items:center;gap:12px;padding:10px 16px;font-size:.92rem;font-weight:700;transition:opacity .4s,transform .4s;animation:.3s rise;display:flex}.toast.out{opacity:0;transform:translateY(8px)}.toast button{background:var(--jade);color:#fff;border:0;border-radius:999px;padding:6px 12px;font-weight:700}@media (width>=700px){.icon-btn .lbl{font-size:.8rem}.board-area{margin:6px 18px}}@media (height<=500px) and (orientation:landscape){.home{flex-direction:row;gap:40px}.seal{width:48px;height:48px;font-size:1.1rem}.bar{padding:6px 12px 2px}.toolbar{padding-bottom:calc(env(safe-area-inset-bottom) + 6px)}.icon-btn{flex-direction:row;gap:6px;max-width:130px;padding:6px 10px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important}}
