More stories

  • in

    Here Are the Threats Terrorizing Election Workers

    @media (pointer: coarse) {
    .nytslm_outerContainer {
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
    }
    }

    .nytslm_outerContainer {
    display: flex;
    align-items: center;
    /* Fixes IE */
    overflow-x: auto;
    box-shadow: -6px 0 white, 6px 0 white, 1px 3px 6px rgba(0, 0, 0, 0.15);
    padding: 10px 1.25em 10px;
    transition: all 250ms;
    -ms-overflow-style: none;
    /* IE 10+ */
    scrollbar-width: none;
    /* Firefox */
    background: white;
    margin-bottom: 20px;
    z-index: 1000;
    }

    @media (min-width: 1024px) {
    .nytslm_outerContainer {
    margin-bottom: 0px;
    padding: 13px 1.25em 10px;
    }
    }

    .nytslm::-webkit-scrollbar {
    display: none;
    /* Safari and Chrome */
    }

    .nytslm_innerContainer {
    margin: unset;
    display: flex;
    align-items: center;
    }

    @media (min-width: 600px) {
    .nytslm_innerContainer {
    margin: auto;
    min-width: 600px;
    }
    }

    .nytslm_title {
    padding-right: 1em;
    border-right: 1px solid #ccc;
    }

    @media (min-width: 740px) {
    .nytslm_title {
    max-width: none;
    font-size: 1.0625rem;
    line-height: 1.25rem;
    }
    }

    .nytslm_spacer {
    width: 0;
    border-right: 1px solid #E2E2E2;
    height: 45px;
    margin: 0 1.4em;
    }

    .nytslm_list {
    font-family: nyt-franklin, helvetica, arial, sans-serif;
    display: flex;
    width: auto;
    list-style: none;
    padding-left: 1em;
    flex-shrink: 0;
    align-items: baseline;
    justify-content: center;
    }

    .nytslm_li {
    margin-right: 1.4em;
    flex-shrink: 0;
    font-size: 0.8125rem;
    line-height: 0.8125rem;
    font-weight: 600;
    padding: 1em 0;
    }

    #nytslm .nytslm_li a {
    color: #121212;
    text-decoration: none;
    }

    #nytslm .nytsmenu_li_current,
    #nytslm .nytslm_li a:hover,
    #nytslm .nytslm_li a:active,
    #nytslm .nytslm_li a:focus {
    color: #121212;
    border-bottom: 2px solid #121212;
    padding-bottom: 2px;
    }

    .nytslm_li_live_loud:after {
    content: ‘LIVE’
    }

    .nytslm_li_live_loud {
    background-color: #d0021b;
    color: white;
    border-radius: 3px;
    padding: 4px 6px 2px 6px;
    margin-right: 2px;
    display: inline-block;
    letter-spacing: 0.03rem;
    font-weight: 700;
    }

    .nytslm_li_upcoming_loud {
    border: 1px solid #d0021b;
    color: #d0021b;
    border-radius: 3px;
    padding: 4px 6px 2px 6px;
    margin-right: 2px;
    display: inline-block;
    letter-spacing: 0.03rem;
    font-weight: 700;
    }

    .nytslm_li_upcoming_loud:before {
    content: ‘Upcoming’
    }

    .nytslm_li_loud a:hover,
    .nytslm_li_loud a:active,
    .nytslm_li_loud a:focus {
    border-bottom: 2px solid;
    padding-bottom: 2px;
    }

    .nytslm_li_updated {
    color: #777;
    }

    #masthead-bar-one {
    display: none;
    }

    .electionNavbar__logoSvg {
    width: 80px;
    align-self: center;
    display: flex;
    }

    @media(min-width: 600px) {
    .electionNavbar__logoSvg {
    width: 100px;
    }
    }

    .nytslm_notification {
    border-left: 1px solid #ccc;
    font-family: nyt-franklin, helvetica, arial, sans-serif;
    padding-left: 1em;
    }

    .nytslm_notification_label {
    color: #D0021B;
    text-transform: uppercase;
    font-weight: 700;
    font-size: 0.6875rem;
    margin-bottom: 0.2em;
    letter-spacing: 0.02em;
    }

    .nytslm_notification_link {
    font-weight: 600;
    color: #121212;
    display: flex;
    align-items: center;
    }

    .nytslm_notification_headline {
    font-size: 0.875rem;
    line-height: 1.0625rem;
    }

    .nytslm_notification_image_wrapper {
    position: relative;
    max-width: 75px;
    margin-left: 10px;
    flex-shrink: 0;
    }

    .nytslm_notification_image {
    max-width: 100%;
    }

    .nytslm_notification_image_live_bug {
    position: absolute;
    text-transform: uppercase;
    bottom: 7px;
    left: 2px;

    font-size: 0.5rem;
    background-color: #d0021b;
    color: white;
    border-radius: 3px;
    padding: 4px 4px 2px 4px;
    font-weight: 700;
    margin-right: 2px;
    letter-spacing: 0.03rem;
    }

    /* No hover state on in app */
    .Hybrid .nytslm_li a:hover,
    .Hybrid .nytslm_li_loud a:hover {
    border-bottom: none;
    padding-bottom: 0;
    }

    .Hybrid #TOP_BANNER_REGION {
    display: none;
    }

    .nytslm_st0 {
    fill: #f4564a;
    }

    .nytslm_st1 {
    fill: #ffffff;
    }

    .nytslm_st2 {
    fill: #2b8ad8;
    }

    State Certified Vote Totals

    Election Disinformation

    Full Results

    Transition Updates

    “),e+=””+b+””,e+=””,d&&(e+=””,e+=””,e+=”Live”,e+=””),e+=””,e}function getVariant(){var a=window.NYTD&&window.NYTD.Abra&&window.NYTD.Abra.getAbraSync&&window.NYTD.Abra.getAbraSync(“STYLN_elections_notifications”);// Only actually have control situation in prd and stg
    return[“www.nytimes.com”,”www.stg.nytimes.com”].includes(window.location.hostname)||(a=”STYLN_elections_notifications”),a||”0_control”}function reportData(){if(window.dataLayer){var a;try{a=dataLayer.find(function(a){return!!a.user}).user}catch(a){}var b={abtest:{test:”styln-elections-notifications”,variant:getVariant()},module:{name:”styln-elections-notifications”,label:getVariant(),region:”TOP_BANNER”},user:a};window.dataLayer.push(Object.assign({},b,{event:”ab-alloc”})),window.dataLayer.push(Object.assign({},b,{event:”ab-expose”})),window.dataLayer.push(Object.assign({},b,{event:”impression”}))}}function insertNotification(a,b){// Bail here if the user is in control
    if(reportData(),”0_control”!==getVariant()){// Remove menu bar items or previous notification
    var c=document.querySelector(“.nytslm_innerContainer”);if(c&&1 30 * 60 * 1000) return restoreMenuIfNecessary();
    // Do not update DOM if the content won’t change
    if(currentNotificationContents!==a.text&&window.localStorage.getItem(“stylnelecs”)!==a.timestamp)// Do not show if user has interacted with this link
    // if (Cookie.get(‘stylnelecs’) === data.timestamp) return;
    {expireLocalStorage(“stylnelecs”),currentNotificationContents=a.text;// Construct URL for tracking
    var b=a.link.split(“#”),c=b[0]+”?action=click&pgtype=Article&state=default&module=styln-elections-notifications&variant=1_election_notifications&region=TOP_BANNER&context=Menu#”+b[1],d=formatNotification(c,a.text,a.kicker,a.image);insertNotification(d,function(){var b=document.querySelector(“.nytslm_notification_link”);return b?void(b.onclick=function(){window.localStorage.setItem(“stylnelecs”,a.timestamp)}):null})}})}(function(){navigator.userAgent.includes(“nytios”)||navigator.userAgent.includes(“nyt_android”)||window.stylnelecsHasLoaded||(// setInterval(getUpdate, 5000);
    window.stylnelecsHasLoaded=!0)})(),function(){try{if(navigator.userAgent.includes(“nytios”)||navigator.userAgent.includes(“nyt_android”)){var a=document.getElementsByClassName(“nytslm_title”)[0];a.style.pointerEvents=”none”}}catch(a){}}(); More

  • in

    Georgia Republicans Contort Themselves to Avoid Trump’s Fury

    @media (pointer: coarse) {
    .nytslm_outerContainer {
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
    }
    }

    .nytslm_outerContainer {
    display: flex;
    align-items: center;
    /* Fixes IE */
    overflow-x: auto;
    box-shadow: -6px 0 white, 6px 0 white, 1px 3px 6px rgba(0, 0, 0, 0.15);
    padding: 10px 1.25em 10px;
    transition: all 250ms;
    -ms-overflow-style: none;
    /* IE 10+ */
    scrollbar-width: none;
    /* Firefox */
    background: white;
    margin-bottom: 20px;
    z-index: 1000;
    }

    @media (min-width: 1024px) {
    .nytslm_outerContainer {
    margin-bottom: 0px;
    padding: 13px 1.25em 10px;
    }
    }

    .nytslm::-webkit-scrollbar {
    display: none;
    /* Safari and Chrome */
    }

    .nytslm_innerContainer {
    margin: unset;
    display: flex;
    align-items: center;
    }

    @media (min-width: 600px) {
    .nytslm_innerContainer {
    margin: auto;
    min-width: 600px;
    }
    }

    .nytslm_title {
    padding-right: 1em;
    border-right: 1px solid #ccc;
    }

    @media (min-width: 740px) {
    .nytslm_title {
    max-width: none;
    font-size: 1.0625rem;
    line-height: 1.25rem;
    }
    }

    .nytslm_spacer {
    width: 0;
    border-right: 1px solid #E2E2E2;
    height: 45px;
    margin: 0 1.4em;
    }

    .nytslm_list {
    font-family: nyt-franklin, helvetica, arial, sans-serif;
    display: flex;
    width: auto;
    list-style: none;
    padding-left: 1em;
    flex-shrink: 0;
    align-items: baseline;
    justify-content: center;
    }

    .nytslm_li {
    margin-right: 1.4em;
    flex-shrink: 0;
    font-size: 0.8125rem;
    line-height: 0.8125rem;
    font-weight: 600;
    padding: 1em 0;
    }

    #nytslm .nytslm_li a {
    color: #121212;
    text-decoration: none;
    }

    #nytslm .nytsmenu_li_current,
    #nytslm .nytslm_li a:hover,
    #nytslm .nytslm_li a:active,
    #nytslm .nytslm_li a:focus {
    color: #121212;
    border-bottom: 2px solid #121212;
    padding-bottom: 2px;
    }

    .nytslm_li_live_loud:after {
    content: ‘LIVE’
    }

    .nytslm_li_live_loud {
    background-color: #d0021b;
    color: white;
    border-radius: 3px;
    padding: 4px 6px 2px 6px;
    margin-right: 2px;
    display: inline-block;
    letter-spacing: 0.03rem;
    font-weight: 700;
    }

    .nytslm_li_upcoming_loud {
    border: 1px solid #d0021b;
    color: #d0021b;
    border-radius: 3px;
    padding: 4px 6px 2px 6px;
    margin-right: 2px;
    display: inline-block;
    letter-spacing: 0.03rem;
    font-weight: 700;
    }

    .nytslm_li_upcoming_loud:before {
    content: ‘Upcoming’
    }

    .nytslm_li_loud a:hover,
    .nytslm_li_loud a:active,
    .nytslm_li_loud a:focus {
    border-bottom: 2px solid;
    padding-bottom: 2px;
    }

    .nytslm_li_updated {
    color: #777;
    }

    #masthead-bar-one {
    display: none;
    }

    .electionNavbar__logoSvg {
    width: 80px;
    align-self: center;
    display: flex;
    }

    @media(min-width: 600px) {
    .electionNavbar__logoSvg {
    width: 100px;
    }
    }

    .nytslm_notification {
    border-left: 1px solid #ccc;
    font-family: nyt-franklin, helvetica, arial, sans-serif;
    padding-left: 1em;
    }

    .nytslm_notification_label {
    color: #D0021B;
    text-transform: uppercase;
    font-weight: 700;
    font-size: 0.6875rem;
    margin-bottom: 0.2em;
    letter-spacing: 0.02em;
    }

    .nytslm_notification_link {
    font-weight: 600;
    color: #121212;
    display: flex;
    align-items: center;
    }

    .nytslm_notification_headline {
    font-size: 0.875rem;
    line-height: 1.0625rem;
    }

    .nytslm_notification_image_wrapper {
    position: relative;
    max-width: 75px;
    margin-left: 10px;
    flex-shrink: 0;
    }

    .nytslm_notification_image {
    max-width: 100%;
    }

    .nytslm_notification_image_live_bug {
    position: absolute;
    text-transform: uppercase;
    bottom: 7px;
    left: 2px;

    font-size: 0.5rem;
    background-color: #d0021b;
    color: white;
    border-radius: 3px;
    padding: 4px 4px 2px 4px;
    font-weight: 700;
    margin-right: 2px;
    letter-spacing: 0.03rem;
    }

    /* No hover state on in app */
    .Hybrid .nytslm_li a:hover,
    .Hybrid .nytslm_li_loud a:hover {
    border-bottom: none;
    padding-bottom: 0;
    }

    .Hybrid #TOP_BANNER_REGION {
    display: none;
    }

    .nytslm_st0 {
    fill: #f4564a;
    }

    .nytslm_st1 {
    fill: #ffffff;
    }

    .nytslm_st2 {
    fill: #2b8ad8;
    }

    State Certified Vote Totals

    Election Disinformation

    Full Results

    Transition Updates

    “),e+=””+b+””,e+=””,d&&(e+=””,e+=””,e+=”Live”,e+=””),e+=””,e}function getVariant(){var a=window.NYTD&&window.NYTD.Abra&&window.NYTD.Abra.getAbraSync&&window.NYTD.Abra.getAbraSync(“STYLN_elections_notifications”);// Only actually have control situation in prd and stg
    return[“www.nytimes.com”,”www.stg.nytimes.com”].includes(window.location.hostname)||(a=”STYLN_elections_notifications”),a||”0_control”}function reportData(){if(window.dataLayer){var a;try{a=dataLayer.find(function(a){return!!a.user}).user}catch(a){}var b={abtest:{test:”styln-elections-notifications”,variant:getVariant()},module:{name:”styln-elections-notifications”,label:getVariant(),region:”TOP_BANNER”},user:a};window.dataLayer.push(Object.assign({},b,{event:”ab-alloc”})),window.dataLayer.push(Object.assign({},b,{event:”ab-expose”})),window.dataLayer.push(Object.assign({},b,{event:”impression”}))}}function insertNotification(a,b){// Bail here if the user is in control
    if(reportData(),”0_control”!==getVariant()){// Remove menu bar items or previous notification
    var c=document.querySelector(“.nytslm_innerContainer”);if(c&&1 30 * 60 * 1000) return restoreMenuIfNecessary();
    // Do not update DOM if the content won’t change
    if(currentNotificationContents!==a.text&&window.localStorage.getItem(“stylnelecs”)!==a.timestamp)// Do not show if user has interacted with this link
    // if (Cookie.get(‘stylnelecs’) === data.timestamp) return;
    {expireLocalStorage(“stylnelecs”),currentNotificationContents=a.text;// Construct URL for tracking
    var b=a.link.split(“#”),c=b[0]+”?action=click&pgtype=Article&state=default&module=styln-elections-notifications&variant=1_election_notifications&region=TOP_BANNER&context=Menu#”+b[1],d=formatNotification(c,a.text,a.kicker,a.image);insertNotification(d,function(){var b=document.querySelector(“.nytslm_notification_link”);return b?void(b.onclick=function(){window.localStorage.setItem(“stylnelecs”,a.timestamp)}):null})}})}(function(){navigator.userAgent.includes(“nytios”)||navigator.userAgent.includes(“nyt_android”)||window.stylnelecsHasLoaded||(// setInterval(getUpdate, 5000);
    window.stylnelecsHasLoaded=!0)})(),function(){try{if(navigator.userAgent.includes(“nytios”)||navigator.userAgent.includes(“nyt_android”)){var a=document.getElementsByClassName(“nytslm_title”)[0];a.style.pointerEvents=”none”}}catch(a){}}(); More

  • in

    ‘It Has to Stop’: Georgia Election Official Lashes Trump

    @media (pointer: coarse) {
    .nytslm_outerContainer {
    overflow-x: scroll;
    -webkit-overflow-scrolling: touch;
    }
    }

    .nytslm_outerContainer {
    display: flex;
    align-items: center;
    /* Fixes IE */
    overflow-x: auto;
    box-shadow: -6px 0 white, 6px 0 white, 1px 3px 6px rgba(0, 0, 0, 0.15);
    padding: 10px 1.25em 10px;
    transition: all 250ms;
    -ms-overflow-style: none;
    /* IE 10+ */
    scrollbar-width: none;
    /* Firefox */
    background: white;
    margin-bottom: 20px;
    z-index: 1000;
    }

    @media (min-width: 1024px) {
    .nytslm_outerContainer {
    margin-bottom: 0px;
    padding: 13px 1.25em 10px;
    }
    }

    .nytslm::-webkit-scrollbar {
    display: none;
    /* Safari and Chrome */
    }

    .nytslm_innerContainer {
    margin: unset;
    display: flex;
    align-items: center;
    }

    @media (min-width: 600px) {
    .nytslm_innerContainer {
    margin: auto;
    min-width: 600px;
    }
    }

    .nytslm_title {
    padding-right: 1em;
    border-right: 1px solid #ccc;
    }

    @media (min-width: 740px) {
    .nytslm_title {
    max-width: none;
    font-size: 1.0625rem;
    line-height: 1.25rem;
    }
    }

    .nytslm_spacer {
    width: 0;
    border-right: 1px solid #E2E2E2;
    height: 45px;
    margin: 0 1.4em;
    }

    .nytslm_list {
    font-family: nyt-franklin, helvetica, arial, sans-serif;
    display: flex;
    width: auto;
    list-style: none;
    padding-left: 1em;
    flex-shrink: 0;
    align-items: baseline;
    justify-content: center;
    }

    .nytslm_li {
    margin-right: 1.4em;
    flex-shrink: 0;
    font-size: 0.8125rem;
    line-height: 0.8125rem;
    font-weight: 600;
    padding: 1em 0;
    }

    #nytslm .nytslm_li a {
    color: #121212;
    text-decoration: none;
    }

    #nytslm .nytsmenu_li_current,
    #nytslm .nytslm_li a:hover,
    #nytslm .nytslm_li a:active,
    #nytslm .nytslm_li a:focus {
    color: #121212;
    border-bottom: 2px solid #121212;
    padding-bottom: 2px;
    }

    .nytslm_li_live_loud:after {
    content: ‘LIVE’
    }

    .nytslm_li_live_loud {
    background-color: #d0021b;
    color: white;
    border-radius: 3px;
    padding: 4px 6px 2px 6px;
    margin-right: 2px;
    display: inline-block;
    letter-spacing: 0.03rem;
    font-weight: 700;
    }

    .nytslm_li_upcoming_loud {
    border: 1px solid #d0021b;
    color: #d0021b;
    border-radius: 3px;
    padding: 4px 6px 2px 6px;
    margin-right: 2px;
    display: inline-block;
    letter-spacing: 0.03rem;
    font-weight: 700;
    }

    .nytslm_li_upcoming_loud:before {
    content: ‘Upcoming’
    }

    .nytslm_li_loud a:hover,
    .nytslm_li_loud a:active,
    .nytslm_li_loud a:focus {
    border-bottom: 2px solid;
    padding-bottom: 2px;
    }

    .nytslm_li_updated {
    color: #777;
    }

    #masthead-bar-one {
    display: none;
    }

    .electionNavbar__logoSvg {
    width: 80px;
    align-self: center;
    display: flex;
    }

    @media(min-width: 600px) {
    .electionNavbar__logoSvg {
    width: 100px;
    }
    }

    .nytslm_notification {
    border-left: 1px solid #ccc;
    font-family: nyt-franklin, helvetica, arial, sans-serif;
    padding-left: 1em;
    }

    .nytslm_notification_label {
    color: #D0021B;
    text-transform: uppercase;
    font-weight: 700;
    font-size: 0.6875rem;
    margin-bottom: 0.2em;
    letter-spacing: 0.02em;
    }

    .nytslm_notification_link {
    font-weight: 600;
    color: #121212;
    display: flex;
    align-items: center;
    }

    .nytslm_notification_headline {
    font-size: 0.875rem;
    line-height: 1.0625rem;
    }

    .nytslm_notification_image_wrapper {
    position: relative;
    max-width: 75px;
    margin-left: 10px;
    flex-shrink: 0;
    }

    .nytslm_notification_image {
    max-width: 100%;
    }

    .nytslm_notification_image_live_bug {
    position: absolute;
    text-transform: uppercase;
    bottom: 7px;
    left: 2px;

    font-size: 0.5rem;
    background-color: #d0021b;
    color: white;
    border-radius: 3px;
    padding: 4px 4px 2px 4px;
    font-weight: 700;
    margin-right: 2px;
    letter-spacing: 0.03rem;
    }

    /* No hover state on in app */
    .Hybrid .nytslm_li a:hover,
    .Hybrid .nytslm_li_loud a:hover {
    border-bottom: none;
    padding-bottom: 0;
    }

    .Hybrid #TOP_BANNER_REGION {
    display: none;
    }

    .nytslm_st0 {
    fill: #f4564a;
    }

    .nytslm_st1 {
    fill: #ffffff;
    }

    .nytslm_st2 {
    fill: #2b8ad8;
    }

    State Certified Vote Totals

    Election Disinformation

    Full Results

    Transition Updates

    “),e+=””+b+””,e+=””,d&&(e+=””,e+=””,e+=”Live”,e+=””),e+=””,e}function getVariant(){var a=window.NYTD&&window.NYTD.Abra&&window.NYTD.Abra.getAbraSync&&window.NYTD.Abra.getAbraSync(“STYLN_elections_notifications”);// Only actually have control situation in prd and stg
    return[“www.nytimes.com”,”www.stg.nytimes.com”].includes(window.location.hostname)||(a=”STYLN_elections_notifications”),a||”0_control”}function reportData(){if(window.dataLayer){var a;try{a=dataLayer.find(function(a){return!!a.user}).user}catch(a){}var b={abtest:{test:”styln-elections-notifications”,variant:getVariant()},module:{name:”styln-elections-notifications”,label:getVariant(),region:”TOP_BANNER”},user:a};window.dataLayer.push(Object.assign({},b,{event:”ab-alloc”})),window.dataLayer.push(Object.assign({},b,{event:”ab-expose”})),window.dataLayer.push(Object.assign({},b,{event:”impression”}))}}function insertNotification(a,b){// Bail here if the user is in control
    if(reportData(),”0_control”!==getVariant()){// Remove menu bar items or previous notification
    var c=document.querySelector(“.nytslm_innerContainer”);if(c&&1 30 * 60 * 1000) return restoreMenuIfNecessary();
    // Do not update DOM if the content won’t change
    if(currentNotificationContents!==a.text&&window.localStorage.getItem(“stylnelecs”)!==a.timestamp)// Do not show if user has interacted with this link
    // if (Cookie.get(‘stylnelecs’) === data.timestamp) return;
    {expireLocalStorage(“stylnelecs”),currentNotificationContents=a.text;// Construct URL for tracking
    var b=a.link.split(“#”),c=b[0]+”?action=click&pgtype=Article&state=default&module=styln-elections-notifications&variant=1_election_notifications&region=TOP_BANNER&context=Menu#”+b[1],d=formatNotification(c,a.text,a.kicker,a.image);insertNotification(d,function(){var b=document.querySelector(“.nytslm_notification_link”);return b?void(b.onclick=function(){window.localStorage.setItem(“stylnelecs”,a.timestamp)}):null})}})}(function(){navigator.userAgent.includes(“nytios”)||navigator.userAgent.includes(“nyt_android”)||window.stylnelecsHasLoaded||(// setInterval(getUpdate, 5000);
    window.stylnelecsHasLoaded=!0)})(),function(){try{if(navigator.userAgent.includes(“nytios”)||navigator.userAgent.includes(“nyt_android”)){var a=document.getElementsByClassName(“nytslm_title”)[0];a.style.pointerEvents=”none”}}catch(a){}}(); More

  • in

    Happy Thanksgiving to All Those Who Told the Truth in This Election

    With so many families gathering, in person or virtually, for this most unusual Thanksgiving after this most unusual election, if you’re looking for a special way to say grace this year, I recommend the West Point Cadet Prayer. It calls upon each of these future military leaders to always choose “the harder right instead of the easier wrong” and to know “no fear when truth and right are in jeopardy.”Because we should be truly thankful this Thanksgiving that — after Donald Trump spent the last three weeks refusing to acknowledge that he’d lost re-election and enlisted much of his party in a naked power play to ignore the vote counts and reinstall him in office — we had a critical mass of civil servants, elected officials and judges who did their jobs, always opting for the “harder right” that justice demanded, not the “easier wrong” that Trump and his allies were pressing for.It was their collective integrity, their willingness to stand with “Team America,” not either party, that protected our democracy when it was facing one of its greatest threats — from within. History will remember them fondly.Who am I talking about? I am talking about F.B.I. Director Christopher Wray, a Trump appointee, who in September openly contradicted the president and declared that historically we have not seen “any kind of coordinated national voter fraud effort in a major election” involving mail-in voting.I am talking about Georgia Secretary of State Brad Raffensperger — a conservative Republican — who oversaw the Georgia count and recount and insisted that Joe Biden had won fair and square and that his state’s two G.O.P. senators, David Perdue and Kelly Loeffler, did not garner enough votes to avoid election runoffs. Perdue and Loeffler dishonorably opted for the easier wrong and brazenly demanded Raffensperger resign for not declaring them winners.I am talking about Chris Krebs, the director of the Cybersecurity and Infrastructure Security Agency, who not only refused to back up Trump’s claims of election fraud, but whose agency issued a statement calling the 2020 election “the most secure in American history,” adding in bold type, “There is no evidence that any voting system deleted or lost votes, changed votes or was in any way compromised.”Krebs did the hard right thing, and Trump fired him by tweet for it. Mitch McConnell, doing the easy wrong thing, did not utter a peep of protest.I am talking about the Republican-led Board of Supervisors in Maricopa County, Ariz., which, according to The Washington Post, “voted unanimously Friday to certify the county’s election results, with the board chairman declaring there was no evidence of fraud or misconduct ‘and that is with a big zero.’”I am talking about Mitt Romney, the first (and still virtually only) Republican senator to truly call out Trump’s postelection actions for what they really were: “overt pressure on state and local officials to subvert the will of the people and overturn the election.”I am talking about U.S. District Judge Matthew W. Brann, a registered Republican, who dismissed Trump’s allegations that Republican voters in Pennsylvania had been illegally disadvantaged because some counties permitted voters to cure administrative errors on their mail ballots.As The Washington Post reported, Brann scathingly wrote on Saturday “that Trump’s attorneys had haphazardly stitched this allegation together ‘like Frankenstein’s Monster’ in an attempt to avoid unfavorable legal precedent.”And I am talking about all the other election verification commissioners who did the hard right things in tossing out Trump’s fraudulent claims of fraud.Asking for recounts in close elections was perfectly legitimate. But when that failed to produce any significant change in the results, Trump took us to a new dark depth. He pushed utterly bogus claims of voting irregularities and then tried to get Republican state legislatures to simply ignore the popular vote totals and appoint their own pro-Trump electors before the Electoral College meets on Dec. 14.That shifted this postelection struggle from Trump versus Biden — and who had the most votes — to Trump versus the Constitution — and who had the raw power and will to defend it or ignore it.To all of these people who chose to do the hard right thing and defend the Constitution and the rule of law over their party’s interest or personal gain, may you have a blessed Thanksgiving.You stand in stark contrast to Bill Barr, Mike Pompeo (who apparently never attended chapel at West Point), Mike Pence, Rudy Giuliani, Lindsey Graham, Mitch McConnell, Kevin McCarthy, Nikki Haley, Kayleigh McEnany and all the other G.O.P. senators and House members, who put their party and self-interest before their country and opted for the easy wrongs. History will remember them, too.Though Trump is now grudgingly letting the presidential transition proceed, we must never, ever, forget the damage he and his allies inflicted on American democracy by attacking its very core — our ability to hold free and fair elections and transfer power peacefully. Tens of millions of Americans now believe something that is untrue — that our system is rigged. Who knows what that will mean in the long run?The depths to which Trump and his legal team sank was manifested last Thursday when Giuliani and Sidney Powell held a news conference alleging, among other things, that software used to disadvantage Trump voters was created at the direction of the late Venezuelan President Hugo Chávez. It was insane.As Jonah Goldberg, a conservative critic of Trumpism, wrote in thedispatch.com: “The G.O.P.’s social media account spewed sound bites from Powell and Giuliani out into the country like a fire hose attached to a sewage tank.” Fox carried the whole news conference live — uninterrupted — for virtually its entire 90 minutes.Shame on all these people.Sure, now Trump and many of his enablers are finally bowing to reality — but it is not because they’ve developed integrity. It is because they WERE STOPPED by all those people who had integrity and did the hard right things.And “shame” is the right word for these people, because a sense of shame was lost these past four years and it needs to be re-established. Otherwise, what Trump and all his sycophants did gets normalized and permanently erodes confidence in our elections. That is how democracies die.You can only hope that once they are out of power, Barr, Pompeo, Giuliani and all their compatriots will be stopped on the streets, in restaurants or at conferences and politely but firmly asked by everyday Americans: “How could you have stayed all-in when Trump was violating the deepest norms that bind us as a democracy?”And if they are deaf to the message being sent from their fellow citizens, then let’s hope some will have to face an interrogation from their own children at the Thanksgiving table this year:“Mom, Dad — did you really side with Trump when it was Trump versus the Constitution?”The Times is committed to publishing a diversity of letters to the editor. We’d like to hear what you think about this or any of our articles. Here are some tips. And here’s our email: letters@nytimes.com.Follow The New York Times Opinion section on Facebook, Twitter (@NYTopinion) and Instagram. More