.app-dialog{box-sizing:border-box;border:3px solid var(--ink);width:min(31rem,100% - 2rem);max-height:calc(100% - 2rem);color:var(--ink);background:var(--paper);box-shadow:8px 8px 0 var(--ink);border-radius:24px;padding:2rem;overflow:auto}.app-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#111a40a8}.app-dialog h2{font-family:var(--display);margin:.5rem 1.5rem .75rem 0;font-size:2rem;font-weight:400}.dialog-close{width:38px;height:38px;color:var(--ink);background:#eef1fb;border:0;border-radius:50%;font-size:1.7rem;position:absolute;top:.7rem;right:.8rem}.dialog-actions{flex-wrap:wrap;gap:.8rem;margin-top:1.5rem;display:flex}.victory-dialog{text-align:center;width:min(24rem,100% - 2rem)}.victory-dialog[open]{flex-direction:column;align-items:center;display:flex}.victory-dialog h2{margin:1rem 0 0}.victory-dialog .victory-mark{order:-1;margin-top:.5rem}.victory-dialog p{color:var(--ink-soft);margin:.5rem 0 0;font-weight:700}.victory-dialog .dialog-actions{justify-content:center}.victory-mark{border:3px solid var(--ink);width:64px;height:64px;box-shadow:var(--shadow-sm);background:#bbefd4;border-radius:20px;place-items:center;font-size:2.3rem;display:grid}.board-grid{box-sizing:border-box;grid-template-columns:repeat(var(--columns), minmax(0, 1fr));border:3px solid var(--ink,#16204a);background:var(--line,#c9d1ea);border-radius:10px;gap:1px;width:min(100%,34rem);display:grid;position:relative;overflow:hidden;container-type:inline-size}.board-interactive{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}.board-cell{box-sizing:border-box;aspect-ratio:1;min-width:0;min-height:0;color:var(--ink,#16204a);font-family:var(--display,system-ui);font-size:calc(100cqw / var(--columns) * .45);background:#fff;border:0;border-radius:0;justify-content:center;align-items:center;margin:0;padding:0;line-height:1;transition:background-color 80ms;display:flex;position:relative}button.board-cell{cursor:pointer}.board-cell:focus-visible{outline:3px solid var(--blue,#2b57f6);outline-offset:-4px;z-index:3}.board-overlay{z-index:1;pointer-events:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.board-lines{stroke:var(--game-color,#2b57f6);stroke-width:.2px;stroke-linecap:round;stroke-linejoin:round;fill:none}.board-stage>.board-grid{width:min(var(--board-max-width,100%), var(--board-max-height,70svh) * var(--columns) / var(--rows));max-width:100%}@media (width<=860px){.board-stage>.board-grid{width:min(100cqw, 70svh * var(--columns) / var(--rows))}}.goal-chips{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.goal-chip{box-sizing:border-box;border:3px solid var(--ink,#16204a);color:#8a93b5;min-width:40px;height:44px;font-family:var(--display,system-ui);background:#fff;border-radius:10px;justify-content:center;align-items:center;padding:0 .45rem;font-size:1.25rem;transition:background-color .12s;display:flex}.goal-chip-done{background:var(--game-color,#2b57f6);color:var(--ink,#16204a)}.board-cell.tetromino-cell{transition:background-color 80ms,box-shadow 80ms}.tetromino-cell.selected{--shade:var(--game-color,#344b65);background:var(--shade);box-shadow:0 0 0 1px var(--shade)}.tetromino-cell.preview{background:var(--game-soft,#d5dce6)}.tetromino-cell.selected.preview{--shade:color-mix(in srgb, var(--game-color,#344b65) 85%, var(--ink,#16204a));background:var(--shade)}.tetromino-cell.excluded{background:0 0}.tetromino-excluded-fill{fill:#eef0f2}.tetromino-excluded-fill.preview{fill:#dce0e5}.tetromino-hatch-line{fill:#aeb5bf}.tetromino-boundaries{fill:none;stroke:var(--ink,#16204a);stroke-width:3px;stroke-linecap:square;vector-effect:non-scaling-stroke}.tetromino-targets{flex-wrap:nowrap;justify-content:space-between;gap:.4rem}.tetromino-targets .goal-chip{flex:0 3.75rem;min-width:0;height:auto;padding:.45rem .15rem}.tetromino-targets .goal-chip>[aria-hidden]{flex:1 1 0;justify-content:center;min-width:0;display:flex}.tetromino-targets svg{width:100%;max-width:44px;height:auto;display:block}.tetromino-targets rect{fill:#fff;stroke:var(--ink,#16204a);stroke-width:2.5px}.ray-covered{background:var(--game-soft,#ade8e5)}.ray-launcher{z-index:2;background:var(--game-color,#0aa7a4);border:3px solid var(--ink,#16204a)}.ray-selected{box-shadow:inset 0 0 0 3px var(--blue,#2b57f6)}.ray-number{position:relative}.ray-unknown-total{white-space:nowrap;font-family:Figtree,system-ui,sans-serif;font-size:.55em;font-weight:900}.spell-visited{background:var(--game-soft,#dfd3fe)}.spell-letter{z-index:2;font-size:1.15em;position:relative}.snakes-board{background:var(--game-color,#e5cb45)}.snakes-board .snake-cell:not(.snake-border){box-shadow:0 0 0 1px var(--line,#c9d1ea)}.snake-border{background:var(--game-color,#e5cb45)}.snake-clue{z-index:2}.snake-number{box-sizing:border-box;aspect-ratio:1;border:2px solid var(--ink,#16204a);background:#fff;border-radius:50%;place-items:center;width:78%;transition:background-color .12s,color .12s,box-shadow .12s;display:grid}.snake-clue[aria-pressed=true] .snake-number{background:var(--ink,#16204a);color:#fff;box-shadow:0 0 0 2px var(--game-color,#e5cb45), 0 0 0 3px var(--ink,#16204a)}.snakes-board .board-lines{stroke-width:.19px}.snakes-board .board-cell:focus-visible{outline:2px dashed var(--ink,#16204a);outline-offset:-4px}.snakes-board .snake-clue:focus-visible{outline:none}.snakes-board .snake-clue:focus-visible .snake-number{outline:2px dashed var(--ink,#16204a);outline-offset:2px}:root{--ink:#16204a;--ink-soft:#4c5680;--line:#c9d1ea;--paper:#fff;--blue:#2b57f6;--blue-soft:#bbd1fe;--ok:#0a7a5a;--shadow:5px 5px 0 var(--ink);--shadow-sm:3px 3px 0 var(--ink);--radius:18px;--gutter:clamp(1rem, 4vw, 3.5rem);--display:"Tilt Warp", "Figtree", system-ui, sans-serif;--game-color:var(--blue);--game-soft:var(--blue-soft);color:var(--ink);background:#fff;font-family:Figtree,system-ui,sans-serif;line-height:1.45}body{margin:0}a{color:var(--blue);font-weight:700}input,button,select,textarea{font:inherit}input,select,textarea{border:2px solid var(--ink);color:var(--ink);background:#fff;border-radius:10px;padding:.5rem .65rem}select{appearance:none;text-overflow:ellipsis;cursor:pointer;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'%3E%3Cpath d='M1.5 1.5 6 6l4.5-4.5' fill='none' stroke='%2316204a' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") right .75rem center/.7rem no-repeat;padding-right:2.2rem}select:disabled{cursor:not-allowed}button{cursor:pointer}button:disabled{cursor:not-allowed}label{gap:.25rem;margin:.75rem 0;font-weight:700;display:grid}form{max-width:25rem}:focus-visible{outline:3px solid var(--blue);outline-offset:3px}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.site{background-color:#fff;background-image:var(--site-pattern);background-position:-40px -20px;min-height:100vh}.site-header{z-index:10;min-height:64px;padding:0 var(--gutter);border-bottom:3px solid var(--ink);background:#fff;align-items:center;gap:2rem;display:flex;position:sticky;top:0}.brand{color:var(--ink);align-items:center;gap:.55rem;text-decoration:none;display:flex}.brand-mark{flex:none;width:40px;height:40px}.brand-words{flex-direction:column;align-items:flex-start;gap:.36rem;display:flex}.brand-name{font-family:var(--display);padding-top:.04em;font-size:2rem;font-weight:400;line-height:.74}.brand-sub{letter-spacing:.86em;text-transform:uppercase;color:var(--blue);margin-right:-.86em;font-size:.82rem;font-weight:900;line-height:.74}.site-nav{gap:1.75rem;margin-left:auto;display:flex}.site-nav a{color:var(--ink-soft);border-bottom:4px solid #0000;padding:.25rem 0;font-weight:800;text-decoration:none}.site-nav a.active{color:var(--ink);border-bottom-color:var(--blue)}.site-main{max-width:72rem;padding:1rem var(--gutter);flex-direction:column;gap:1rem;margin:0 auto;display:flex}.panel{background:var(--paper);border:3px solid var(--ink);border-radius:var(--radius);box-shadow:6px 6px 0 var(--ink)}.page-panel{padding:1.25rem 1.5rem}.page-panel h1{font-family:var(--display);margin:0 0 .5rem;font-weight:400}.notice{margin:0;padding:1rem 1.25rem;font-weight:700}.actions{flex-wrap:wrap;align-items:center;gap:.6rem;display:flex}.actions>p{margin:0}.eyebrow{letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft);margin:0;font-size:.8rem;font-weight:900}.button,.board-actions button,.page-panel button:not(:where(.board-cell,.dialog-close)){border:3px solid var(--ink);min-height:42px;color:var(--ink);box-shadow:var(--shadow-sm);background:#fff;border-radius:10px;justify-content:center;align-items:center;gap:.4rem;padding:0 1rem;font-weight:800;text-decoration:none;transition:transform 80ms,box-shadow 80ms;display:inline-flex}.button:hover:not(:disabled),.board-actions button:hover:not(:disabled),.page-panel button:not(.board-cell):not(.dialog-close):hover:not(:disabled){box-shadow:4px 4px 0 var(--ink);transform:translate(-1px,-1px)}.button:active:not(:disabled),.board-actions button:active:not(:disabled){box-shadow:1px 1px 0 var(--ink);transform:translate(2px,2px)}.button:disabled,.board-actions button:disabled{opacity:.45;box-shadow:none}.button-primary,a.button-primary{background:var(--blue);color:#fff}.site-header .button-primary.active{background:var(--ink)}.catalog{flex-direction:column;gap:1rem;display:flex}.edition-bar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.35rem 1.5rem;padding:.85rem 1.4rem;display:flex}.edition-bar h1{font-family:var(--display);margin:0;font-size:1.6rem;font-weight:400;line-height:1}.edition-bar p{color:var(--ink-soft);margin:0;font-size:.9rem;font-weight:800}.game-cards{grid-template-columns:repeat(auto-fill,minmax(17rem,1fr));gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.game-card{background:var(--game-color);border:3px solid var(--ink);border-radius:var(--radius);box-shadow:6px 6px 0 var(--ink);flex-direction:column;gap:.6rem;padding:.85rem;display:flex}.game-card h2{font-family:var(--display);margin:.25rem 0 0;font-size:1.85rem;font-weight:400;line-height:1}.game-card p{flex-grow:1;margin:0;font-weight:700;line-height:1.35}.game-card .button{align-self:center;min-height:46px;padding:0 1.4rem;font-weight:900}.game-card-preview{aspect-ratio:6/5;border:3px solid var(--ink);background:#fff;border-radius:14px;justify-content:center;align-items:center;padding:.6rem;display:flex;overflow:hidden}.preview-fit{align-items:center;max-width:100%;height:100%;display:flex}.game-card-preview .board-grid{pointer-events:none;width:100%}.game-card-preview .tetromino-boundaries{stroke-width:2px}.game-card-empty{font-family:var(--display);color:var(--game-color);font-size:4rem}.game-page{flex-direction:column;gap:1rem;display:flex}.game-bar{box-shadow:var(--shadow);border-radius:16px;align-items:center;gap:1rem;padding:.5rem 1rem;display:flex}.game-bar-back{white-space:nowrap;color:var(--ink-soft);border-right:2px solid #e1e6f5;padding-right:1rem;font-weight:800;text-decoration:none}.game-bar-title h1{font-family:var(--display);margin:0;font-size:1.5rem;font-weight:400;line-height:1.05}.game-bar-title p{color:var(--ink-soft);margin:.1rem 0 0;font-size:.85rem;font-weight:700}.game-info-button{width:40px;height:40px;color:var(--ink-soft);background:0 0;border:0;border-radius:50%;flex:0 0 40px;place-items:center;margin-left:auto;padding:8px;display:grid}.game-info-button:hover{background:var(--game-soft);color:var(--ink)}.game-info-button:focus-visible{outline:3px solid var(--blue);outline-offset:2px}.game-info-button svg{fill:none;stroke:currentColor;stroke-width:2px;stroke-linecap:round;width:24px;height:24px}.game-info-button .game-info-dot{fill:currentColor;stroke:none}.app-dialog.game-info-dialog{width:min(25rem,100% - 2rem);box-shadow:var(--shadow);border-radius:16px;padding:1.25rem}.app-dialog.game-info-dialog h2{margin:0 2.25rem .75rem 0;font-size:1.35rem}.game-info-dialog p{margin:0;line-height:1.6}.game-icon{box-sizing:border-box;border:3px solid var(--ink);background:var(--game-color);border-radius:12px;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;display:flex}.game-icon svg{width:32px;height:32px}.game-icon-letter{font-family:var(--display);color:#fff;font-size:1.4rem}.session{flex-direction:column;gap:1rem;display:flex}.session>[role=alert]{align-self:flex-start}.game-layout{--side-width:19rem;--board-max-width:calc(min(72rem, 100vw - 2 * var(--gutter)) - var(--side-width) - 1rem - 2rem - 6px);--board-max-height:clamp(16rem, 100svh - 18.5rem, 48rem);align-items:flex-start;gap:1rem;display:flex}.board-panel{flex-direction:column;flex:0 auto;gap:.75rem;min-width:0;padding:1rem;display:flex}.board-stage{justify-content:center;display:flex}.board-footer{border-top:2px solid #e1e6f5;justify-content:center;align-items:center;padding-top:.75rem;display:flex}.board-actions{flex-wrap:wrap;justify-content:center;gap:.6rem;display:flex}.game-side{flex:1 1 var(--side-width);flex-direction:column;gap:1rem;min-width:0;display:flex}.side-card{flex-direction:column;gap:.7rem;padding:.9rem 1.1rem;display:flex}.rules-list{counter-reset:rule;color:#2a3560;flex-direction:column;gap:.5rem;margin:0;padding:0;font-weight:600;list-style:none;display:flex}.rules-list li{counter-increment:rule;gap:.6rem;display:flex}.rules-list li:before{content:counter(rule);box-sizing:border-box;border:2px solid var(--ink);background:var(--game-soft);border-radius:6px;flex-shrink:0;justify-content:center;align-items:center;width:22px;height:22px;margin-top:.1rem;font-size:.75rem;font-weight:900;display:flex}.rules-text{color:#2a3560;margin:0;font-weight:600}@media (width<=860px){.site-header{flex-wrap:wrap;gap:.5rem 1.25rem;padding-block:.6rem}.board-actions button{padding-inline:.75rem}.game-layout{flex-direction:column;align-items:stretch}.board-panel{padding:.75rem}.board-stage{container-type:inline-size}.page-panel{padding:1rem}}
