:root{--ink: #111;--muted: #6b6b6b;--paper: #fff;--cell-max: 46px;--serif: Georgia, "Iowan Old Style", "Times New Roman", Times, serif}*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--paper);color:var(--ink);font-family:var(--serif);-webkit-text-size-adjust:100%}button{font-family:inherit;color:inherit;cursor:pointer}.sheet{max-width:1000px;margin:0 auto;padding:28px 20px 12px}.masthead{text-align:center;border-bottom:2px solid var(--ink);padding-bottom:14px;margin-bottom:22px}.masthead__title{margin:0;font-size:clamp(28px,8vw,44px);font-weight:700;letter-spacing:.42em;text-transform:uppercase;text-indent:.42em}.masthead__theme{margin:8px 0 0;font-size:15px;font-style:italic;letter-spacing:.02em}.masthead__subtitle{margin:2px 0 0;font-size:13px;color:var(--muted)}.masthead__code{margin:8px 0 0;font-size:10px;letter-spacing:.16em;color:var(--muted);text-transform:uppercase}.layout{display:flex;flex-direction:column;gap:22px;align-items:center}.layout__grid,.layout__clues{width:100%}@media(min-width:860px){.layout{flex-direction:row;align-items:flex-start;gap:40px}.layout__grid{flex:0 0 calc(var(--cell-max) * var(--columns));max-width:100%}.layout__clues{flex:1;min-width:0}.current{display:none}}.grid{display:grid;grid-template-columns:repeat(var(--columns),1fr);gap:2px;margin:0 auto;width:100%;max-width:calc(var(--cell-max) * var(--columns))}.cell{aspect-ratio:1;padding:0;border:none;background:none}.cell--blocked{visibility:hidden}.cell--active{position:relative;display:flex;align-items:center;justify-content:center;border:1.5px solid var(--ink);background:var(--paper);transition:box-shadow .12s ease}.cell__number{position:absolute;top:1px;left:2px;font-size:9px;line-height:1;color:var(--muted)}.cell__letter{font-size:clamp(14px,4.4vw,22px);line-height:1;text-transform:uppercase}.cell--locked .cell__letter{color:var(--muted)}.cell--solved .cell__letter{font-weight:700}.cell--focused{box-shadow:inset 0 0 0 3px var(--ink);z-index:1}.cell--shake{animation:shake .36s ease}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-4px)}40%{transform:translate(4px)}60%{transform:translate(-3px)}80%{transform:translate(2px)}}.current{display:flex;gap:10px;align-items:baseline;margin-top:18px;padding:10px 12px;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);font-size:15px}.current__number{font-weight:700}.clues{list-style:none;margin:0;padding:0}.clue{border-bottom:1px solid #e2e2e2}.clue__button{display:flex;gap:10px;align-items:baseline;width:100%;padding:9px 4px;border:none;background:none;text-align:left;font-size:15px;line-height:1.4}.clue__number{min-width:16px;font-weight:700;font-size:13px}.clue--current .clue__button{background:#f2f2f2}.clue--solved .clue__text{color:var(--muted);text-decoration:line-through}.finished{margin-top:18px;padding:16px 12px;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);text-align:center}.finished__note{margin:0;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--muted)}.finished__line{margin:10px 0 0;font-size:clamp(16px,4.2vw,21px);font-style:italic;line-height:1.4}.controls{display:flex;gap:10px;justify-content:center;margin:22px 0 0}.control{display:inline-flex;gap:7px;align-items:baseline;padding:8px 18px;border:1.5px solid var(--ink);background:var(--paper);font-size:14px}.control:disabled{color:var(--muted);border-color:#cfcfcf;cursor:default}.control__count{font-size:11px;color:var(--muted)}.keyboard{position:sticky;bottom:0;display:flex;flex-direction:column;gap:6px;margin-top:24px;padding:8px 0 max(8px,env(safe-area-inset-bottom));background:var(--paper);border-top:1px solid var(--ink)}.keyboard__row{display:flex;gap:4px;justify-content:center}.key{flex:1 1 0;max-width:40px;padding:11px 0;border:1px solid var(--ink);background:var(--paper);font-size:14px;text-transform:uppercase}.key--wide{max-width:52px}.key:active{background:#ededed}.key:disabled{color:var(--muted);border-color:#cfcfcf}@media(min-width:860px){.keyboard{display:none}}@media print{@page{margin:16mm}:root{--cell-max: 40px}.keyboard,.controls,.current,.finished{display:none}.sheet{max-width:none;padding:0}.layout{display:flex;flex-direction:row;align-items:flex-start;gap:12mm}.layout__grid{flex:0 0 calc(var(--cell-max) * var(--columns));width:auto}.layout__clues{flex:1;min-width:0}.cell--active{-webkit-print-color-adjust:exact;print-color-adjust:exact}.cell--focused{box-shadow:none}.cell--locked .cell__letter,.clue--solved .clue__text{color:var(--ink);text-decoration:none}.clue--current .clue__button{background:none}.clue{border-bottom:none}.clue__button{padding:3px 0}}
