PageSourceSearch

https://poncacitynews.com/search

html poncacitynews.com collected 2026-10-02 10:58:39 UTC 122,104 bytes, 4,096 lines download raw bytes

1  <!doctype html>
2  <html lang="en">
3
4  <head>
5    <meta charset="utf-8">
6    <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
8    <meta name="robots" content="noindex,follow">
9          <meta name="description" content="Search articles and issue pages from Ponca City News.">
10                  <link rel="canonical" href="https://www.poncacitynews.com/search">
11        
12    <link rel="apple-touch-icon" sizes="57x57" href="/ui/icons/default3/apple-icon-57x57.png">
13    <link rel="apple-touch-icon" sizes="60x60" href="/ui/icons/default3/apple-icon-60x60.png">
14    <link rel="apple-touch-icon" sizes="72x72" href="/ui/icons/default3/apple-icon-72x72.png">
15    <link rel="apple-touch-icon" sizes="76x76" href="/ui/icons/default3/apple-icon-76x76.png">
16    <link rel="apple-touch-icon" sizes="114x114" href="/ui/icons/default3/apple-icon-114x114.png">
17    <link rel="apple-touch-icon" sizes="120x120" href="/ui/icons/default3/apple-icon-120x120.png">
18    <link rel="apple-touch-icon" sizes="144x144" href="/ui/icons/default3/apple-icon-144x144.png">
19    <link rel="apple-touch-icon" sizes="152x152" href="/ui/icons/default3/apple-icon-152x152.png">
20    <link rel="apple-touch-icon" sizes="180x180" href="/ui/icons/default3/apple-icon-180x180.png">
21    <link rel="icon" type="image/png" sizes="192x192" href="/ui/icons/default3/android-icon-192x192.png">
22    <link rel="icon" type="image/png" sizes="32x32" href="/ui/icons/default3/favicon-32x32.png">
23    <link rel="icon" type="image/png" sizes="96x96" href="/ui/icons/default3/favicon-96x96.png">
24    <link rel="icon" type="image/png" sizes="16x16" href="/ui/icons/default3/favicon-16x16.png">
25    <link rel="manifest" href="/manifest.json">
26    <meta name="msapplication-TileColor" content="#ffffff">
27    <meta name="msapplication-TileImage" content="/ui/icons/default3/ms-icon-144x144.png">
28    <meta name="theme-color" content="#ffffff">
29
30    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" integrity="sha256-2FMn2Zx6PuH5tdBQDRNwrOo60ts5wWPC9R8jK67b3t4=" crossorigin="anonymous">
31
32    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/fontawesome.min.css" integrity="sha256-G5bovI+uHM2gCO6EwO9PFQcclSBYzTaxY6DXks3YxBU=" crossorigin="anonymous">
33
34    <link rel="preconnect" href="https://fonts.googleapis.com">
35    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
36    <link href="https://fonts.googleapis.com/css2?family=League+Gothic&family=Lora:ital,wght@0,400..700;1,400..700&family=Roboto+Condensed:ital,wght@0,100..900;1,100..900&display=swap" rel="stylesheet">
37
38    
38<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.7.1/jquery.min.js" integrity="sha512-v2CJ7UaYy4JwqLDIrZUI/4hqeoQieOmAZNXBeQyjo21dadnwR+8ZaIJVT8EE2iyI61OV8e6M8PP2/4hpQINQ/g==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
38
39
40          
40<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-8317400995054712"
41        crossorigin="anonymous"></script>
41
42    
43    
44    <style>
45
46    </style>
47
48    <style>
49  :root {
50    --font-display: "League Gothic", sans-serif;
51    --font-head: "Roboto Condensed", sans-serif;
52    --font-body: "Lora", Georgia, "Iowan Old Style", "Times New Roman", serif;
53
54    --ink: #1a1a1a;
55    --ink-muted: #5f6672;
56    --ink-faint: #8a8f98;
57    --rule: #e2e5e9;
58    --surface-soft: #f6f7f9;
59    --accent: #0b5ed7;
60
61    --sp-1: 0.25rem;
62    --sp-2: 0.5rem;
63    --sp-3: 0.75rem;
64    --sp-4: 1rem;
65    --sp-5: 1.5rem;
66    --sp-6: 2rem;
67    --sp-7: 3rem;
68
69    --r-sm: 4px;
70    --r-md: 8px;
71    --r-lg: 14px;
72    --r-pill: 999px;
73
74    --accent-tint: #e8f0fe;
75
76    --header-h: 56px;
77  }
78
79  html {
80    /* Anchor links and scrollIntoView() stop below the fixed header. */
81    scroll-padding-top: calc(var(--header-h) + 10px);
82  }
83
84  body {
85    padding: 0;
86    margin: 0;
87    background: #fff;
88  }
89
90  .skipLink {
91    position: absolute;
92    top: 8px;
93    left: 8px;
94    z-index: 3000;
95    padding: 10px 16px;
96    border-radius: var(--r-md);
97    background: #fff;
98    color: var(--accent);
99    font-weight: 700;
100    box-shadow: 0 2px 10px rgba(0, 0, 0, .25);
101    transform: translateY(-200%);
102  }
103
104  .skipLink:focus {
105    transform: none;
106  }
107
108  body.overlayOpen {
109    position: fixed;
110    left: 0;
111    right: 0;
112    width: 100%;
113    overflow: hidden;
114  }
115
116  input[type=text],
117  input[type=email],
118  input[type=tel],
119  textarea {
120    border-color: #444 !important;
121  }
122
123  h1,
124  h2,
125  h3,
126  h4 {
127    font-family: "League Gothic", sans-serif;
128    font-optical-sizing: auto;
129    font-weight: 400;
130    font-style: normal;
131    font-variation-settings: "wdth" 100;
132  }
133
134  .league-gothic {
135    font-family: "League Gothic", sans-serif;
136    font-optical-sizing: auto;
137    font-weight: 400;
138    font-style: normal;
139    font-variation-settings: "wdth" 100;
140  }
141
142  #areaToolbar {
143    background: var(--accent);
144    color: #fff;
145    height: 44px;
146
147    position: fixed;
148    bottom: 0px;
149    left: 0px;
150    width: 100%;
151    z-index: 2005;
152  }
153
154  #areaToolbarButtons {
155    position: absolute;
156    top: 0px;
157    left: 0px;
158
159    display: table;
160    width: 100%;
161
162    font-size: 1.2em;
163    font-weight: bold;
164    vertical-align: middle;
165    line-height: 44px;
166    text-align: center;
167  }
168
169  #areaToolbarButtons>div {
170    display: table-cell;
171  }
172
173  #areaToolbarButtons a {
174    display: block;
175    color: #fff;
176    text-align: center;
177    text-decoration: none;
178  }
179
180  #areaApp {
181    font-size: 0.9em;
182  }
183
184  #areaMenu {
185    display: none;
186    background: #fff;
187    position: absolute;
188    top: 0px;
189    right: 0px;
190    width: 250px;
191    bottom: 0px;
192    border-right: 1px solid #000;
193    z-index: 2005;
194  }
195
196  #areaMenu .listMenuFormat {
197    margin: 0;
198    padding: 0;
199    list-style-type: none;
200  }
201
202  #areaMenu .listMenuFormat div {
203    font-size: 15px;
204    font-weight: 600;
205    overflow: hidden;
206    white-space: nowrap;
207  }
208
209  #areaMenu .listMenuFormat .icon {
210    font-size: 15px;
211    vertical-align: middle;
212  }
213
214  #areaMenu .listMenuFormat a {
215    display: block;
216    color: #000;
217    text-decoration: none;
218    padding: 10px;
219    border-bottom: 1px solid #aaa;
220  }
221
222  #btnMenu {
223    position: absolute;
224    top: 6px;
225    right: 10px;
226    font-size: 1.3em;
227    color: #fff;
228    cursor: pointer;
229    cursor: hand;
230  }
231
232  #areaHeader {
233    position: fixed;
234    top: 0px;
235    left: 0px;
236    right: 0px;
237    width: 100%;
238    height: var(--header-h);
239
240    background: #fff;
241    border-bottom: 1px solid #aaa;
242    z-index: 1001;
243  }
244
245  /* The masthead sits in the middle column and the side columns share the rest
246     equally, so it stays centered without measuring anything in JS. */
247  #cellHeader {
248    display: grid;
249    grid-template-columns: minmax(max-content, 1fr) auto minmax(max-content, 1fr);
250    align-items: center;
251    gap: 8px;
252    height: 100%;
253    max-width: 1350px;
254    margin: 0px auto;
255    padding: 0px 8px;
256    overflow: hidden;
257
258    color: #000;
259
260    font-size: 20px;
261    font-weight: bold;
262  }
263
264  #cellHeader .cardLeft,
265  #cellHeader .cardRight {
266    display: flex;
267    align-items: center;
268    gap: 8px;
269    white-space: nowrap;
270  }
271
272  #cellHeader .cardRight {
273    justify-content: flex-end;
274  }
275
276  #cellHeader a {
277    color: #000;
278    text-decoration: none;
279  }
280
281  /* Outlined icon buttons: a 40px box with the tap area extended to 44px. */
282  #cellHeader .btnMenu,
283  #cellHeader .btnSidebar {
284    position: relative;
285    align-items: center;
286    justify-content: center;
287    gap: 7px;
288    min-width: 40px;
289    height: 40px;
290    padding: 0px 11px;
291    border: 1px solid #c9ced6;
292    border-radius: var(--r-md);
293    background: #fff;
294    box-shadow: 0 1px 2px rgba(16, 24, 40, 0.06);
295    color: var(--ink);
296    font-family: var(--font-head);
297    font-size: 16px;
298    font-weight: 600;
299    line-height: 1;
300    transition: background-color 0.15s ease-out, border-color 0.15s ease-out;
301  }
302
303  #cellHeader .btnMenu::after,
304  #cellHeader .btnSidebar::after {
305    content: "";
306    position: absolute;
307    inset: -3px;
308  }
309
310  #cellHeader .btnMenu svg,
311  #cellHeader .btnSidebar svg {
312    font-size: 17px;
313  }
314
315  #cellHeader .btnMenu:hover,
316  #cellHeader .btnSidebar:hover {
317    border-color: #9aa1ab;
318    background: var(--surface-soft);
319    color: var(--ink);
320  }
321
322  #cellHeader .btnMenu:active,
323  #cellHeader .btnSidebar:active {
324    background: var(--rule);
325  }
326
327  #cellHeader .btnMenu:focus-visible,
328  #cellHeader .btnSidebar:focus-visible {
329    outline: 2px solid var(--accent);
330    outline-offset: 2px;
331  }
332
333  #cellHeader .mastLink {
334    display: flex;
335    align-items: center;
336    justify-content: center;
337    min-width: 0;
338    height: 100%;
339  }
340
341  .mastImage {
342    display: block;
343    width: auto;
344    height: calc(var(--header-h) - 12px);
345    max-width: 100%;
346    object-fit: contain;
347  }
348
349  .mastText {
350    overflow: hidden;
351    font-family: var(--font-display);
352    font-size: calc(var(--header-h) * 0.55);
353    font-weight: 400;
354    line-height: 1;
355    text-overflow: ellipsis;
356    white-space: nowrap;
357  }
358
359  .weatherBadge {
360    align-items: center;
361    gap: 6px;
362    color: #000;
363    text-decoration: none;
364    line-height: 1.1;
365  }
366
367  .weatherHeader {
368    display: none !important;
369    font-size: 15px;
370    font-weight: 700;
371    padding: 7px 9px !important;
372    border: 1px solid #bbb;
373    border-radius: 6px;
374    background: rgba(255, 255, 255, 0.88);
375    z-index: 1001;
376  }
377
378  .weatherSidebar {
379    display: flex;
380    flex-wrap: wrap;
381    justify-content: center;
382    margin-bottom: 1rem;
383    padding: 10px;
384    border: 1px solid #bbb;
385    border-radius: 6px;
386    background: #fff;
387    text-align: center;
388  }
389
390  .puzzlesCard {
391    margin-bottom: 1rem;
392    overflow: hidden;
393    border: 1px solid #91d5aa;
394    border-radius: 12px;
395  }
396
397  .puzzlesCardHeader {
398    display: flex;
399    flex-wrap: wrap;
400    align-items: center;
401    justify-content: space-between;
402    gap: 10px;
403    padding: 8px 14px;
404    background: linear-gradient(135deg, #137a43 0%, #249b58 100%);
405    color: #fff;
406  }
407
408  .puzzlesCardLabel {
409    color: #fff;
410    font-size: 11px;
411    font-weight: 700;
412    letter-spacing: 0.8px;
413    text-transform: uppercase;
414    text-decoration: none;
415  }
416
417  .puzzlesCardLabel:hover,
418  .puzzlesCardLabel:focus {
419    color: #fff;
420    text-decoration: underline;
421  }
422
423  .puzzlesCardToday {
424    font-size: 13px;
425    white-space: nowrap;
426  }
427
428  .puzzlesCardBody {
429    padding: 14px 16px;
430    background: linear-gradient(180deg, #edf9f0 0%, #fff 60%);
431  }
432
433  .puzzlesCardHeadline {
434    margin-bottom: 4px;
435    color: #146c43;
436    font-size: 1.2rem;
437    font-weight: 700;
438    line-height: 1.35;
439  }
440
441  .puzzlesCardMeta {
442    color: #527060;
443    font-size: 13px;
444  }
445
446  /* One picture tile per game; three across even on phones. */
447  .puzzlesCardGames {
448    display: grid;
449    grid-template-columns: repeat(auto-fit, minmax(84px, 1fr));
450    gap: 8px;
451    margin-top: 10px;
452  }
453
454  .puzzlesCardGame {
455    display: flex;
456    flex-direction: column;
457    align-items: center;
458    gap: 4px;
459    padding: 8px 6px 10px;
460    border: 1px solid #cfe8d8;
461    border-radius: 12px;
462    background: #fff;
463    color: #1d3b2a;
464    text-align: center;
465    text-decoration: none;
466    transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
467  }
468
469  .puzzlesCardGame:hover,
470  .puzzlesCardGame:focus-visible {
471    border-color: #198754;
472    box-shadow: 0 4px 12px rgba(20, 108, 67, 0.18);
473    color: #1d3b2a;
474    text-decoration: none;
475  }
476
477  .puzzlesCardGameArt {
478    width: 100%;
479    max-width: 112px;
480    height: auto;
481    aspect-ratio: 1;
482    border-radius: 10px;
483  }
484
485  .puzzlesCardGameTitle {
486    font-size: 14px;
487    font-weight: 700;
488    line-height: 1.2;
489  }
490
491  .puzzlesCardGameStatus {
492    color: #198754;
493    font-size: 12px;
494    font-weight: 600;
495    white-space: nowrap;
496  }
497
498  .puzzlesCardGame--started .puzzlesCardGameStatus {
499    color: #805900;
500  }
501
502  .puzzlesCardGame--done {
503    background: #e9f7ef;
504  }
505
506  .puzzlesCardGame--unavailable .puzzlesCardGameStatus {
507    color: #68717d;
508  }
509
510  .puzzlesCardGameName {
511    padding: 8px 12px;
512    border: 1px solid #91d5aa;
513    border-radius: 999px;
514    color: #146c43;
515    font-size: 13px;
516    font-weight: 700;
517  }
518
519  .weatherSidebar .weatherTemp {
520    font-size: 26px;
521    font-weight: 700;
522  }
523
524  .weatherSidebar .weatherCondition {
525    flex-basis: 100%;
526    margin-top: 4px;
527    font-size: 14px;
528  }
529
530  .weatherAlertIndicator {
531    display: inline-flex;
532    align-items: center;
533    gap: 4px;
534    color: #9a3412;
535  }
536
537  .weatherHeader .weatherAlertText {
538    display: none;
539  }
540
541  .weatherSidebar .weatherAlertIndicator {
542    flex-basis: 100%;
543    justify-content: center;
544    margin-top: 4px;
545    font-size: 13px;
546    font-weight: 700;
547  }
548
549  .weatherPage h2 {
550    font-size: 1.45rem;
551  }
552
553  .weatherAlertList {
554    display: grid;
555    gap: 12px;
556  }
557
558  .weatherAlertCard {
559    border: 1px solid #e6c86b;
560    border-radius: 14px;
561    background: linear-gradient(180deg, #fffaf0 0%, #fffdf7 100%);
562    overflow: hidden;
563  }
564
565  .weatherAlertSummary {
566    list-style: none;
567    cursor: pointer;
568    padding: 16px;
569  }
570
571  .weatherAlertSummary::-webkit-details-marker {
572    display: none;
573  }
574
575  .weatherAlertHeader {
576    display: flex;
577    justify-content: space-between;
578    gap: 12px;
579    align-items: flex-start;
580  }
581
582  .weatherAlertTitle {
583    font-size: 1.1rem;
584    font-weight: 700;
585    color: #6d4c00;
586  }
587
588  .weatherAlertBadges {
589    display: flex;
590    flex-wrap: wrap;
591    gap: 8px;
592    justify-content: flex-end;
593  }
594
595  .weatherAlertBadge {
596    display: inline-flex;
597    align-items: center;
598    padding: 4px 10px;
599    border-radius: 999px;
600    background: #fff3cd;
601    color: #7a5700;
602    font-size: 12px;
603    font-weight: 700;
604    line-height: 1.2;
605  }
606
607  .weatherAlertBadgeSeverity {
608    background: #f8d7da;
609    color: #842029;
610  }
611
612  .weatherAlertMeta {
613    display: grid;
614    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
615    gap: 10px;
616    margin-top: 14px;
617  }
618
619  .weatherAlertMetaLabel {
620    display: block;
621    font-size: 12px;
622    text-transform: uppercase;
623    letter-spacing: .04em;
624    color: #8a6d1d;
625  }
626
627  .weatherAlertMetaValue {
628    display: block;
629    margin-top: 2px;
630    font-weight: 600;
631    color: #4d3b04;
632  }
633
634  .weatherAlertHint {
635    margin-top: 12px;
636    font-size: 13px;
637    font-weight: 600;
638    color: #7a5700;
639  }
640
641  .weatherAlertCard[open] .weatherAlertHint::before {
642    content: "Click to hide details";
643  }
644
645  .weatherAlertCard:not([open]) .weatherAlertHint::before {
646    content: "Click to read details";
647  }
648
649  .weatherAlertBody {
650    padding: 16px;
651    border-top: 1px solid #f1d98a;
652    color: #4d3b04;
653    line-height: 1.5;
654  }
655
656  .weatherAlertHeadline {
657    font-weight: 700;
658    margin-bottom: 12px;
659  }
660
661  .weatherCurrent {
662    padding: 20px;
663    border: 1px solid #dbe4ea;
664    border-radius: 18px;
665    background: linear-gradient(180deg, #f7fbff 0%, #ffffff 100%);
666    box-shadow: 0 8px 24px rgba(34, 62, 87, 0.05);
667  }
668
669  .weatherCurrentHero {
670    display: flex;
671    align-items: center;
672    gap: 14px;
673  }
674
675  .weatherCurrentIcon {
676    width: 74px;
677    height: 74px;
678    object-fit: contain;
679  }
680
681  .weatherCurrentTemp {
682    font-size: 54px;
683    line-height: 1;
684    font-weight: 700;
685  }
686
687  .weatherCurrentCondition {
688    font-size: 20px;
689    font-weight: 600;
690  }
691
692  .weatherCurrentDetails {
693    display: grid;
694    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
695    gap: 12px;
696    margin-top: 16px;
697  }
698
699  .weatherCurrentDetails>div {
700    padding: 12px 14px;
701    border: 1px solid #d8e3eb;
702    border-radius: 14px;
703    background: #fff;
704  }
705
706  .weatherDetailLabel {
707    display: block;
708    font-size: 13px;
709    color: #666;
710  }
711
712  .weatherDetailValue {
713    display: block;
714    font-weight: 700;
715  }
716
717  .weatherTodayHiLo,
718  .weatherForecastTemps {
719    display: flex;
720    gap: 12px;
721    font-weight: 700;
722  }
723
724  .weatherTodayHiLo {
725    font-size: 24px;
726  }
727
728  .weatherTodayPrecip {
729    margin-top: 8px;
730    font-size: 14px;
731    font-weight: 700;
732    color: #0b5ed7;
733  }
734
735  .weatherTodayForecast {
736    padding: 18px 20px;
737    border: 1px solid #dbe4ea;
738    border-radius: 16px;
739    background: #fff;
740  }
741
742  .weatherTodayForecastHeader {
743    display: flex;
744    align-items: center;
745    justify-content: space-between;
746    gap: 12px;
747    margin-bottom: 8px;
748  }
749
750  .weatherForecastList {
751    display: grid;
752    grid-template-columns: 1fr;
753    gap: 12px;
754  }
755
756  .weatherForecastDay {
757    display: flex;
758    justify-content: space-between;
759    gap: 16px;
760    align-items: center;
761    padding: 14px 16px;
762    border: 1px solid #dbe4ea;
763    border-radius: 16px;
764    background: #fff;
765  }
766
767  .weatherForecastMain {
768    display: flex;
769    align-items: center;
770    gap: 12px;
771    min-width: 0;
772  }
773
774  .weatherForecastIcon {
775    width: 52px;
776    height: 52px;
777    object-fit: contain;
778    flex: 0 0 auto;
779  }
780
781  .weatherForecastName {
782    font-weight: 700;
783  }
784
785  .weatherForecastText {
786    color: #334;
787  }
788
789  .weatherForecastAside {
790    display: flex;
791    flex-direction: column;
792    align-items: flex-end;
793    gap: 8px;
794    flex: 0 0 auto;
795  }
796
797  .weatherForecastPrecip {
798    display: inline-flex;
799    align-items: center;
800    padding: 4px 10px;
801    border-radius: 999px;
802    background: #e7f1ff;
803    color: #0b5ed7;
804    font-size: 13px;
805    font-weight: 700;
806    line-height: 1.2;
807  }
808
809  @media (max-width: 767px) {
810    .weatherAlertHeader,
811    .weatherTodayForecastHeader,
812    .weatherForecastDay {
813      display: block;
814    }
815
816    .weatherAlertBadges,
817    .weatherForecastAside {
818      justify-content: flex-start;
819      align-items: flex-start;
820      margin-top: 10px;
821    }
822
823    .weatherCurrentHero {
824      align-items: flex-start;
825    }
826
827    .weatherCurrentIcon {
828      width: 64px;
829      height: 64px;
830    }
831
832    .weatherForecastMain {
833      margin-bottom: 10px;
834    }
835  }
836
837  .wxStoryCard {
838    border-radius: 12px;
839    overflow: hidden;
840    border: 1px solid #b8d4ea;
841  }
842
843  .wxStoryCardHeader {
844    display: flex;
845    justify-content: space-between;
846    align-items: center;
847    padding: 8px 14px;
848    background: linear-gradient(135deg, #1565a8 0%, #1e87cc 100%);
849    color: #fff;
850    gap: 10px;
851    flex-wrap: wrap;
852  }
853
854  .wxStoryCardHeader,
855  .wxStoryCardHeader:hover,
856  .wxStoryCardHeader:focus {
857    color: #fff;
858    text-decoration: none;
859  }
860
861  .wxStoryCardLabel {
862    font-size: 11px;
863    font-weight: 700;
864    text-transform: uppercase;
865    letter-spacing: 0.8px;
866    white-space: nowrap;
867  }
868
869  .wxStoryCardConditions {
870    display: flex;
871    align-items: center;
872    gap: 6px;
873    min-width: 0;
874  }
875
876  .wxStoryCardIcon {
877    width: 30px;
878    height: 30px;
879    object-fit: contain;
880    flex-shrink: 0;
881  }
882
883  .wxStoryCardTemp {
884    font-size: 17px;
885    font-weight: 700;
886    white-space: nowrap;
887  }
888
889  .wxStoryCardCond {
890    font-size: 13px;
891    white-space: nowrap;
892    overflow: hidden;
893    text-overflow: ellipsis;
894  }
895
896  .wxStoryCardBody {
897    padding: 14px 16px;
898    background: linear-gradient(180deg, #f0f7fd 0%, #fff 60%);
899  }
900
901  .wxStoryCardHeadline {
902    display: block;
903    font-size: 1.2rem;
904    font-weight: 700;
905    line-height: 1.35;
906    color: #0b5ed7;
907    text-decoration: underline;
908    margin-bottom: 6px;
909  }
910
911  .wxStoryCardHeadline:hover {
912    color: #0a4fac;
913    text-decoration: underline;
914  }
915
916  .wxStoryCardMeta {
917    font-size: 12px;
918    color: #6c757d;
919  }
920
921  .wxStoryCardVideoBtn {
922    display: inline-flex;
923    align-items: center;
924    gap: 8px;
925    flex: 0 0 auto;
926    padding: 8px 16px;
927    border-radius: 999px;
928    background: #cc0000;
929    color: #fff;
930    font-size: 14px;
931    font-weight: 700;
932    text-decoration: none;
933    line-height: 1.2;
934    transition: background 0.15s ease-in-out;
935  }
936
937  .wxStoryCardVideoBtn:hover,
938  .wxStoryCardVideoBtn:focus {
939    background: #a30000;
940    color: #fff;
941    text-decoration: none;
942  }
943
944  .wxStoryCardVideoBtn i {
945    font-size: 18px;
946  }
947
948  #floatMenu {
949    padding: 10px 8px 16px;
950    text-align: left;
951  }
952
953  #floatMenu ul {
954    margin: 0px;
955    padding: 0px;
956    list-style: none;
957  }
958
959  /* Menu rows: 44px touch targets in the drawer, 38px on the desktop rail. */
960  .menuLink {
961    position: relative;
962    display: flex;
963    align-items: center;
964    gap: 10px;
965    width: 100%;
966    min-height: 44px;
967    padding: 0px 10px;
968    border: 0px;
969    border-radius: 6px;
970    background: none;
971    color: var(--ink);
972    font-family: var(--font-head);
973    font-size: 16px;
974    font-weight: 600;
975    line-height: 1.2;
976    text-align: left;
977    text-decoration: none;
978  }
979
980  .menuLink:hover {
981    background: var(--surface-soft);
982    color: var(--ink);
983  }
984
985  .menuLink:focus-visible,
986  .menuSubLink:focus-visible {
987    outline: 2px solid var(--accent);
988    outline-offset: -2px;
989  }
990
991  .menuIcon {
992    flex: 0 0 20px;
993    color: var(--ink-muted);
994    font-size: 15px;
995    text-align: center;
996  }
997
998  .menuLabel {
999    flex: 1 1 auto;
1000    min-width: 0;
1001    overflow: hidden;
1002    text-overflow: ellipsis;
1003    white-space: nowrap;
1004  }
1005
1006  .menuLink.active,
1007  .menuSubLink.active {
1008    background: var(--accent-tint);
1009    color: var(--accent);
1010  }
1011
1012  .menuLink.active::before,
1013  .menuSubLink.active::before {
1014    content: "";
1015    position: absolute;
1016    top: 6px;
1017    bottom: 6px;
1018    left: 0px;
1019    width: 3px;
1020    border-radius: 3px;
1021    background: var(--accent);
1022  }
1023
1024  .menuLink.active .menuIcon,
1025  .menuLink.activeParent,
1026  .menuLink.activeParent .menuIcon {
1027    color: var(--accent);
1028  }
1029
1030  .menuChevron {
1031    color: var(--ink-muted);
1032    font-size: 13px;
1033    transition: transform 0.15s ease-out;
1034  }
1035
1036  .btnMenuSections[aria-expanded="false"] .menuChevron {
1037    transform: rotate(-90deg);
1038  }
1039
1040  .menuGroupLabel {
1041    margin: 12px 10px 4px;
1042    color: var(--ink-muted);
1043    font-family: var(--font-head);
1044    font-size: 12px;
1045    font-weight: 700;
1046    line-height: 14px;
1047    letter-spacing: 0.08em;
1048    text-transform: uppercase;
1049  }
1050
1051  /* Section sub-items line up with the parent label, next to a thin guide rule. */
1052  #floatMenu .menuSubList {
1053    margin: 0px 0px 6px 19px;
1054    padding-left: 10px;
1055    border-left: 1px solid var(--rule);
1056  }
1057
1058  .menuSubLink {
1059    position: relative;
1060    display: flex;
1061    align-items: center;
1062    min-height: 44px;
1063    padding: 0px 10px;
1064    border-radius: 6px;
1065    color: var(--ink);
1066    font-family: var(--font-head);
1067    font-size: 15px;
1068    font-weight: 500;
1069    line-height: 1.2;
1070    text-decoration: none;
1071  }
1072
1073  .menuSubLink:hover {
1074    background: var(--surface-soft);
1075    color: var(--ink);
1076  }
1077
1078  #floatMenu .areaMenuClose .menuLink {
1079    color: var(--ink-muted);
1080  }
1081
1082  #floatSidebar {
1083    /*
1084    position: sticky;
1085    top: 0px;
1086    left: 0px;
1087    overflow-y: auto;
1088    height: calc(100vh - 55px);
1089    width: 100%;
1090    */
1091  }
1092
1093  #areaFooter {
1094    padding-top: 20px;
1095    padding-bottom: 20px;
1096    background: #000;
1097    color: #fff;
1098    min-height: 200px;
1099  }
1100
1101  #areaFooter a {
1102    color: #fff;
1103  }
1104
1105  .footerNav {
1106    column-count: 2;
1107    column-gap: 24px;
1108  }
1109
1110  .footerNavGroup {
1111    break-inside: avoid;
1112    margin-bottom: 14px;
1113  }
1114
1115  .footerNavLabel {
1116    margin-bottom: 4px;
1117    color: rgba(255, 255, 255, 0.7);
1118    font-size: 12px;
1119    font-weight: 700;
1120    letter-spacing: 0.08em;
1121    text-transform: uppercase;
1122  }
1123
1124  .footerNav ul {
1125    margin: 0px;
1126    padding: 0px;
1127    list-style: none;
1128  }
1129
1130  .footerNav li {
1131    padding: 3px 0px;
1132  }
1133
1134  .areaWithoutNews {
1135    display: block;
1136  }
1137
1138  .space {
1139    margin-bottom: 10px;
1140  }
1141
1142  #areaMainContent {
1143    margin-top: calc(var(--header-h) + 10px);
1144  }
1145
1146  #cellContent:focus {
1147    outline: none;
1148  }
1149
1150  #gridApp {
1151    margin: 0px auto;
1152    padding: 0px 10px;
1153    max-width: 1350px;
1154    min-height: 400px;
1155    display: grid;
1156    grid-template-columns: 100%;
1157    grid-template-rows: auto;
1158    grid-template-areas:
1159      "content";
1160    gap: 15px;
1161  }
1162
1163  #cellMenu {
1164    position: fixed;
1165    top: 0px;
1166    bottom: 0px;
1167    left: 0px;
1168    width: 250px;
1169    height: auto;
1170    max-height: 100dvh;
1171    overflow-y: auto;
1172    overscroll-behavior: contain;
1173    -webkit-overflow-scrolling: touch;
1174    touch-action: pan-y;
1175    padding-bottom: calc(60px + env(safe-area-inset-bottom, 0px));
1176    box-sizing: border-box;
1177    background: #fff;
1178    border-right: 1px solid #000;
1179    z-index: 2005;
1180    transition: transform 0.2s ease-out;
1181    transform: translateX(-100%);
1182  }
1183
1184  #cellSidebar {
1185    position: fixed;
1186    top: 0px;
1187    bottom: 0px;
1188    right: 0px;
1189    width: 88vw;
1190    max-width: 344px;
1191    height: auto;
1192    max-height: 100dvh;
1193    box-sizing: border-box;
1194    overflow-y: auto;
1195    overflow-x: hidden;
1196    overscroll-behavior: contain;
1197    -webkit-overflow-scrolling: touch;
1198    touch-action: pan-y;
1199    background: #fff;
1200    border-left: 1px solid #000;
1201    z-index: 2006;
1202    padding: 10px 15px calc(10px + env(safe-area-inset-bottom, 0px));
1203    transition: transform 0.2s ease-out;
1204    transform: translateX(100%);
1205  }
1206
1207  #cellMenu.visible,
1208  #cellSidebar.visible {
1209    transform: translateX(0);
1210  }
1211
1212  #btnCloseSidebar {
1213    display: block;
1214    text-align: right;
1215    font-size: 20px;
1216    padding-bottom: 10px;
1217  }
1218
1219  #cellBanner {
1220    grid-area: banner;
1221  }
1222
1223  #cellLowerBanner {
1224    grid-area: lowerBanner;
1225  }
1226
1227  #cellContent {
1228    grid-area: content;
1229  }
1230
1231  #cellHeader .btnMenu,
1232  #cellHeader .btnSidebar {
1233    display: inline-flex !important;
1234  }
1235
1236  #cellHeader .btnMenu .btnLabel {
1237    display: none;
1238  }
1239
1240  #areaMenuBlocker,
1241  #areaSidebarBlocker {
1242    position: fixed;
1243    top: 0px;
1244    left: 0px;
1245    right: 0px;
1246    bottom: 0px;
1247    background: rgba(0, 0, 0, 0.5);
1248    z-index: 1002;
1249
1250    opacity: 0;
1251    visibility: hidden;
1252    /* Prevents interaction when hidden */
1253    transition: opacity 0.1s ease-out;
1254    pointer-events: none;
1255    /* Clicks pass through when hidden */
1256  }
1257
1258  #areaMenuBlocker.visible,
1259  #areaSidebarBlocker.visible {
1260    opacity: 1;
1261    visibility: visible;
1262    pointer-events: auto;
1263  }
1264
1265  .zoneSda, .zoneSdaServe {
1266    margin-bottom: 15px;
1267  }
1268
1269  .zoneSdaLeaderboard {
1270    display: flex;
1271    align-items: center;
1272    justify-content: center;
1273  }
1274
1275  .zoneSdaLeaderboard > a {
1276    width: 100%;
1277  }
1278
1279  .zoneSdaLeaderboard img {
1280    width: auto;
1281    height: auto;
1282  }
1283
1284  .zoneSdaLeaderboard .localAdLeaderboardLink {
1285    display: inline-block;
1286    max-width: 100%;
1287  }
1288
1289  .zoneSdaLeaderboard .localAdLeaderboardImage {
1290    max-height: 150px;
1291    max-width: 100%;
1292  }
1293
1294  .localAdHtmlFrame {
1295    border: 0;
1296    display: block;
1297    height: 150px;
1298    max-width: 100%;
1299    pointer-events: none;
1300    width: 100%;
1301  }
1302
1303  .localAdSidebar .localAdHtmlFrame {
1304    height: 250px;
1305  }
1306
1307  .localAdInPage .localAdHtmlFrame {
1308    height: 120px;
1309  }
1310
1311  .advertisementWrapper {
1312    border: 1px solid #ccc;
1313    border-radius: 10px;
1314    padding: 5px;
1315    text-align: center;
1316    overflow: hidden;
1317    max-width: 100%;
1318  }
1319
1320  .googleAdWrapper,
1321  .googleAdWrapper .adsbygoogle,
1322  .googleAdWrapper iframe {
1323    max-width: 100% !important;
1324  }
1325
1326  .googleAdWrapper .adsbygoogle {
1327    display: block;
1328    overflow: hidden;
1329  }
1330
1331  .advertisementLabel {
1332    color: #444;
1333    font-size: 0.9em;
1334    padding-bottom: 5px;
1335    text-transform: uppercase;
1336  }
1337
1338  .popularArticles { margin-top: 20px; }
1339  .popularArticles .card-body { padding: 14px; }
1340  .popularArticles-heading { margin: 0 0 8px; font-family: "Roboto Condensed", sans-serif; font-size: 1.45rem; font-weight: 700; line-height: 1; }
1341  .popularArticles-list { margin: 0; padding: 0; list-style: none; }
1342  .popularArticles-item { border-top: 1px solid #d7d7d7; }
1343  .popularArticles-link { display: grid; grid-template-columns: 72px minmax(0, 1fr); gap: 10px; padding: 10px 0; color: #111; text-decoration: none; }
1344  .popularArticles-item--text .popularArticles-link { grid-template-columns: minmax(0, 1fr); }
1345  .popularArticles-image { display: block; width: 72px; height: 72px; object-fit: cover; }
1346  .popularArticles-copy { min-width: 0; }
1347  .popularArticles-headline { display: -webkit-box; overflow: hidden; font-family: "Roboto Condensed", sans-serif; font-size: 1.08rem; font-weight: 700; line-height: 1.08; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
1348  .popularArticles-date { display: block; margin-top: 5px; color: #666; font-size: .78rem; line-height: 1.2; }
1349  .popularArticles-link:hover .popularArticles-headline { text-decoration: underline; }
1350  .popularArticles-link:focus-visible { outline: 3px solid #1265a8; outline-offset: 2px; }
1351
1352  .breakingNewsBar {
1353    display: flex;
1354    align-items: stretch;
1355    background: #b00020;
1356    color: #fff;
1357    margin: 0 0 15px;
1358    min-height: 42px;
1359    overflow: hidden;
1360    border-radius: 3px;
1361    box-shadow: 0 2px 6px rgba(0, 0, 0, .15);
1362  }
1363
1364  .breakingNewsLabel {
1365    flex: 0 0 auto;
1366    display: flex;
1367    align-items: center;
1368    padding: 0 14px;
1369    background: #7f0017;
1370    font-weight: 800;
1371    text-transform: uppercase;
1372    white-space: nowrap;
1373  }
1374
1375  .breakingNewsItems {
1376    flex: 1 1 auto;
1377    min-width: 0;
1378    display: flex;
1379    align-items: center;
1380    overflow: hidden;
1381  }
1382
1383  .breakingNewsTrack {
1384    display: inline-flex;
1385    align-items: center;
1386    gap: 30px;
1387    min-width: 0;
1388    padding: 0 14px;
1389    white-space: nowrap;
1390  }
1391
1392  .breakingNewsTrack a {
1393    color: #fff;
1394    font-weight: 700;
1395    text-decoration: none;
1396  }
1397
1398  .breakingNewsTrack a::after {
1399    content: "\2022";
1400    margin-left: 30px;
1401    color: rgba(255, 255, 255, .75);
1402  }
1403
1404  .breakingNewsTrack a:last-child::after {
1405    content: "";
1406    margin-left: 0;
1407  }
1408
1409  .breakingNewsBar.isAnimated .breakingNewsTrack {
1410    min-width: max-content;
1411    padding-left: 100%;
1412    animation: breaking-news-scroll 28s linear infinite;
1413  }
1414
1415  .breakingNewsBar.isAnimated:hover .breakingNewsTrack {
1416    animation-play-state: paused;
1417  }
1418
1419  @keyframes breaking-news-scroll {
1420    from {
1421      transform: translateX(0);
1422    }
1423
1424    to {
1425      transform: translateX(-100%);
1426    }
1427  }
1428
1429  /* ARTICLES */
1430
1431  h2.textSection a {
1432    color: #000;
1433    text-decoration: none;
1434  }
1435
1436  .cardContent {
1437    padding-left: calc(var(--bs-gutter-x, 1.5rem) * .5);
1438    padding-right: calc(var(--bs-gutter-x, 1.5rem) * .5);
1439  }
1440
1441  .article {
1442    margin-bottom: 15px;
1443  }
1444
1445  .article .title {
1446    font-family: "Roboto Condensed", sans-serif;
1447  font-optical-sizing: auto;
1448  font-weight: bold;
1449  font-style: normal;
1450
1451    margin-bottom: 5px;
1452  }
1453
1454  .articleList .article a, .articleSmallList .article a {
1455    display: block;
1456    color: #000;
1457    text-decoration: none;
1458  }
1459
1460  .article .title .headline {
1461    font-weight: bold;
1462    font-size: 2em;
1463    line-height: 1em;
1464  }
1465
1466  .articleSmallList .article .photo {
1467    text-align: center;
1468    background: #eee;
1469  }
1470
1471  .articleSmallList .article .title .headline {
1472    font-size: 1.2em;
1473  }
1474
1475  /* Article cards share one image and layout contract across home and lists. */
1476  .articleCard {
1477    position: relative;
1478    display: grid;
1479    grid-template-columns: minmax(96px, 30%) minmax(0, 1fr);
1480    gap: 12px;
1481    margin: 0;
1482    padding: 12px 0;
1483    border-bottom: 1px solid #d7d7d7;
1484  }
1485
1486  .articleCard--lead {
1487    display: block;
1488    padding-top: 0;
1489  }
1490
1491  .articleCard--text { grid-template-columns: minmax(0, 1fr); }
1492  .articleCard--text .articleCard-body { grid-column: 1 / -1; width: 100%; }
1493  .articleCard-media { position: relative; overflow: hidden; background: #eee; aspect-ratio: 4 / 3; }
1494  .articleCard-media--standard { aspect-ratio: 4 / 3; }
1495  .articleCard-media--landscape { aspect-ratio: 16 / 9; }
1496  .articleCard-media--portrait { aspect-ratio: 3 / 4; }
1497  .articleCard-media--square { aspect-ratio: 1; }
1498  /* The slot reserves its space before the image arrives.  Containing the image
1499     preserves the complete photograph; the neutral background is intentional
1500     letterboxing rather than a failed crop. */
1501  .articleCard-media img { display: block; width: 100%; height: 100%; object-fit: contain; }
1502  .articleCard--lead .articleCard-media { margin-bottom: 10px; }
1503  .articleCard-body { min-width: 0; }
1504  .articleCard-kicker { color: #8b1c1c; font-size: .78rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
1505  .articleCard-headline { margin: 0; font-family: "Roboto Condensed", sans-serif; font-size: 1.3rem; font-weight: 700; line-height: 1.08; }
1506  .a
1506rticleCard--lead .articleCard-headline { font-size: clamp(1.75rem, 4vw, 2.5rem); }
1507  .articleCard-headline a { color: #111; text-decoration: none; }
1508  .articleCard-headline a::after { content: ""; position: absolute; inset: 0; }
1509  .articleCard-headline a:hover { text-decoration: underline; }
1510  .articleCard:focus-within { outline: 3px solid #1265a8; outline-offset: 3px; }
1511  .articleCard-headline a:focus { outline: none; }
1512  .articleCard-deck { margin-top: 4px; font-weight: 600; line-height: 1.2; }
1513  .articleCard-meta { display: flex; flex-wrap: wrap; gap: 5px 9px; margin-top: 6px; color: #666; font-size: .78rem; line-height: 1.2; }
1514  .articleCard-byline { color: #333; font-weight: 700; }
1515  .articleCard-teaser { display: -webkit-box; overflow: hidden; margin: 7px 0 0; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-height: 1.32; }
1516  .articleCard-badge { position: absolute; right: 6px; bottom: 6px; padding: 3px 6px; background: rgba(0, 0, 0, .78); color: #fff; font-size: .75rem; }
1517  .articleCard-badge--photos { left: 6px; right: auto; }
1518  .articleCard-lock { color: #555; }
1519  .articleList .articleCard--lead { margin-bottom: 8px; }
1520  /* Keep section-list leads in their reserved media slot, including while lazy
1521     images load, while allowing portrait and landscape sources to letterbox. */
1522  .articleList .articleCard--lead .articleCard-media {
1523    background: var(--surface-soft, #f3f4f5);
1524    border-radius: var(--r-sm, 4px);
1525  }
1526  .articleList .articleCard--compact { grid-template-columns: 72px minmax(0, 1fr); }
1527  .articleList .articleCard--compact .articleCard-media { width: 72px; height: 72px; }
1528  .articleList .articleCard--compact.articleCard--text { grid-template-columns: minmax(0, 1fr); }
1529
1530  .homeSection-heading { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; border-top: 3px solid #222; }
1531  .homeSection-heading .textSection { margin: 6px 0; }
1532  .homeSection-more { color: #222; font-size: .86rem; font-weight: 700; text-decoration: none; white-space: nowrap; }
1533  .homeSection-more:hover { text-decoration: underline; }
1534  .homeSection-grid { display: grid; grid-template-columns: minmax(0, 1fr); }
1535  .homeSection-grid .articleCard--compact { grid-template-columns: 72px minmax(0, 1fr); }
1536  .homeSection-grid .articleCard--compact .articleCard-media { width: 72px; height: 72px; }
1537  .homeSection-grid .articleCard--compact.articleCard--text { grid-template-columns: minmax(0, 1fr); }
1538
1539  @media (min-width: 768px) {
1540    .articleCard { grid-template-columns: 180px minmax(0, 1fr); }
1541    .articleList .articleCard--compact { grid-template-columns: 72px minmax(0, 1fr); }
1542    .homeSection-grid { grid-template-columns: minmax(0, 1.35fr) minmax(220px, .65fr); column-gap: 24px; }
1543    .homeSection-grid .articleCard--lead { grid-row: span 3; }
1544  }
1545
1546  .article .title .kicker, .article .title .deck {
1547    font-weight: bold;
1548    font-size: 1.2em;
1549  }
1550
1551  .article .info {
1552    margin-bottom: 5px;
1553  }
1554
1555  .article .info .byline {
1556    font-weight: bold;
1557  }
1558
1559  .articleShare {
1560    display: flex;
1561    flex-wrap: wrap;
1562    gap: 6px;
1563    align-items: center;
1564    margin: 10px 0 14px;
1565  }
1566
1567  .articleShare .shareLink {
1568    display: inline-flex;
1569    align-items: center;
1570    gap: 6px;
1571    min-height: 34px;
1572    padding: 6px 10px;
1573    border: 1px solid #c8c8c8;
1574    border-radius: 4px;
1575    background: #fff;
1576    color: #222;
1577    cursor: pointer;
1578    font-family: inherit;
1579    font-size: 0.9rem;
1580    line-height: 1;
1581    text-decoration: none;
1582  }
1583
1584  .articleShare .shareLink:hover,
1585  .articleShare .shareLink:focus {
1586    border-color: #777;
1587    background: #f5f5f5;
1588    color: #000;
1589  }
1590
1591  .articleShare .shareLink i {
1592    width: 1em;
1593    text-align: center;
1594  }
1595
1596  .articleShare .shareNative {
1597    display: none;
1598  }
1599
1600  .articleShare.canNative .shareNative {
1601    display: inline-flex;
1602  }
1603
1604  .pageNav .pagination {
1605    flex-wrap: wrap;
1606    gap: 0.25rem;
1607  }
1608
1609  .article .photo {
1610    margin-bottom: 5px;
1611  }
1612
1613  .article .photo .image {
1614    text-align: center;
1615  }
1616
1617  @media (min-width: 750px) {
1618    :root {
1619      --header-h: 72px;
1620    }
1621
1622    #gridApp {
1623      margin: 0px auto;
1624      max-width: 1350px;
1625      display: grid;
1626      grid-template-columns: 700px;
1627      grid-template-rows: auto;
1628      grid-template-areas:
1629        "content";
1630      justify-content: center;
1631    }
1632
1633    #cellHeader .btnMenu,
1634    #cellHeader .btnSidebar {
1635      display: inline-flex !important;
1636    }
1637
1638    #cellHeader .btnMenu .btnLabel {
1639      display: inline-block;
1640    }
1641
1642    #areaToolbar {
1643      display: none;
1644    }
1645  }
1646
1647  @media (min-width: 1020px) {
1648    .weatherHeader {
1649      display: inline-flex !important;
1650    }
1651
1652    #floatSidebar .weatherSidebar {
1653      display: none;
1654    }
1655
1656    #gridApp {
1657      margin: 0px auto;
1658      max-width: 1350px;
1659      display: grid;
1660      grid-template-columns: 700px minmax(200px, 350px);
1661      grid-template-rows: auto;
1662      grid-template-areas:
1663        "content sidebar";
1664    }
1665
1666    #cellSidebar {
1667      transform: translateX(0);
1668    }
1669
1670    #cellSidebar {
1671      grid-area: sidebar;
1672      display: block;
1673      position: unset;
1674      top: unset;
1675      right: unset;
1676      bottom: unset;
1677      left: unset;
1678      width: unset;
1679      height: unset;
1680      max-height: unset;
1681      border: 0px;
1682      width: unset;
1683      background: unset;
1684      overflow: visible;
1685      overflow-y: unset;
1686      overflow-x: unset;
1687      overscroll-behavior: auto;
1688      -webkit-overflow-scrolling: auto;
1689      touch-action: auto;
1690      padding: 0px;
1691      z-index: unset;
1692      max-width: unset;
1693      box-sizing: content-box;
1694    }
1695
1696    #floatSidebar {
1697      /*padding-top: 0px;
1698      position: absolute;
1699      top: 0px;
1700      left: 0px;
1701      overflow-y: auto;
1702      height: calc(100vh - var(--header-h) - 10px);
1703      padding-right: 10px;*/
1704    }
1705
1706    #cellHeader .btnSidebar {
1707      display: none !important;
1708    }
1709
1710    #btnCloseSidebar {
1711      display: none;
1712    }
1713
1714    .areaWithoutNews {
1715      display: none;
1716    }
1717  }
1718
1719  @media (min-width: 1224px) {
1720    #gridApp {
1721      margin: 0px auto;
1722      max-width: 1350px;
1723      display: grid;
1724      grid-template-columns: 200px 700px minmax(200px, 350px);
1725      grid-template-rows: auto;
1726      grid-template-areas:
1727        "menu content sidebar";
1728    }
1729
1730    #cellHeader .btnMenu,
1731    #cellHeader .btnSidebar {
1732      display: none !important;
1733    }
1734
1735    #cellMenu {
1736      transform: translateX(0);
1737    }
1738
1739    #cellMenu {
1740      grid-area: menu;
1741      display: block;
1742      position: unset;
1743      top: unset;
1744      bottom: unset;
1745      left: unset;
1746      width: unset;
1747      height: unset;
1748      max-height: unset;
1749      border: 0px;
1750      width: unset;
1751      background: unset;
1752      overflow-y: unset;
1753      overscroll-behavior: auto;
1754      -webkit-overflow-scrolling: auto;
1755      touch-action: auto;
1756      padding-bottom: 0px;
1757      box-sizing: content-box;
1758      z-index: unset;
1759    }
1760
1761    #floatMenu {
1762      padding: 0px 0px 16px;
1763      position: sticky;
1764      top: calc(var(--header-h) + 10px);
1765      left: 0px;
1766      overflow-y: auto;
1767      max-height: calc(100vh - var(--header-h) - 10px);
1768    }
1769
1770    #floatMenu .areaMenuClose {
1771      display: none;
1772    }
1773
1774    .menuLink {
1775      min-height: 38px;
1776    }
1777
1778    .menuSubLink {
1779      min-height: 32px;
1780    }
1781  }
1782
1783  @media (max-width: 575px) {}
1784
1785  /* ---- Events embed block (upcoming events on home/section pages) ---- */
1786  .events-upcoming-block {
1787    margin-bottom: 1.5rem;
1788  }
1789
1790  .events-embed-list {
1791    margin-top: 0.5rem;
1792  }
1793
1794  .events-embed-row {
1795    padding: 0.55rem 0;
1796    border-bottom: 1px solid #e8eaed;
1797  }
1798
1799  .events-embed-row:first-child {
1800    border-top: 1px solid #e8eaed;
1801  }
1802
1803  .events-embed-when {
1804    font-size: 0.72rem;
1805    font-weight: 600;
1806    letter-spacing: 0.05em;
1807    color: #5f6672;
1808    text-transform: uppercase;
1809    margin-bottom: 0.1rem;
1810  }
1811
1812  .events-embed-title {
1813    font-size: 0.92rem;
1814    font-weight: 600;
1815    line-height: 1.35;
1816  }
1817
1818  .events-embed-title a {
1819    color: inherit;
1820    text-decoration: none;
1821  }
1822
1823  .events-embed-title a:hover {
1824    text-decoration: underline;
1825  }
1826
1827  .events-embed-city {
1828    font-size: 0.78rem;
1829    color: #5f6672;
1830    margin-top: 0.05rem;
1831  }
1832
1833  @media (min-width: 768px) {
1834    .events-embed-list {
1835      display: grid;
1836      grid-template-columns: 1fr 1fr;
1837      column-gap: 2rem;
1838    }
1839
1840    .events-embed-row:nth-child(-n+2) {
1841      border-top: 1px solid #e8eaed;
1842    }
1843  }
1844
1845  /* Public article pages only. Keep list-card styling under .article untouched. */
1846.articleView {
1847  color: var(--ink);
1848}
1849
1850.articleView .article {
1851  margin-bottom: var(--sp-7);
1852}
1853
1854.articleView .articleSections {
1855  display: flex;
1856  flex-wrap: wrap;
1857  gap: var(--sp-1) var(--sp-2);
1858  margin-bottom: var(--sp-4);
1859}
1860
1861.articleView .sectionEyebrow {
1862  font-family: var(--font-head);
1863  font-size: 0.8rem;
1864  font-weight: 700;
1865  letter-spacing: 0.08em;
1866  text-decoration: none;
1867  text-transform: uppercase;
1868  color: var(--ink-muted);
1869}
1870
1871.articleView .sectionEyebrow + .sectionEyebrow::before {
1872  content: "·";
1873  margin-right: var(--sp-2);
1874  color: var(--ink-faint);
1875}
1876
1877.articleView .sectionEyebrow:hover,
1878.articleView .sectionEyebrow:focus {
1879  color: var(--accent);
1880}
1881
1882.articleView .title {
1883  margin-bottom: var(--sp-5);
1884}
1885
1886.articleView .title .kicker {
1887  font-family: var(--font-head);
1888  font-size: 0.8rem;
1889  font-weight: 700;
1890  letter-spacing: 0.08em;
1891  text-transform: uppercase;
1892  color: var(--accent);
1893  margin-bottom: var(--sp-2);
1894}
1895
1896.articleView .title .headline {
1897  font-family: var(--font-head);
1898  font-size: clamp(1.85rem, 1.45rem + 1.6vw, 2.6rem);
1899  font-weight: 700;
1900  line-height: 1.08;
1901  letter-spacing: -0.01em;
1902  text-wrap: balance;
1903  margin-bottom: var(--sp-3);
1904}
1905
1906.articleView .title .deck {
1907  font-family: var(--font-head);
1908  font-size: clamp(1.05rem, 0.95rem + 0.5vw, 1.35rem);
1909  font-weight: 400;
1910  line-height: 1.4;
1911  color: var(--ink-muted);
1912}
1913
1914.articleView .title .kicker:empty,
1915.articleView .title .headline:empty,
1916.articleView .title .deck:empty {
1917  display: none;
1918}
1919
1920.articleView .info {
1921  display: flex;
1922  flex-wrap: wrap;
1923  align-items: baseline;
1924  gap: var(--sp-2) var(--sp-3);
1925  padding-bottom: var(--sp-3);
1926  margin-bottom: 0;
1927  border-bottom: 1px solid var(--rule);
1928  font-family: var(--font-head);
1929  font-size: 0.9rem;
1930}
1931
1932.articleView .info .byline {
1933  font-weight: 700;
1934  color: var(--ink);
1935}
1936
1937.articleView .info .posted {
1938  font-weight: 400;
1939  color: var(--ink-muted);
1940}
1941
1942.articleView .info .posted a {
1943  color: inherit;
1944  text-decoration-color: var(--rule);
1945}
1946
1947.articleView .articleShare {
1948  gap: var(--sp-2);
1949  margin: var(--sp-3) 0 var(--sp-5);
1950}
1951
1952.articleView .articleShare .shareLink {
1953  justify-content: center;
1954  width: 2.125rem;
1955  min-height: 2.125rem;
1956  padding: 0;
1957  border: 0;
1958  border-radius: var(--r-pill);
1959  background: transparent;
1960  color: var(--ink-muted);
1961}
1962
1963.articleView .articleShare .shareLink:hover,
1964.articleView .articleShare .shareLink:focus {
1965  background: var(--surface-soft);
1966  color: var(--accent);
1967}
1968
1969.articleView .articleShare .shareLink span {
1970  display: none;
1971}
1972
1973.articleView .articleShare .shareFacebook:hover { color: #1877f2; }
1974.articleView .articleShare .shareX:hover { color: #000; }
1975.articleView .articleShare .shareLinkedIn:hover { color: #0a66c2; }
1976.articleView .articleShare .shareReddit:hover { color: #ff4500; }
1977.articleView .articleShare .shareEmail:hover { color: #6c757d; }
1978
1979.articleView .content {
1980  max-width: 40em;
1981  font-family: var(--font-body);
1982  font-size: 1.19rem;
1983  line-height: 1.65;
1984  color: var(--ink);
1985}
1986
1987.articleView .content p { margin: 0 0 var(--sp-5); }
1988.articleView .content > p:first-of-type { font-size: 1.05em; }
1989
1990.articleView .content h2,
1991.articleView .content h3 {
1992  font-family: var(--font-head);
1993  font-weight: 700;
1994  line-height: 1.2;
1995  margin: var(--sp-6) 0 var(--sp-3);
1996}
1997
1998.articleView .content h2 { font-size: 1.5rem; }
1999.articleView .content h3 { font-size: 1.2rem; }
2000
2001.articleView .content a {
2002  color: inherit;
2003  text-decoration: underline;
2004  text-decoration-color: var(--accent);
2005  text-decoration-thickness: 0.08em;
2006  text-underline-offset: 0.16em;
2007}
2008
2009.articleView .content a:hover { color: var(--accent); }
2010
2011.articleView .content .paywallAction,
2012.articleView .content .paywallAction:hover,
2013.articleView .content .paywallAction:focus {
2014  color: #fff;
2015  text-decoration: none;
2016}
2017
2018.articleView .paywallPreview {
2019  position: relative;
2020  max-height: 12rem;
2021  overflow: hidden;
2022}
2023
2024.articleView .paywallPreview::after {
2025  position: absolute;
2026  right: 0;
2027  bottom: 0;
2028  left: 0;
2029  height: 6rem;
2030  content: "";
2031  background: linear-gradient(to bottom, transparent, #fff);
2032  pointer-events: none;
2033}
2034
2035.articleView .paywallCard {
2036  padding: var(--sp-6);
2037  margin: calc(var(--sp-5) * -1) 0 var(--sp-6);
2038  border: 1px solid var(--rule);
2039  border-radius: var(--r-lg);
2040  background: var(--surface-soft);
2041  text-align: center;
2042}
2043
2044.articleView .paywallCard h3 {
2045  margin: 0 0 var(--sp-2);
2046  font-family: var(--font-head);
2047  font-size: 1.5rem;
2048  font-weight: 700;
2049}
2050
2051.articleView .paywallCard .paywallIntro,
2052.articleView .paywallCard .paywallRequirement {
2053  max-width: 34rem;
2054  margin-right: auto;
2055  margin-left: auto;
2056}
2057
2058.articleView .paywallCard .paywallIntro { margin-bottom: var(--sp-3); }
2059.articleView .paywallCard .paywallRequirement { margin-bottom: var(--sp-3); }
2060
2061.articleView .paywallActions {
2062  max-width: 20rem;
2063  margin: 0 auto;
2064}
2065
2066.articleView .content .paywallAction {
2067  display: block;
2068  width: 100%;
2069}
2070
2071.articleView .sectionEndHtml {
2072  padding: var(--sp-5);
2073  margin: var(--sp-6) 0;
2074  border: 1px solid var(--rule);
2075  border-radius: var(--r-md);
2076}
2077
2078.articleView .sectionEndHtmlBlock + .sectionEndHtmlBlock {
2079  padding-top: var(--sp-4);
2080  margin-top: var(--sp-4);
2081  border-top: 1px solid var(--rule);
2082}
2083
2084.articleView .articleAdvertisement {
2085  padding: var(--sp-4) 0;
2086  margin: var(--sp-6) 0;
2087  border: 0;
2088  border-top: 1px solid var(--rule);
2089  border-bottom: 1px solid var(--rule);
2090  border-radius: 0;
2091  background: transparent;
2092  text-align: center;
2093}
2094
2095.articleView .articleAdvertisement .advertisementLabel {
2096  padding-bottom: var(--sp-3);
2097  font-family: var(--font-head);
2098  font-size: 0.72rem;
2099  font-weight: 700;
2100  letter-spacing: 0.08em;
2101  text-transform: uppercase;
2102  color: var(--ink-faint);
2103}
2104
2105.articleView .articleAdvertisement .zoneSda { margin-bottom: 0; }
2106.articleView .articleAdLoadTrigger { height: 1px; margin: 0; }
2107
2108.articleView .content blockquote {
2109  margin: var(--sp-6) 0;
2110  padding-left: var(--sp-5);
2111  border-left: 3px solid var(--accent);
2112  font-family: var(--font-head);
2113  font-size: 1.25em;
2114  line-height: 1.35;
2115  color: var(--ink);
2116}
2117
2118.articleView .content ul,
2119.articleView .content ol { margin: 0 0 var(--sp-5) var(--sp-5); }
2120.articleView .content li { margin-bottom: var(--sp-2); }
2121
2122.articleView .photo {
2123  margin: 0 0 var(--sp-5);
2124}
2125
2126.articleView .photo .image {
2127  text-align: center;
2128  background: var(--surface-soft);
2129}
2130
2131.articleView .photo img { border-radius: var(--r-sm); }
2132
2133.articleView .photoInfo {
2134  max-width: 40em;
2135  margin-top: var(--sp-2);
2136  font-family: var(--font-head);
2137  font-size: 0.9rem;
2138  line-height: 1.45;
2139  color: var(--ink-muted);
2140}
2141
2142.articleView .photoInfo .title {
2143  font-weight: 700;
2144  color: var(--ink);
2145}
2146
2147.articleView .photoInfo .credit {
2148  margin-top: var(--sp-1);
2149  font-size: 0.78rem;
2150  letter-spacing: 0.04em;
2151  text-transform: uppercase;
2152  color: var(--ink-faint);
2153}
2154
2155.articleView .photoStage {
2156  position: relative;
2157  max-height: 450px;
2158  text-align: center;
2159  background: var(--surface-soft);
2160}
2161
2162.articleView .photoStage > img {
2163  max-height: 450px;
2164  width: auto;
2165  object-fit: contain;
2166}
2167
2168.articleView .photoNav {
2169  position: absolute;
2170  top: 50%;
2171  z-index: 2;
2172  display: flex;
2173  align-items: center;
2174  justify-content: center;
2175  width: 42px;
2176  height: 42px;
2177  padding: 0;
2178  border: 0;
2179  border-radius: var(--r-pill);
2180  background: rgba(0, 0, 0, 0.55);
2181  color: #fff;
2182  transform: translateY(-50%);
2183}
2184
2185.articleView .photoNav:hover,
2186.articleView .photoNav:focus {
2187  background: rgba(0, 0, 0, 0.75);
2188  color: #fff;
2189}
2190
2191.articleView .photoNavPrev { left: var(--sp-3); }
2192.articleView .photoNavNext { right: var(--sp-3); }
2193
2194@media (hover: hover) and (pointer: fine) {
2195  .articleView .photoNav { opacity: 0; transition: opacity 0.15s; }
2196  .articleView .photoStage:hover .photoNav,
2197  .articleView .photoNav:focus { opacity: 1; }
2198}
2199
2200.articleView .photoCarousel {
2201  display: flex;
2202  gap: var(--sp-2);
2203  overflow-x: auto;
2204  padding: var(--sp-3) 0 var(--sp-1);
2205  margin-top: var(--sp-2);
2206  scrollbar-width: thin;
2207}
2208
2209.articleView .photoCarousel::-webkit-scrollbar { height: 5px; }
2210.articleView .photoCarousel::-webkit-scrollbar-thumb { background: #bbb; border-radius: var(--r-sm); }
2211
2212.articleView .photoCarousel .thumb {
2213  flex: 0 0 auto;
2214  cursor: pointer;
2215  border: 3px solid transparent;
2216  border-radius: var(--r-sm);
2217  opacity: 0.75;
2218  transition: opacity 0.15s, border-color 0.15s;
2219}
2220
2221.articleView .photoCarousel .thumb:hover { opacity: 1; }
2222.articleView .photoCarousel .thumb.selected { border-color: var(--accent); opacity: 1; }
2223
2224.articleView .photoCarousel .thumb img {
2225  display: block;
2226  width: 90px;
2227  height: 65px;
2228  object-fit: cover;
2229  border-radius: 1px;
2230}
2231
2232.articleView .articlePhotoGallery {
2233  display: grid;
2234  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
2235  gap: var(--sp-3);
2236  margin-bottom: var(--sp-5);
2237}
2238
2239.articleView .articlePhotoGallery .galleryPhoto {
2240  display: block;
2241  padding: 0;
2242  border: 0;
2243  background: none;
2244  cursor: pointer;
2245}
2246
2247.articleView .articlePhotoGallery .galleryPhoto img {
2248  display: block;
2249  width: 100%;
2250  aspect-ratio: 4 / 3;
2251  object-fit: cover;
2252}
2253
2254.articleView #articlePhotoModal .modal-body { padding-top: var(--sp-3); }
2255.articleView #articlePhotoModal .photoStage { max-height: none; background: #111; }
2256.articleView #articlePhotoModal .photoStage img { max-height: 72vh; object-fit: contain; }
2257
2258@media (max-width: 575px) {
2259  .articleView .content { font-size: 1.09rem; }
2260
2261  .articleView > .article > .photo {
2262    width: calc(100% + (var(--sp-4) * 2));
2263    margin-right: calc(var(--sp-4) * -1);
2264    margin-left: calc(var(--sp-4) * -1);
2265  }
2266
2267  .articleView > .article > .photo .photoInfo {
2268    padding-right: var(--sp-4);
2269    padding-left: var(--sp-4);
2270  }
2271
2272  .articleView .articleShare { gap: var(--sp-1); }
2273  .articleView .paywallCard { padding: var(--sp-5) var(--sp-4); }
2274}
2275
2276@media print {
2277  @page { margin: 0.65in; }
2278
2279  html,
2280  body,
2281  #areaApp {
2282    height: auto;
2283    overflow: visible;
2284    font-size: 11pt;
2285    background: #fff;
2286  }
2287
2288  #cellHeader,
2289  #cellMenu,
2290  #cellSidebar,
2291  #areaToolbar,
2292  .articleView .articleSections,
2293  .articleView .articleShare,
2294  .articleView .photoCarousel,
2295  .articleView .photoNav,
2296  .articleView .articleAdvertisement,
2297  .articleView .paywallCard,
2298  #articlePhotoModal {
2299    display: none !important;
2300  }
2301
2302  #gridApp {
2303    display: block;
2304    max-width: none;
2305    margin: 0;
2306  }
2307
2308  .articleView .article { margin: 0; }
2309  .articleView .content { max-width: none; font-size: 11pt; line-height: 1.5; }
2310  .articleView .title .headline { font-size: 26pt; }
2311  .articleView .photoStage,
2312  .articleView .photoStage > img { max-height: none; }
2313  .articleView .photo img { max-width: 100%; break-inside: avoid; }
2314  .articleView .sectionEndHtml { break-inside: avoid; }
2315
2316  .articleView .content a[href]::after {
2317    content: " (" attr(href) ")";
2318    font-size: 0.8em;
2319    overflow-wrap: anywhere;
2320  }
2321}
2322</style>
2323
2324    
2325    <title>Search | Ponca City News</title>
2326
2327    <meta property="og:site_name" content="Ponca City News">
2328    <meta property="og:title" content="Search | Ponca City News">
2329    <meta property="og:type" content="website">
2330          <meta property="og:description" content="Search articles and issue pages from Ponca City News.">
2331              <meta property="og:image" content="https://www.poncacitynews.com/uploads/509/mast/29/a6/share_698f7ef06ac5e.jpg">
2332          <meta property="og:image:width" content="1200">
2333      <meta property="og:image:height" content="630">
2334        <meta name="twitter:card" content="summary_large_image">
2335    <meta name="twitter:title" content="Search | Ponca City News">
2336          <meta name="twitter:description" content="Search articles and issue pages from Ponca City News.">
2337              <meta name="twitter:image" content="https://www.poncacitynews.com/uploads/509/mast/29/a6/share_698f7ef06ac5e.jpg">
2338    
2339          
2339<script type="application/ld+json">
2340        {"@context":"https://schema.org","@graph":[{"@type":"NewsMediaOrganization","@id":"https://www.poncacitynews.com/#organization","name":"Ponca City News","url":"https://www.poncacitynews.com/","logo":{"@type":"ImageObject","url":"https://www.poncacitynews.com/uploads/509/mast/29/a6/share_698f7ef06ac5e.jpg"},"description":"The Ponca City News is delivered regularly to homes and businesses throughout Ponca City and the 74601 and 74604 zip codes. The newspaper is also available at…","telephone":"580-765-3311","address":{"@type":"PostalAddress","streetAddress":"300 N Third St.","addressLocality":"Ponca City","addressRegion":"OK","postalCode":"74601","addressCountry":"US"},"sameAs":["https://www.facebook.com/p/The-Ponca-City-News-100063703682712/","https://www.youtube.com/@poncacitynewsonline"],"contactPoint":[{"@type":"ContactPoint","contactType":"customer service","telephone":"580-765-3311"}]},{"@type":"WebSite","@id":"https://www.poncacitynews.com/#website","url":"https://www.poncacitynews.com/","name":"Ponca City News","publisher":{"@id":"https://www.poncacitynews.com/#organization"},"inLanguage":"en-US","potentialAction":{"@type":"SearchAction","target":"https://www.poncacitynews.com/search?q=%7Bsearch_term_string%7D","query-input":"required name=search_term_string"}},{"@type":"SearchResultsPage","@id":"https://www.poncacitynews.com/search#webpage","url":"https://www.poncacitynews.com/search","name":"Search | Ponca City News","isPartOf":{"@id":"https://www.poncacitynews.com/#website"},"about":{"@id":"https://www.poncacitynews.com/#organization"},"inLanguage":"en-US","description":"Search articles and issue pages from Ponca City News.","primaryImageOfPage":{"@type":"ImageObject","url":"https://www.poncacitynews.com/uploads/509/mast/29/a6/share_698f7ef06ac5e.jpg"},"breadcrumb":{"@id":"https://www.poncacitynews.com/search#breadcrumb"}},{"@type":"BreadcrumbList","@id":"https://www.poncacitynews.com/search#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Ponca City News","item":"https://www.poncacitynews.com/"},{"@type":"ListItem","position":2,"name":"Search","item":"https://www.poncacitynews.com/search"}]}]}      </script>
2340
2341    
2342            
2342<script>
2343          (function(d) {
2344            var s = d.createElement("script");
2345            /* uncomment the following line to override default position*/
2346            s.setAttribute("data-position", 3);
2347            /* uncomment the following line to override default size (values: small, large)*/
2348            /* s.setAttribute("data-size", "small");*/
2349            /* uncomment the following line to override default language (e.g., fr, de, es, he, nl, etc.)*/
2350            /* s.setAttribute("data-language", "language");*/
2351            /* uncomment the following line to override color set via widget (e.g., #053f67)*/
2352            /* s.setAttribute("data-color", "#053e67");*/
2353            /* uncomment the following line to override type set via widget (1=person, 2=chair, 3=eye, 4=text)*/
2354            /* s.setAttribute("data-type", "1");*/
2355            /* s.setAttribute("data-statement_text:", "Our Accessibility Statement");*/
2356            /* s.setAttribute("data-statement_url", "http://www.example.com/accessibility")";*/
2357            /* uncomment the following line to override support on mobile devices*/
2358            /* s.setAttribute("data-mobile", true);*/
2359            /* uncomment the following line to set custom trigger action for accessibility menu*/
2360            /* s.setAttribute("data-trigger", "triggerId")*/
2361            /* uncomment the following line to override widget's z-index property*/
2362            /* s.setAttribute("data-z-index", 10001);*/
2363            /* uncomment the following line to enable Live site translations (e.g., fr, de, es, he, nl, etc.)*/
2364            /* s.setAttribute("data-site-language", "null");*/
2365            s.setAttribute("data-widget_layout", "full")
2366            s.setAttribute("data-account", "YIgybr9fpt");
2367            s.setAttribute("src", "https://cdn.userway.org/widget.js");
2368            (d.body || d.head).appendChild(s);
2369          })(document)
2370        </script>
2370
2371        <noscript>Please ensure Javascript is enabled for purposes of <a href="https://userway.org">website accessibility</a></noscript>
2372
2373        <link rel="stylesheet" id="silktide-consent-manager-css" href="/ui/cm/silktide-consent-manager.css">
2374        
2374<script src="/ui/cm/silktide-consent-manager.js?_=202607061635"></script>
2374
2375        
2375<script>
2376          silktideCookieBannerManager.updateCookieBannerConfig({
2377            background: {
2378              showBackground: false
2379            },
2380            cookieIcon: {
2381              position: "bottomRight"
2382            },
2383            cookieTypes: [{
2384                id: "necessary",
2385                name: "Necessary",
2386                description: "<p>These cookies are necessary for the website to function properly and cannot be switched off. They help with things like logging in and setting your privacy preferences.</p>",
2387                required: true,
2388                onAccept: function() {
2389                  console.log('Add logic for the required Necessary here');
2390                }
2391              },
2392              {
2393                id: "analytics",
2394                name: "Analytics",
2395                description: "<p>These cookies help us improve the site by tracking which pages are most popular and how visitors move around the site.</p>",
2396                defaultValue: true,
2397                onAccept: function() {
2398                  /*gtag('consent', 'update', {
2399                    analytics_storage: 'granted',
2400                  });
2401                  dataLayer.push({
2402                    'event': 'consent_accepted_analytics',
2403                    });*/
2404                },
2405                onReject: function() {
2406                  /*gtag('consent', 'update', {
2407                    analytics_storage: 'denied',
2408                  });*/
2409                }
2410              },
2411              {
2412                id: "advertising",
2413                name: "Advertising",
2414                description: "<p>These cookies provide extra features and personalization to improve your experience. They may be set by us or by partners whose services we use.</p>",
2415                onAccept: function() {
2416                  /*gtag('consent', 'update', {
2417                    ad_storage: 'granted',
2418                    ad_user_data: 'granted',
2419                    ad_personalization: 'granted',
2420                  });
2421                  dataLayer.push({
2422                    'event': 'consent_accepted_advertising',
2423                    });*/
2424                },
2425                onReject: function() {
2426                  /*gtag('consent', 'update', {
2427                    ad_storage: 'denied',
2428                    ad_user_data: 'denied',
2429                    ad_personalization: 'denied',
2430                  });*/
2431                }
2432              }
2433            ],
2434            text: {
2435              banner: {
2436                description: "<p>We use cookies on our site to enhance your user experience, provide personalized content, and analyze our traffic. <a href=\"/privacy#cookies\" target=\"_blank\">Cookie Policy.</a></p>",
2437                acceptAllButtonText: "Accept all",
2438                acceptAllButtonAccessibleLabel: "Accept all cookies",
2439                rejectNonEssentialButtonText: "Reject non-essential",
2440                rejectNonEssentialButtonAccessibleLabel: "Reject non-essential",
2441                preferencesButtonText: "Preferences",
2442                preferencesButtonAccessibleLabel: "Toggle preferences"
2443              },
2444              preferences: {
2445                title: "Customize your cookie preferences",
2446                description: "<p>We respect your right to privacy. You can choose not to allow some types of cookies. Your cookie preferences will apply across our website.</p>",
2447                creditLinkText: "Get this banner for free",
2448                creditLinkAccessibleLabel: "Get this banner for free"
2449              }
2450            }
2451          });
2452        </script>
2452
2453      </head>
2454
2455  <body class="">
2456          <!-- Google tag (gtag.js) -->
vendor: 70 bytes, lines 2456-2457
2456
2457      <script async src="https://www.googletagmanager.com/gtag/js?id=
2457G-SDN7PRY1H2
vendor: 18 bytes, lines 2457-2458
2457"></script>
2458      
2458<script>
2459        
vendor: 174 bytes, lines 2459-2466
2459window.dataLayer = window.dataLayer || [];
2460
2461        function gtag() {
2462          dataLayer.push(arguments);
2463        }
2464        gtag('js', new Date());
2465
2466        gtag('config', "
2466G-SDN7PRY1H2
vendor: 12 bytes, lines 2466-2467
2466");
2467        
2467gtag('config', 'G-PMY1G4JY86');
2468      </script>
2468
2469          <a href="#cellContent" class="skipLink">Skip to main content</a>
2470
2471      <div id="areaApp">
2472        <header id="areaHeader" data-nav-location="header">
2473          <div id="cellHeader">
2474            <div class="cardLeft">
2475              <a href="#" class="btnMenu" aria-label="Show menu"><i class="fas fa-bars"></i><span class="btnLabel"> Menu</span></a>
2476                          </div>
2477
2478            <a href="/" class="mastLink" data-nav-item="Masthead">
2479                              <img src="/uploads/509/mast/29/a6/698f7ef06ac5e.png" class="mastImage" alt="Ponca City News" width="1962" height="282" fetchpriority="high">
2480                          </a>
2481
2482            <div class="cardRight">
2483                <a href="/weather" class="weatherBadge weatherHeader" title="Weather: Cloudy, 64°, high 72°, low 52°">
2484    <span class="weatherIcon"><i class="fa-solid fa-cloud-sun"></i></span>
2485    <span class="weatherTemp">64°</span>
2486    <span class="weatherHiLo">H 72° L 52°</span>
2487          </a>
2488                <a href="#" class="btnSidebar" aria-label="Show sidebar"><i class="fa-solid fa-outdent"></i></a>
2489            </div>
2490          </div>
2491        </header>
2492
2493        <div id="areaMainContent">
2494          <div class="container text-center">
2495                          <div class="zoneSda zoneSdaLeaderboard loaded" data-zone="1"><a href="/do/sdaTouch?click=3&z=1" target="_blank" rel="noopener" aria-label="Advertisement: Health Insurance Source" class="localAdLeaderboardLink"><img src="/do/sdaTouch?view=3&z=1" class="img-fluid localAdLeaderboardImage" alt="Health Insurance Source" width="2397" height="315"></a></div>
2496                      </div>
2497
2498          
2499          
2500          <div id="gridApp">
2501            <div id="cellMenu">
2502              <div id="floatMenu">
2503                <nav aria-label="Main" data-nav-location="menu">
2504                  <ul class="listMenu">
2505                    <li class="areaMenuClose"><a href="#" id="btnCloseMenu" class="menuLink">
2506                        <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-xmark"></i></span>
2507                        <span class="menuLabel">Close Menu</span>
2508                      </a></li>
2509                          <li>
2510        <a class="menuLink " href="/" data-nav-item="Front Page" >
2511          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-house"></i></span>
2512          <span class="menuLabel">Front Page</span>
2513        </a>
2514      </li>
2515        <li>
2516        <a class="menuLink  active" href="/search" data-nav-item="Search" aria-current="page">
2517          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-magnifying-glass"></i></span>
2518          <span class="menuLabel">Search</span>
2519        </a>
2520      </li>
2521        <li class="menuGroupLabel" role="presentation">News</li>
2522          <li>
2523        <a class="menuLink " href="/issues" data-nav-item="eEditions" >
2524          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-book-open"></i></span>
2525          <span class="menuLabel">eEditions</span>
2526        </a>
2527      </li>
2528    <li class="menuItemSections">
2529    <button type="button" class="menuLink btnMenuSections" aria-expanded="false" aria-controls="areaMenuSections" data-force-open="0">
2530      <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-layer-group"></i></span>
2531      <span class="menuLabel">Sections</span>
2532      <span class="menuChevron" aria-hidden="true"><i class="fa-solid fa-angle-down"></i></span>
2533    </button>
2534
2535    <ul id="areaMenuSections" class="menuSubList" hidden>
2536              <li><a class="menuSubLink" href="/section/news" data-nav-item="Section: News" >News</a></li>
2537              <li><a class="menuSubLink" href="/section/obituaries" data-nav-item="Section: Obituaries" >Obituaries</a></li>
2538          </ul>
2539
2540    
2540<script>
2541      function setMenuSectionsOpen(button, open) {
2542        button.setAttribute("aria-expanded", open ? "true" : "false");
2543        document.getElementById(button.getAttribute("aria-controls")).hidden = !open;
2544      }
2545
2546      // Apply the reader's saved open/closed choice before the menu paints.
2547      (function() {
2548        var button = document.currentScript.parentNode.querySelector(".btnMenuSections");
2549        if (button.getAttribute("data-force-open") === "1") return;
2550
2551        var saved = null;
2552        try {
2553          saved = localStorage.getItem("menuSectionsOpen");
2554        } catch (error) {}
2555
2556        if (saved === "1" || saved === "0") {
2557          setMenuSectionsOpen(button, saved === "1");
2558        }
2559      })();
2560    </script>
2560
2561  </li>
2562      <li>
2563        <a class="menuLink " href="/weather" data-nav-item="Weather" >
2564          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-cloud-sun"></i></span>
2565          <span class="menuLabel">Weather</span>
2566        </a>
2567      </li>
2568        <li class="menuGroupLabel" role="presentation">Community</li>
2569          <li>
2570        <a class="menuLink " href="/events" data-nav-item="Events Calendar" >
2571          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-calendar-days"></i></span>
2572          <span class="menuLabel">Events Calendar</span>
2573        </a>
2574      </li>
2575        <li>
2576        <a class="menuLink " href="/legals" data-nav-item="Legals" >
2577          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-scale-balanced"></i></span>
2578          <span class="menuLabel">Legals</span>
2579        </a>
2580      </li>
2581        <li>
2582        <a class="menuLink " href="/puzzles" data-nav-item="Puzzles &amp; Games" >
2583          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-puzzle-piece"></i></span>
2584          <span class="menuLabel">Puzzles &amp; Games</span>
2585        </a>
2586      </li>
2587        <li class="menuGroupLabel" role="presentation">Get involved</li>
2588          <li>
2589        <a class="menuLink " href="/advertise" data-nav-item="Advertise" >
2590          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-bullhorn"></i></span>
2591          <span class="menuLabel">Advertise</span>
2592        </a>
2593      </li>
2594        <li>
2595        <a class="menuLink " href="/forms" data-nav-item="Submit News" >
2596          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-paper-plane"></i></span>
2597          <span class="menuLabel">Submit News</span>
2598        </a>
2599      </li>
2600        <li>
2601        <a class="menuLink " href="/subscribe" data-nav-item="Subscribe" >
2602          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-envelope-open-text"></i></span>
2603          <span class="menuLabel">Subscribe</span>
2604        </a>
2605      </li>
2606        <li class="menuGroupLabel" role="presentation">About us</li>
2607          <li>
2608        <a class="menuLink " href="/about" data-nav-item="About" >
2609          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-circle-info"></i></span>
2610          <span class="menuLabel">About</span>
2611        </a>
2612      </li>
2613        <li>
2614        <a class="menuLink " href="/contact" data-nav-item="Contact Us" >
2615          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-phone"></i></span>
2616          <span class="menuLabel">Contact Us</span>
2617        </a>
2618      </li>
2619        <li class="menuGroupLabel" role="presentation">Your account</li>
2620          <li>
2621        <a class="menuLink btnMenuAccount" href="/account" data-nav-item="Account" >
2622          <span class="menuIcon" aria-hidden="true"><i class="fa-solid fa-circle-user"></i></span>
2623          <span class="menuLabel">Account</span>
2624        </a>
2625      </li>
2626                    </ul>
2627                </nav>
2628              </div>
2629            </div>
2630
2631            <div id="cellSidebar">
2632              <div id="floatSidebar">
2633                <a href="#" id="btnCloseSidebar" aria-label="Close sidebar"><span class="icon"><i class="fa-solid fa-angles-right"></i></span></a>
2634
2635                  <div class="mb-3 d-grid">
2636          <a href="#" class="btnMenuAccount btn btn-outline-primary"><i class="fa-solid fa-user"></i> Account</a>
2637      </div>
2638
2639    <a href="/weather" class="weatherBadge weatherSidebar" title="Weather: Cloudy, 64°, high 72°, low 52°">
2640    <span class="weatherIcon"><i class="fa-solid fa-cloud-sun"></i></span>
2641    <span class="weatherTemp">64°</span>
2642    <span class="weatherHiLo">H 72° L 52°</span>
2643              <span class="weatherCondition">Cloudy</span>
2644      </a>
2645  
2646  <div class="card mb-3">
2647    <div class="">
2648      <div class="text-center league-gothic" style="font-size: 25px;"><b>Contact Us</b></div>
2649      <div class="text-center" style="font-size: 3em;">    <a href="/contact" title="" ><i class="fa-solid fa-square-envelope"></i></a>
2650      <a href="tel:5807653311" title="" ><i class="fa-solid fa-square-phone"></i></a>
2651      <a href="https://www.facebook.com/p/The-Ponca-City-News-100063703682712/" title="" target="_blank"><i class="fa-brands fa-square-facebook"></i></a>
2652      <a href="https://www.youtube.com/@poncacitynewsonline" title="" target="_blank"><i class="fa-brands fa-youtube"></i></a>
2653  </div>
2654    </div>
2655  </div>
2656
2657      <div class="card mb-3">
2658      <div class="">
2659        <div class="text-center league-gothic" style="font-size: 25px;"><b>Current Issue</b></div>
2660        <div class="card-body text-center" style="">
2661          <a href="/issues/2026-10-02/">
2662            <div><img src="/uploads/509/books/cb6abebc47262bf/cover_12846.jpg" class="img-fluid center-block issueCover" alt="Fri. Oct  2, 2026 issue cover" loading="lazy" decoding="async"></div>
2663            <div><b>Fri. Oct  2, 2026</b></div>
2664          </a>
2665        </div>
2666      </div>
2667    </div>
2668  
2669                <div class="zoneSda" data-zone="2"></div>
2670                <div class="zoneSda" data-zone="2"></div>
2671                <div class="zoneSda" data-zone="2"></div>
2672                <div class="zoneSda" data-zone="2"></div>
2673                <div class="zoneSda" data-zone="2"></div>
2674                <div class="zoneSda" data-zone="2"></div>
2675
2676                                  <div class="advertisementWrapper googleAdWrapper">
2677                    <div class="advertisementLabel">Advertisement</div>
2678                    <!-- Cacti/Sidebar -->
2679                    <ins class="adsbygoogle"
2680                      style="display:inline-block;width:300px;height:250px"
2681                      data-ad-client="ca-pub-8317400995054712"
2682                      data-ad-slot="9177632961"></ins>
2683                    
2683<script>
2684                      (adsbygoogle = window.adsbygoogle || []).push({});
2685                    </script>
2685
2686                  </div>
2687                
2688                  <section class="card popularArticles mb-3" aria-labelledby="popularArticlesHeading">
2689    <div class="card-body">
2690      <h2 id="popularArticlesHeading" class="popularArticles-heading">Popular Articles</h2>
2691      <ol class="popularArticles-list">
2692                  <li class="popularArticles-item">
2693            <a class="popularArticles-link" href="/article/2703-marjorie-morgan-owsley">
2694                              <img class="popularArticles-image" src="/uploads/509/images/c9/11/3816_72x72_crop_q85.jpg" width="72" height="72" alt="" loading="lazy" decoding="async">
2695                            <span class="popularArticles-copy">
2696                <span class="popularArticles-headline">Marjorie Morgan Owsley</span>
2697                <time class="popularArticles-date" datetime="2026-09-26T00:00:00-05:00">Sep. 26, 2026</time>              </span>
2698            </a>
2699          </li>
2700                  <li class="popularArticles-item">
2701            <a class="popularArticles-link" href="/article/2712-luchus-anthony-liggins">
2702                              <img class="popularArticles-image" src="/uploads/509/images/67/97/3824_72x72_crop_q85.jpg" width="72" height="72" alt="" loading="lazy" decoding="async">
2703                            <span class="popularArticles-copy">
2704                <span class="popularArticles-headline">Luchus Anthony Liggins</span>
2705                <time class="popularArticles-date" datetime="2026-09-30T00:00:00-05:00">Sep. 30, 2026</time>              </span>
2706            </a>
2707          </li>
2708                  <li class="popularArticles-item">
2709            <a class="popularArticles-link" href="/article/2700-michael-ralph-geheb">
2710                              <img class="popularArticles-image" src="/uploads/509/images/0a/49/3813_72x72_crop_q85.jpg" width="72" height="72" alt="" loading="lazy" decoding="async">
2711                            <span class="popularArticles-copy">
2712                <span class="popularArticles-headline">Michael Ralph Geheb</span>
2713                <time class="popularArticles-date" datetime="2026-09-23T00:00:00-05:00">Sep. 23, 2026</time>              </span>
2714            </a>
2715          </li>
2716                  <li class="popularArticles-item">
2717            <a class="popularArticles-link" href="/article/2701-toby-joe-hutson">
2718                              <img class="popularArticles-image" src="/uploads/509/images/c5/63/3814_72x72_crop_q85.jpg" width="72" height="72" alt="" loading="lazy" decoding="async">
2719                            <span class="popularArticles-copy">
2720                <span class="popularArticles-headline">Toby Joe Hutson</span>
2721                <time class="popularArticles-date" datetime="2026-09-23T00:00:00-05:00">Sep. 23, 2026</time>              </span>
2722            </a>
2723          </li>
2724                  <li class="popularArticles-item">
2725            <a class="popularArticles-link" href="/article/2604-darren-dyer">
2726                              <img class="popularArticles-image" src="/uploads/509/images/75/53/3713_72x72_crop_q85.jpg" width="72" height="72" alt="" loading="lazy" decoding="async">
2727                            <span class="popularArticles-copy">
2728                <span class="popularArticles-headline">Darren Dyer</span>
2729                <time class="popularArticles-date" datetime="2026-09-02T00:00:00-05:00">Sep. 2, 2026</time>              </span>
2730            </a>
2731          </li>
2732              </ol>
2733    </div>
2734  </section>
2735                </div>
2736            </div>
2737
2738            <div id="cellContent" tabindex="-1">
2739              
2740              
2741              <div class="cardContent"><div class="articleList searchPage">
2742  <h1>Search</h1>
2743
2744  <form id="searchForm" class="mb-3" action="/search" method="get">
2745    <div class="row g-2 align-items-end">
2746      <div class="col-12 col-md-7">
2747        <label class="form-label" for="searchQuery">Search terms</label>
2748        <input type="search" class="form-control" name="q" id="searchQuery" value="" placeholder="Search stories, articles, and issue pages" autocomplete="off">
2749      </div>
2750      <div class="col-8 col-md-3">
2751        <label class="form-label" for="searchSort">Sort by</label>
2752        <select class="form-select" name="sort" id="searchSort">
2753          <option value="relevance" selected>Relevance</option>
2754          <option value="date" >Date, newest first</option>
2755        </select>
2756      </div>
2757      <div class="col-4 col-md-2 d-grid">
2758        <button type="submit" class="btn btn-primary">Search</button>
2759      </div>
2760    </div>
2761  </form>
2762
2763  <div id="searchStatus" class="mb-3">
2764          <div class="text-muted">Enter a search term to get started.</div>
2765      </div>
2766
2767  <div class="text-center">
2768    <div class="zoneSda" data-zone="3"></div>
2769  </div>
2770
2771  <div id="searchResults">
2772      </div>
2773</div>
2774
2775<script>
2776  $(function() {
2777    var endpoint = "\/do\/search";
2778    var pubName = "Ponca City News";
2779
2780    function escapeHtml(text) {
2781      return String(text)
2782        .replace(/&/g, "&amp;")
2783        .replace(/</g, "&lt;")
2784        .replace(/>/g, "&gt;")
2785        .replace(/\"/g, "&quot;")
2786        .replace(/'/g, "&#039;");
2787    }
2788
2789    function prettyDate(ymd) {
2790      if (!ymd) {
2791        return "";
2792      }
2793
2794      var parsed = new Date(ymd + "T00:00:00");
2795      if (isNaN(parsed.getTime())) {
2796        return ymd;
2797      }
2798
2799      return parsed.toLocaleDateString("en-US", {
2800        month: "long",
2801        day: "numeric",
2802        year: "numeric"
2803      });
2804    }
2805
2806    function resultMeta(result) {
2807      if (result.record_type === "article") {
2808        return result.meta || [];
2809      }
2810
2811      var meta = [];
2812      var issueName = result.issue_date && result.issue_date !== "0000-00-00" ? prettyDate(result.issue_date) : pubName;
2813      meta.push(issueName);
2814      if (result.page) {
2815        meta.push("Issue Page " + result.page);
2816      }
2817      return meta;
2818    }
2819
2820    function resultBadge(result) {
2821      return result.record_type === "article" ?
2822        '<span class="badge text-bg-secondary">Article</span>' :
2823        '<span class="badge text-bg-primary">Issue Page</span>';
2824    }
2825
2826    function currentReturnPath() {
2827      return window.location.pathname + window.location.search + window.location.hash;
2828    }
2829
2830    function buildIssueLink(result) {
2831      var link = result.link || "#";
2832      if (result.record_type === "article" || link === "#") {
2833        return link;
2834      }
2835      if (result.page) {
2836        link += (link.indexOf("?") === -1 ? "?" : "&") + $.param({
2837          page: result.page
2838        });
2839      }
2840      link += (link.indexOf("?") === -1 ? "?" : "&") + $.param({
2841        r: currentReturnPath()
2842      });
2843      return link;
2844    }
2845
2846    function buildResult(result) {
2847      var title = escapeHtml(result.display_title || result.headline || result.book_name || "");
2848      var link = buildIssueLink(result);
2849      link = escapeHtml(link);
2850      var meta = resultMeta(result).map(function(item) {
2851        return escapeHtml(item);
2852      }).join(" - ");
2853      var highlights = "";
2854
2855      (result.highlights || []).forEach(function(item) {
2856        highlights += '<div class="small text-muted mb-1">' + (item.snippet || "") + '</div>';
2857      });
2858
2859      var extra = "";
2860      if (result.record_type === "article") {
2861        if (result.section_name) {
2862          extra += '<div class="small text-muted mb-2">' + escapeHtml(result.section_name) + '</div>';
2863        }
2864        if (result.kicker) {
2865          extra += '<div class="small text-uppercase fw-semibold mb-1">' + escapeHtml(result.kicker) + '</div>';
2866        }
2867        if (result.deck) {
2868          extra += '<div class="mb-2">' + escapeHtml(result.deck) + '</div>';
2869        }
2870      }
2871
2872      return [
2873        '<div class="card mb-3 shadow-sm">',
2874        '<div class="card-body">',
2875        '<div class="d-flex flex-wrap align-items-start justify-content-between gap-2 mb-2">',
2876        resultBadge(result),
2877        meta ? '<div class="small text-muted">' + meta + '</div>' : '',
2878        '</div>',
2879        '<h2 class="h5 mb-2"><a href="' + link + '">' + title + '</a></h2>',
2880        extra,
2881        highlights,
2882        '<div class="mt-2"><a href="' + link + '" class="btn btn-outline-primary btn-sm">' + (result.record_type === "article" ? 'Read article' : 'Open reader') + '</a></div>',
2883        '</div>',
2884        '</div>'
2885      ].join("");
2886    }
2887
2888    function showMessage(message, level) {
2889      var klass = level === "warning" ? "alert-warning" : "alert-light";
2890      $("#searchStatus").html('<div class="alert ' + klass + ' border mb-0">' + escapeHtml(message) + '</div>');
2891    }
2892
2893    function runSearch() {
2894      var q = $.trim($("#searchQuery").val());
2895      var sort = $("#searchSort").val();
2896
2897      if (!q) {
2898        $("#searchResults").empty();
2899        showMessage("Enter a search term to get started.", "info");
2900        return;
2901      }
2902
2903      $("#searchStatus").html('<div class="text-muted">Searching...</div>');
2904      $("#searchResults").html("");
2905
2906      $.getJSON(endpoint, {
2907          q: q,
2908          sort: sort,
2909          page: 1,
2910          per_page: 20
2911        })
2912        .done(function(resp) {
2913          if (resp.status !== "success") {
2914            showMessage(resp.message || "Search is temporarily unavailable.", "warning");
2915            return;
2916          }
2917
2918          if (resp.message) {
2919            $("#searchStatus").html('<div class="text-muted">' + escapeHtml(resp.message) + '</div>');
2920          } else {
2921            $("#searchStatus").empty();
2922          }
2923
2924          if (!resp.results || !resp.results.length) {
2925            $("#searchResults").html('<div class="text-muted">No matches found.</div>');
2926            return;
2927          }
2928
2929          var html = "";
2930          resp.results.forEach(function(result) {
2931            html += buildResult(result);
2932          });
2933          $("#searchResults").html(html);
2934        })
2935        .fail(function() {
2936          showMessage("Search is temporarily unavailable.", "warning");
2937        });
2938    }
2939
2940    $("#searchForm").on("submit", function(ev) {
2941      ev.preventDefault();
2942      history.replaceState(null, "", "/search?" + $.param({
2943        q: $.trim($("#searchQuery").val()),
2944        sort: $("#searchSort").val(),
2945      }));
2946      runSearch();
2947    });
2948
2949    $("#searchSort").on("change", function() {
2950      if ($.trim($("#searchQuery").val())) {
2951        runSearch();
2952      }
2953    });
2954  });
2955</script>
2955</div>
2956            </div>
2957          </div>
2958
2959          <div class="container text-center">
2960            <div class="zoneSda zoneSdaLeaderboard" data-zone="1"></div>
2961          </div>
2962
2963                  </div>
2964
2965        <div id="areaFooter">
2966          <div class="container">
2967            <div class="row">
2968              <div class="col-lg-4">
2969                <div class="mb-3">&copy; 2026 Ponca City News. All rights reserved.</div>
2970
2971                <div class="mb-3" style="font-size: 2.5em;">    <a href="/contact" title="" ><i class="fa-solid fa-square-envelope"></i></a>
2972      <a href="tel:5807653311" title="" ><i class="fa-solid fa-square-phone"></i></a>
2973      <a href="https://www.facebook.com/p/The-Ponca-City-News-100063703682712/" title="" target="_blank"><i class="fa-brands fa-square-facebook"></i></a>
2974      <a href="https://www.youtube.com/@poncacitynewsonline" title="" target="_blank"><i class="fa-brands fa-youtube"></i></a>
2975  </div>
2976
2977                <div><a href="#" onclick="silktideCookieBannerManager.showBanner(); return false;">Cookie Consent Settings</a></div>
2978
2979                <div><a href="/privacy">Privacy Policy</a></div>
2980                <div class="mt-2">
2981                  <a href="https://cacti.news/" class="d-inline-flex align-items-center justify-content-center gap-1" target="_blank" rel="noopener">
2982                    <img src="/ui/images/cactiicon2.png" alt="Cacti.News" style="width: 20px; height: 20px;">
2983                    <span>Powered by Cacti.News</span>
2984                  </a>
2985                  <div>A managed publishing platform for community newspapers. <a href="https://cacti.news/for-publishers" target="_blank" rel="noopener">Learn more about Cacti.News.</a></div>
2986                </div>
2987              </div>
2988
2989              <div class="col-lg-4">
2990                <div class="mb-3">Contact Us</div>
2991
2992                <div class="mb-3">
2993                  <a href="/contact">Contact Form</a>
2994                </div>
2995
2996                <div class="mb-3">
2997                  <a href="tel:5807653311">580-765-3311</a>
2998                </div>
2999
3000                                  <div class="mb-3">
3001                    <div><b>Office Address</b></div>
3002                    <div>300 N Third St.</div>
3003                    <div>
3004                      Ponca City,
3005                      OK                      74601                    </div>
3006                  </div>
3007                                  <div class="mb-3">
3008                    <div><b>Mailing Address</b></div>
3009                    <div>P.O. Box 191</div>
3010                    <div>
3011                      Ponca City,
3012                      OK                      74601                    </div>
3013                  </div>
3014                              </div>
3015
3016              <div class="col-lg-4">
3017                <div class="mb-3">Navigate</div>
3018
3019                <nav class="footerNav" aria-label="Footer" data-nav-location="footer">
3020                                      <div class="footerNavGroup">
3021                                            <ul>
3022                                                  <li><a href="/"  data-nav-item="Front Page">Front Page</a></li>
3023                                                  <li><a href="/search"  data-nav-item="Search">Search</a></li>
3024                                              </ul>
3025                    </div>
3026                                      <div class="footerNavGroup">
3027                                              <div class="footerNavLabel">News</div>
3028                                            <ul>
3029                                                  <li><a href="/issues"  data-nav-item="eEditions">eEditions</a></li>
3030                                                  <li><a href="/weather"  data-nav-item="Weather">Weather</a></li>
3031                                              </ul>
3032                    </div>
3033                                      <div class="footerNavGroup">
3034                                              <div class="footerNavLabel">Community</div>
3035                                            <ul>
3036                                                  <li><a href="/events"  data-nav-item="Events Calendar">Events Calendar</a></li>
3037                                                  <li><a href="/legals"  data-nav-item="Legals">Legals</a></li>
3038                                                  <li><a href="/puzzles"  data-nav-item="Puzzles &amp; Games">Puzzles &amp; Games</a></li>
3039                                              </ul>
3040                    </div>
3041                                      <div class="footerNavGroup">
3042                                              <div class="footerNavLabel">Get involved</div>
3043                                            <ul>
3044                                                  <li><a href="/advertise"  data-nav-item="Advertise">Advertise</a></li>
3045                                                  <li><a href="/forms"  data-nav-item="Submit News">Submit News</a></li>
3046                                                  <li><a href="/subscribe"  data-nav-item="Subscribe">Subscribe</a></li>
3047                                              </ul>
3048                    </div>
3049                                      <div class="footerNavGroup">
3050                                              <div class="footerNavLabel">About us</div>
3051                                            <ul>
3052                                                  <li><a href="/about"  data-nav-item="About">About</a></li>
3053                                                  <li><a href="/contact"  data-nav-item="Contact Us">Contact Us</a></li>
3054                                              </ul>
3055                    </div>
3056                                      <div class="footerNavGroup">
3057                                              <div class="footerNavLabel">Your account</div>
3058                                            <ul>
3059                                                  <li><a href="/account" class="btnMenuAccount" data-nav-item="Account">Account</a></li>
3060                                              </ul>
3061                    </div>
3062                                  </nav>
3063              </div>
3064            </div>
3065          </div>
3066        </div>
3067
3068        <div id="areaMenuBlocker"></div>
3069        <div id="areaSidebarBlocker"></div>
3070      </div>
3071    
3072        <div class="modal" id="modalLogin" tabindex="-1">
3073      <div class="modal-dialog modal-sm">
3074        <div class="modal-content">
3075          <div class="modal-header">
3076            <h5 class="modal-title">Login to Your Account</h5>
3077            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
3078          </div>
3079          <div class="modal-body">
3080            <form action="/account/login" method="post" id="formLogin">
3081              <input type="hidden" name="action" value="login">
3082              <input type="hidden" name="r" value="/search">
3083
3084              <div id="areaLoginAuths">
3085                <div class="mb-2 d-grid">
3086                  <button type="button" class="btnAuthGoogle btn btn-outline-dark"><i class="fa-brands fa-google"></i> Login with Google</button>
3087                </div>
3088
3089                <div class="mb-2 d-grid">
3090                  <button type="button" class="btnAuthPasskey btnPasskeyRelated btn btn-outline-dark"><i class="fa-solid fa-key"></i> Login with Passkey</button>
3091                </div>
3092
3093                <div class="mb-2 text-center"><i>&mdash; or &mdash;</i></div>
3094              </div>
3095
3096              <div class="mb-2">
3097                <label for="inputLoginEmail" class="form-label">Email Address</label>
3098                <input type="text" name="email" class="form-control" id="inputLoginEmail" maxlength="255" value="">
3099              </div>
3100
3101              <div class="form-check mb-2">
3102                <input class="form-check-input" type="checkbox" name="remember" value="1" id="checkLoginRemember" >
3103                <label class="form-check-label" for="checkLoginRemember">
3104                  Remember me
3105                </label>
3106              </div>
3107
3108              <div id="areaLoginNeedsPassword" style="display: none;">
3109                <div class="mb-2">
3110                  <div id="textLoginNeedsPasswordInfo"></div>
3111                </div>
3112
3113                
3114                <div class="mb-2 d-grid">
3115                  <button type="button" id="btnLoginLink" class="btn btn-primary">Send Login Link</button>
3116                </div>
3117
3118                <div class="mb-2 d-grid">
3119                  <button type="button" id="btnLoginNeedsPasswordBack" class="btn btn-outline-primary">Back</button>
3120                </div>
3121              </div>
3122
3123              <div id="areaLoginPassword" style="display: none;">
3124                <div class="mb-2">
3125                  <label for="inputLoginPassword" class="form-label">Password</label>
3126                  <input type="password" name="password" class="form-control" id="inputLoginPassword" maxlength="4096">
3127                </div>
3128
3129                <div class="mb-2 d-grid">
3130                  <button type="submit" class="btn btn-primary">Login</button>
3131                </div>
3132
3133                <div class="mb-2 d-grid">
3134                  <button type="button" id="btnLoginLinkPassword" class="btn btn-outline-primary">Send Login Link</button>
3135                </div>
3136
3137                <div class="mb-2 d-grid">
3138                  <button type="button" id="btnLoginPasswordBack" class="btn btn-outline-primary">Back</button>
3139                </div>
3140              </div>
3141
3142              <div id="areaLoginOptions">
3143                <div class="mb-2 d-grid">
3144                  <button type="button" id="btnLoginPassword" class="btn btn-primary"><i class="fa-solid fa-keyboard"></i> Login with Password</button>
3145                </div>
3146
3147                <div class="mb-2 d-grid">
3148                  <button type="button" id="btnLoginPasskey" class="btnPasskeyRelated btn btn-outline-dark"><i class="fa-solid fa-key"></i> Login with Passkey</button>
3149                </div>
3150              </div>
3151
3152              <div class="mb-2 d-grid">
3153                <button type="button" id="btnLoginForgot" class="btn btn-info">Forgot Password</button>
3154              </div>
3155
3156              <div class="mb-2 text-center"><i>&mdash; Don't have an account? &mdash;</i></div>
3157
3158              <div class="mb-2 d-grid">
3159                <button type="button" id="btnLoginRegister" class="btn btn-warning">Register</button>
3160              </div>
3161            </form>
3162          </div>
3163        </div>
3164      </div>
3165    </div>
3166
3167    <div class="modal" id="modalRegister" tabindex="-1">
3168      <div class="modal-dialog modal-sm">
3169        <div class="modal-content">
3170          <div class="modal-header">
3171            <h5 class="modal-title">Create an Account</h5>
3172            <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
3173          </div>
3174          <div class="modal-body">
3175            <form action="/account/register" method="post" id="formRegister">
3176              <input type="hidden" name="action" value="register">
3177              <input type="hidden" name="r" value="/search">
3178
3179              <div class="mb-2 d-grid">
3180                <button type="button" class="btnAuthGoogle btn btn-outline-dark"><i class="fa-brands fa-google"></i> Login with Google</button>
3181              </div>
3182
3183              <div class="mb-2 text-center"><i>&mdash; or &mdash;</i></div>
3184
3185              <div class="mb-3">
3186                <label for="inputRegisterEmail" class="form-label">Email Address</label>
3187                <input type="email" name="email" class="form-control" id="inputRegisterEmail" maxlength="255">
3188              </div>
3189
3190              <div class="mb-3">
3191                <label for="inputRegisterFirstName" class="form-label">First Name</label>
3192                <input type="text" name="first_name" class="form-control" id="inputRegisterFirstName" maxlength="75">
3193              </div>
3194
3195              <div class="mb-3">
3196                <label for="inputRegisterLastName" class="form-label">Last Name</label>
3197                <input type="text" name="last_name" class="form-control" id="inputRegisterLastName" maxlength="75">
3198              </div>
3199
3200              <div id="areaRegisterPassword" style="display: none;">
3201                <div class="mb-3">
3202                  <label for="inputRegisterPassword" class="form-label">Password</label>
3203                  <input type="password" name="password" class="form-control" id="inputRegisterPassword" maxlength="4096">
3204                </div>
3205
3206                <div class="mb-3">
3207                  <label for="inputRegisterPasswordConfirm" class="form-label">Confirm Password</label>
3208                  <input type="password" name="confirmPassword" class="form-control" id="inputRegisterPasswordConfirm" maxlength="4096">
3209                </div>
3210
3211                <div class="mb-3 d-grid">
3212                  <button type="submit" class="btn btn-primary">Register</button>
3213                </div>
3214              </div>
3215
3216              <div id="areaRegisterOptions">
3217                <div class="mb-3 d-grid">
3218                  <button type="button" id="btnRegisterPassword" class="btn btn-primary"><i class="fa-solid fa-keyboard"></i> Register with Password</button>
3219                </div>
3220
3221                <div class="mb-3 d-grid">
3222                  <button type="button" id="btnRegisterPasskey" class=" btnPasskeyRelated btn btn-outline-dark"><i class="fa-solid fa-key"></i> Register with Passkey</button>
3223                </div>
3224              </div>
3225
3226              <div class="mb-3 text-center">
3227                Already have an account?
3228                <a href="#" id="btnRegisterLogin">Login</a>
3229              </div>
3230            </form>
3231          </div>
3232        </div>
3233      </div>
3234    </div>
3235
3236    
3236<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.min.js" integrity="sha256-ew8UiV1pJH/YjpOEBInP1HxVvT/SfrCmwSoUzF9JIgc=" crossorigin="anonymous"></script>
3236
3237
3238    
3238<script src="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/js/all.min.js" integrity="sha256-Z6/mj/QZDUfTjL6nkq7pwkHNZpkVY8Xk8Appn4bTLXs=" crossorigin="anonymous"></script>
3238
3239
3240    
3240<script>
3241  
3242  $(document).ready(function() {
3243    $(document).on("click", ".btnCopy", function(event) {
3244      event.preventDefault();
3245
3246      var btn = $(this);
3247
3248      copyText(btn.data("target"));
3249
3250      btn.text("Copied");
3251      setTimeout(function() {
3252        btn.text("Copy");
3253      }, 2500);
3254    });
3255  });
3256
3257  async function copyText(target) {
3258    let text = document.getElementById(target).textContent;
3259    try {
3260      await navigator.clipboard.writeText(text);
3261      console.log('Text copied to clipboard');
3262      //alert('Text copied to clipboard: ' + text); // Optional feedback
3263    } catch (err) {
3264      console.error('Failed to copy text: ', err);
3265    }
3266  }
3267
3268  function checkResponse(data) {
3269    if (data.hasOwnProperty("status")) {
3270      if (data['status'] == "error") {
3271        if (data.hasOwnProperty("message") && data['message']) {
3272          var title = "Error";
3273          if (checkProp(data, 'title') && data['title']) {
3274            title = data['title'];
3275          }
3276
3277          alert(data['message']);
3278        } else {
3279          alert("The server responded with an error.");
3280        }
3281      } else if (data['status'] == "success") {
3282        if (data.hasOwnProperty("message") && data['message']) {
3283          var title = "Success";
3284          if (checkProp(data, 'title') && data['title']) {
3285            title = data['title'];
3286          }
3287          alert(data['message']);
3288        }
3289
3290        return true;
3291      }
3292    } else {
3293      alert("The server returned an unreadable response.");
3294    }
3295
3296    return false;
3297  }
3298
3299  function checkResponseSilent(data) {
3300    if (data.hasOwnProperty("status")) {
3301      if (data['status'] == "error") {
3302
3303      } else if (data['status'] == "success") {
3304        if (typeof checkResponseLocal === "function") {
3305          checkResponseLocal(data);
3306        }
3307
3308        return true;
3309      }
3310    } else {}
3311
3312    return false;
3313  }
3314
3315  function getAjaxErrorData(jqXHR) {
3316    if (!jqXHR) {
3317      return null;
3318    }
3319
3320    if (jqXHR.responseJSON && typeof jqXHR.responseJSON === "object") {
3321      return jqXHR.responseJSON;
3322    }
3323
3324    if (typeof jqXHR.responseText === "string" && jqXHR.responseText.trim()) {
3325      try {
3326        var data = JSON.parse(jqXHR.responseText);
3327        if (data && typeof data === "object") {
3328          return data;
3329        }
3330      } catch (error) {
3331        // The response may be an HTML error page or another non-JSON response.
3332      }
3333    }
3334
3335    return null;
3336  }
3337
3338  function getAjaxErrorType(jqXHR, textStatus) {
3339    var errorType = textStatus || (jqXHR && jqXHR.statusText) || "";
3340
3341    if (!errorType && jqXHR && typeof jqXHR.status === "string") {
3342      errorType = jqXHR.status;
3343    }
3344
3345    return String(errorType).toLowerCase();
3346  }
3347
3348  function formatAjaxError(jqXHR, textStatus, errorThrown) {
3349    var status = jqXHR && Number(jqXHR.status) > 0 ? Number(jqXHR.status) : 0;
3350    var errorType = getAjaxErrorType(jqXHR, textStatus);
3351    var response = getAjaxErrorData(jqXHR);
3352    var serverMessage = response && typeof response.message === "string" ? response.message.trim() : "";
3353    var message = "Communication error with the server.";
3354    var statusLabel = {
3355      400: "Bad Request",
3356      401: "Unauthorized",
3357      403: "Forbidden",
3358      404: "Not Found",
3359      408: "Request Timeout",
3360      409: "Conflict",
3361      413: "Payload Too Large",
3362      429: "Too Many Requests",
3363      500: "Internal Server Error",
3364      502: "Bad Gateway",
3365      503: "Service Unavailable",
3366      504: "Gateway Timeout"
3367    }[status] || "";
3368
3369    if (status) {
3370      message += "\n\nHTTP " + status + (statusLabel ? " " + statusLabel : "");
3371    }
3372
3373    if (serverMessage) {
3374      message += "\n\n" + serverMessage;
3375    } else {
3376      switch (errorType) {
3377        case "timeout": {
3378          message += "\n\nThe request timed out before the server responded.";
3379          break;
3380        }
3381
3382        case "parsererror": {
3383          message += "\n\nThe server returned an unreadable response.";
3384          break;
3385        }
3386
3387        case "error": {
3388          message += status ? "\n\nThe server could not complete the request." :
3389            "\n\nThe connection was lost before the server returned a response.";
3390          break;
3391        }
3392
3393        default: {
3394          message += "\n\nThe request could not be completed.";
3395          break;
3396        }
3397      }
3398    }
3399
3400    var details = typeof errorThrown === "string" ? errorThrown.trim() : "";
3401    if (!details && jqXHR && typeof jqXHR.message === "string") {
3402      details = jqXHR.message.trim();
3403    }
3404
3405    if (details && details.toLowerCase() !== errorType && details.toLowerCase() !== "error" && details !== statusLabel) {
3406      message += "\n\nDetails: " + details;
3407    }
3408
3409    return message;
3410  }
3411
3412  function errorResponse(jqXHR, textStatus, errorThrown) {
3413    if (getAjaxErrorType(jqXHR, textStatus) === "abort") {
3414      return;
3415    }
3416
3417    alert(formatAjaxError(jqXHR, textStatus, errorThrown));
3418  }
3419
3420  function errorResponseAsync(error) {
3421    if (getAjaxErrorType(error) === "abort") {
3422      return;
3423    }
3424
3425    alert(formatAjaxError(error));
3426  }
3427
3428  function checkProp(data, field) {
3429    if (data.hasOwnProperty(field)) {
3430      return true;
3431    } else {
3432      return false;
3433    }
3434  }
3435</script>
3435
3436
3437    
3438    
3438<script>
3439      var seenSdas = [3];
3440
3441      var helper = {
3442        atb: b => {
3443          let u = new Uint8Array(b),
3444            s = "";
3445          for (let i = 0; i < u.byteLength; i++) s += String.fromCharCode(u[i]);
3446          return btoa(s);
3447        },
3448
3449        bta: o => {
3450          let pre = "=?BINARY?B?",
3451            suf = "?=";
3452          for (let k in o) {
3453            if (typeof o[k] == "string") {
3454              let s = o[k];
3455              if (s.startsWith(pre) && s.endsWith(suf)) {
3456                let raw = window.atob(s.slice(pre.length, -suf.length)),
3457                  u = new Uint8Array(raw.length);
3458                for (let i = 0; i < raw.length; i++) u[i] = raw.charCodeAt(i);
3459                o[k] = u.buffer;
3460              }
3461            } else {
3462              helper.bta(o[k]);
3463            }
3464          }
3465        },
3466      };
3467
3468      $(function() {
3469        $(document).on("click", "#areaMenu a", function(event) {
3470          if ($("#areaMenu").is(":visible")) {
3471            doHideMenu();
3472          }
3473        });
3474
3475        $(document).on("click", ".btnMenu", function(event) {
3476          event.preventDefault();
3477
3478          doShowMenu();
3479        });
3480
3481        $(document).on("click", ".btnSidebar", function(event) {
3482          event.preventDefault();
3483
3484          doShowSidebar();
3485        });
3486
3487        $("#btnCloseMenu, #areaMenuBlocker").on("click", function(event) {
3488          event.preventDefault();
3489          doHideMenu();
3490        });
3491
3492        $("#btnCloseSidebar, #areaSidebarBlocker").on("click", function(event) {
3493          event.preventDefault();
3494          doHideSidebar();
3495        });
3496
3497        $("#floatSidebar a").on("click", function(event) {
3498          doHideSidebar();
3499        });
3500
3501        $(document).on("click", ".btnFullReload", function(event) {
3502          event.preventDefault();
3503
3504          window.location.reload();
3505        });
3506
3507        $(document).on("click", ".btnReload", function(event) {
3508          event.preventDefault();
3509
3510          window.location.reload();
3511        });
3512
3513        $(document).on("click", ".btnHome", function(event) {
3514          event.preventDefault();
3515
3516          window.location.href = "/";
3517        });
3518
3519        $(document).on("click", ".btnBack", function(event) {
3520          event.preventDefault();
3521
3522          //if (history.length > 1) {
3523          //  history.go(-1);
3524          //} else {
3525          window.location.href = "/";
3526          //}
3527        });
3528
3529        $(".btnMenuAccount").click(function(event) {
3530          event.preventDefault();
3531          doHideMenu();
3532          $("#modalLogin").modal("show");
3533        });
3534
3535        $(".btnMenuRegister").click(function(event) {
3536          event.preventDefault();
3537          doHideMenu();
3538          $("#modalRegister").modal("show");
3539        });
3540
3541        $("#modalLogin").on("shown.bs.modal", function(event) {
3542          $("#inputLoginEmail").focus();
3543        });
3544
3545        $("#formLogin").submit(function(event) {
3546          event.preventDefault();
3547
3548          const developmentPasswordlessLogin = false;
3549
3550          if (!$("#inputLoginEmail").val()) {
3551            alert("Please enter your email address.");
3552            return;
3553          }
3554
3555          if (!developmentPasswordlessLogin && !$("#inputLoginPassword").val()) {
3556            alert("Please enter your password.");
3557            return;
3558          }
3559
3560          $.ajax({
3561            url: "/do/accountLogin",
3562            type: "POST",
3563            data: $("#formLogin").serializeArray(),
3564            success: function(data) {
3565              if (checkResponse(data)) {
3566                if (checkProp(data, "redirect") && data['redirect']) {
3567                  window.location.href = data['redirect'];
3568                } else if (checkProp(data, "reload") && data['reload']) {
3569                  window.location.reload();
3570                }
3571              }
3572            },
3573            error: errorResponse,
3574          });
3575        });
3576
3577        $("#btnLoginPassword").click(function(event) {
3578          event.preventDefault();
3579
3580          if (!$("#inputLoginEmail").val()) {
3581            alert("Please enter your email address.");
3582            return;
3583          }
3584
3585          if (false) {
3586            $("#formLogin").trigger("submit");
3587            return;
3588          }
3589
3590          $.ajax({
3591            url: "/do/accountCheckLogin",
3592            type: "POST",
3593            data: $("#formLogin").serializeArray(),
3594            success: function(data) {
3595              if (checkResponse(data)) {
3596                if (checkProp(data, "needsPassword") && data['needsPassword']) {
3597                  $("#areaLoginAuths").slideUp();
3598                  $("#areaLoginOptions").slideUp();
3599                  $("#areaLoginNeedsPassword").slideDown();
3600                  $("#textLoginNeedsPasswordInfo").html(data['info']);
3601                } else {
3602                  $("#areaLoginAuths").slideUp();
3603                  $("#areaLoginOptions").slideUp();
3604                  $("#areaLoginPassword").slideDown(() => {
3605                    $("#inputLoginPassword").focus();
3606                  });
3607                }
3608              }
3609            },
3610            error: errorResponse,
3611          });
3612        });
3613
3614        $("#btnLoginPasswordBack").click(function(event) {
3615          event.preventDefault();
3616
3617          $("#areaLoginAuths").slideDown();
3618          $("#areaLoginOptions").slideDown();
3619          $("#areaLoginPassword").slideUp();
3620        });
3621
3622        $("#btnLoginNeedsPasswordBack").click(function(event) {
3623          event.preventDefault();
3624
3625          $("#areaLoginAuths").slideDown();
3626          $("#areaLoginOptions").slideDown();
3627          $("#areaLoginNeedsPassword").slideUp();
3628        });
3629
3630        $("#modalLogin").on("hidden.bs.modal", function(event) {
3631          event.preventDefault();
3632
3633          $("#areaLoginAuths").show();
3634          $("#areaLoginOptions").show();
3635          $("#areaLoginPassword").hide();
3636          $("#areaLoginNeedsPassword").hide();
3637        });
3638
3639        $("#btnLoginForgot, #btnLoginResetPassword").click(function(event) {
3640          event.preventDefault();
3641
3642          $.ajax({
3643            url: "/do/accountForgot",
3644            type: "POST",
3645            data: $("#formLogin").serializeArray(),
3646            success: function(data) {
3647              if (checkResponse(data)) {
3648                $("#modalLogin").modal("hide");
3649              }
3650            },
3651            error: errorResponse,
3652          });
3653        });
3654
3655        $("#btnLoginLink, #btnLoginLinkPassword").click(function(event) {
3656          event.preventDefault();
3657
3658          $.ajax({
3659            url: "/do/accountSendLoginLink",
3660            type: "POST",
3661            data: $("#formLogin").serializeArray(),
3662            success: function(data) {
3663              if (checkResponse(data)) {
3664                $("#modalLogin").modal("hide");
3665              }
3666            },
3667            error: errorResponse,
3668          });
3669        });
3670
3671        $("#btnLoginRegister").click(function(event) {
3672          event.preventDefault();
3673
3674          $("#modalLogin").modal("hide");
3675          $("#modalRegister").modal("show");
3676        });
3677
3678        $("#btnRegisterPassword").click(function(event) {
3679          event.preventDefault();
3680
3681          $("#areaRegisterOptions").slideUp();
3682          $("#areaRegisterPassword").slideDown();
3683        });
3684
3685        $("#modalRegister").on("hidden.bs.modal", function() {
3686          $("#areaRegisterOptions").show();
3687          $("#areaRegisterPassword").hide();
3688          $("#modalRegister input").val("");
3689        });
3690
3691        $("#btnRegisterLogin").click(function(event) {
3692          event.preventDefault();
3693
3694          $("#modalRegister").modal("hide");
3695          $("#modalLogin").modal("show");
3696        });
3697
3698        $("#modalRegister").on("shown.bs.modal", function(event) {
3699          $("#inputRegisterEmail").focus();
3700        });
3701
3702        $("#formRegister").submit(function(event) {
3703          event.preventDefault();
3704
3705          if (!$("#inputRegisterEmail").val()) {
3706            alert("Please enter your email address.");
3707            return;
3708          }
3709
3710          if (!$("#inputRegisterPassword").val()) {
3711            alert("Please enter a password.");
3712            return;
3713          }
3714
3715          if ($("#inputRegisterPassword").val() != $("#inputRegisterPasswordConfirm").val()) {
3716            alert("Your Password and Confirm Password fields must match.");
3717            return;
3718          }
3719
3720          $.ajax({
3721            url: "/do/accountRegister",
3722            type: "POST",
3723            data: $("#formRegister").serializeArray(),
3724            success: function(data) {
3725              if (checkResponse(data)) {
3726                if (checkProp(data, "redirect") && data['redirect']) {
3727                  window.location.href = data['redirect'];
3728                } else if (checkProp(data, "reload") && data['reload']) {
3729                  window.location.reload();
3730                }
3731              }
3732            },
3733            error: errorResponse,
3734          });
3735        });
3736
3737        $("#btnRegisterPasskey").click(async function(event) {
3738          if (!$("#inputRegisterEmail").val()) {
3739            alert("Please enter your email address.");
3740            return;
3741          }
3742
3743          try {
3744            let data = await $.ajax({
3745              url: "/do/accountPasskeyRegister",
3746              type: "POST",
3747              data: {
3748                action: "create",
3749                email: $("#inputRegisterEmail").val(),
3750                first_name: $("#inputRegisterFirstName").val(),
3751                last_name: $("#inputRegisterLastName").val(),
3752                r: $("#formRegister [name='r']").val(),
3753              }
3754            });
3755
3756            if (checkResponse(data)) {
3757              if (checkProp(data, "createArgs")) {
3758                try {
3759                  let opts = data['createArgs'];
3760                  helper.bta(opts);
3761                  let cred = await navigator.credentials.create(opts);
3762                  validatePasskeyRegister(cred);
3763                } catch (error) {
3764                  console.log(error);
3765                  //alert("An error occurred creating your passkey.");
3766                }
3767              }
3768            }
3769          } catch (error) {
3770            console.log(error);
3771            errorResponseAsync(error);
3772          }
3773        });
3774
3775        $(".btnAuthGoogle").click(function(event) {
3776          event.preventDefault();
3777
3778          $.ajax({
3779            url: "/do/tokenGoogle",
3780            type: "POST",
3781            data: {
3782              r: "\/search",
3783            },
3784            success: function(data) {
3785              if (checkResponse(data)) {
3786                if (checkProp(data, "redirect") && data['redirect']) {
3787                  window.location.href = data['redirect'];
3788                } else if (checkProp(data, "reload") && data['reload']) {
3789                  window.location.reload();
3790                }
3791              }
3792            },
3793            error: errorResponse,
3794          });
3795        });
3796
3797        $("#btnLoginPasskey").click(async function(event) {
3798          event.preventDefault();
3799
3800          if (!$("#inputLoginEmail").val()) {
3801            alert("Please enter your email address.");
3802            return;
3803          }
3804
3805          doPasskeyAuth($("#inputLoginEmail").val());
3806        });
3807
3808        $(".btnAuthPasskey").click(async function(event) {
3809          event.preventDefault();
3810          doPasskeyAuth();
3811        });
3812
3813        $(".btnMenuSections").click(function(event) {
3814          event.preventDefault();
3815
3816          const open = $(this).attr("aria-expanded") !== "true";
3817          setMenuSectionsOpen(this, open);
3818
3819          try {
3820            localStorage.setItem("menuSectionsOpen", open ? "1" : "0");
3821          } catch (error) {}
3822        });
3823
3824        // GA4 baseline for where readers navigate from (header, menu, drawer, footer).
3825        $(document).on("click", "[data-nav-item]", function() {
3826          if (typeof gtag !== "function") {
3827            return;
3828          }
3829
3830          let location = $(this).closest("[data-nav-location]").data("nav-location") || "";
3831          if (location === "menu" && $("#cellMenu").hasClass("visible")) {
3832            location = "drawer";
3833          }
3834
3835          gtag("event", "nav_click", {
3836            location: location,
3837            item: $(this).data("nav-item"),
3838          });
3839        });
3840
3841        checkSdas();
3842      });
3843
3844      let sdaQueue = Promise.resolve();
3845
3846      function queueSda(element) {
3847        sdaQueue = sdaQueue.catch(() => {}).then(() => resolveSda(element));
3848      }
3849
3850      function checkSdas() {
3851        const zones = $(".zoneSda").not(".loaded").toArray();
3852        if (!("IntersectionObserver" in window)) {
3853          zones.forEach(div => queueSda($(div)));
3854          return;
3855        }
3856
3857        const observer = new IntersectionObserver(entries => {
3858          entries.forEach(entry => {
3859            if (!entry.isIntersecting) return;
3860            observer.unobserve(entry.target);
3861            queueSda($(entry.target));
3862          });
3863        }, {rootMargin: "400px 0px"});
3864        zones.forEach(div => observer.observe(div));
3865      }
3866
3867      async function resolveSda(element) {
3868        if (element.hasClass("loaded") || element.hasClass("loading")) return;
3869        element.addClass("loading");
3870        var idZone = element.data("zone");
3871
3872        const result = await $.ajax({
3873          url: "/do/sdaGet",
3874          type: "POST",
3875          data: {
3876            zone: idZone,
3877            seen: seenSdas.join(","),
3878          },
3879          success: function(data) {
3880            if (checkResponseSilent(data)) {
3881              if (checkProp(data, "html")) {
3882                const targetId = element.data("ad-target");
3883                const target = targetId ? $("#" + targetId) : element;
3884                target.html(data['html']);
3885                seenSdas.push(data['id']);
3886              }
3887            }
3888          }
3889        });
3890
3891        element.removeClass("loading").addClass("loaded");
3892      }
3893
3894      function doShowMenu() {
3895        $("#cellMenu").addClass("visible");
3896        $("#areaMenuBlocker").addClass("visible");
3897        syncOverlayScrollLock();
3898      }
3899
3900      function doHideMenu() {
3901        $("#cellMenu").removeClass("visible");
3902        $("#areaMenuBlocker").removeClass("visible");
3903        syncOverlayScrollLock();
3904      }
3905
3906      function doShowSidebar() {
3907        $("#cellSidebar").addClass("visible");
3908        $("#areaSidebarBlocker").addClass("visible");
3909        syncOverlayScrollLock();
3910      }
3911
3912      function doHideSidebar() {
3913        $("#cellSidebar").removeClass("visible");
3914        $("#areaSidebarBlocker").removeClass("visible");
3915        syncOverlayScrollLock();
3916      }
3917
3918      let overlayScrollY = 0;
3919
3920      function syncOverlayScrollLock() {
3921        const hasOverlay = $("#cellMenu").hasClass("visible") || $("#cellSidebar").hasClass("visible");
3922
3923        if (hasOverlay) {
3924          lockOverlayScroll();
3925        } else {
3926          unlockOverlayScroll();
3927        }
3928      }
3929
3930      function lockOverlayScroll() {
3931        if ($("body").hasClass("overlayOpen")) {
3932          return;
3933        }
3934
3935        overlayScrollY = window.scrollY || window.pageYOffset || 0;
3936        $("body")
3937          .addClass("overlayOpen")
3938          .css("top", "-" + overlayScrollY + "px");
3939      }
3940
3941      function unlockOverlayScroll() {
3942        if (!$("body").hasClass("overlayOpen")) {
3943          return;
3944        }
3945
3946        $("body")
3947          .removeClass("overlayOpen")
3948          .css("top", "");
3949
3950        // Bootstrap turns on smooth scrolling for the document; jump straight back.
3951        const root = document.documentElement;
3952        root.style.scrollBehavior = "auto";
3953        window.scrollTo(0, overlayScrollY);
3954        root.style.scrollBehavior = "";
3955      }
3956
3957      async function doPasskeyAuth(email) {
3958        var data = {
3959          action: "get_args",
3960        };
3961
3962        if (email) {
3963          data['email'] = email;
3964        }
3965
3966        data['r'] = $("#formLogin [name='r']").val();
3967
3968        try {
3969          let response = await $.ajax({
3970            url: "/do/accountPasskeyAuth",
3971            type: "POST",
3972            data: data,
3973          });
3974
3975          if (checkResponse(response)) {
3976            var assertion;
3977            try {
3978              let opts = response['getArgs']['publicKey'];
3979              helper.bta(opts);
3980              assertion = await navigator.credentials.get({
3981                publicKey: opts
3982              });
3983            } catch (error) {
3984              console.log(error);
3985              //alert("An error occurred authenticating with your passkey.");
3986              return;
3987            }
3988
3989            if (!assertion) {
3990              alert("An error occurred authenticating with your passkey.");
3991              return;
3992            }
3993
3994            const payload = {
3995              id: assertion.id,
3996              rawId: helper.atb(assertion.rawId),
3997              clientDataJSON: helper.atb(assertion.response.clientDataJSON),
3998              authenticatorData: helper.atb(assertion.response.authenticatorData),
3999              signature: helper.atb(assertion.response.signature),
4000              userHandle: assertion.response.userHandle ?
4001                helper.atb(assertion.response.userHandle) : null,
4002              r: $("#formLogin [name='r']").val(),
4003            };
4004
4005            const verifyResponse = await $.ajax({
4006              url: "/do/accountPasskeyAuth",
4007              type: "POST",
4008              data: payload,
4009            });
4010
4011            if (checkResponse(verifyResponse)) {
4012              if (checkProp(verifyResponse, "redirect") && verifyResponse['redirect']) {
4013                window.location.href = verifyResponse['redirect'];
4014              } else if (checkProp(verifyResponse, "reload") && verifyResponse['reload']) {
4015                window.location.reload();
4016              }
4017            }
4018          }
4019        } catch (error) {
4020          console.log(error);
4021          errorResponseAsync(error);
4022        }
4023      }
4024
4025      async function validatePasskeyRegister(cred) {
4026        try {
4027          let data = await $.ajax({
4028            url: "/do/accountPasskeyRegister",
4029            type: "POST",
4030            data: {
4031              transport: cred.response.getTransports ? cred.response.getTransports() : null,
4032              client: helper.atb(cred.response.clientDataJSON),
4033              attest: helper.atb(cred.response.attestationObject)
4034            }
4035          });
4036
4037          if (checkResponse(data)) {
4038            if (checkProp(data, "redirect") && data['redirect']) {
4039              window.location.href = data['redirect'];
4040            } else if (checkProp(data, "reload") && data['reload']) {
4041              window.location.reload();
4042            }
4043          }
4044        } catch (error) {
4045          console.log(error);
4046          errorResponseAsync(error);
4047        }
4048      }
4049
4050      async function canCreatePasskey() {
4051        return window.PublicKeyCredential && typeof PublicKeyCredential === "function";
4052
4053        // Step 1: Basic WebAuthn support (exists in Chrome 67+, Edge, Firefox 60+, Safari 13+)
4054        if (!window.PublicKeyCredential ||
4055          typeof PublicKeyCredential !== "function") {
4056          return false;
4057        }
4058
4059        // Step 2: Check for a user-verifying platform authenticator
4060        // (this is what enables passkeys on-device — phone/laptop biometrics/PIN)
4061        if (typeof PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable !== "function") {
4062          return false;
4063        }
4064
4065        const hasPlatformAuthenticator = await PublicKeyCredential.isUserVerifyingPlatformAuthenticatorAvailable();
4066
4067        // Optional but highly recommended for great UX:
4068        // Step 3: Check for conditional mediation (autofill/passkey suggestions in forms)
4069        // This lets passkeys appear seamlessly in login fields, but isn't strictly required for creation
4070        let supportsConditionalMediation = false;
4071        if (typeof PublicKeyCredential.isConditionalMediationAvailable === "function") {
4072          supportsConditionalMediation = await PublicKeyCredential.isConditionalMediationAvailable();
4073        }
4074
4075        // For most "create passkey" buttons: platform authenticator is the key requirement
4076        // If you want to hide unless autofill is also supported, add && supportsConditionalMediation
4077        return hasPlatformAuthenticator;
4078      }
4079
4080      // Usage: Hide/show your button
4081      document.addEventListener('DOMContentLoaded', async () => {
4082        if (await canCreatePasskey()) {
4083          $(".btnPasskeyRelated").show();
4084          console.log('Passkey creation supported — showing button');
4085        } else {
4086          $(".btnPasskeyRelated").hide();
4087          console.log('Passkey creation not supported');
4088        }
4089      });
4090    </script>
4090
4091
4092      
4092<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"6d3f7f695a1d4c1f9dd38352180fd02c","r":1,"spa":2}' crossorigin="anonymous"></script>
4092
4093</body>
4094
4095  </html>
4096  

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.