:root{--bg: #f6f3ee;--paper: #ffffff;--ink: #1b1b1f;--muted: #6b6b75;--line: #2b2b33;--def-bg: #e9e5dc;--accent: #1d3557;--sel: #ffe066;--in-word: #fff5c2;--wrong: #ffb3b3;--cell: clamp(30px, 8.6vw, 60px);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button{font:inherit;cursor:pointer;border-radius:8px;border:1px solid #c9c4b8;background:var(--paper);padding:.45rem .9rem;color:var(--ink)}button:disabled{opacity:.5;cursor:default}button.primary{background:var(--accent);color:#fff;border-color:var(--accent)}button.big{font-size:1.15rem;padding:.7rem 1.4rem}button.link{border:none;background:none;font-weight:700;padding:0}input{font:inherit;padding:.5rem .7rem;border-radius:8px;border:1px solid #c9c4b8;background:var(--paper);min-width:0}.sr-only{position:absolute;left:-9999px}.error{color:#b3261e}.center{text-align:center;padding:2rem 1rem}footer{margin-top:2rem;color:var(--muted);text-align:center}.home{max-width:460px;margin:0 auto;padding:3rem 1.25rem;display:flex;flex-direction:column;gap:1.1rem}.home h1{font-size:2.4rem;margin:0}.home .tagline{margin:0;color:var(--muted)}.field{display:flex;flex-direction:column;gap:.35rem}.field span{font-size:.9rem;color:var(--muted)}.row{display:flex;gap:.5rem}.row input{flex:1}.join{margin-top:1rem;padding-top:1rem;border-top:1px solid #e0dbd0}.join h2{font-size:1.05rem;margin:0 0 .5rem}.join input{text-transform:uppercase;letter-spacing:.15em;font-weight:600}.room{max-width:900px;margin:0 auto;padding:.75rem .75rem 2rem}.topbar{display:flex;flex-wrap:wrap;align-items:center;gap:.6rem 1rem;padding:.4rem 0}.topbar .code{background:var(--paper);border:1px dashed #b9b3a6;border-radius:8px;padding:.25rem .6rem}.topbar .code span{color:var(--muted);font-size:.85rem}.topbar .code strong{letter-spacing:.15em;font-size:1.1rem}.topbar .actions{display:flex;gap:.4rem;margin-left:auto}.status{font-size:.85rem;color:var(--muted)}.status.reconnecting{color:#b3261e}.players{list-style:none;display:flex;flex-wrap:wrap;gap:.5rem 1rem;padding:.3rem 0;margin:0;font-size:.95rem}.players li{display:flex;align-items:center;gap:.35rem}.players li.offline{opacity:.45}.players .you{color:var(--muted)}.dot{display:inline-block;width:.75rem;height:.75rem;border-radius:50%}.clue-panel{min-height:2.4rem;padding:.5rem .75rem;margin:.5rem 0;background:var(--paper);border-radius:10px;border:1px solid #e0dbd0;font-size:1.05rem}.clue-panel .hint{color:var(--muted);font-size:.95rem}.clue-dir{font-weight:700;color:var(--accent)}.clue-len{color:var(--muted);font-size:.9rem}.grid-wrap{position:relative;overflow-x:auto;padding:2px}.grid-input{position:absolute;opacity:0;width:1px;height:1px;left:0;top:0;pointer-events:none}.grid{display:grid;grid-template-columns:repeat(var(--cols),var(--cell));grid-auto-rows:var(--cell);gap:0;border:2px solid var(--line);width:max-content;margin:0 auto;background:var(--line)}.cell{position:relative;background:var(--paper);border:1px solid var(--line);user-select:none;-webkit-user-select:none}.cell.block{background:var(--def-bg);background-image:repeating-linear-gradient(45deg,transparent 0 4px,rgba(0,0,0,.06) 4px 6px)}.cell.letter{display:flex;align-items:center;justify-content:center;font-weight:700;font-size:calc(var(--cell) * .55);cursor:pointer;touch-action:manipulation}.cell.letter.in-word{background:var(--in-word)}.cell.letter.selected{background:var(--sel)}.cell.letter.wrong{background:var(--wrong)}.cell.letter.wrong .letter-text{text-decoration:line-through}.cursor-tags{position:absolute;top:-.55rem;right:-1px;display:flex;gap:2px;pointer-events:none;z-index:2}.cursor-tag{font-size:.55rem;font-weight:600;color:#fff;padding:0 4px;border-radius:6px 6px 6px 0;line-height:1.4;max-width:5.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cell.def{background:var(--def-bg);display:flex;flex-direction:column}.cell.def .clue{flex:1;min-height:0;display:flex;align-items:center;justify-content:center;padding:1px 6px 1px 2px;border:none;border-radius:0;background:transparent;position:relative;text-align:center;overflow:hidden}.cell.def.two .clue:first-child{border-bottom:1px solid var(--line)}.cell.def .clue.active{background:var(--in-word)}.clue-text{font-size:clamp(6px,calc(var(--cell) * .16),10px);line-height:1.1;font-weight:600;text-transform:uppercase;letter-spacing:-.01em;display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word;-webkit-hyphens:auto;hyphens:auto}.cell.def.two .clue-text{-webkit-line-clamp:2}.arrow{position:absolute;width:calc(var(--cell) * .22);height:calc(var(--cell) * .22);color:var(--line)}.arrow-right{right:0;top:50%;transform:translateY(-50%)}.arrow-down{bottom:0;left:50%;transform:translate(-50%)}.arrow-right-down{right:0;top:50%;transform:translateY(-50%)}.arrow-down-right{bottom:0;left:50%;transform:translate(-50%)}.cell.def.two .clue:first-child .arrow-down,.cell.def.two .clue:first-child .arrow-down-right{display:none}.grid-wrap.solved .cell.letter{background:#d7f5dc;color:var(--ink)!important}.toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin:.75rem 0}.check-result{font-size:.95rem}.difficulty{margin-left:auto;color:#c58b00;letter-spacing:.05em}.solved-banner{background:#e7f8ea;border:1px solid #9ed6a8;border-radius:12px;padding:1rem;text-align:center}.solved-banner h2{margin:0 0 .5rem}.solved-banner ul{list-style:none;padding:0;margin:.5rem 0 1rem;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem 1.25rem}.solved-banner li{display:flex;align-items:center;gap:.35rem}@media (max-width: 600px){.grid{--cell: calc((100vw - 1.5rem - 4px) / var(--cols))}.topbar .actions{margin-left:0}}
