:root{--wa-header-h: 56px;--ff-oak: #3b2416;--ff-oak-hi: #5a3822;--ff-oak-lo: #24150c;--ff-cream: #f6ead2;--ff-paper: #fbf3e2;--ff-ink: #3a2214;--ff-ink-soft: #6b4a33;--ff-gold: #d9a441;--ff-pumpkin: #d9822b;--ff-berry: #8e2436;--ff-ring-hi: #f2c25a;--ff-ring-lo: #1a0e06;--ff-bad-hi: #fff6e6;--ff-bad-lo: #5c0610;--ff-serif: "Palatino Linotype", Palatino, "Book Antiqua", Georgia, "Times New Roman", serif}body,.ff{background-color:var(--ff-oak);background-image:repeating-linear-gradient(92deg,rgba(0,0,0,.07) 0 2px,transparent 2px 9px,rgba(255,255,255,.025) 9px 11px,transparent 11px 23px),linear-gradient(180deg,var(--ff-oak-hi),var(--ff-oak) 40%,var(--ff-oak-lo));background-attachment:fixed;color:var(--ff-cream)}#gameHeader{position:relative;z-index:40;background:linear-gradient(180deg,#2c190e,#22130a);border-bottom:2px solid #6e4528}#gameHeader .gh-title,#gameHeader .gh-title-static{color:var(--ff-cream);font-family:var(--ff-serif)}#gameHeader .gh-back,#gameHeader .gh-back-static{color:#e7cfa6}#gameHeader .gh-btn{color:var(--ff-cream);border-color:#f6ead24d}#gameHeader .gh-btn:hover{border-color:var(--ff-gold)}#gameHeader .gh-auth,#gameHeader .gh-avatar-initial,#gameHeader .gh-btn-badge{background:var(--ff-gold);color:var(--ff-ink)}#gameHeader .gh-avatar{border-color:var(--ff-gold)}.ff{position:relative;width:100%;height:calc(100vh - var(--wa-header-h));height:calc(100dvh - var(--wa-header-h));overflow:hidden;font-family:var(--ff-serif);color:var(--ff-cream);user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px);padding-bottom:env(safe-area-inset-bottom,0px);box-sizing:border-box}.ff *,.ff *:before,.ff *:after{box-sizing:border-box}.ff [hidden]{display:none!important}.ff :focus-visible{outline:3px solid var(--ff-gold);outline-offset:2px}.ff-sr{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}:where(.ff button){appearance:none;-webkit-appearance:none;font:inherit;color:inherit;background:none;border:0;margin:0;padding:0;cursor:pointer}.ff-btn{display:inline-flex;align-items:center;justify-content:center;gap:.3em;min-height:44px;padding:.45em 1.1em;border-radius:12px;font-family:var(--ff-serif);font-weight:700;font-size:clamp(14px,2.3dvh,17px);letter-spacing:.01em;transition:transform .08s ease,box-shadow .08s ease,filter .12s ease}.ff-btn:active{transform:translateY(2px)}.ff-btn:disabled{opacity:.5;cursor:default;transform:none}.ff-btn-wood{color:#fff4dc;background:repeating-linear-gradient(96deg,rgba(0,0,0,.08) 0 2px,transparent 2px 7px),linear-gradient(180deg,#a5612f,#7a4320 55%,#5d3117);border:2px solid #3f210d;box-shadow:inset 0 2px #ffdcaa59,inset 0 -3px #00000040,0 3px #2a150a,0 5px 10px #00000059;text-shadow:0 1px 0 rgba(0,0,0,.45)}.ff-btn-wood:hover:not(:disabled){filter:brightness(1.08)}.ff-btn-wood:active:not(:disabled){box-shadow:inset 0 2px #ffdcaa33,inset 0 -1px #00000040,0 1px #2a150a,0 2px 4px #00000059}.ff-btn-linen{color:var(--ff-ink);background:repeating-linear-gradient(0deg,rgba(120,90,50,.06) 0 1px,transparent 1px 3px),repeating-linear-gradient(90deg,rgba(120,90,50,.06) 0 1px,transparent 1px 3px),linear-gradient(180deg,#fbf2de,#ead9b8);border:2px solid #b48c58;outline:1px dashed rgba(122,82,40,.55);outline-offset:-6px;box-shadow:0 3px #8a6436,0 5px 10px #0000004d}.ff-btn-linen:hover:not(:disabled){filter:brightness(1.04)}.ff-btn-linen:active:not(:disabled){box-shadow:0 1px #8a6436,0 2px 4px #0000004d}.ff-btn-small{min-height:36px;padding:.3em .8em;font-size:14px}.ff-btn-icon{width:44px;padding:0;font-size:26px;line-height:1}.ff-home{height:100%;display:flex;justify-content:center;padding:clamp(6px,1.6dvh,18px) 14px}.ff-home-in{width:100%;max-width:520px;height:100%;display:flex;flex-direction:column;justify-content:center;gap:clamp(8px,1.8dvh,18px)}.ff-sign{position:relative;text-align:center;padding:clamp(8px,1.8dvh,16px) 16px clamp(16px,3dvh,26px);border-radius:18px;background:repeating-linear-gradient(178deg,rgba(0,0,0,.09) 0 2px,transparent 2px 8px,rgba(255,255,255,.04) 8px 9px,transparent 9px 17px),linear-gradient(180deg,#8d522a,#6a3a1b);border:3px solid #3a1e0c;box-shadow:inset 0 2px #ffd2964d,inset 0 -4px #0000004d,0 6px 14px #00000073}.ff-sign:before,.ff-sign:after{content:"";position:absolute;top:10px;width:10px;height:10px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#f1d08a,#8c6420);box-shadow:0 1px 1px #00000080}.ff-sign:before{left:12px}.ff-sign:after{right:12px}.ff-sign-title{font-size:clamp(30px,7.2dvh,54px);font-weight:700;line-height:1.05;color:#fbe6bf;text-shadow:0 -1px 0 rgba(0,0,0,.55),0 2px 0 rgba(255,220,160,.18);letter-spacing:.02em}.ff-sign-sub{margin-top:2px;font-size:clamp(13px,2.2dvh,17px);font-style:italic;color:#f0d6a8}.ff-ribbon{position:absolute;left:50%;bottom:0;transform:translate(-50%,50%);padding:3px 18px;font-size:clamp(12px,1.9dvh,15px);font-weight:700;color:#fff3dc;background:linear-gradient(180deg,#a83246,#7d1c2e);border:1px solid #5a1020;box-shadow:0 2px 4px #0006;white-space:nowrap}.ff-ribbon:before,.ff-ribbon:after{content:"";position:absolute;top:4px;width:12px;height:100%;background:#6a1626;z-index:-1}.ff-ribbon:before{left:-9px;clip-path:polygon(0 0,100% 0,100% 100%,0 100%,40% 50%)}.ff-ribbon:after{right:-9px;clip-path:polygon(0 0,100% 0,60% 50%,100% 100%,0 100%)}.ff-places{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(6px,1.4dvh,12px);margin-top:clamp(6px,1.4dvh,12px)}.ff-place{position:relative;display:flex;flex-direction:column;align-items:center;gap:1px;padding:clamp(8px,1.6dvh,14px) 6px clamp(8px,1.4dvh,12px);text-align:center;color:var(--ff-ink);border-radius:6px;background:linear-gradient(180deg,rgba(0,0,0,.1),transparent 9px),linear-gradient(180deg,#fffaf0,#f1e2c4);border:1px solid #c7a676;box-shadow:0 1px #fff inset,0 6px 0 -2px #d9c194,0 8px 12px #0006;transition:transform .12s ease}.ff-place:before{content:"";position:absolute;inset:5px;border:1px solid rgba(201,150,60,.75);border-radius:3px;pointer-events:none}.ff-place:hover{transform:translateY(-2px) rotate(-.5deg)}.ff-place:active{transform:translateY(1px)}.ff-pc-plate{font-size:clamp(22px,4.6dvh,36px);line-height:1.1}.ff-pc-name{font-size:clamp(16px,2.8dvh,21px);font-weight:700}.ff-pc-course{font-size:clamp(11px,1.7dvh,13px);font-style:italic;color:var(--ff-ink-soft)}.ff-pc-meta{font-size:clamp(11px,1.7dvh,13px);color:var(--ff-ink-soft)}.ff-pc-status{margin-top:4px;font-size:clamp(11px,1.8dvh,14px);font-weight:700;color:#7d1c2e}.ff-pc-status.done{color:#3e6b22}.ff-place.is-done:after{content:"\2713";position:absolute;top:-8px;right:-6px;width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:15px;font-weight:700;color:#fff3dc;background:radial-gradient(circle at 35% 30%,#c4485c,#7d1c2e 70%);box-shadow:0 2px 3px #00000073}.ff-endless{width:100%;font-size:clamp(15px,2.5dvh,18px)}.ff-sideboard{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.ff-sideboard .ff-btn{padding-left:.4em;padding-right:.4em;font-size:clamp(13px,2.1dvh,15px)}.ff-foot{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.ff-chip{padding:4px 12px;border-radius:999px;font-size:clamp(13px,2dvh,15px);font-weight:700;color:#fbe6bf;background:#140a0473;border:1px solid rgba(240,214,168,.35)}.ff-play{height:100%;display:flex;flex-direction:column}.ff-hud{flex:none;display:flex;align-items:center;gap:8px;padding:8px 10px;max-width:760px;width:100%;margin:0 auto}.ff-hud-label{flex:1;min-width:0;font-size:clamp(13px,2.2dvh,16px);font-weight:700;font-style:italic;color:#fbe6bf;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ff-timer{min-width:64px;padding:6px 10px;text-align:center;font-size:18px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--ff-ink);border-radius:8px;background:linear-gradient(180deg,#fff7e6,#ecd9b4);border:2px solid #b48c58;box-shadow:inset 0 1px 2px #0003}.ff-hint{min-width:64px;padding:0 10px}.ff-hint-n{font-variant-numeric:tabular-nums}.ff-stage{flex:1;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:0 5px 8px;touch-action:none}.ff-stage[data-mode=beside]{flex-direction:row}.ff-table{padding:6px;border-radius:12px;background:linear-gradient(180deg,#6b3f20,#4a2a14);box-shadow:inset 0 1px #ffd29640,0 8px 18px #00000080}.ff-board{position:relative;border-radius:6px;overflow:visible}.ff-cloth{position:absolute;inset:0;border-radius:6px;background:var(--cloth);box-shadow:inset 0 0 0 2px #00000026,inset 0 0 18px #00000040}.ff-grid{position:absolute;inset:0;display:grid;grid-template-columns:repeat(var(--cols),1fr);grid-template-rows:repeat(var(--rows),1fr);pointer-events:none}.ff-grid span{border:1px dashed rgba(255,250,235,.38);margin:2px;border-radius:4px}.ff-tray{display:grid;grid-template-columns:repeat(var(--tcols),var(--slot));grid-auto-rows:var(--slot);padding:4px;border-radius:12px;background:repeating-linear-gradient(90deg,rgba(0,0,0,.08) 0 2px,transparent 2px 10px),linear-gradient(180deg,#8d552d,#66391a);border:2px solid #3a1e0c;box-shadow:inset 0 2px #ffd29640,0 6px 12px #00000073}.ff-slot{display:grid;place-items:center;border-radius:8px;background:radial-gradient(ellipse at 50% 60%,rgba(0,0,0,.18),transparent 70%)}.ff-slot.empty:after{content:"";width:30%;height:30%;border-radius:50%;border:2px dashed rgba(255,230,190,.25)}.ff-piece{position:absolute;filter:drop-shadow(0 3px 2px rgba(0,0,0,.4));cursor:grab;touch-action:none}.ff-piece.in-tray{position:relative}.ff-piece.on-table{z-index:2}.ff-piece.dragging{z-index:1000;pointer-events:none;opacity:.94;filter:drop-shadow(0 12px 8px rgba(0,0,0,.45));cursor:grabbing}.ff-piece.shadow{z-index:1;opacity:.42;filter:none;pointer-events:none}.ff-piece:focus-visible{outline:3px solid var(--ff-ring-hi);outline-offset:3px;border-radius:6px;z-index:3;box-shadow:0 0 0 3px var(--ff-ring-lo)}.ff-board.kb-holding{outline:3px dashed var(--ff-gold);outline-offset:4px}.ff-board:focus{outline:none}.ff-board.kb-holding:focus-visible,.ff-board.kb-holding:focus{outline:3px dashed var(--ff-gold);outline-offset:4px}.ff-piece.kb-cursor{z-index:4;pointer-events:none;outline:3px solid var(--ff-ring-hi);outline-offset:3px;border-radius:6px;box-shadow:0 0 0 3px var(--ff-ring-lo)}.ff-piece.kb-cursor>*{opacity:.9}.ff-piece.kb-cursor.bad{outline:3px dashed var(--ff-bad-lo);box-shadow:0 0 0 3px var(--ff-bad-hi)}.ff-piece.kb-cursor.bad>*{opacity:.55;filter:grayscale(.5)}.ff-card :focus-visible{outline-color:var(--ff-ring-lo)}.ff-pc{position:absolute;width:var(--c);height:var(--c);background:radial-gradient(circle at 30% 25%,rgba(255,255,255,.45),transparent 45%),linear-gradient(160deg,color-mix(in srgb,var(--glaze) 85%,#fff),var(--glaze) 60%,color-mix(in srgb,var(--glaze) 80%,#000));background-color:var(--glaze);border:0 solid var(--rim);display:grid;place-items:center}.ff-pc.o-n{border-top-width:max(2px,calc(var(--c) * .07))}.ff-pc.o-e{border-right-width:max(2px,calc(var(--c) * .07))}.ff-pc.o-s{border-bottom-width:max(2px,calc(var(--c) * .07))}.ff-pc.o-w{border-left-width:max(2px,calc(var(--c) * .07))}.ff-pc.r-nw{border-top-left-radius:calc(var(--c) * .32)}.ff-pc.r-ne{border-top-right-radius:calc(var(--c) * .32)}.ff-pc.r-sw{border-bottom-left-radius:calc(var(--c) * .32)}.ff-pc.r-se{border-bottom-right-radius:calc(var(--c) * .32)}.ff-emb{font-size:calc(var(--c) * .62);line-height:1;filter:drop-shadow(0 1px 0 rgba(255,255,255,.5));font-family:"Apple Color Emoji","Segoe UI Emoji","Noto Color Emoji",sans-serif}.ff-ov{position:absolute;inset:0;z-index:50;display:grid;place-items:center;padding:14px;background:#140a048c;animation:ff-fade .18s ease}.ff-card{position:relative;width:min(420px,100%);max-height:100%;overflow:hidden;display:flex;flex-direction:column;gap:clamp(6px,1.4dvh,12px);padding:clamp(18px,3dvh,26px) clamp(16px,4vw,26px) clamp(14px,2.4dvh,22px);color:var(--ff-ink);border-radius:6px;background:linear-gradient(180deg,transparent 0 clamp(52px,8dvh,64px),rgba(178,40,60,.55) clamp(52px,8dvh,64px) calc(clamp(52px,8dvh,64px) + 2px),transparent calc(clamp(52px,8dvh,64px) + 2px)),repeating-linear-gradient(180deg,transparent 0 25px,rgba(90,140,190,.22) 25px 26px),linear-gradient(180deg,#fffbf1,#f4e7cc);border:1px solid #cdb184;box-shadow:0 14px 30px #00000080;transform:rotate(-.6deg);animation:ff-drop .22s ease}.ff-card-pin{position:absolute;top:8px;left:50%;width:16px;height:16px;margin-left:-8px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f28a5b,#b2401c 70%);box-shadow:0 2px 3px #00000073}.ff-card-title{margin:0;text-align:center;font-size:clamp(22px,4dvh,30px);font-weight:700;color:#7d1c2e}.ff-card-sub{margin:0;text-align:center;font-style:italic;font-size:clamp(13px,2dvh,15px);color:var(--ff-ink-soft)}.ff-card-note{margin:0;text-align:center;font-size:clamp(13px,2dvh,15px);color:var(--ff-ink)}.ff-card-note.gold{color:#8a5a00;font-weight:700}.ff-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(70px,1fr));gap:6px}.ff-stat{display:flex;flex-direction:column;align-items:center;padding:6px 4px;border-radius:8px;background:#d9a44126;border:1px solid rgba(160,110,40,.35)}.ff-stat-l{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--ff-ink-soft)}.ff-stat-v{font-size:clamp(18px,3dvh,22px);font-weight:700;font-variant-numeric:tabular-nums}.ff-card-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:4px}.ff-card-actions .ff-btn{flex:1 1 120px}.ff-help{margin:0;padding-left:1.3em;display:flex;flex-direction:column;gap:6px;font-size:clamp(13px,2.1dvh,16px);line-height:1.35}.ff-shop{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:clamp(4px,1dvh,8px);min-height:0;overflow:hidden}.ff-shop-row{display:flex;align-items:center;gap:10px;padding:6px;border-radius:8px;background:#ffffff73;border:1px solid rgba(160,120,60,.35)}.ff-shop-row.is-on{border-color:#b2802a;background:#d9a44138}.ff-swatch{flex:none;width:clamp(34px,6dvh,46px);height:clamp(34px,6dvh,46px);border-radius:6px;background:var(--cloth);border:2px solid #8a6436;box-shadow:inset 0 0 6px #00000040}.ff-shop-txt{flex:1;min-width:0;display:flex;flex-direction:column}.ff-shop-name{font-weight:700;font-size:clamp(14px,2.1dvh,16px)}.ff-shop-desc{font-size:clamp(11px,1.7dvh,13px);color:var(--ff-ink-soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ff-tag{flex:none;font-size:13px;font-weight:700;color:var(--ff-ink-soft);text-align:right;max-width:42%}.ff-tag.on{color:#3e6b22}.ff-tag.short{color:#7d1c2e}.ff-toast{position:absolute;left:50%;bottom:calc(16px + env(safe-area-inset-bottom,0px));z-index:60;transform:translate(-50%);padding:8px 16px;border-radius:10px;font-weight:700;color:var(--ff-ink);background:linear-gradient(180deg,#fffaf0,#f0dfbd);border:2px solid #b48c58;box-shadow:0 6px 14px #00000073}[data-cloth=plaid]{--cloth: repeating-linear-gradient(0deg, rgba(120, 18, 30, .55) 0 14px, transparent 14px 28px), repeating-linear-gradient(90deg, rgba(120, 18, 30, .55) 0 14px, transparent 14px 28px), repeating-linear-gradient(0deg, transparent 0 6px, rgba(255, 255, 255, .12) 6px 7px, transparent 7px 14px), #c8b48f}[data-cloth=leaves]{--cloth: radial-gradient(ellipse 9px 5px at 20% 30%, rgba(198, 92, 32, .75) 60%, transparent 62%), radial-gradient(ellipse 7px 4px at 70% 65%, rgba(160, 60, 30, .7) 60%, transparent 62%), radial-gradient(ellipse 6px 4px at 45% 85%, rgba(214, 150, 48, .75) 60%, transparent 62%), radial-gradient(ellipse 8px 5px at 85% 20%, rgba(170, 110, 40, .65) 60%, transparent 62%), #b9a47d;background-size:48px 48px}[data-cloth=pumpkin]{--cloth: repeating-linear-gradient(90deg, rgba(150, 66, 10, .6) 0 10px, transparent 10px 20px, rgba(255, 220, 160, .15) 20px 22px, transparent 22px 34px), linear-gradient(180deg, #d27a32, #b8601e)}[data-cloth=cranberry]{--cloth: radial-gradient(circle at 50% 50%, rgba(255, 190, 200, .18) 0 6px, transparent 7px 100%), radial-gradient(circle at 0 0, rgba(255, 190, 200, .12) 0 10px, transparent 11px), radial-gradient(circle at 100% 100%, rgba(255, 190, 200, .12) 0 10px, transparent 11px), #7d1c2e}[data-cloth=gold]{--cloth: repeating-linear-gradient(45deg, rgba(217, 164, 65, .4) 0 2px, transparent 2px 16px), repeating-linear-gradient(-45deg, rgba(217, 164, 65, .4) 0 2px, transparent 2px 16px), #1d2546}.ff-cloth,.ff-swatch{background-size:auto}.ff[data-cloth=leaves] .ff-cloth,.ff-swatch[data-cloth=leaves]{background-size:48px 48px}.ff[data-cloth=cranberry] .ff-cloth,.ff-swatch[data-cloth=cranberry]{background-size:32px 32px}@keyframes ff-fade{0%{opacity:0}}@keyframes ff-drop{0%{transform:translateY(-14px) rotate(-2deg);opacity:0}}@media(prefers-reduced-motion:reduce){.ff *,.ff-piece{animation:none!important;transition:none!important}}@media(max-height:560px){.ff-pc-course,.ff-sign-sub{display:none}}
