1<!DOCTYPE html> 2<html lang="en"> 3 4<head> 5 <title>News Crossword</title> 6 <meta charset="UTF-8" /> 7 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 8 <meta http-equiv="X-UA-Compatible" content="ie=edge" /> 9 <link rel="shortcut icon" href="favicon.png" > 10 <!-- <meta name='twitter:card' content='summary_large_image' /> 11 <meta name='twitter:creator' content='codenberg' /> 12 <meta name='twitter:title' content='Svelte Crossword' /> 13 <meta name='twitter:description' content='Svelte crossword puzzle component' /> 14 <meta name='twitter:image:src' content='https://russellgoldenberg.github.io/svelte-crossword/og.png' /> --> 15 16 <link rel="stylesheet" href="global.css" /> 17 <link rel="stylesheet" href="build/bundle.css" /> 18 19 <style> 20 /* On-screen keyboard on a phone or tablet held SIDEWAYS (reported by WJCT, 2026-09-18). 21 The keyboard only exists on touch devices. When the screen is wide enough for the grid 22 and clues to sit side by side, the bundle squeezed it into a thin third column between 23 them, where it was cut off and covered the clues. Here it moves into the clues column, 24 above the clue list, at that column's full width. Portrait (".stacked") and desktop 25 (no keyboard at all) are untouched. The bundle has no source, hence a page-level fix. */ 26 .play:not(.stacked):has(> div.keyboard:not(.fixed-bottom)) { 27 display: grid; 28 grid-template-columns: minmax(0, 1fr) minmax(300px, 42%); 29 grid-template-rows: auto 1fr; 30 column-gap: 24px; 31 align-items: start; 32 } 33 .play:not(.stacked):has(> div.keyboard:not(.fixed-bottom)) > .puzzle { grid-column: 1; grid-row: 1 / 3; } 34 .play:not(.stacked) > div.keyboard:not(.fixed-bottom) { grid-column: 2; grid-row: 1; margin: 16px 0 12px; } 35 .play:not(.stacked):has(> div.keyboard:not(.fixed-bottom)) > .clues { grid-column: 2; grid-row: 2; margin: 0; } 36 </style> 37 38 <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous"> 39
39<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
39 40 41 <!-- 1f9a8700-1de1-11eb-9af0-ffe3209cc5bb.png --> 42 43 44
44<script> 45 /* The colour behind the puzzle, set per customer on the Background & Header screen. 46 Painting the page does NOT touch the crossword's own --bg-color, so the squares stay 47 white and still read as boxes you can type in. Fails silently: the worst case is the 48 white background every customer has today. */ 49 (function () { 50 try { 51 /* A customer is reached either as newscrossword.ai/<slug> or on their own 52 subdomain, <slug>.newscrossword.ai, so look in both places. */ 53 var slug = location.pathname.replace(/^\/+|\/+$/g, '').split('/')[0]; 54 if (!slug) { 55 var host = location.hostname.split('.'); 56 if (host.length > 2 && host[0] !== 'www') { slug = host[0]; } 57 } 58 if (!slug) { return; } 59 fetch('/member-area/api/get-company-url?url=' + encodeURIComponent(slug)) 60 .then(function (r) { return r.json(); }) 61 .then(function (d) { 62 var raw = d && d.HeaderCustomize && d.HeaderCustomize.page_background_color; 63 if (typeof raw !== 'string') { return; } 64 raw = raw.trim(); 65 if (!/^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/.test(raw)) { return; } 66 var colour = '#' + raw.replace('#', ''); 67 document.documentElement.style.setProperty('background-color', colour, 'important'); 68 if (document.body) { document.body.style.setProperty('background-color', colour, 'important'); } 69 }) 70 .catch(function () {}); 71 } catch (e) {} 72 })(); 73 </script>
73 74</head> 75 76<body> 77 <main> 78 <!-- HTML --> 79 </main> 80
80<script type="text/javascript" src="build/bundle.js" defer ></script>
80 81</body> 82 83
84<script type="text/javascript" src="https://pym.nprapps.org/pym.v1.min.js"></script>
vendor: 1 bytes, line 84
84
85<script> 86 pymChild = new pym.Child({ 87 id: 'tnq-container', 88 polling: 500 89 }); 90 </script>
90 91</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.