/* Daily crosswords. The grid is a page of squared exercise paper in the friendship book; answers go in with the
   blue pen, checks with the red pen. Every block has a fixed size before the data arrives, so nothing moves. */
.kz-head{padding:14px 0 0}
.kz-head h1{font-size:clamp(1.6rem,4.4vw,3rem);margin:.1em 0 .25em}
.kz-text .lead{font-size:1.15rem;color:var(--ink-soft)}
.kz-head .crumbs,.kz-head .crumbs a{color:var(--ink-soft)}
.kz-app{padding:6px 0 26px}
.kz-layout{display:grid;gap:18px;grid-template-columns:minmax(0,1fr)}
.kz-main{min-width:0}
.kz-bar{display:flex;align-items:center;gap:8px 14px;min-height:52px}
.kz-tabs{display:flex;padding:3px;border:2px solid var(--ink);border-radius:999px;background:#fff}
.kz-tabs button{min-height:44px;min-width:76px;padding:0 16px;border:0;border-radius:999px;background:none;font-weight:700;font-size:1rem}
.kz-tabs button[aria-selected="true"]{background:var(--ink);color:#fff}
.kz-date{margin:0 0 6px;font-weight:700;font-size:1rem;min-height:1.6em;color:var(--ink-soft)}
.kz-icon{gap:6px}
.kz-date time{white-space:nowrap}
.kz-timer{display:flex;align-items:center;gap:6px;margin:0 0 0 auto;font-weight:700;font-variant-numeric:tabular-nums;min-width:4.6em}
.kz-tools{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 12px}
.kz-tool,.kz-menu summary{display:flex;align-items:center;min-height:44px;padding:0 16px;border:2px solid var(--ink);border-radius:999px;background:#fff;font-weight:700;font-size:1rem;color:var(--ink)}
.kz-tool:hover,.kz-menu summary:hover{background:#fff1bb}
.kz-tool[data-armed]{background:var(--wrong);border-color:var(--wrong);color:#fff}
.kz-menu{position:relative}
.kz-menu summary{list-style:none;cursor:pointer;gap:6px}
.kz-menu summary::-webkit-details-marker{display:none}
.kz-menu summary::after{content:"";width:8px;height:8px;border:solid currentColor;border-width:0 2px 2px 0;transform:translateY(-2px) rotate(45deg)}
.kz-menu[open] summary{background:var(--fill-1)}
.kz-menu-list{position:absolute;z-index:4;top:calc(100% + 6px);left:0;display:grid;min-width:150px;padding:6px;background:#fff;border:2px solid var(--ink);border-radius:12px;box-shadow:6px 8px 0 #20124d24}
.kz-menu-list button{min-height:44px;padding:0 12px;border:0;border-radius:8px;background:none;text-align:left;font-weight:700;font-size:1rem}
.kz-menu-list button:hover,.kz-menu-list button:focus-visible{background:#fff1bb}

/* The board: a fixed square, the cells sized by the grid's own width. */
.kz-board-wrap{position:relative;width:100%;max-width:560px;aspect-ratio:1;container-type:inline-size}
/* The paper is a real image so the board paints at first render. */
.kz-paper{position:absolute;inset:0;width:100%;height:100%;border-radius:6px 18px 18px 6px;box-shadow:var(--shadow-page)}
.kz-board{--n:9;position:relative;display:grid;grid-template-columns:repeat(var(--n),1fr);grid-template-rows:repeat(var(--n),1fr);width:100%;height:100%;padding:4px;border-radius:6px 18px 18px 6px;outline-offset:4px;touch-action:manipulation;user-select:none;-webkit-user-select:none}
.kz-row{display:contents}
.kz-board:focus{outline:none}
.kz-board:focus-visible{outline:3px solid var(--focus)}
.kz-cell{position:relative;display:flex;align-items:center;justify-content:center;margin:1px;background:#fff;border:2px solid var(--ink);border-radius:3px;cursor:pointer;font-weight:700;color:var(--pen-2);font-size:calc(100cqw / var(--n) * .52);line-height:1;text-transform:uppercase}
.kz-cell.kz-di{font-size:calc(100cqw / var(--n) * .38);letter-spacing:-.04em}
.kz-cell.kz-gap{border:0;background:transparent;cursor:default}
.kz-cell b{position:absolute;top:1px;left:2px;font-size:max(9px,calc(100cqw / var(--n) * .22));line-height:1;color:var(--ink);font-weight:700}
.kz-cell.is-word{background:#fff6c7}
.kz-cell.is-on{background:var(--fill-1);box-shadow:inset 0 0 0 2px var(--ink)}
.kz-cell.is-bad{color:var(--wrong)}
.kz-cell.is-bad::after{content:"";position:absolute;inset:18% auto auto 10%;width:80%;height:2px;background:var(--wrong);transform:translateY(calc(100cqw / var(--n) * .3)) rotate(-38deg)}
.kz-cell.is-ok{color:var(--right)}
.kz-cell.is-shown{color:var(--pen-4)}
.kz-cell.is-shown::before{content:"";position:absolute;right:2px;top:2px;width:0;height:0;border:solid transparent;border-width:0 7px 7px 0;border-right-color:var(--pen-4)}
.kz-app.is-done .kz-cell{color:var(--right)}
.kz-loading{position:absolute;inset:auto 0 46%;margin:0;text-align:center;font-weight:700;color:var(--ink-soft)}
.kz-loading button{margin-top:10px}

/* The clue being solved: two lines high, always. */
.kz-now{display:flex;align-items:flex-start;gap:10px;width:100%;max-width:560px;min-height:3.4em;margin:12px 0 10px;padding:8px 12px;border-left:5px solid var(--pen-1);background:#fff0f7;border-radius:0 10px 10px 0;font-size:1.02rem;line-height:1.35}
.kz-now b{flex:none;min-width:2.6em;color:var(--pen-1)}
.kz-now span{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* Letters: the whole alphabet, eight to a row, in its own order so the digraphs sit where readers expect them. */
.kz-keys{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:5px;width:100%;max-width:560px}
.kz-keys button{min-height:46px;padding:0;border:2px solid var(--ink);border-radius:8px;background:#fff;font-weight:700;font-size:1.05rem;color:var(--ink);box-shadow:0 2px 0 var(--ink);touch-action:manipulation}
.kz-keys button:active{transform:translateY(2px);box-shadow:none}
.kz-keys .kz-di{font-size:.95rem;letter-spacing:-.03em;background:#eef3ff}
.kz-keys [data-key="back"],.kz-keys [data-key="dir"]{background:var(--fill-1);display:flex;align-items:center;justify-content:center}
.kz-status{max-width:560px;min-height:1.6em;margin:10px 0 0;font-weight:700}
.kz-status.is-good{color:var(--right)}
.kz-status.is-bad{color:var(--wrong)}

/* Clue lists in a box of fixed height, so filling them never pushes the page. */
.kz-clues{display:grid;grid-template-columns:minmax(0,1fr);gap:0;height:22rem;overflow:auto;overscroll-behavior:contain;padding:4px 14px 14px;border:2px solid var(--ink);border-radius:6px 18px 18px 6px;background:#fff;scroll-padding:3rem 0 1rem}
.kz-list h2{position:sticky;top:-4px;z-index:1;margin:0;padding:10px 0 6px;background:#fff;font-size:1.15rem;letter-spacing:-.01em;border-bottom:2px dotted var(--dots)}
.kz-list ol{list-style:none;margin:0;padding:0}
.kz-list li button{display:flex;gap:10px;width:100%;min-height:44px;padding:8px 6px;border:0;border-bottom:1px dotted var(--dots);background:none;text-align:left;font-size:1rem;line-height:1.35;color:var(--ink)}
.kz-list li button b{flex:none;min-width:1.9em;color:var(--pen-1)}
.kz-list li button small{color:var(--ink-soft);font-size:.9rem;white-space:nowrap}
.kz-list li button:hover{background:#fff6c7}
.kz-list li button[aria-current="true"]{background:var(--fill-1)}
.kz-list li button.is-full{color:var(--ink-soft)}
.kz-list li button.is-full span{text-decoration:line-through;text-decoration-color:var(--pen-1)}

.kz-archive{margin-top:22px}
.kz-archive-title{font-size:1.25rem;margin:0 0 8px}
.kz-archive-row{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}
.kz-step{min-height:44px;padding:0 16px;border:2px solid var(--ink);border-radius:999px;background:#fff;font-weight:700;font-size:1rem}
.kz-step:disabled{opacity:.45}
.kz-pick{display:grid;gap:4px;font-size:.95rem;font-weight:700}
.kz-pick select{min-height:44px;min-width:12em;padding:0 10px;border:2px solid var(--ink);border-radius:8px;background:#fff;font-size:1rem;color:var(--ink)}
.kz-text h2{font-size:1.45rem;margin-top:1.3em}

/* Home page card */
.kz-home-card{display:flex;gap:18px;align-items:center;padding:18px;border:2px solid var(--ink);border-radius:6px 22px 22px 6px;background:#fff;text-decoration:none;color:var(--ink);box-shadow:var(--shadow-page)}
.kz-home-card:hover{background:#fffbe6}
.kz-home-grid{display:grid;grid-template-columns:repeat(3,26px);grid-template-rows:repeat(3,26px);gap:3px;flex:none}
.kz-home-grid i{border:2px solid var(--ink);border-radius:3px;background:#fff}
.kz-home-grid i:nth-child(2),.kz-home-grid i:nth-child(4){background:var(--ink)}
.kz-home-grid i:nth-child(5){background:var(--fill-1)}
.kz-home-text{display:grid;gap:4px}
.kz-home-text small{font-weight:700;color:var(--pen-1);font-size:.95rem}
.kz-home-text b{font-size:1.45rem;letter-spacing:-.02em;line-height:1.1}
.kz-home-text em{font-style:normal;font-weight:700;color:var(--pen-2);text-decoration:underline;text-underline-offset:3px}

@media(min-width:980px){
 .kz-layout{grid-template-columns:minmax(0,560px) minmax(300px,1fr);align-items:start;gap:28px}
 .kz-clues{height:auto;max-height:none;position:relative}
 .kz-layout>.kz-clues{align-self:stretch;height:0;min-height:100%}
}
@media(min-width:1180px){.kz-clues{grid-template-columns:1fr 1fr;gap:0 18px}.kz-list h2{top:-4px}}
@media(max-width:420px){
 .kz-app .wrap,.kz-head .wrap{padding:0 12px}
 .kz-keys{gap:4px}
 .kz-keys button{min-height:44px;font-size:1rem}
 .kz-keys .kz-di{font-size:.86rem}
 .kz-tabs button{min-width:64px;padding:0 12px}
 .kz-tools{gap:6px}
 .kz-tool,.kz-menu summary{padding:0 10px}
 .kz-menu summary{gap:4px}
 .kz-icon{width:44px;padding:0;justify-content:center}
 .kz-icon span{display:none}
 .kz-home-card{flex-direction:column;align-items:flex-start}
}
@media(prefers-reduced-motion:reduce){.kz-keys button:active{transform:none}}

/* Print: a clean empty grid with numbers and every clue, nothing else. */
@media print{
 @page{margin:12mm}
 body{background:#fff;color:#000;font-size:10.5pt}
 .skip,.site-head,.site-foot,.kz-head .crumbs,.kz-head .lead,.kz-tools,.kz-tabs,.kz-timer,.kz-keys,.kz-now,.kz-status,.kz-archive,.kz-text,.faq,.kz-loading,.vmf-consent,ins.adsbygoogle,iframe,.google-auto-placed{display:none!important}
 .kz-head{padding:0}
 .kz-head h1{font-size:16pt;margin:0 0 2mm}
 .kz-bar{min-height:0;margin-bottom:3mm}
 .kz-layout{display:block}
 .kz-board-wrap{width:120mm;max-width:none;margin:0 0 5mm;break-inside:avoid}
 .kz-paper{display:none}
 .kz-board{box-shadow:none;background-image:none;padding:0;outline:none!important}
 .kz-cell{color:transparent!important;background:#fff!important;box-shadow:none!important;border:1.5px solid #000}
 .kz-cell::before,.kz-cell::after{display:none}
 .kz-cell b{color:#000}
 .kz-cell.kz-gap{border:0}
 .kz-clues{display:block;height:auto!important;min-height:0!important;overflow:visible;border:0;padding:0;columns:2;column-gap:8mm}
 .kz-list{break-inside:auto}
 .kz-list h2{position:static;font-size:12pt;border:0;padding:0 0 1mm}
 .kz-list li button{min-height:0;padding:.6mm 0;border:0;font-size:10pt;color:#000}
 .kz-list li button.is-full span{text-decoration:none}
 .kz-list li button[aria-current="true"]{background:none}
}
