1<!DOCTYPE html><html lang="en"> <head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1"><link rel="icon" type="image/x-icon" href="https://penandthepad.com/favicon.ico"><link rel="icon" type="image/png" sizes="16x16" href="https://penandthepad.com/favicon-16x16.png"><link rel="icon" type="image/png" sizes="32x32" href="https://penandthepad.com/favicon-32x32.png"><link rel="icon" type="image/png" sizes="96x96" href="https://penandthepad.com/favicon-96x96.png"><link rel="icon" type="image/png" sizes="192x192" href="https://penandthepad.com/favicon-192x192.png"><link rel="preconnect" href="https://capi.connatix.com" crossorigin=""><link rel="preconnect" href="https://cd.connatix.com" crossorigin=""><link rel="preconnect" href="https://fonts.gstatic.com" crossorigin=""><link rel="preconnect" href="https://cmp.inmobi.com"><link rel="preload" as="image" fetchpriority="high" href="https://penandthepad.com/astrostatic/3a22e5c5/_image/?href=%2F_astro%2Fpenandthepad.CAcBzb0Z.svg&w=205&h=70&f=svg"><link rel="preload" href="https://cmp.inmobi.com/choice/vPn77x7pBG57Y/penandthepad.com/choice.js?tag_version=V3" as="script" data-no-early-hint="">
1<script async type="text/javascript" src="https://cmp.inmobi.com/choice/vPn77x7pBG57Y/penandthepad.com/choice.js?tag_version=V3"></script>
1<script>(function(){const url = "https://cmp.inmobi.com/choice/vPn77x7pBG57Y/penandthepad.com/choice.js?tag_version=V3"; 2const iabVendorsUrl = "https://cmp.inmobi.com/GVL-v3/vendor-list.json"; 3const googleAtpUrl = "https://cmp.inmobi.com/tcfv2/google-atp-list.json"; 4 5(function() { 6 var uspTries = 0; 7 var uspTriesLimit = 3; 8 9 function makeStub() { 10 var TCF_LOCATOR_NAME = '__tcfapiLocator'; 11 var queue = []; 12 var win = window; 13 var cmpFrame; 14 15 function addFrame() { 16 var doc = win.document; 17 var otherCMP = !!(win.frames[TCF_LOCATOR_NAME]); 18 19 if (!otherCMP) { 20 if (doc.body) { 21 var iframe = doc.createElement('iframe'); 22 23 iframe.style.cssText = 'display:none'; 24 iframe.name = TCF_LOCATOR_NAME; 25 doc.body.appendChild(iframe); 26 } else { 27 setTimeout(addFrame, 5); 28 } 29 } 30 return !otherCMP; 31 } 32 33 function tcfAPIHandler() { 34 var gdprApplies; 35 var args = arguments; 36 37 if (!args.length) { 38 return queue; 39 } else if (args[0] === 'setGdprApplies') { 40 if ( 41 args.length > 3 && 42 args[2] === 2 && 43 typeof args[3] === 'boolean' 44 ) { 45 gdprApplies = args[3]; 46 if (typeof args[2] === 'function') { 47 args[2]('set', true); 48 } 49 } 50 } else if (args[0] === 'ping') { 51 var retr = { 52 gdprApplies: gdprApplies, 53 cmpLoaded: false, 54 cmpStatus: 'stub' 55 }; 56 57 if (typeof args[2] === 'function') { 58 args[2](retr); 59 } 60 } else { 61 if(args[0] === 'init' && typeof args[3] === 'object') { 62 args[3] = Object.assign(args[3], { tag_version: 'V3' }); 63 } 64 queue.push(args); 65 } 66 } 67 68 function postMessageEventHandler(event) { 69 var msgIsString = typeof event.data === 'string'; 70 var json = {}; 71 72 try { 73 if (msgIsString) { 74 json = JSON.parse(event.data); 75 } else { 76 json = event.data; 77 } 78 } catch (ignore) {} 79 80 var payload = json.__tcfapiCall; 81 82 if (payload) { 83 window.__tcfapi( 84 payload.command, 85 payload.version, 86 function(retValue, success) { 87 var returnMsg = { 88 __tcfapiReturn: { 89 returnValue: retValue, 90 success: success, 91 callId: payload.callId 92 } 93 }; 94 if (msgIsString) { 95 returnMsg = JSON.stringify(returnMsg); 96 } 97 if (event && event.source && event.source.postMessage) { 98 event.source.postMessage(returnMsg, '*'); 99 } 100 }, 101 payload.parameter 102 ); 103 } 104 } 105 106 while (win) { 107 try { 108 if (win.frames[TCF_LOCATOR_NAME]) { 109 cmpFrame = win; 110 break; 111 } 112 } catch (ignore) {} 113 114 if (win === window.top) { 115 break; 116 } 117 win = win.parent; 118 } 119 if (!cmpFrame) { 120 addFrame(); 121 win.__tcfapi = tcfAPIHandler; 122 win.addEventListener('message', postMessageEventHandler, false); 123 } 124 }; 125 126 makeStub(); 127 128 function makeGppStub() { 129 const CMP_ID = 10; 130 const SUPPORTED_APIS = [ 131 '2:tcfeuv2', 132 '6:uspv1', 133 '7:usnatv1', 134 '8:usca', 135 '9:usvav1', 136 '10:uscov1', 137 '11:usutv1', 138 '12:usctv1' 139 ]; 140 141 window.__gpp_addFrame = function (n) { 142 if (!window.frames[n]) { 143 if (document.body) { 144 var i = document.createElement("iframe"); 145 i.style.cssText = "display:none"; 146 i.name = n; 147 document.body.appendChild(i); 148 } else { 149 window.setTimeout(window.__gpp_addFrame, 10, n); 150 } 151 } 152 }; 153 window.__gpp_stub = function () { 154 var b = arguments; 155 __gpp.queue = __gpp.queue || []; 156 __gpp.events = __gpp.events || []; 157 158 if (!b.length || (b.length == 1 && b[0] == "queue")) { 159 return __gpp.queue; 160 } 161 162 if (b.length == 1 && b[0] == "events") { 163 return __gpp.events; 164 } 165 166 var cmd = b[0]; 167 var clb = b.length > 1 ? b[1] : null; 168 var par = b.length > 2 ? b[2] : null; 169 if (cmd === "ping") { 170 clb( 171 { 172 gppVersion: "1.1", // must be âVersion.Subversionâ, current: â1.1â 173 cmpStatus: "stub", // possible values: stub, loading, loaded, error 174 cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled 175 signalStatus: "not ready", // possible values: not ready, ready 176 supportedAPIs: SUPPORTED_APIS, // list of supported APIs 177 cmpId: CMP_ID, // IAB assigned CMP ID, may be 0 during stub/loading 178 sectionList: [], 179 applicableSections: [-1], 180 gppString: "", 181 parsedSections: {}, 182 }, 183 true 184 ); 185 } else if (cmd === "addEventListener") { 186 if (!("lastId" in __gpp)) { 187 __gpp.lastId = 0; 188 } 189 __gpp.lastId++; 190 var lnr = __gpp.lastId; 191 __gpp.events.push({ 192 id: lnr, 193 callback: clb, 194 parameter: par, 195 }); 196 clb( 197 { 198 eventName: "listenerRegistered", 199 listenerId: lnr, // Registered ID of the listener 200 data: true, // positive signal 201 pingData: { 202 gppVersion: "1.1", // must be âVersion.Subversionâ, current: â1.1â 203 cmpStatus: "stub", // possible values: stub, loading, loaded, error 204 cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled 205 signalStatus: "not ready", // possible values: not ready, ready 206 supportedAPIs: SUPPORTED_APIS, // list of supported APIs 207 cmpId: CMP_ID, // list of supported APIs 208 sectionList: [], 209 applicableSections: [-1], 210 gppString: "", 211 parsedSections: {}, 212 }, 213 }, 214 true 215 ); 216 } else if (cmd === "removeEventListener") { 217 var success = false;
218 for (var i = 0; i < __gpp.events.length; i++) { 219 if (__gpp.events[i].id == par) { 220 __gpp.events.splice(i, 1); 221 success = true; 222 break; 223 } 224 } 225 clb( 226 { 227 eventName: "listenerRemoved", 228 listenerId: par, // Registered ID of the listener 229 data: success, // status info 230 pingData: { 231 gppVersion: "1.1", // must be âVersion.Subversionâ, current: â1.1â 232 cmpStatus: "stub", // possible values: stub, loading, loaded, error 233 cmpDisplayStatus: "hidden", // possible values: hidden, visible, disabled 234 signalStatus: "not ready", // possible values: not ready, ready 235 supportedAPIs: SUPPORTED_APIS, // list of supported APIs 236 cmpId: CMP_ID, // CMP ID 237 sectionList: [], 238 applicableSections: [-1], 239 gppString: "", 240 parsedSections: {}, 241 }, 242 }, 243 true 244 ); 245 } else if (cmd === "hasSection") { 246 clb(false, true); 247 } else if (cmd === "getSection" || cmd === "getField") { 248 clb(null, true); 249 } 250 //queue all other commands 251 else { 252 __gpp.queue.push([].slice.apply(b)); 253 } 254 }; 255 window.__gpp_msghandler = function (event) { 256 var msgIsString = typeof event.data === "string"; 257 try { 258 var json = msgIsString ? JSON.parse(event.data) : event.data; 259 } catch (e) { 260 var json = null; 261 } 262 if (typeof json === "object" && json !== null && "__gppCall" in json) { 263 var i = json.__gppCall; 264 window.__gpp( 265 i.command, 266 function (retValue, success) { 267 var returnMsg = { 268 __gppReturn: { 269 returnValue: retValue, 270 success: success, 271 callId: i.callId, 272 }, 273 }; 274 event.source.postMessage(msgIsString ? JSON.stringify(returnMsg) : returnMsg, "*"); 275 }, 276 "parameter" in i ? i.parameter : null, 277 "version" in i ? i.version : "1.1" 278 ); 279 } 280 }; 281 if (!("__gpp" in window) || typeof window.__gpp !== "function") { 282 window.__gpp = window.__gpp_stub; 283 window.addEventListener("message", window.__gpp_msghandler, false); 284 window.__gpp_addFrame("__gppLocator"); 285 } 286 }; 287 288 makeGppStub(); 289 290 var uspStubFunction = function() { 291 var arg = arguments; 292 if (typeof window.__uspapi !== uspStubFunction) { 293 setTimeout(function() { 294 if (typeof window.__uspapi !== 'undefined') { 295 window.__uspapi.apply(window.__uspapi, arg); 296 } 297 }, 500); 298 } 299 }; 300 301 var checkIfUspIsReady = function() { 302 uspTries++; 303 if (window.__uspapi === uspStubFunction && uspTries < uspTriesLimit) { 304 console.warn('USP is not accessible'); 305 } else { 306 clearInterval(uspInterval); 307 } 308 }; 309 310 if (typeof window.__uspapi === 'undefined') { 311 window.__uspapi = uspStubFunction; 312 var uspInterval = setInterval(checkIfUspIsReady, 6000); 313 } 314 315 /** 316 * DataLayer Push & CCPA Support 317 * 318 * Version 2.0.7 319 */ 320 (async function () { 321 //URLs need to be externalized based on environments, during build update. 322 var get_iab_vendors_url = iabVendorsUrl; 323 var get_google_atp_url = googleAtpUrl; 324 var iab_vendors, iab_vendor_ids, iab_vendor_names; 325 var google_vendors, google_vendor_ids, google_vendor_names; 326 var google_vendors_arr = [], 327 google_vendor_ids_arr = [], 328 google_vendor_names_arr = []; 329 var iab_vendors_arr = [], 330 iab_vendor_ids_arr = [], 331 iab_vendor_names_arr = []; 332 var non_iab_vendors, non_iab_vendor_ids, non_iab_vendor_names; 333 var non_iab_vendors_arr = [], 334 non_iab_vendor_ids_arr = [], 335 non_iab_vendor_names_arr = []; 336 var publisher_consents, publisher_legitimate_interests; 337 var purpose_consents, purpose_legitimate_interests; 338 339 function resultToList(a) { 340 var b = ","; 341 if (a && typeof a === 'object') { 342 for (var i in a) { 343 if (a[i]) { 344 b += i + ","; 345 } 346 } 347 } 348 return b; 349 } 350 351 /** 352 * Get a full list of Non-IAB Vendors, specific to the Quantcast Universal Tag ID, using tcfapi 353 */ 354 function vendors_getNonIABVendorList() { 355 window.__tcfapi("getConfig", 2, function (retObj) { 356 if (retObj && retObj.hasOwnProperty("nonIabVendorsInfo")) { 357 if ( 358 retObj.nonIabVendorsInfo && retObj.nonIabVendorsInfo.hasOwnProperty( 359 "nonIabVendorList", 360 ) 361 ) { 362 non_iab_vendors = 363 retObj.nonIabVendorsInfo.nonIabVendorList;
364 // Dont assume array key = vendor id, set key as vendor id with iab_vendors[i].id 365 Object.keys(non_iab_vendors).forEach(function (i) { 366 non_iab_vendors_arr[non_iab_vendors[i].vendorId] = 367 non_iab_vendors[i].name; 368 }); 369 } 370 } 371 }); 372 } 373 374 /** 375 * Get a full list of IAB Vendors. 376 */ 377 function vendors_getIABVendorList() { 378 var xhttp = new XMLHttpRequest(); 379 xhttp.onreadystatechange = function () { 380 if (this.readyState == 4 && this.status == 200) { 381 var res = JSON.parse(this.responseText); 382 if (res && res.hasOwnProperty("vendors")) { 383 iab_vendors = res.vendors; 384 385 // Dont assume array key = vendor id, set key as vendor id with iab_vendors[i].id 386 Object.keys(iab_vendors).forEach(function (i) { 387 iab_vendors_arr[iab_vendors[i].id] = 388 iab_vendors[i].name; 389 }); 390 } 391 } 392 }; 393 xhttp.open("GET", get_iab_vendors_url, true); 394 xhttp.send(); 395 } 396 397 /** 398 * Get a full list of google atp list 399 */ 400 function vendors_getGoogleVendorList() { 401 var xhttp = new XMLHttpRequest(); 402 xhttp.onreadystatechange = function () { 403 if (this.readyState == 4 && this.status == 200) { 404 google_vendors = JSON.parse(this.responseText); 405 google_vendors.forEach(function (vendor) { 406 google_vendors_arr[vendor.provider_id] = 407 vendor.provider_name; 408 }); 409 } 410 }; 411 xhttp.open("GET", get_google_atp_url, true); 412 xhttp.send(); 413 } 414 415 /** 416 * CMP Loaded. 417 * 418 * Push __cmpLoaded event to the data layer. 419 */ 420 function dlSend_tcLoaded(tcData) { 421 window.dataLayer = window.dataLayer || []; 422 window.dataLayer.push({ 423 event: "__cmpLoaded", 424 __cmpLoaded: true, 425 gdpr: tcData ? tcData.gdprApplies : false, 426 }); 427 } 428 429 /** 430 * IAB Vendors. 431 * 432 * Push __cmpIABConsents event to the datalayer, along with iab vendor consent ids. 433 */ 434 function dlSend_consentData(tcData) { 435 window.dataLayer = window.dataLayer || []; 436 iab_vendor_names_arr = []; 437 iab_vendor_ids_arr = []; 438 non_iab_vendor_names_arr = []; 439 non_iab_vendor_ids_arr = []; 440 google_vendor_names_arr = []; 441 google_vendor_ids_arr = []; 442 443 if (tcData && tcData.hasOwnProperty("publisher")) { 444 if (tcData.publisher && tcData.publisher.hasOwnProperty("consents")) { 445 publisher_consents = resultToList( 446 tcData.publisher ? tcData.publisher.consents : null, 447 ); 448 } 449 publisher_legitimate_interests = resultToList( 450 tcData.publisher ? tcData.publisher.legitimateInterests : null, 451 ); 452 } 453 454 if (tcData && tcData.hasOwnProperty("purpose")) { 455 if (tcData.purpose && tcData.purpose.hasOwnProperty("consents")) { 456 purpose_consents = resultToList(tcData.purpose ? tcData.purpose.consents : null); 457 } 458 purpose_legitimate_interests = resultToList( 459 tcData.purpose ? tcData.purpose.legitimateInterests : null, 460 ); 461 } 462 463 // Run this in an interval (every 0.1s) just in case we are still waiting 464 // on the return with our iab_vendors list calls, bail after 10 seconds 465 var cnt = 0; 466 var interval = setInterval(function () { 467 cnt += 1; 468 469 if (cnt === 100) { 470 clearInterval(interval); 471 } 472 473 if (iab_vendors) { 474 clearInterval(interval); 475 476 if (tcData ? tcData.gdprApplies : false) { 477 // Create name & id arrays of iab vendors with consent. 478 if (tcData && tcData.hasOwnProperty("vendor") && tcData.vendor && tcData.vendor.consents) { 479 Object.keys(tcData.vendor.consents).forEach( 480 function (vendorId) { 481 if ( 482 (tcData.vendor && tcData.vendor.consents ? tcData.vendor.consents[vendorId] : false) || 483 !tcData.gdprApplies 484 ) { 485 iab_vendor_names_arr[vendorId] = 486 iab_vendors_arr[vendorId];
487 iab_vendor_ids_arr[vendorId] = vendorId; 488 } 489 }, 490 ); 491 } 492 } else { 493 // GDPR does not apply, add all vendor names/ids 494 iab_vendor_names_arr = iab_vendors_arr; 495 iab_vendors_arr.forEach( 496 function (vendorName, vendorId) { 497 iab_vendor_ids_arr[vendorId] = vendorId; 498 }, 499 ); 500 } 501 502 if (tcData && tcData.addtlConsent && google_vendors_arr) { 503 // Create name and id arrays of google vendors with consent. 504 // addtlConsent: "1~39.43.46.55.61. 505 // 1~ is the version and the rest are the decoded ids 506 var addtlConsentParts = (tcData.addtlConsent || "").split("1~"); 507 if (addtlConsentParts.length > 1) { 508 google_vendor_ids_arr = addtlConsentParts[1].split("."); 509 } 510 google_vendor_ids_arr && 511 google_vendor_ids_arr.forEach(function (google_id) { 512 google_vendor_names_arr.push( 513 google_vendors_arr[google_id], 514 ); 515 }); 516 } 517 518 // Non IAB Vendors 519 window.__tcfapi( 520 "getNonIABVendorConsents", 521 2, 522 function (nonIabConsent, nonIabSuccess) { 523 if (nonIabSuccess) { 524 if (nonIabConsent.gdprApplies) { 525 // Create name & id arrays of non iab vendors with consent. 526 nonIabConsent.nonIabVendorConsents && 527 Object.keys( 528 nonIabConsent.nonIabVendorConsents, 529 ).forEach(function (vendorId) { 530 if ( 531 nonIabConsent 532 .nonIabVendorConsents[ 533 vendorId 534 ] || 535 !nonIabConsent.gdprApplies 536 ) { 537 non_iab_vendor_names_arr[ 538 vendorId 539 ] = 540 non_iab_vendors_arr[ 541 vendorId 542 ]; 543 non_iab_vendor_ids_arr[ 544 vendorId 545 ] = vendorId; 546 } 547 }); 548 } else { 549 // GDPR does not apply, add all non iab vendor names/ids 550 non_iab_vendor_names_arr = 551 non_iab_vendors_arr; 552 non_iab_vendors_arr.forEach( 553 function (vendorName, vendorId) { 554 non_iab_vendor_ids_arr[vendorId] = 555 vendorId; 556 }, 557 ); 558 } 559 } 560 561 // Join our array values, skipping empty items and joing them with a delimiter 562 iab_vendor_names = iab_vendor_names_arr 563 .filter(Boolean) 564 .join("|"); 565 iab_vendor_ids = iab_vendor_ids_arr 566 .filter(Boolean) 567 .join(","); 568 google_vendor_names = google_vendor_names_arr 569 .filter(Boolean) 570 .join("|"); 571 google_vendor_ids = google_vendor_ids_arr 572 .filter(Boolean) 573 .join("|"); 574 non_iab_vendor_names = non_iab_vendor_names_arr 575 .filter(Boolean) 576 .join("|"); 577 non_iab_vendor_ids = non_iab_vendor_ids_arr 578 .filter(Boolean) 579 .join(","); 580 581 // Push __cmpIABConsents signals to the data layer. 582 window.dataLayer.push({ 583 event: "__cmpConsents", 584 __cmpConsents: { 585 iabVendorConsentIds: iab_vendor_ids, 586 iabVendorsWithConsent: iab_vendor_names, 587 nonIABVendorConsentIds: non_iab_vendor_ids, 588 nonIABVendorsWithConsent: 589 non_iab_vendor_names, 590 googleVendorConsentIds: google_vendor_ids, 591 googleVendorsWithConsent: 592 google_vendor_names,
593 gdpr: tcData ? tcData.gdprApplies : false, 594 publisherConsents: publisher_consents, 595 publisherLegitimateInterests: 596 publisher_legitimate_interests, 597 purposeConsents: purpose_consents, 598 purposeLegitimateInterests: 599 purpose_legitimate_interests, 600 }, 601 }); 602 }, 603 ); 604 } 605 }, 100); 606 } 607 608 /** 609 * CCPA footer message. 610 */ 611 function ccpa_footerMsg(tcData) { 612 window.__uspapi("uspPing", 1, function (obj, status) { 613 var footer_msg = document.getElementById("choice-footer-msg"); // get the footer container for our CCPA message 614 615 if (status && obj.mode.includes("USP") && footer_msg !== null) { 616 footer_msg.innerHTML = 617 footer_msg.innerHTML + 618 "We use cookies" + 619 " and other data collection technologies" + 620 " to provide the best experience for our customers. You may request" + 621 " that your data not be shared with third parties here: " + 622 '<a href="#" onclick="window.__uspapi(\'displayUspUi\');"' + 623 ">Do Not Sell My Data</a>" + 624 "."; 625 626 // Add the 'ccpa-msg-added' class to the container for post message add styling. 627 footer_msg.classList.add("ccpa-msg-added"); 628 629 window.__uspapi("setUspDftData", 1, function (obj, status) { 630 if (!status) { 631 console.log("Error: USP string not updated!"); 632 } 633 }); 634 } 635 }); 636 } 637 638 // Only get the IAB and Non-IAB vendor lists if the the Data layer push functionality 639 // is enabled, otherwise we do not need the vendor lists. 640 window.__tcfapi( 641 "addEventListener", 642 2, 643 function (getConfig, listenerSuccess) { 644 vendors_getIABVendorList(); // Get global IAB vendor list 645 vendors_getGoogleVendorList(); // Get google vendor list 646 vendors_getNonIABVendorList(); // Get UTID specific Non-IAB vendors 647 }, 648 ); 649 650 // CCPA 651 ccpa_footerMsg(); 652 653 // Add our main listener. 654 window.__tcfapi( 655 "addEventListener", 656 2, 657 function (tcData, listenerSuccess) { 658 if (listenerSuccess) { 659 /** 660 * User Visits: 661 * 1st visit/no cookie = 'cmpuishown' called and then 'useractioncomplete' after user make their selection 662 * Repeat visit/has cookie = only 'tcloaded' is called as the UI does not show unless the user clicks to show 663 */ 664 665 switch (tcData ? tcData.eventStatus : null) { 666 case "cmpuishown": 667 // Data Layer 668 dlSend_tcLoaded(tcData); 669 break; 670 671 case "tcloaded": 672 // Data Layer 673 if (tcData ? tcData.gdprApplies : false) { 674 dlSend_tcLoaded(tcData); 675 dlSend_consentData(tcData); 676 } 677 break; 678 679 case "useractioncomplete": 680 // Data Layer 681 dlSend_consentData(tcData); 682 break; 683 } 684 } 685 }, 686 ); 687 })(); 688})(); 689})();</script>
689 <link rel="apple-touch-icon" sizes="180x180" href="https://penandthepad.com/apple-touch-icon.png"> <link rel="manifest" href="https://penandthepad.com/site.webmanifest"> <link rel="alternate" type="application/atom+xml" title="Pen and the Pad » Feed" href="https://penandthepad.com/feed/"><style> 690 @layer properties, theme, base, components, utilities; 691</style><style>/* cyrillic-ext */ 692@font-face { 693 font-family: "IBM Plex Mono"; 694 font-style: italic; 695 font-weight: 100; 696 font-display: swap; 697 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6rfjptAgt5VM-kVkqdyU8n1ioStkdvp-8_FtFg95o.woff2) 698 format("woff2"); 699 unicode-range: 700 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 701} 702/* cyrillic */ 703@font-face { 704 font-family: "IBM Plex Mono"; 705 font-style: italic; 706 font-weight: 100; 707 font-display: swap; 708 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6rfjptAgt5VM-kVkqdyU8n1ioStkdmp-8_FtFg95o.woff2) 709 format("woff2"); 710 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 711} 712/* vietnamese */ 713@font-face { 714 font-family: "IBM Plex Mono"; 715 font-style: italic; 716 font-weight: 100; 717 font-display: swap; 718 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6rfjptAgt5VM-kVkqdyU8n1ioStkdtp-8_FtFg95o.woff2) 719 format("woff2"); 720 unicode-range: 721 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 722 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 723 U+1EA0-1EF9, U+20AB; 724} 725/* latin-ext */ 726@font-face { 727 font-family: "IBM Plex Mono"; 728 font-style: italic; 729 font-weight: 100; 730 font-display: swap; 731 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6rfjptAgt5VM-kVkqdyU8n1ioStkdsp-8_FtFg95o.woff2) 732 format("woff2"); 733 unicode-range: 734 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 735 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 736 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 737} 738/* latin */ 739@font-face { 740 font-family: "IBM Plex Mono"; 741 font-style: italic; 742 font-weight: 100; 743 font-display: swap; 744 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6rfjptAgt5VM-kVkqdyU8n1ioStkdip-8_FtFg.woff2) 745 format("woff2"); 746 unicode-range: 747 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 748 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 749 U+2212, U+2215, U+FEFF, U+FFFD; 750} 751/* cyrillic-ext */ 752@font-face { 753 font-family: "IBM Plex Mono"; 754 font-style: italic; 755 font-weight: 200; 756 font-display: swap; 757 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSGlZ1jcoQPttoz6Pz.woff2) 758 format("woff2"); 759 unicode-range: 760 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 761} 762/* cyrillic */ 763@font-face { 764 font-family: "IBM Plex Mono"; 765 font-style: italic; 766 font-weight: 200; 767 font-display: swap; 768 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSGlZ1hMoQPttoz6Pz.woff2) 769 format("woff2"); 770 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 771} 772/* vietnamese */ 773@font-face { 774 font-family: "IBM Plex Mono"; 775 font-style: italic; 776 font-weight: 200; 777 font-display: swap; 778 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSGlZ1j8oQPttoz6Pz.woff2) 779 format("woff2"); 780 unicode-range: 781 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 782 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 783 U+1EA0-1EF9, U+20AB; 784} 785/* latin-ext */ 786@font-face { 787 font-family: "IBM Plex Mono"; 788 font-style: italic; 789 font-weight: 200; 790 font-display: swap; 791 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSGlZ1jsoQPttoz6Pz.woff2) 792 format("woff2"); 793 unicode-range: 794 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304,
795 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 796 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 797} 798/* latin */ 799@font-face { 800 font-family: "IBM Plex Mono"; 801 font-style: italic; 802 font-weight: 200; 803 font-display: swap; 804 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSGlZ1gMoQPttozw.woff2) 805 format("woff2"); 806 unicode-range: 807 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 808 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 809 U+2212, U+2215, U+FEFF, U+FFFD; 810} 811/* cyrillic-ext */ 812@font-face { 813 font-family: "IBM Plex Mono"; 814 font-style: italic; 815 font-weight: 300; 816 font-display: swap; 817 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSflV1jcoQPttoz6Pz.woff2) 818 format("woff2"); 819 unicode-range: 820 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 821} 822/* cyrillic */ 823@font-face { 824 font-family: "IBM Plex Mono"; 825 font-style: italic; 826 font-weight: 300; 827 font-display: swap; 828 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSflV1hMoQPttoz6Pz.woff2) 829 format("woff2"); 830 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 831} 832/* vietnamese */ 833@font-face { 834 font-family: "IBM Plex Mono"; 835 font-style: italic; 836 font-weight: 300; 837 font-display: swap; 838 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSflV1j8oQPttoz6Pz.woff2) 839 format("woff2"); 840 unicode-range: 841 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 842 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 843 U+1EA0-1EF9, U+20AB; 844} 845/* latin-ext */ 846@font-face { 847 font-family: "IBM Plex Mono"; 848 font-style: italic; 849 font-weight: 300; 850 font-display: swap; 851 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSflV1jsoQPttoz6Pz.woff2) 852 format("woff2"); 853 unicode-range: 854 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 855 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 856 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 857} 858/* latin */ 859@font-face { 860 font-family: "IBM Plex Mono"; 861 font-style: italic; 862 font-weight: 300; 863 font-display: swap; 864 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSflV1gMoQPttozw.woff2) 865 format("woff2"); 866 unicode-range: 867 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 868 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 869 U+2212, U+2215, U+FEFF, U+FFFD; 870} 871/* cyrillic-ext */ 872@font-face { 873 font-family: "IBM Plex Mono"; 874 font-style: italic; 875 font-weight: 400; 876 font-display: swap; 877 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n1ioa2HdgregdFOFh.woff2) 878 format("woff2"); 879 unicode-range: 880 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 881} 882/* cyrillic */ 883@font-face { 884 font-family: "IBM Plex Mono"; 885 font-style: italic; 886 font-weight: 400; 887 font-display: swap; 888 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n1ioa0XdgregdFOFh.woff2) 889 format("woff2"); 890 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 891} 892/* vietnamese */ 893@font-face { 894 font-family: "IBM Plex Mono"; 895 font-style: italic; 896 font-weight: 400; 897 font-display: swap; 898 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n1ioa2ndgregdFOFh.woff2) 899 format("woff2"); 900 unicode-range: 901 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 902 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 903 U+1EA0-1EF9, U+20AB; 904} 905/* latin-ext */ 906@font-face { 907 font-family: "IBM Plex Mono"; 908 font-style: italic; 909 font-weight: 400; 910 font-display: swap;
911 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n1ioa23dgregdFOFh.woff2) 912 format("woff2"); 913 unicode-range: 914 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 915 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 916 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 917} 918/* latin */ 919@font-face { 920 font-family: "IBM Plex Mono"; 921 font-style: italic; 922 font-weight: 400; 923 font-display: swap; 924 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n1ioa1XdgregdFA.woff2) 925 format("woff2"); 926 unicode-range: 927 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 928 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 929 U+2212, U+2215, U+FEFF, U+FFFD; 930} 931/* cyrillic-ext */ 932@font-face { 933 font-family: "IBM Plex Mono"; 934 font-style: italic; 935 font-weight: 500; 936 font-display: swap; 937 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSJlR1jcoQPttoz6Pz.woff2) 938 format("woff2"); 939 unicode-range: 940 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 941} 942/* cyrillic */ 943@font-face { 944 font-family: "IBM Plex Mono"; 945 font-style: italic; 946 font-weight: 500; 947 font-display: swap; 948 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSJlR1hMoQPttoz6Pz.woff2) 949 format("woff2"); 950 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 951} 952/* vietnamese */ 953@font-face { 954 font-family: "IBM Plex Mono"; 955 font-style: italic; 956 font-weight: 500; 957 font-display: swap; 958 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSJlR1j8oQPttoz6Pz.woff2) 959 format("woff2"); 960 unicode-range: 961 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 962 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 963 U+1EA0-1EF9, U+20AB; 964} 965/* latin-ext */ 966@font-face { 967 font-family: "IBM Plex Mono"; 968 font-style: italic; 969 font-weight: 500; 970 font-display: swap; 971 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSJlR1jsoQPttoz6Pz.woff2) 972 format("woff2"); 973 unicode-range: 974 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 975 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 976 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 977} 978/* latin */ 979@font-face { 980 font-family: "IBM Plex Mono"; 981 font-style: italic; 982 font-weight: 500; 983 font-display: swap; 984 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSJlR1gMoQPttozw.woff2) 985 format("woff2"); 986 unicode-range: 987 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 988 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 989 U+2212, U+2215, U+FEFF, U+FFFD; 990} 991/* cyrillic-ext */ 992@font-face { 993 font-family: "IBM Plex Mono"; 994 font-style: italic; 995 font-weight: 600; 996 font-display: swap; 997 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSClN1jcoQPttoz6Pz.woff2) 998 format("woff2"); 999 unicode-range: 1000 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1001} 1002/* cyrillic */ 1003@font-face { 1004 font-family: "IBM Plex Mono"; 1005 font-style: italic; 1006 font-weight: 600; 1007 font-display: swap; 1008 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSClN1hMoQPttoz6Pz.woff2) 1009 format("woff2"); 1010 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1011} 1012/* vietnamese */ 1013@font-face { 1014 font-family: "IBM Plex Mono"; 1015 font-style: italic; 1016 font-weight: 600; 1017 font-display: swap; 1018 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSClN1j8oQPttoz6Pz.woff2) 1019 format("woff2"); 1020 unicode-range: 1021 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1022 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1023 U+1EA0-1EF9, U+20AB; 1024} 1025/* latin-ext */ 1026@font-face { 1027 font-family: "IBM Plex Mono"; 1028 font-style: italic; 1029 font-weight: 600; 1030 font-display: swap;
1031 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSClN1jsoQPttoz6Pz.woff2) 1032 format("woff2"); 1033 unicode-range: 1034 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1035 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1036 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1037} 1038/* latin */ 1039@font-face { 1040 font-family: "IBM Plex Mono"; 1041 font-style: italic; 1042 font-weight: 600; 1043 font-display: swap; 1044 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSClN1gMoQPttozw.woff2) 1045 format("woff2"); 1046 unicode-range: 1047 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1048 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1049 U+2212, U+2215, U+FEFF, U+FFFD; 1050} 1051/* cyrillic-ext */ 1052@font-face { 1053 font-family: "IBM Plex Mono"; 1054 font-style: italic; 1055 font-weight: 700; 1056 font-display: swap; 1057 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSblJ1jcoQPttoz6Pz.woff2) 1058 format("woff2"); 1059 unicode-range: 1060 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1061} 1062/* cyrillic */ 1063@font-face { 1064 font-family: "IBM Plex Mono"; 1065 font-style: italic; 1066 font-weight: 700; 1067 font-display: swap; 1068 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSblJ1hMoQPttoz6Pz.woff2) 1069 format("woff2"); 1070 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1071} 1072/* vietnamese */ 1073@font-face { 1074 font-family: "IBM Plex Mono"; 1075 font-style: italic; 1076 font-weight: 700; 1077 font-display: swap; 1078 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSblJ1j8oQPttoz6Pz.woff2) 1079 format("woff2"); 1080 unicode-range: 1081 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1082 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1083 U+1EA0-1EF9, U+20AB; 1084} 1085/* latin-ext */ 1086@font-face { 1087 font-family: "IBM Plex Mono"; 1088 font-style: italic; 1089 font-weight: 700; 1090 font-display: swap; 1091 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSblJ1jsoQPttoz6Pz.woff2) 1092 format("woff2"); 1093 unicode-range: 1094 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1095 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1096 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1097} 1098/* latin */ 1099@font-face { 1100 font-family: "IBM Plex Mono"; 1101 font-style: italic; 1102 font-weight: 700; 1103 font-display: swap; 1104 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6sfjptAgt5VM-kVkqdyU8n1ioSblJ1gMoQPttozw.woff2) 1105 format("woff2"); 1106 unicode-range: 1107 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1108 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1109 U+2212, U+2215, U+FEFF, U+FFFD; 1110} 1111/* cyrillic-ext */ 1112@font-face { 1113 font-family: "IBM Plex Mono"; 1114 font-style: normal; 1115 font-weight: 100; 1116 font-display: swap; 1117 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n3kwa2HdgregdFOFh.woff2) 1118 format("woff2"); 1119 unicode-range: 1120 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1121} 1122/* cyrillic */ 1123@font-face { 1124 font-family: "IBM Plex Mono"; 1125 font-style: normal; 1126 font-weight: 100; 1127 font-display: swap; 1128 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n3kwa0XdgregdFOFh.woff2) 1129 format("woff2"); 1130 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1131} 1132/* vietnamese */ 1133@font-face { 1134 font-family: "IBM Plex Mono"; 1135 font-style: normal; 1136 font-weight: 100; 1137 font-display: swap; 1138 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n3kwa2ndgregdFOFh.woff2) 1139 format("woff2"); 1140 unicode-range: 1141 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1142 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1143 U+1EA0-1EF9, U+20AB; 1144} 1145/* latin-ext */ 1146@font-face { 1147 font-family: "IBM Plex Mono"; 1148 font-style: normal; 1149 font-weight: 100; 1150 font-display: swap;
1151 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n3kwa23dgregdFOFh.woff2) 1152 format("woff2"); 1153 unicode-range: 1154 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1155 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1156 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1157} 1158/* latin */ 1159@font-face { 1160 font-family: "IBM Plex Mono"; 1161 font-style: normal; 1162 font-weight: 100; 1163 font-display: swap; 1164 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6pfjptAgt5VM-kVkqdyU8n3kwa1XdgregdFA.woff2) 1165 format("woff2"); 1166 unicode-range: 1167 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1168 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1169 U+2212, U+2215, U+FEFF, U+FFFD; 1170} 1171/* cyrillic-ext */ 1172@font-face { 1173 font-family: "IBM Plex Mono"; 1174 font-style: normal; 1175 font-weight: 200; 1176 font-display: swap; 1177 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3uALwl1FgsAXHNlYzg.woff2) 1178 format("woff2"); 1179 unicode-range: 1180 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1181} 1182/* cyrillic */ 1183@font-face { 1184 font-family: "IBM Plex Mono"; 1185 font-style: normal; 1186 font-weight: 200; 1187 font-display: swap; 1188 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3uALwlRFgsAXHNlYzg.woff2) 1189 format("woff2"); 1190 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1191} 1192/* vietnamese */ 1193@font-face { 1194 font-family: "IBM Plex Mono"; 1195 font-style: normal; 1196 font-weight: 200; 1197 font-display: swap; 1198 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3uALwl9FgsAXHNlYzg.woff2) 1199 format("woff2"); 1200 unicode-range: 1201 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1202 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1203 U+1EA0-1EF9, U+20AB; 1204} 1205/* latin-ext */ 1206@font-face { 1207 font-family: "IBM Plex Mono"; 1208 font-style: normal; 1209 font-weight: 200; 1210 font-display: swap; 1211 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3uALwl5FgsAXHNlYzg.woff2) 1212 format("woff2"); 1213 unicode-range: 1214 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1215 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1216 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1217} 1218/* latin */ 1219@font-face { 1220 font-family: "IBM Plex Mono"; 1221 font-style: normal; 1222 font-weight: 200; 1223 font-display: swap; 1224 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3uALwlBFgsAXHNk.woff2) 1225 format("woff2"); 1226 unicode-range: 1227 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1228 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1229 U+2212, U+2215, U+FEFF, U+FFFD; 1230} 1231/* cyrillic-ext */ 1232@font-face { 1233 font-family: "IBM Plex Mono"; 1234 font-style: normal; 1235 font-weight: 300; 1236 font-display: swap; 1237 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3oQIwl1FgsAXHNlYzg.woff2) 1238 format("woff2"); 1239 unicode-range: 1240 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1241} 1242/* cyrillic */ 1243@font-face { 1244 font-family: "IBM Plex Mono"; 1245 font-style: normal; 1246 font-weight: 300; 1247 font-display: swap; 1248 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3oQIwlRFgsAXHNlYzg.woff2) 1249 format("woff2"); 1250 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1251} 1252/* vietnamese */ 1253@font-face { 1254 font-family: "IBM Plex Mono"; 1255 font-style: normal; 1256 font-weight: 300; 1257 font-display: swap; 1258 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3oQIwl9FgsAXHNlYzg.woff2) 1259 format("woff2"); 1260 unicode-range: 1261 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1262 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1263 U+1EA0-1EF9, U+20AB; 1264} 1265/* latin-ext */ 1266@font-face { 1267 font-family: "IBM Plex Mono"; 1268 font-style: normal; 1269 font-weight: 300; 1270 font-display: swap;
1271 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3oQIwl5FgsAXHNlYzg.woff2) 1272 format("woff2"); 1273 unicode-range: 1274 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1275 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1276 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1277} 1278/* latin */ 1279@font-face { 1280 font-family: "IBM Plex Mono"; 1281 font-style: normal; 1282 font-weight: 300; 1283 font-display: swap; 1284 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3oQIwlBFgsAXHNk.woff2) 1285 format("woff2"); 1286 unicode-range: 1287 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1288 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1289 U+2212, U+2215, U+FEFF, U+FFFD; 1290} 1291/* cyrillic-ext */ 1292@font-face { 1293 font-family: "IBM Plex Mono"; 1294 font-style: normal; 1295 font-weight: 400; 1296 font-display: swap; 1297 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F63fjptAgt5VM-kVkqdyU8n1iIq131nj-otFQ.woff2) 1298 format("woff2"); 1299 unicode-range: 1300 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1301} 1302/* cyrillic */ 1303@font-face { 1304 font-family: "IBM Plex Mono"; 1305 font-style: normal; 1306 font-weight: 400; 1307 font-display: swap; 1308 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F63fjptAgt5VM-kVkqdyU8n1isq131nj-otFQ.woff2) 1309 format("woff2"); 1310 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1311} 1312/* vietnamese */ 1313@font-face { 1314 font-family: "IBM Plex Mono"; 1315 font-style: normal; 1316 font-weight: 400; 1317 font-display: swap; 1318 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F63fjptAgt5VM-kVkqdyU8n1iAq131nj-otFQ.woff2) 1319 format("woff2"); 1320 unicode-range: 1321 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1322 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1323 U+1EA0-1EF9, U+20AB; 1324} 1325/* latin-ext */ 1326@font-face { 1327 font-family: "IBM Plex Mono"; 1328 font-style: normal; 1329 font-weight: 400; 1330 font-display: swap; 1331 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F63fjptAgt5VM-kVkqdyU8n1iEq131nj-otFQ.woff2) 1332 format("woff2"); 1333 unicode-range: 1334 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1335 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1336 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1337} 1338/* latin */ 1339@font-face { 1340 font-family: "IBM Plex Mono"; 1341 font-style: normal; 1342 font-weight: 400; 1343 font-display: swap; 1344 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F63fjptAgt5VM-kVkqdyU8n1i8q131nj-o.woff2) 1345 format("woff2"); 1346 unicode-range: 1347 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1348 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1349 U+2212, U+2215, U+FEFF, U+FFFD; 1350} 1351/* cyrillic-ext */ 1352@font-face { 1353 font-family: "IBM Plex Mono"; 1354 font-style: normal; 1355 font-weight: 500; 1356 font-display: swap; 1357 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3twJwl1FgsAXHNlYzg.woff2) 1358 format("woff2"); 1359 unicode-range: 1360 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1361} 1362/* cyrillic */ 1363@font-face { 1364 font-family: "IBM Plex Mono"; 1365 font-style: normal; 1366 font-weight: 500; 1367 font-display: swap; 1368 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3twJwlRFgsAXHNlYzg.woff2) 1369 format("woff2"); 1370 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1371} 1372/* vietnamese */ 1373@font-face { 1374 font-family: "IBM Plex Mono"; 1375 font-style: normal; 1376 font-weight: 500; 1377 font-display: swap; 1378 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3twJwl9FgsAXHNlYzg.woff2) 1379 format("woff2"); 1380 unicode-range: 1381 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1382 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1383 U+1EA0-1EF9, U+20AB; 1384} 1385/* latin-ext */ 1386@font-face { 1387 font-family: "IBM Plex Mono"; 1388 font-style: normal; 1389 font-weight: 500; 1390 font-display: swap;
1391 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3twJwl5FgsAXHNlYzg.woff2) 1392 format("woff2"); 1393 unicode-range: 1394 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1395 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1396 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1397} 1398/* latin */ 1399@font-face { 1400 font-family: "IBM Plex Mono"; 1401 font-style: normal; 1402 font-weight: 500; 1403 font-display: swap; 1404 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3twJwlBFgsAXHNk.woff2) 1405 format("woff2"); 1406 unicode-range: 1407 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1408 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1409 U+2212, U+2215, U+FEFF, U+FFFD; 1410} 1411/* cyrillic-ext */ 1412@font-face { 1413 font-family: "IBM Plex Mono"; 1414 font-style: normal; 1415 font-weight: 600; 1416 font-display: swap; 1417 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl1FgsAXHNlYzg.woff2) 1418 format("woff2"); 1419 unicode-range: 1420 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1421} 1422/* cyrillic */ 1423@font-face { 1424 font-family: "IBM Plex Mono"; 1425 font-style: normal; 1426 font-weight: 600; 1427 font-display: swap; 1428 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlRFgsAXHNlYzg.woff2) 1429 format("woff2"); 1430 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1431} 1432/* vietnamese */ 1433@font-face { 1434 font-family: "IBM Plex Mono"; 1435 font-style: normal; 1436 font-weight: 600; 1437 font-display: swap; 1438 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl9FgsAXHNlYzg.woff2) 1439 format("woff2"); 1440 unicode-range: 1441 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1442 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1443 U+1EA0-1EF9, U+20AB; 1444} 1445/* latin-ext */ 1446@font-face { 1447 font-family: "IBM Plex Mono"; 1448 font-style: normal; 1449 font-weight: 600; 1450 font-display: swap; 1451 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3vAOwl5FgsAXHNlYzg.woff2) 1452 format("woff2"); 1453 unicode-range: 1454 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1455 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1456 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1457} 1458/* latin */ 1459@font-face { 1460 font-family: "IBM Plex Mono"; 1461 font-style: normal; 1462 font-weight: 600; 1463 font-display: swap; 1464 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3vAOwlBFgsAXHNk.woff2) 1465 format("woff2"); 1466 unicode-range: 1467 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1468 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1469 U+2212, U+2215, U+FEFF, U+FFFD; 1470} 1471/* cyrillic-ext */ 1472@font-face { 1473 font-family: "IBM Plex Mono"; 1474 font-style: normal; 1475 font-weight: 700; 1476 font-display: swap; 1477 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3pQPwl1FgsAXHNlYzg.woff2) 1478 format("woff2"); 1479 unicode-range: 1480 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1481} 1482/* cyrillic */ 1483@font-face { 1484 font-family: "IBM Plex Mono"; 1485 font-style: normal; 1486 font-weight: 700; 1487 font-display: swap; 1488 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3pQPwlRFgsAXHNlYzg.woff2) 1489 format("woff2"); 1490 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1491} 1492/* vietnamese */ 1493@font-face { 1494 font-family: "IBM Plex Mono"; 1495 font-style: normal; 1496 font-weight: 700; 1497 font-display: swap; 1498 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3pQPwl9FgsAXHNlYzg.woff2) 1499 format("woff2"); 1500 unicode-range: 1501 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1502 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1503 U+1EA0-1EF9, U+20AB; 1504} 1505/* latin-ext */ 1506@font-face { 1507 font-family: "IBM Plex Mono"; 1508 font-style: normal; 1509 font-weight: 700; 1510 font-display: swap;
1511 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3pQPwl5FgsAXHNlYzg.woff2) 1512 format("woff2"); 1513 unicode-range: 1514 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1515 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1516 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1517} 1518/* latin */ 1519@font-face { 1520 font-family: "IBM Plex Mono"; 1521 font-style: normal; 1522 font-weight: 700; 1523 font-display: swap; 1524 src: url(https://fonts.gstatic.com/s/ibmplexmono/v19/-F6qfjptAgt5VM-kVkqdyU8n3pQPwlBFgsAXHNk.woff2) 1525 format("woff2"); 1526 unicode-range: 1527 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1528 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1529 U+2212, U+2215, U+FEFF, U+FFFD; 1530} 1531/* cyrillic-ext */ 1532@font-face { 1533 font-family: "IBM Plex Sans"; 1534 font-style: italic; 1535 font-weight: 100 700; 1536 font-stretch: 100%; 1537 font-display: swap; 1538 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXxKVElMYYaJe8bpLHnCwDKhdTEG46kmUZQCX598fQbGYnYAKRjdNS7Iw.woff2) 1539 format("woff2"); 1540 unicode-range: 1541 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1542} 1543/* cyrillic */ 1544@font-face { 1545 font-family: "IBM Plex Sans"; 1546 font-style: italic; 1547 font-weight: 100 700; 1548 font-stretch: 100%; 1549 font-display: swap; 1550 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXxKVElMYYaJe8bpLHnCwDKhdTEG46kmUZQCX598fQbGYDYAKRjdNS7Iw.woff2) 1551 format("woff2"); 1552 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1553} 1554/* greek */ 1555@font-face { 1556 font-family: "IBM Plex Sans"; 1557 font-style: italic; 1558 font-weight: 100 700; 1559 font-stretch: 100%; 1560 font-display: swap; 1561 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXxKVElMYYaJe8bpLHnCwDKhdTEG46kmUZQCX598fQbGYfYAKRjdNS7Iw.woff2) 1562 format("woff2"); 1563 unicode-range: 1564 U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; 1565} 1566/* vietnamese */ 1567@font-face { 1568 font-family: "IBM Plex Sans"; 1569 font-style: italic; 1570 font-weight: 100 700; 1571 font-stretch: 100%; 1572 font-display: swap; 1573 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXxKVElMYYaJe8bpLHnCwDKhdTEG46kmUZQCX598fQbGYvYAKRjdNS7Iw.woff2) 1574 format("woff2"); 1575 unicode-range: 1576 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1577 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1578 U+1EA0-1EF9, U+20AB; 1579} 1580/* latin-ext */ 1581@font-face { 1582 font-family: "IBM Plex Sans"; 1583 font-style: italic; 1584 font-weight: 100 700; 1585 font-stretch: 100%; 1586 font-display: swap; 1587 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXxKVElMYYaJe8bpLHnCwDKhdTEG46kmUZQCX598fQbGYrYAKRjdNS7Iw.woff2) 1588 format("woff2"); 1589 unicode-range: 1590 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1591 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1592 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1593} 1594/* latin */ 1595@font-face { 1596 font-family: "IBM Plex Sans"; 1597 font-style: italic; 1598 font-weight: 100 700; 1599 font-stretch: 100%; 1600 font-display: swap; 1601 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXxKVElMYYaJe8bpLHnCwDKhdTEG46kmUZQCX598fQbGYTYAKRjdNQ.woff2) 1602 format("woff2"); 1603 unicode-range: 1604 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1605 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1606 U+2212, U+2215, U+FEFF, U+FFFD; 1607} 1608/* cyrillic-ext */ 1609@font-face { 1610 font-family: "IBM Plex Sans"; 1611 font-style: normal; 1612 font-weight: 100 700; 1613 font-stretch: 100%; 1614 font-display: swap; 1615 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxTKYbSB4ZhRNU.woff2) 1616 format("woff2"); 1617 unicode-range: 1618 U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F; 1619} 1620/* cyrillic */ 1621@font-face { 1622 font-family: "IBM Plex Sans"; 1623 font-style: normal; 1624 font-weight: 100 700; 1625 font-stretch: 100%; 1626 font-display: swap;
1627 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxaKYbSB4ZhRNU.woff2) 1628 format("woff2"); 1629 unicode-range: U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; 1630} 1631/* greek */ 1632@font-face { 1633 font-family: "IBM Plex Sans"; 1634 font-style: normal; 1635 font-weight: 100 700; 1636 font-stretch: 100%; 1637 font-display: swap; 1638 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxdKYbSB4ZhRNU.woff2) 1639 format("woff2"); 1640 unicode-range: 1641 U+0370-0377, U+037A-037F, U+0384-038A, U+038C, U+038E-03A1, U+03A3-03FF; 1642} 1643/* vietnamese */ 1644@font-face { 1645 font-family: "IBM Plex Sans"; 1646 font-style: normal; 1647 font-weight: 100 700; 1648 font-stretch: 100%; 1649 font-display: swap; 1650 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxRKYbSB4ZhRNU.woff2) 1651 format("woff2"); 1652 unicode-range: 1653 U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, 1654 U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, 1655 U+1EA0-1EF9, U+20AB; 1656} 1657/* latin-ext */ 1658@font-face { 1659 font-family: "IBM Plex Sans"; 1660 font-style: normal; 1661 font-weight: 100 700; 1662 font-stretch: 100%; 1663 font-display: swap; 1664 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxQKYbSB4ZhRNU.woff2) 1665 format("woff2"); 1666 unicode-range: 1667 U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, 1668 U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, 1669 U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; 1670} 1671/* latin */ 1672@font-face { 1673 font-family: "IBM Plex Sans"; 1674 font-style: normal; 1675 font-weight: 100 700; 1676 font-stretch: 100%; 1677 font-display: swap; 1678 src: url(https://fonts.gstatic.com/s/ibmplexsans/v22/zYXzKVElMYYaJe8bpLHnCwDKr932-G7dytD-Dmu1syxeKYbSB4Zh.woff2) 1679 format("woff2"); 1680 unicode-range: 1681 U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, 1682 U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, 1683 U+2212, U+2215, U+FEFF, U+FFFD; 1684} 1685</style><style>:root { 1686 --theme-primary: #e30000; 1687 --theme-secondary: #2e2e30; 1688 --theme-tertiary: #f3f3f3; 1689 --theme-primary-foreground: #ffffff; 1690 --theme-secondary-foreground: #ffffff; 1691 --theme-tertiary-foreground: #2e2e30; 1692 --theme-surface: #ffffff; 1693 --theme-surface-raised: #ffffff; 1694 --theme-surface-sunken: #fafafa; 1695 --theme-surface-inverse: #18181b; 1696 --theme-foreground: #000000; 1697 --theme-ink: #000000; 1698 --theme-ink-muted: #71717a; 1699 --theme-ink-subtle: #a1a1aa; 1700 --theme-ink-inverse: #ffffff; 1701 --theme-line: #e4e4e7; 1702 --theme-line-strong: #d4d4d8; 1703 --theme-font-sans: "IBM Plex Sans", sans-serif; 1704 --theme-font-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; 1705 --theme-font-mono: "IBM Plex Mono", monospace; 1706 --theme-font-display: "IBM Plex Sans", sans-serif; 1707 --theme-text-xs: 0.75em; 1708 --theme-text-sm: 0.9em; 1709 --theme-text-base: 14px; 1710 --theme-text-lg: 1.5em; 1711 --theme-text-xl: 1.8em; 1712 --theme-text-2xl: 3em; 1713 --theme-radius: 0.25rem; 1714 --theme-radius-xs: 0.125rem; 1715 --theme-radius-sm: 0.25rem; 1716 --theme-radius-md: 0.375rem; 1717 --theme-radius-lg: 0.5rem; 1718 --theme-radius-xl: 0.75rem; 1719 --theme-radius-2xl: 1rem; 1720 --theme-radius-3xl: 1.5rem; 1721 --theme-heading-family: inherit; 1722 --theme-heading-weight: 600; 1723 --theme-heading-transform: uppercase; 1724 --theme-heading-tracking: inherit; 1725 --theme-heading-color: var(--color-secondary); 1726 --theme-h1-size: 36px; 1727 --theme-h1-leading: 40px; 1728 --theme-h2-size: 30px; 1729 --theme-h2-leading: 36px; 1730 --theme-h3-size: 26px; 1731 --theme-h3-leading: 32px; 1732 --theme-h4-size: 20px; 1733 --theme-h4-leading: 28px; 1734 --theme-h5-size: 18px; 1735 --theme-h5-leading: 24px; 1736 --theme-h6-size: 16px; 1737 --theme-h6-leading: 24px; 1738 --theme-nav-family: inherit; 1739 --theme-nav-color: var(--color-secondary); 1740 --theme-nav-size: 14px; 1741 --theme-nav-leading: 24px; 1742 --theme-nav-weight: 500; 1743 --theme-nav-tracking: 0.7px; 1744 --theme-nav-transform: uppercase; 1745 --theme-nav-padding: 0.5rem; 1746 --theme-nav-radius: 0; 1747 --theme-nav-hover-bg: var(--color-primary); 1748 --theme-nav-hover-fg: var(--color-primary-foreground); 1749 --theme-nav-active-color: var(--theme-nav-color); 1750 --theme-nav-active-weight: var(--theme-nav-weight); 1751 --theme-nav-active-border-width: 0px; 1752 --theme-nav-active-border-color: transparent; 1753 --theme-nav-panel-bg: #fff; 1754 --theme-nav-panel-border-top: 4px; 1755 --theme-nav-panel-border-top-color: var(--color-primary); 1756 --theme-nav-panel-border-bottom: 1px; 1757 --theme-nav-panel-border-bottom-color: var(--color-primary); 1758 --theme-nav-panel-column-line: transparent; 1759 --theme-nav-panel-radius: 0; 1760 --theme-nav-panel-shadow: none; 1761 --theme-nav-panel-min-height: 300px; 1762 --theme-nav-panel-label-family: inherit; 1763 --theme-nav-panel-label-size: 18px; 1764 --theme-nav-panel-label-leading: 40px; 1765 --theme-nav-panel-label-weight: 700; 1766 --theme-nav-panel-label-tracking: 1.25px; 1767 --theme-nav-panel-label-transform: uppercase; 1768 --theme-nav-panel-label-color: var(--color-secondary); 1769 --theme-nav-panel-link-size: 16px; 1770 --theme-nav-panel-link-leading: 24px; 1771 --theme-nav-panel-link-weight: 600; 1772 --theme-nav-panel-link-color: var(--color-secondary); 1773 --theme-nav-panel-link-padding: 0.5rem; 1774 --theme-nav-panel-link-radius: 0.25rem; 1775 --theme-nav-panel-link-hover-bg: color-mix(in oklab, var(--color-primary) 10%, transparent); 1776 --theme-nav-panel-link-hover-fg: var(--color-secondary); 1777 --theme-nav-more-color: #000; 1778 --theme-nav-more-padding: 0.5rem; 1779 --theme-nav-more-radius: 0.25rem; 1780 --theme-nav-more-hover-bg: var(--color-primary); 1781 --theme-nav-more-hover-fg: var(--color-primary-foreground); 1782 --theme-nav-card-bg: transparent; 1783 --theme-nav-card-border-width: 0; 1784 --theme-nav-card-border-color: transparent; 1785 --theme-nav-card-radius: 0; 1786 --theme-nav-card-padding: 0.5rem; 1787 --theme-nav-card-hover-bg: var(--color-zinc-100); 1788 --theme-nav-card-hover-border-color: transparent; 1789 --theme-nav-card-columns: 1fr; 1790 --theme-nav-card-columns-wide: repeat(2, minmax(0, 1fr)); 1791 --theme-nav-icon-size: auto; 1792 --theme-nav-icon-radius: 0; 1793 --theme-nav-icon-border: 0; 1794 --theme-nav-icon-border-color: transparent; 1795 --theme-nav-icon-bg: transparent; 1796 --theme-nav-icon-color: inherit; 1797 --theme-nav-icon-hover-bg: transparent; 1798 --theme-nav-icon-hover-color: var(--color-primary); 1799 --theme-nav-search-panel-bg: color-mix(in oklab, var(--color-primary) 10%, #fff); 1800 --theme-nav-search-panel-border: 0 0 1px 1px; 1801 --theme-nav-search-panel-border-color: var(--color-zinc-300); 1802 --theme-nav-search-panel-radius: 0; 1803 --theme-nav-search-panel-shadow: none; 1804 --theme-nav-search-input-bg: #fff; 1805 --theme-nav-search-input-border: 1px; 1806 --theme-nav-search-input-border-color: #e1e1e1; 1807 --theme-nav-search-input-radius: 9999px; 1808 --theme-nav-search-input-color: inherit; 1809 --theme-nav-search-input-placeholder: color-mix(in oklab, currentcolor 50%, transparent); 1810 --theme-nav-search-input-size: inherit; 1811 --theme-nav-search-input-padding: 0 1.5rem; 1812 --theme-nav-search-submit-bg: var(--color-primary); 1813 --theme-nav-search-submit-fg: var(--color-primary-foreground); 1814 --theme-nav-account-panel-bg: #fff; 1815 --theme-nav-account-panel-border: 1px; 1816 --theme-nav-account-panel-border-color: var(--color-gray-200); 1817 --theme-nav-account-panel-radius: 0.75rem; 1818 --theme-nav-account-panel-shadow: 0 4px 24px rgba(0, 0, 0, 0.1), 0 1px 3px rgba(0, 0, 0, 0.06); 1819 --theme-nav-account-item-color: #000e2a; 1820 --theme-nav-account-item-hover-bg: var(--color-gray-50); 1821 --theme-nav-account-item-hover-color: #086bdb; 1822 --theme-nav-account-divider: var(--color-gray-100); 1823 --theme-nav-account-avatar-bg: linear-gradient(to bottom right, #086bdb, #0a4a96); 1824 --theme-nav-account-avatar-color: #fff; 1825 --theme-nav-account-focus: #086bdb; 1826 --theme-nav-account-trigger-bg: transparent; 1827 --theme-nav-account-trigger-border: 1.5px; 1828 --theme-nav-account-trigger-border-color: var(--color-gray-300); 1829 --theme-nav-account-trigger-radius: 9999px; 1830 --theme-nav-account-name-color: #000e2a; 1831 --theme-nav-drawer-top: 79px; 1832 --theme-nav-drawer-bg: #fff; 1833 --theme-nav-drawer-color: inherit; 1834 --theme-nav-drawer-item-family: inherit; 1835 --theme-nav-drawer-item-size: 21px; 1836 --theme-nav-drawer-item-leading: 1.5;
1837 --theme-nav-drawer-item-weight: 700; 1838 --theme-nav-drawer-item-tracking: normal; 1839 --theme-nav-drawer-item-transform: none; 1840 --theme-nav-drawer-item-color: var(--color-secondary); 1841 --theme-nav-drawer-item-justify: flex-start; 1842 --theme-nav-drawer-item-bg: transparent; 1843 --theme-nav-drawer-item-active-bg: transparent; 1844 --theme-nav-drawer-item-radius: 0; 1845 --theme-nav-drawer-item-padding: 0.5rem 0; 1846 --theme-nav-drawer-item-border-width: 0; 1847 --theme-nav-drawer-item-border-color: transparent; 1848 --theme-nav-drawer-item-active-color: var(--color-primary); 1849 --theme-nav-drawer-toggle-size: 22px; 1850 --theme-nav-drawer-toggle-color: currentColor; 1851 --theme-nav-drawer-divider-width: 0; 1852 --theme-nav-drawer-divider: transparent; 1853 --theme-nav-drawer-link-size: 16px; 1854 --theme-nav-drawer-link-color: inherit; 1855 --theme-prose-family: var(--theme-font-sans); 1856 --theme-prose-size: 18px; 1857 --theme-prose-leading: 28px; 1858 --theme-prose-color: #565656; 1859 --theme-prose-heading-family: var(--theme-font-sans); 1860 --theme-prose-heading-color: var(--color-secondary); 1861 --theme-prose-heading-transform: none; 1862 --theme-prose-container-heading-family: var(--theme-font-mono); 1863 --theme-prose-container-heading-color: var(--color-primary); 1864 --theme-prose-container-heading-transform: uppercase; 1865 --theme-archive-family: var(--theme-font-mono); 1866 --theme-archive-color: var(--color-primary); 1867 --theme-archive-transform: uppercase; 1868 --theme-section-family: inherit; 1869 --theme-section-size: 20px; 1870 --theme-section-leading: 28px; 1871 --theme-section-weight: 700; 1872 --theme-section-tracking: 1.4px; 1873 --theme-section-transform: uppercase; 1874 --theme-section-color: var(--color-secondary); 1875 --theme-section-border: 2px; 1876 --theme-section-border-color: var(--color-secondary); 1877 --theme-container: min(100%, 1200px); 1878 --theme-border-width: 1px; 1879 --theme-shadow: 0 0 12px rgba(114, 114, 119, 0.4); 1880} 1881.color-scope { 1882 --theme-heading-color: var(--color-secondary); 1883 --theme-nav-color: var(--color-secondary); 1884 --theme-nav-hover-bg: var(--color-primary); 1885 --theme-nav-hover-fg: var(--color-primary-foreground); 1886 --theme-nav-panel-border-top-color: var(--color-primary); 1887 --theme-nav-panel-border-bottom-color: var(--color-primary); 1888 --theme-nav-panel-label-color: var(--color-secondary); 1889 --theme-nav-panel-link-color: var(--color-secondary); 1890 --theme-nav-panel-link-hover-bg: color-mix(in oklab, var(--color-primary) 10%, transparent); 1891 --theme-nav-panel-link-hover-fg: var(--color-secondary); 1892 --theme-nav-more-hover-bg: var(--color-primary); 1893 --theme-nav-more-hover-fg: var(--color-primary-foreground); 1894 --theme-nav-card-hover-bg: var(--color-zinc-100); 1895 --theme-nav-icon-hover-color: var(--color-primary); 1896 --theme-nav-search-panel-bg: color-mix(in oklab, var(--color-primary) 10%, #fff); 1897 --theme-nav-search-panel-border-color: var(--color-zinc-300); 1898 --theme-nav-search-submit-bg: var(--color-primary); 1899 --theme-nav-search-submit-fg: var(--color-primary-foreground); 1900 --theme-nav-account-panel-border-color: var(--color-gray-200); 1901 --theme-nav-account-item-hover-bg: var(--color-gray-50); 1902 --theme-nav-account-divider: var(--color-gray-100); 1903 --theme-nav-account-trigger-border-color: var(--color-gray-300); 1904 --theme-nav-drawer-item-color: var(--color-secondary); 1905 --theme-nav-drawer-item-active-color: var(--color-primary); 1906 --theme-prose-heading-color: var(--color-secondary); 1907 --theme-prose-container-heading-color: var(--color-primary); 1908 --theme-archive-color: var(--color-primary); 1909 --theme-section-color: var(--color-secondary); 1910 --theme-section-border-color: var(--color-secondary); 1911}</style>
1911<script>window.__authProviders={"facebook":false,"linkedin":false}</script>
1911
1911<script type="application/ld+json">{"@context":"https://schema.org","@graph":[{"@type":"WebSite","@id":"https://penandthepad.com/#website","url":"https://penandthepad.com/","name":"Pen and the Pad","description":"Pen and the Pad is your resource for writing, grammar, citations, and the craft of language and literature.","publisher":{"@id":"https://penandthepad.com/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://penandthepad.com/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https://penandthepad.com/#organization","name":"Pen and the Pad","url":"https://penandthepad.com/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https://penandthepad.com/#/schema/logo/image/","url":"https://penandthepad.com/astrostatic/3a22e5c5/_astro/penandthepad.CAcBzb0Z.svg","contentUrl":"https://penandthepad.com/astrostatic/3a22e5c5/_astro/penandthepad.CAcBzb0Z.svg","width":205,"height":70,"caption":"Pen and the Pad"},"image":{"@id":"https://penandthepad.com/#/schema/logo/image/"},"parentOrganization":{"@type":"Organization","name":"TechnologyAdvice","url":"https://technologyadvice.com/"}}]}</script>
1911<script>(function(){const targeting = {"env":"prod","stage":"prod","url":"penandthepad.com/about-us/","hostname":"penandthepad.com","edge_country":"SG","cid":"about-us","path":"sites,penandthepad.com,about-us"}; 1912 1913 window.dataLayer = window.dataLayer || [] 1914 window.dataLayer.push( 1915 Object.fromEntries( 1916 Object.entries(targeting).map(([k, v]) => [`ad_${k}`, v]), 1917 ), 1918 ) 1919})();</script>
1919<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-3235755782694080" crossorigin="anonymous"></script>
1919<script>(function(){const sampleRate = 1; 1920const debug = false; 1921const targeting = {"env":"prod","stage":"prod","url":"penandthepad.com/about-us/","hostname":"penandthepad.com","edge_country":"SG","cid":"about-us","path":"sites,penandthepad.com,about-us"}; 1922 1923 (() => { 1924 // Same-origin, site-aware base (mirrors getSiteAwarePath): dev/preview 1925 // serve sites under /sites/{domain}/â¦; prod serves each on its own host. 1926 let base = "/api/ado"; 1927 if (location.pathname.startsWith("/sites/")) { 1928 const p = location.pathname.split("/"); 1929 if (p.length >= 3) base = "/sites/" + p[2] + base; 1930 } 1931 1932 const uuid = () => 1933 (crypto.randomUUID && crypto.randomUUID()) || 1934 String(Date.now()) + Math.random().toString(16).slice(2); 1935 1936 const pageviewId = uuid(); 1937 let sessionId; 1938 try { 1939 sessionId = sessionStorage.getItem("ado_sid"); 1940 if (!sessionId) { 1941 sessionId = uuid(); 1942 sessionStorage.setItem("ado_sid", sessionId); 1943 } 1944 } catch (_) { 1945 sessionId = ""; 1946 } 1947 1948 // --- Unified transport: buffer typed events, flush one batch. --- 1949 // Trailing debounce: each event (re)arms a short idle timer, so a 1950 // burst of N events coalesces into ONE sendBeacon fired shortly after 1951 // the burst ends (e.g. 10 events over 5s â 1 request). A max-age cap 1952 // guarantees a continuous stream still flushes at least every 1953 // FLUSH_MAX_MS, a size cap guards the sendBeacon payload limit, and 1954 // the buffer is always flushed on tab-hide/unload so nothing is lost. 1955 const FLUSH_IDLE_MS = 1000; // flush this long after the last event 1956 const FLUSH_MAX_MS = 5000; // never hold a buffered event longer 1957 const MAX_BATCH = 20; 1958 let buffer = []; 1959 let timer = null; 1960 let firstAt = 0; 1961 const flush = () => { 1962 if (timer) { 1963 clearTimeout(timer); 1964 timer = null; 1965 } 1966 firstAt = 0; 1967 if (!buffer.length) return; 1968 const events = buffer; 1969 buffer = []; 1970 try { 1971 const body = new Blob([JSON.stringify({ events })], { 1972 type: "text/plain", 1973 }); 1974 navigator.sendBeacon(base + "/collect/", body); 1975 if (debug) console.log("[ado] flush", events); 1976 } catch (e) { 1977 if (debug) console.warn("[ado] flush failed", e); 1978 } 1979 }; 1980 const push = (event) => { 1981 buffer.push(event); 1982 if (buffer.length >= MAX_BATCH) { 1983 flush(); 1984 return; 1985 } 1986 const now = Date.now(); 1987 if (!firstAt) firstAt = now; 1988 // Idle debounce, clamped so total hold never exceeds FLUSH_MAX_MS. 1989 const delay = Math.max( 1990 0, 1991 Math.min(FLUSH_IDLE_MS, FLUSH_MAX_MS - (now - firstAt)), 1992 ); 1993 if (timer) clearTimeout(timer); 1994 timer = setTimeout(flush, delay); 1995 }; 1996 1997 window._ado = { 1998 pageview_id: pageviewId, 1999 session_id: sessionId, 2000 push, 2001 flush, 2002 }; 2003 2004 addEventListener("visibilitychange", () => { 2005 if (document.visibilityState === "hidden") flush(); 2006 }); 2007 addEventListener("pagehide", flush); 2008 2009 const canonical = 2010 document.querySelector('link[rel="canonical"]')?.href || 2011 location.href; 2012 2013 // --- Framing detection ------------------------------------------- 2014 // Who, if anyone, has this page in an iframe â used to spot third 2015 // parties embedding our content. 2016 // 2017 // `location.ancestorOrigins` is the browser's own list of ancestor 2018 // frame origins (parent first, outermost last; Chromium + Safari). 2019 // Unlike `document.referrer` it can't be blanked by the framer's 2020 // Referrer-Policy and it does NOT drift to our own previous URL when 2021 // the framed page navigates inside the frame. The referrer is only 2022 // used to add path detail on top of an origin the ancestor list has 2023 // already confirmed, or as the sole signal on Firefox, which has no 2024 // ancestorOrigins. Sandboxed/opaque ancestors report "null". 2025 let iframeReferrer = ""; 2026 try { 2027 if (window.top !== window.self) { 2028 const ancestors = location.ancestorOrigins; 2029 const outermost = 2030 ancestors && ancestors.length 2031 ? ancestors[ancestors.length - 1] 2032 : ""; 2033 const referrerOrigin = document.referrer 2034 ? new URL(document.referrer).origin 2035 : "";
2036 if (outermost && outermost !== "null") { 2037 iframeReferrer = 2038 referrerOrigin === outermost 2039 ? document.referrer 2040 : outermost; 2041 } else if ( 2042 referrerOrigin && 2043 referrerOrigin !== location.origin 2044 ) { 2045 // A same-origin referrer inside a frame is our own 2046 // previous page, not an embedder â never report it. 2047 iframeReferrer = document.referrer; 2048 } 2049 // Our own frames (self-embeds, previews) aren't embedding. 2050 if (iframeReferrer.indexOf(location.origin) === 0) { 2051 iframeReferrer = ""; 2052 } 2053 } 2054 } catch (_) { 2055 iframeReferrer = ""; 2056 } 2057 2058 // Same edge country the astro-proxy injected into the GPT 2059 // `edge_country` targeting â keeps the event stream aligned with GAM. 2060 let adoCountry = String(targeting.edge_country || ""); 2061 if (adoCountry.indexOf("{{") === 0) adoCountry = ""; 2062 2063 const ctx = { 2064 site: (window._vars && window._vars.domain) || location.hostname, 2065 hostname: location.hostname, 2066 path: location.pathname, 2067 canonical_url: canonical, 2068 post_id: String(targeting.post_id || ""), 2069 category: String(targeting.category || ""), 2070 country: adoCountry, 2071 }; 2072 2073 // Pageview (always sent). 2074 push({ 2075 type: "pageview", 2076 client_event_ts: Date.now(), 2077 pageview_id: pageviewId, 2078 session_id: sessionId, 2079 page_type: String(targeting.ptype || ""), 2080 referrer: document.referrer || "", 2081 iframe_referrer: iframeReferrer, 2082 ...ctx, 2083 }); 2084 2085 // Per-slot refresh counter. 2086 const refreshCount = Object.create(null); 2087 2088 const adEvent = (eventType, event) => { 2089 if (sampleRate < 1 && Math.random() >= sampleRate) return; 2090 const slot = event.slot; 2091 const elId = slot.getSlotElementId(); 2092 const size = Array.isArray(event.size) 2093 ? event.size.join("x") 2094 : event.size != null 2095 ? String(event.size) 2096 : ""; 2097 const resp = slot.getResponseInformation 2098 ? slot.getResponseInformation() 2099 : null; 2100 const idx = 2101 eventType === "slot_render_ended" 2102 ? (refreshCount[elId] = (refreshCount[elId] || 0) + 1) - 1 2103 : refreshCount[elId] 2104 ? refreshCount[elId] - 1 2105 : 0; 2106 2107 push({ 2108 type: "ad_event", 2109 event_type: eventType, 2110 client_event_ts: Date.now(), 2111 pageview_id: pageviewId, 2112 session_id: sessionId, 2113 ad_unit_path: slot.getAdUnitPath(), 2114 slot_element_id: elId, 2115 slot_size: size, 2116 is_empty: !!event.isEmpty, 2117 refresh_index: idx, 2118 line_item_id: resp ? String(resp.lineItemId ?? "") : "", 2119 creative_id: resp ? String(resp.creativeId ?? "") : "", 2120 advertiser_id: resp ? String(resp.advertiserId ?? "") : "", 2121 campaign_id: resp ? String(resp.campaignId ?? "") : "", 2122 ...ctx, 2123 }); 2124 }; 2125 2126 window.googletag = window.googletag || { cmd: [] }; 2127 window.googletag.cmd.push(() => { 2128 window.googletag 2129 .pubads()
2130 .addEventListener("slotRenderEnded", (e) => 2131 adEvent("slot_render_ended", e), 2132 ); 2133 window.googletag 2134 .pubads() 2135 .addEventListener("impressionViewable", (e) => 2136 adEvent("impression_viewable", e), 2137 ); 2138 }); 2139 })(); 2140 })();</script>
2140
2140<script>(function(){const heartbeatMs = 5000; 2141const idleMs = 30000; 2142const snapshotMs = 20000; 2143const targeting = {"env":"prod","stage":"prod","url":"penandthepad.com/about-us/","hostname":"penandthepad.com","edge_country":"SG","cid":"about-us","path":"sites,penandthepad.com,about-us"}; 2144const debug = false; 2145 2146 (() => { 2147 // Don't instrument headless/automation traffic. 2148 if (navigator.webdriver) return; 2149 // Requires the beacon's transport (same observability gate). 2150 const ado = window._ado; 2151 if (!ado || typeof ado.push !== "function") return; 2152 2153 const pageviewId = ado.pageview_id; 2154 const sessionId = ado.session_id; 2155 const uuid = () => 2156 (crypto.randomUUID && crypto.randomUUID()) || 2157 String(Date.now()) + Math.random().toString(16).slice(2); 2158 const str = (v) => (v == null ? "" : String(v)); 2159 2160 // --- Page context (stable for the pageview; per-segment path/post_id 2161 // are tracked separately since they swap on infinite-scroll). --- 2162 const canonical = 2163 document.querySelector('link[rel="canonical"]')?.href || 2164 location.href; 2165 let country = str(targeting.edge_country); 2166 if (country.indexOf("{{") === 0) country = ""; 2167 const ctx = { 2168 site: (window._vars && window._vars.domain) || location.hostname, 2169 hostname: location.hostname, 2170 canonical_url: canonical, 2171 category: str(targeting.category), 2172 country, 2173 }; 2174 const referrer = document.referrer || ""; 2175 2176 // --- Loyalty: durable, consent-gated visitor id. Respect Global 2177 // Privacy Control; fall back to session-only when storage is blocked. 2178 // (Wire to the site CMP here for finer-grained consent.) --- 2179 let visitorId = ""; 2180 let isNewVisitor = 0; 2181 try { 2182 if (navigator.globalPrivacyControl !== true) { 2183 visitorId = localStorage.getItem("ado_vid") || ""; 2184 if (!visitorId) { 2185 visitorId = uuid(); 2186 localStorage.setItem("ado_vid", visitorId); 2187 isNewVisitor = 1; 2188 } 2189 } 2190 } catch (_) { 2191 visitorId = ""; 2192 } 2193 2194 // --- Per-post segments. segment_id = `${pageview_id}:${post_id}`, so 2195 // scrolling back into an earlier article RESUMES its segment. --- 2196 const segments = new Map(); 2197 let activeSeg = null; 2198 let activeSince = null; // ms timestamp while accruing, else null 2199 let lastActivity = Date.now(); 2200 let sinceSnapshot = 0; 2201 2202 const accruing = () => 2203 document.visibilityState === "visible" && 2204 Date.now() - lastActivity < idleMs; 2205 2206 function flushAccrual() { 2207 if (activeSince !== null && activeSeg) { 2208 const now = Date.now(); 2209 activeSeg.engagedSeconds += (now - activeSince) / 1000; 2210 activeSince = now; 2211 } 2212 } 2213 function setAccruing(on) { 2214 flushAccrual(); 2215 activeSince = on ? Date.now() : null; 2216 } 2217 2218 function segFor(pid, category, path) { 2219 let seg = segments.get(pid); 2220 if (!seg) { 2221 seg = { 2222 post_id: pid, 2223 segment_id: pageviewId + ":" + pid, 2224 category: str(category) || ctx.category, 2225 path: str(path) || location.pathname, 2226 engagedSeconds: 0, 2227 maxScrollPct: 0, 2228 reachedEnd: 0, 2229 seq: 0, 2230 }; 2231 segments.set(pid, seg); 2232 } else { 2233 if (category != null && str(category)) seg.category = str(category); 2234 if (path != null && str(path)) seg.path = str(path); 2235 } 2236 return seg; 2237 } 2238 2239 // Deepest scroll into the active article + end detection, reusing the 2240 // h1[infiniscroll-id] / [data-type='infiniscroll-break'] geometry. 2241 function measureActive() { 2242 if (!activeSeg) return; 2243 const headers = Array.prototype.slice.call( 2244 document.querySelectorAll("h1[infiniscroll-id]"), 2245 ); 2246 const header = 2247 document.querySelector( 2248 'h1[infiniscroll-id="' + activeSeg.post_id + '"]', 2249 ) || headers[0]; 2250 if (!header) return; 2251 const y = window.scrollY; 2252 const toY = (el) =>
2252 el.getBoundingClientRect().top + y; 2253 const idx = headers.indexOf(header); 2254 const breaks = document.querySelectorAll( 2255 "[data-type='infiniscroll-break']", 2256 ); 2257 const bottomEl = breaks[idx] || headers[idx + 1]; 2258 const top = toY(header); 2259 const bottom = bottomEl 2260 ? toY(bottomEl) 2261 : document.documentElement.scrollHeight; 2262 let pct; 2263 if (bottom - top <= window.innerHeight) { 2264 // Article fits the viewport â readable without scrolling. 2265 pct = 100; 2266 } else { 2267 pct = Math.round( 2268 Math.min(Math.max((y - top) / (bottom - top), 0), 1) * 100, 2269 ); 2270 } 2271 if (pct > activeSeg.maxScrollPct) activeSeg.maxScrollPct = pct; 2272 // End reached when the article's bottom boundary enters the viewport. 2273 if (bottom <= y + window.innerHeight + 4) activeSeg.reachedEnd = 1; 2274 } 2275 2276 function snapshot(seg) { 2277 if (!seg) return; 2278 seg.seq += 1; 2279 ado.push({ 2280 type: "engagement", 2281 client_event_ts: Date.now(), 2282 pageview_id: pageviewId, 2283 session_id: sessionId, 2284 segment_id: seg.segment_id, 2285 post_id: seg.post_id, 2286 site: ctx.site, 2287 hostname: ctx.hostname, 2288 path: seg.path, 2289 canonical_url: ctx.canonical_url, 2290 category: seg.category, 2291 country: ctx.country, 2292 referrer: referrer, 2293 visitor_id: visitorId, 2294 is_new_visitor: isNewVisitor, 2295 engaged_seconds: Math.round(seg.engagedSeconds), 2296 max_scroll_pct: seg.maxScrollPct, 2297 reached_end: seg.reachedEnd, 2298 seq: seg.seq, 2299 }); 2300 if (debug) console.log("[ado] engagement", seg.segment_id, seg); 2301 } 2302 2303 function switchTo(pid, category, path) { 2304 if (!pid) return; 2305 if (activeSeg && activeSeg.post_id === pid) { 2306 segFor(pid, category, path); // refresh path/category 2307 return; 2308 }
2309 setAccruing(false); // bank time to the leaving segment 2310 if (activeSeg) snapshot(activeSeg); // flush leaving segment state 2311 activeSeg = segFor(pid, category, path); 2312 lastActivity = Date.now(); // a transition counts as activity 2313 setAccruing(accruing()); 2314 measureActive(); 2315 } 2316 2317 // Authoritative active-article signal from InfiniScroll transitions. 2318 document.addEventListener("ado:article", (e) => { 2319 const d = (e && e.detail) || {}; 2320 switchTo(str(d.post_id), d.category, d.path); 2321 }); 2322 2323 // Activity + scroll. 2324 const bump = () => { 2325 const wasAccruing = activeSince !== null; 2326 lastActivity = Date.now(); 2327 if (!wasAccruing && document.visibilityState === "visible") { 2328 setAccruing(true); 2329 } 2330 }; 2331 let scrollThrottled = false; 2332 const onScroll = () => { 2333 bump(); 2334 if (scrollThrottled) return; 2335 scrollThrottled = true; 2336 setTimeout(() => { 2337 scrollThrottled = false; 2338 measureActive(); 2339 }, 200); 2340 }; 2341 addEventListener("scroll", onScroll, { passive: true }); 2342 ["pointermove", "keydown", "touchstart", "click"].forEach((ev) => 2343 addEventListener(ev, bump, { passive: true }), 2344 ); 2345 2346 // Visibility + bfcache lifecycle. Beacon also flushes on hide; we push 2347 // the final engagement snapshot then force a flush s
2347o it isn't stranded. 2348 function finalizeAndFlush() { 2349 setAccruing(false); 2350 if (activeSeg) snapshot(activeSeg); 2351 if (typeof ado.flush === "function") ado.flush(); 2352 } 2353 addEventListener("visibilitychange", () => { 2354 if (document.visibilityState === "hidden") { 2355 finalizeAndFlush(); 2356 } else { 2357 lastActivity = Date.now(); 2358 setAccruing(accruing()); 2359 } 2360 }); 2361 addEventListener("pagehide", finalizeAndFlush); 2362 addEventListener("pageshow", (e) => { 2363 if (e.persisted) { 2364 lastActivity = Date.now(); 2365 setAccruing(accruing()); 2366 } 2367 }); 2368 2369 // Heartbeat: re-evaluate idle, remeasure, and drop an insurance 2370 // snapshot so long single-article reads / crashes aren't lost. 2371 setInterval(() => { 2372 setAccruing(accruing()); 2373 measureActive(); 2374 sinceSnapshot += heartbeatMs; 2375 if (sinceSnapshot >= snapshotMs && activeSeg) { 2376 sinceSnapshot = 0; 2377 flushAccrual(); 2378 snapshot(activeSeg); 2379 } 2380 }, heartbeatMs); 2381 2382 // Seed the landing article's segment (post pages only). 2383 const landingPid = str(targeting.post_id); 2384 if (landingPid) { 2385 switchTo(landingPid, ctx.category, location.pathname); 2386 } 2387 })(); 2388 })();</script>
2388 <title>About Us | Pen and the Pad</title><meta name="title" content="About Us | Pen and the Pad"><meta name="description" content="The Pen & The Pad is a go-to resource for writers, with all the information to help you improve."><meta name="robots" content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"><meta property="og:locale" content="en_US"><meta property="og:type" content="article"><meta property="og:title" content="About Us | Pen and the Pad"><meta property="og:description" content="The Pen & The Pad is a go-to resource for writers, with all the information to help you improve."><meta property="og:url" content="https://penandthepad.com/about-us/"><meta property="og:site_name" content="Pen and the Pad"><meta name="twitter:card" content="summary_large_image"><link rel="canonical" href="https://penandthepad.com/about-us/">
2388<script type="application/ld+json" class="yoast-schema-graph">{"@context":"https://schema.org","@graph":[{"@type":"WebPage","@id":"https://penandthepad.com/about-us/","url":"https://penandthepad.com/about-us/","name":"About Us | Pen and the Pad","isPartOf":{"@id":"https://penandthepad.com/#website"},"breadcrumb":{"@id":"https://penandthepad.com/about-us/#breadcrumb"},"inLanguage":"en-US"},{"@type":"BreadcrumbList","@id":"https://penandthepad.com/about-us/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"item":{"@type":"WebSite","@id":"https://penandthepad.com/","name":"Home"}},{"@type":"ListItem","position":2,"item":{"@type":"WebPage","@id":"https://penandthepad.com/about-us/","name":"About Pen and the Pad"}}]}]}</script>
2388 <link rel="stylesheet" href="https://penandthepad.com/astrostatic/3a22e5c5/_astro/index.CCmax0bU.css"> 2389<link rel="stylesheet" href="https://penandthepad.com/astrostatic/3a22e5c5/_astro/infinite.De1tChLT.css"> 2390<style>.ad-fluid iframe[id^=google_ads_iframe]{display:block;margin-inline:auto} 2391</style> 2392<style>.slide-right-enter-active[data-v-0c8284e0],.slide-right-leave-active[data-v-0c8284e0]{transition:all .3s}.slide-right-enter-from[data-v-0c8284e0],.slide-right-leave-to[data-v-0c8284e0]{transform:translate(-100vw);opacity:0}.slide-left-enter-active[data-v-0c8284e0],.slide-left-leave-active[data-v-0c8284e0]{transition:all .3s}.slide-left-enter-from[data-v-0c8284e0],.slide-left-leave-to[data-v-0c8284e0]{transform:translate(100vw);opacity:0}.submenu-content [data-submenu][data-v-0c8284e0]{display:none}.submenu-content [data-submenu].active[data-v-0c8284e0]{display:block}#site-navigation:not([data-nav-computed]){visibility:hidden;animation:nav-fallback 0s 1.5s forwards}@keyframes nav-fallback{to{visibility:visible}}.slide-enter-active[data-v-14b806f0],.slide-leave-active[data-v-14b806f0]{transition:all .3s}.slide-enter-from[data-v-14b806f0],.slide-leave-to[data-v-14b806f0]{transform:translateY(20px);opacity:0}:root{--skybox-reserve: 18.75vw}@media(min-width:768px){:root{--skybox-reserve: 90px}}[data-ad-slot=skybox]{min-height:var(--skybox-reserve)}[data-ad-slot=skybox][data-loaded],[data-ad-slot=skybox][data-empty]{min-height:0}[data-ad-slot=skybox]:not([data-empty])~#main-navigation{top:var(--skybox-reserve)}.animate-ping-once[data-v-788e3fe6]{animation:ping-once-788e3fe6 .35s ease-out forwards}@keyframes ping-once-788e3fe6{0%{transform:scale(1)}40%{transform:scale(1.2)}70%{transform:scale(.95)}to{transform:scale(1)}}/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-outline-style:solid;--tw-content:"";--tw-border-style:solid;--tw-font-weight:initial;--tw-leading:initial}}}a[data-astro-cid-tdou77qi]:hover,a[data-astro-cid-tdou77qi]:focus{color:#2a6496;text-decoration-line:underline}a[data-astro-cid-tdou77qi]:active,a[data-astro-cid-tdou77qi]:hover{outline-style:var(--tw-outline-style);outline-width:0}#ftl-footer[data-astro-cid-tdou77qi]{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Helvetica Neue,Helvetica,Arial,sans-serif!important}@media(min-width:768px){.container1[data-astro-cid-tdou77qi]{width:750px}}@media(min-width:992px){.container1[data-astro-cid-tdou77qi]{width:970px}}@media(min-width:1200px){.container1[data-astro-cid-tdou77qi]{width:1170px}}.container1[data-astro-cid-tdou77qi]:before{--tw-content:"";content:var(--tw-content);display:table}.container1[data-astro-cid-tdou77qi],.container-fluid[data-astro-cid-tdou77qi]{margin-inline:auto;padding-inline:15px}.container-fluid[data-astro-cid-tdou77qi]:before,.row[data-astro-cid-tdou77qi]:before{--tw-content:"";content:var(--tw-content);display:table}.container-fluid[data-astro-cid-tdou77qi]:after,.row[data-astro-cid-tdou77qi]:after{clear:both;--tw-content:"";content:var(--tw-content);display:table}.col-xs-12[data-astro-cid-tdou77qi]{float:left;width:100%}@media(min-width:768px){.col-sm-5[data-astro-cid-tdou77qi]{float:left;width:41.6667%}.col-sm-6[data-astro-cid-tdou77qi]{float:left;width:50%}.col-sm-7[data-astro-cid-tdou77qi]{float:left;width:58.3333%}}.col-xs-12[data-astro-cid-tdou77qi],.col-sm-6[data-astro-cid-tdou77qi],.col-sm-7[data-astro-cid-tdou77qi],.col-md-12[data-astro-cid-tdou77qi]{min-height:1px;padding-inline:15px;position:relative}@media(min-width:992px){.col-md-12[data-astro-cid-tdou77qi]{float:left;width:100%}}#ftl-footer[data-astro-cid-tdou77qi]{width:100%;overflow-x:hidden}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi]{margin-inline:-15px}#ftl-footer[data-astro-cid-tdou77qi] .footerContainer[data-astro-cid-tdou77qi]{max-width:1230px;padding-top:25px;padding-bottom:20px}
2392#ftl-footer[data-astro-cid-tdou77qi] .footerWidget[data-astro-cid-tdou77qi]{margin-left:calc(var(--spacing,.25rem) * 0);width:100%}#ftl-footer[data-astro-cid-tdou77qi] .footerOuter[data-astro-cid-tdou77qi]{border-top-style:var(--tw-border-style);background-color:#292b31;border-top-width:0}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .left[data-astro-cid-tdou77qi]{padding-left:calc(var(--spacing,.25rem) * 0)}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .top-section[data-astro-cid-tdou77qi]{padding-left:calc(var(--spacing,.25rem) * 0);margin-bottom:10px}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .top-section[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi],#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .bottom-section[data-astro-cid-tdou77qi],#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .bottom-section[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi]{padding-left:calc(var(--spacing,.25rem) * 0)}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi] .section-header[data-astro-cid-tdou77qi]{margin-bottom:calc(var(--spacing,.25rem) * 0);--tw-font-weight:var(--font-weight-semibold,600);font-size:14px;font-weight:var(--font-weight-semibold,600);color:#737981;text-transform:none}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi] ul[data-astro-cid-tdou77qi]{padding-left:calc(var(--spacing,.25rem) * 0);--tw-leading:1.5em;--tw-font-weight:var(--font-weight-semibold,600);font-size:13px;line-height:1.5em;font-weight:var(--font-weight-semibold,600);color:#e9ebee;list-style-type:none}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi] ul[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi] a[data-astro-cid-tdou77qi]{color:#e9ebee!important}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] div[data-astro-cid-tdou77qi] .bottom-top-list[data-astro-cid-tdou77qi]{margin-bottom:20px}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi]{float:left;width:auto;padding:calc(var(--spacing,.25rem) * 0);margin-top:-10px;margin-left:-4px;display:none}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi]{background-color:#0000;padding-block:20px;padding-inline:5px}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi]{margin-right:3px}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi]:last-of-type{margin-right:calc(var(--spacing,.25rem) * 0)}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .right[data-astro-cid-tdou77qi]{padding-inline:calc(var(--spacing,.25rem) * 0)}#ftl-footer[data-astro-cid-tdou77qi] .row[data-astro-cid-tdou77qi] .connect-text[data-astro-cid-tdou77qi]{float:left;--tw-font-weight:var(--font-weight-semibold,600);font-size:18px;font-weight:var(--font-weight-semibold,600);color:#29a8ff;text-transform:none;margin-right:10px;padding-top:10px;display:inline}#ftl-footer[data-astro-cid-tdou77qi] .footer-mobile[data-astro-cid-tdou77qi]{display:none!important}#ftl-footer[data-astro-cid-tdou77qi] .footer-wide[data-astro-cid-tdou77qi]{display:block!important}#ftl-footer[data-astro-cid-tdou77qi] .footer[data-astro-cid-tdou77qi]{border-top-style:var(--tw-border-style)!important;background-color:#292b31!important;border-top-width:0!important}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi]{margin:calc(var(--spacing,.25rem) * 0);cursor:pointer;padding-inline:5px;padding-block:calc(var(--spacing,.25rem) * 0);display:inline-block;position:relative}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi]{text-align:center;--tw-leading:1.75;width:30px;height:30px;color:var(--color-white,#fff);border-radius:3.40282e38px;font-size:18px;line-height:1.75;list-style-type:none;display:inline-block}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .rss-icon[data-astro-cid-tdou77qi]{background-color:#f60}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .rss-icon[data-astro-cid-tdou77qi] a[data-astro-cid-tdou77qi]{color:var(--color-white,#fff)}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .twitter-icon[data-astro-cid-tdou77qi]{background-color:#00acec!important}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .facebook-icon[data-astro-cid-tdou77qi]{background-color:#3b5998!important}#ftl-footer[data-astro-cid-tdou77qi] .icons-only[data-astro-cid-tdou77qi] .linkedin-icon[data-astro-cid-tdou77qi]{background-color:#007bb5}@media screen and (max-width:400px){#ftl-footer[data-astro-cid-tdou77qi] .footer-mobile[data-astro-cid-tdou77qi]{display:block!important}#ftl-footer[data-astro-cid-tdou77qi] .footer-wide[data-astro-cid-tdou77qi]{display:none!important}#ftl-footer[data-astro-cid-tdou77qi] .social-media-icons[data-astro-cid-tdou77qi]{margin-bottom:20px}#ftl-footer[data-astro-cid-tdou77qi] .left[data-astro-cid-tdou77qi]{padding:calc(var(--spacing,.25rem) * 0)}}@media screen and (max-width:767px){#ftl-footer[data-astro-cid-tdou77qi] .connect-text[data-astro-cid-tdou77qi]{display:none!important}#ftl-footer[data-astro-cid-tdou77qi] .footerContainer[data-astro-cid-tdou77qi] .link-group[data-astro-cid-tdou77qi] li[data-astro-cid-tdou77qi]{margin-block:10px}}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-content{syntax:"*";inherits:false;initial-value:""}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-leading{syntax:"*";inherits:false}#main-navigation[data-astro-cid-sj5ssvhz]{transition:transform .3s ease-in-out,background-color .3s ease-in-out}[data-astro-cid-sj5ssvhz][data-rac-overlay] [data-astro-cid-sj5ssvhz]::-webkit-scrollbar{width:6px}[data-astro-cid-sj5ssvhz][data-rac-overlay] [data-astro-cid-sj5ssvhz]::-webkit-scrollbar-track{background:transparent}[data-astro-cid-sj5ssvhz][data-rac-overlay] [data-astro-cid-sj5ssvhz]::-webkit-scrollbar-thumb{background:#fff3;border-radius:3px}[data-astro-cid-sj5ssvhz][data-rac-overlay] [data-astro-cid-sj5ssvhz]::-webkit-scrollbar-thumb:hover{background:#fff6}[data-astro-cid-sj5ssvhz][data-rac-overlay]{scrollbar-color:rgba(255,255,255,.2) transparent;scrollbar-width:thin}#choice-footer-msg a:hover{text-decoration:underline}.raconteur-net button,.raconteur-net button.rounded-none{border-radius:0}.raconteur-net button.rounded-sm{border-radius:var(--radius-sm, .125rem)}.raconteur-net button.rounded{border-radius:var(--radius, .25rem)}.raconteur-net button.rounded-md{border-radius:var(--radius-md, .375rem)}.raconteur-net button.rounded-lg{border-radius:var(--radius-lg, .5rem)}.raconteur-net button.rounded-xl{border-radius:var(--radius-xl, .75rem)}.raconteur-net button.rounded-2xl{border-radius:var(--radius-2xl, 1rem)}.raconteur-net button.rounded-3xl{border-radius:var(--radius-3xl, 1.5rem)}.raconteur-net button.rounded-full{border-radius:9999px}.ta-subpanel[data-astro-cid-s7hm7h62]{opacity:0;pointer-events:none}.ta-subnav[data-astro-cid-s7hm7h62]:not(:has(>li:hover>.ta-subpanel)):not(:has(>li:focus-within>.ta-subpanel))>li[data-astro-cid-s7hm7h62]:first-child>.ta-subpanel[data-astro-cid-s7hm7h62]{opacity:1;pointer-events:auto}.ta-subnav[data-astro-cid-s7hm7h62]>li[data-astro-cid-s7hm7h62]:hover>.ta-subpanel[data-astro-cid-s7hm7h62],.ta-subnav[data-astro-cid-s7hm7h62]>li[data-astro-cid-s7hm7h62]:focus-within>.ta-subpanel[data-astro-cid-s7hm7h62]{opacity:1;pointer-events:auto}.nav-cards[data-astro-cid-75u2l675] .nav-panel-articles{grid-template-columns:repeat(1,minmax(0,1fr));gap:.75rem;padding-block:0}@media(min-width:768px){.nav-cards[data-astro-cid-75u2l675] .nav-panel-articles{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:1280px){.nav-cards[data-astro-cid-75u2l675] .nav-panel-articles{grid-template-columns:repeat(3,minmax(0,1fr))}}.nav-cards[data-astro-cid-75u2l675] .nav-panel-articles img{border-radius:.625rem}.desk-slip[data-astro-cid-wtop3wsk],.desk-facts[data-astro-cid-wtop3wsk]{border-color:color-mix(in oklab,var(--color-primary) 16%,var(--color-surface-sunken))}.wrapper>.desk-band[data-astro-cid-kyhmplve]:first-child{margin-top:calc(var(--spacing) * -5)}.wrapper>.sticker-band[data-astro-cid-k3z3juqf]:first-child{margin-top:calc(var(--spacing) * -5)}@media(prefers-reduced-motion:no-preference){.sheet-sticker[data-astro-cid-fxetvfvl] a,.sheet-sticker[data-astro-cid-fxetvfvl]>span[data-astro-cid-fxetvfvl]{animation:slap .48s cubic-bezier(.2,1.5,.4,1) backwards;animation-delay:calc(.12s + var(--i) * 55ms)}}@keyframes slap{0%{opacity:0;scale:1.35;rotate:calc(var(--tilt) * -1.5)}to{opacity:1;scale:1;rotate:var(--tilt)}} 2393</style> 2394<style>.promo-banner[data-astro-cid-lroifm73]{background:linear-gradient(to right,#fdf3e7,#fbe3d4 50%,#fdf3e7)}@keyframes bell-ring{0%,to{transform:rotate(0)}8%{transform:rotate(14deg)}16%{transform:rotate(-12deg)}24%{transform:rotate(10deg)}32%{transform:rotate(-8deg)}40%{transform:rotate(4deg)}48%{transform:rotate(0)}}@keyframes push-ping{0%{transform:scale(1);opacity:.6}75%,to{transform:scale(2.2);opacity:0}
2394}@media(any-pointer:coarse){#push-close-btn[data-astro-cid-w7xjyvkx]{display:none}}@media(prefers-reduced-motion:reduce){#push-notification-prompt[data-astro-cid-w7xjyvkx],#push-notification-prompt[data-astro-cid-w7xjyvkx] [data-astro-cid-w7xjyvkx]{animation:none!important;transition:none!important}} 2395.ticker-text[data-v-34ac2891]{transition:transform .2s ease}.ticker-text.ticker-scrolling[data-v-34ac2891]{animation:ticker-scroll-34ac2891 .4s ease-in-out;animation-fill-mode:forwards}@keyframes ticker-scroll-34ac2891{0%{transform:translate(0)}to{transform:translate(var(--scroll-distance, 0))}} 2396.checkbox input{margin-right:.75rem;cursor:pointer;-webkit-appearance:none;appearance:none;background-color:#fff;margin:2px;font:inherit;color:currentColor;width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem;border-radius:.4em;transform:translateY(-.075em);display:grid;place-content:center}.checkbox input:before{content:"";width:.65em;height:.65em;clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%);transform:scale(0);transform-origin:bottom left;transition:.12s transform ease-in-out;box-shadow:inset 1em 1em var(--color-primary);background-color:CanvasText}.checkbox input:checked:before{transform:scale(1)}.checkbox input:focus{outline:max(2px,.15em) solid var(--color-primary);outline-offset:max(2px,.15em)}.expand-enter-active,.expand-leave-active{transition:all .3s ease-in-out;max-height:200px}.expand-enter-from,.expand-leave-to{max-height:0;padding-top:0;padding-bottom:0;opacity:0}
2396.expand-enter-to,.expand-leave-from{max-height:200px;opacity:1} 2397/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){[data-v-38667ae2],[data-v-38667ae2]:before,[data-v-38667ae2]:after,[data-v-38667ae2]::backdrop{--tw-font-weight:initial}}}a[data-v-38667ae2]{--tw-font-weight:var(--font-weight-semibold,600);font-weight:var(--font-weight-semibold,600)}a[data-v-38667ae2]:hover{text-decoration-line:underline}@property --tw-font-weight{syntax:"*";inherits:false} 2398.debug-bar[data-v-45cc7c08] ::-webkit-scrollbar{width:4px}.debug-bar[data-v-45cc7c08] ::-webkit-scrollbar-track{background:#374151}.debug-bar[data-v-45cc7c08] ::-webkit-scrollbar-thumb{background:#6b7280;border-radius:2px}.debug-bar[data-v-45cc7c08] ::-webkit-scrollbar-thumb:hover{background:#9ca3af} 2399.animate-ping-once[data-v-788e3fe6]{animation:ping-once-788e3fe6 .35s ease-out forwards}@keyframes ping-once-788e3fe6{0%{transform:scale(1)}40%{transform:scale(1.2)}70%{transform:scale(.95)}to{transform:scale(1)}}.slide-enter-active[data-v-14b806f0],.slide-leave-active[data-v-14b806f0]{transition:all .3s}.slide-enter-from[data-v-14b806f0],.slide-leave-to[data-v-14b806f0]{transform:translateY(20px);opacity:0}.slide-right-enter-active[data-v-0c8284e0],.slide-right-leave-active[data-v-0c8284e0]{transition:all .3s}.slide-right-enter-from[data-v-0c8284e0],.slide-right-leave-to[data-v-0c8284e0]{transform:translate(-100vw);opacity:0}.slide-left-enter-active[data-v-0c8284e0],.slide-left-leave-active[data-v-0c8284e0]{transition:all .3s}.slide-left-enter-from[data-v-0c8284e0],.slide-left-leave-to[data-v-0c8284e0]{transform:translate(100vw);opacity:0}.submenu-content [data-submenu][data-v-0c8284e0]{display:none}.submenu-content [data-submenu].active[data-v-0c8284e0]{display:block} 2400</style><style>astro-island,astro-slot,astro-static-slot{display:contents}</style></head> <body class="skybox-auto-collapse">
2400<script>(()=>{var a=(s,i,o)=>{let r=async()=>{await(await s())()},t=typeof i.value=="object"?i.value:void 0,c={rootMargin:t==null?void 0:t.rootMargin},n=new IntersectionObserver(e=>{for(let l of e)if(l.isIntersecting){n.disconnect(),r();break}},c);for(let e of o.children)n.observe(e)};(self.Astro||(self.Astro={})).visible=a;window.dispatchEvent(new Event("astro:visible"));})();</script>
2400<script>(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script>
2400<script type="module">function o(e){e.dataset.imageLoaded===void 0&&(e.dataset.imageLoaded="",window.requestAnimationFrame(()=>{e.style.opacity="1";const a=e.closest("[data-lazyimage]")?.querySelector("[data-blur]");a&&(a.style.opacity="0")}))}function t(e){if(e.dataset.imageLoaded!==void 0)return;(typeof e.decode=="function"?e.decode().catch(()=>{}):Promise.resolve()).finally(()=>o(e))}function d(e){!(e instanceof HTMLImageElement)||!e.matches("[data-image]")||t(e)}document.addEventListener("load",e=>d(e.target),!0);document.addEventListener("error",e=>d(e.target),!0);document.querySelectorAll("[data-lazyimage] [data-image]").forEach(e=>{e.complete&&t(e)});</script>
2400<script>(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value=="object"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};"requestIdleCallback"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event("astro:idle"));})();</script>
2400<script type="module">let c=[],r=0,l=!1;const g=()=>{const e=document.getElementById("main-navigation");e&&(e.style.top=`${r}px`)},a=()=>{const e=document.getElementById("main-navigation");if(!e)return;let t=r;l||(t+=e.offsetHeight),document.body.style.setProperty("--header-height",`${t}px`)},u=()=>{const e=document.getElementById("site-navigation");if(!e)return;const t=Array.from(e.querySelectorAll('[data-nav-type="category-posts"], [data-nav-type="category-subcategories"], [data-nav-type="static-category-posts"], [data-nav-type="static-posts"][data-nav-href], [data-nav-type="static"][data-collapsible="true"]'));t.forEach(o=>{o.style.display=""}),c=[];const n=e.querySelector("[data-nav-more-button]");n?.parentElement&&(n.parentElement.style.display="");const s=n?.closest("li"),d=e.getBoundingClientRect();for(let o=t.length-1;o>=0;o--){const m=t[0].getBoundingClientRect(),i=t[o].getBoundingClientRect(),h=s&&o<t.length-1?s.getBoundingClientRect().right:-1/0;if(m.left>=d.left-1&&Math.max(i.right,h)<=d.right+1)break;t[o].style.display="none",c.unshift(t[o])}e.setAttribute("data-nav-computed",""),v()},v=()=>{const e=document.getElementById("hidden-nav-items");if(!e)return;e.innerHTML="",c.slice().reverse().forEach(n=>{const s=n.querySelector("a.more-dropdown-link");if(s instanceof HTMLAnchorElement){const d=s.cloneNode(!0);e.appendChild(d)}});const t=document.querySelector("[data-nav-more-button]");t&&t.parentElement&&(c.length>0?t.parentElement.style.display="":t.parentElement.style.display="none")};requestAnimationFrame(()=>{u(),a()});document.fonts?.ready.then(()=>{u(),a()});window.addEventListener("resize",()=>{u(),a()});document.addEventListener("navigation-content-loaded",()=>{setTimeout(()=>{u()},100)});const E=e=>{r=e.detail?.height||0,g(),a()},b=e=>{r=e.detail?.height||0,g(),a()},H=()=>{r=0,g(),a()},S=()=>{const e=document.getElementById("main-navigation");if(!e){console.error("Navigation element not found");return}let t=0,n=!1;const s=10,d=()=>{const i=document.documentElement.scrollTop;if(i<0||document.querySelector("[data-search-open='true']")||document.querySelector("[data-dropdown-open='true']")||Math.abs(i-t)<s)return;const f=i>t;if(f&&i>100&&!n){const p=-(e.offsetHeight+r);e.style.transform=`translateY(${p}px)`,n=!0,l=!0,a()}else(!f&&n||i<=100&&n)&&(e.style.transform="translateY(0)",n=!1,l=!1,a());t=i};let o=!1;const m=()=>{o||(requestAnimationFrame(()=>{d(),o=!1}),o=!0)};document.addEventListener("scroll",m),d(),a()};document.addEventListener("skybox-ad-ready",E);document.addEventListener("skybox-ad-height-changed",b);document.addEventListener("skybox-ad-hidden",H);document.addEventListener("DOMContentLoaded",S);</script>
2400<script type="module">document.addEventListener("click",t=>{const e=t.target;e instanceof Element&&e.closest("[data-newsletter-trigger]")&&(t.preventDefault(),window.dispatchEvent(new CustomEvent("open-newsletter-modal")))});</script>
2400<script type="module">document.querySelectorAll('[href="#advertising-disclaimer"]').forEach(p=>{const n=p,e=document.createElement("div");e.className="advertising-disclaimer-tooltip",e.innerHTML="We are able to offer our services for free because some vendors may pay us for web traffic or other sales opportunities. Our mission is to help technology buyers make better purchasing decisions, so we provide you with information for all vendors â even those that don't pay us.",n.style.position="relative",n.appendChild(e),p.addEventListener("mouseenter",()=>{e.classList.add("show")}),p.addEventListener("mouseleave",()=>{e.classList.remove("show")})});document.addEventListener("DOMContentLoaded",()=>{document.querySelectorAll(".wp-block-ta-gazelle-blocks-comp-table").forEach(n=>{const e=n,t=e.querySelector(".is-layout-flex:first-child");if(!t)return;const i=t.children,o=i.length,l=[];e.style.setProperty("--cols",o.toString()),o<=2&&e.classList.add("two-column-table");const h=o<=2?0:1;for(let a=h;a<o;a++){const d=i[a],m=d?.querySelector("img"),s=d?.textContent?.trim()||"";l.push({img:m?.src,text:s})}e.querySelectorAll(".is-layout-flex:not(:first-child)").forEach(a=>{const d=a.children,m=o<=2?0:1;for(let s=m;s<d.length&&s-m<l.length;s++){const f=d[s],r=l[s-m];if(r.img||r.text){const c=document.createElement("div");if(c.className="mobile-product-pill",r.img){const u=document.createElement("img");u.src=r.img,c.appendChild(u),c.classList.add("with-logo")}if(r.text){const u=document.createElement("span");u.textContent=r.text,c.appendChild(u),r.img||c.classList.add("text-only")}f.style.position="relative",f.appendChild(c)}}}),t&&l.length>0&&t.classList.add("hide-on-mobile")}),document.querySelectorAll(".prose .table-wrapper table").forEach(n=>{const e=(t,i)=>{const o=i.getBoundingClientRect(),l={el:i,bottom:o.bottom,left:o.left};return!t||l.bottom>t.bottom+1||l.left<t.left-1?l:t};[...n.querySelectorAll("td")].reduce(e,null)?.el.classList.add("bottom-left-cell")})});</script>
2400 <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-NR3XXWX8" height="0" width="0" style="display:none;visibility:hidden" title="Google tag manageer noscript tag"></iframe></noscript>
2400<script>(function(){const gtmId = "GTM-NR3XXWX8"; 2401 2402 // Patched vs the stock GTM snippet: the gtm.js script-tag injection is 2403 // pulled out of the IIFE and deferred to idle. window.dataLayer and gtm.start 2404 // event are still created synchronously, so every dataLayer.push between 2405 // now and load queues on the plain array and GTM drains it on boot â 2406 // no events are lost, they arrive later. 2407 // 2408 // Why: gtm.js is ~177KB and lands mid-load alongside the ad stack, where it 2409 // costs main thread we need for INP and competes with the LCP image for 2410 // bandwidth. Nothing in the ad path depends on it (GPT is loaded by the 2411 // Assertive Yield manager, not GTM). 2412 ;(function (w, d, s, l, i) { 2413 w[l] = w[l] || [] 2414 w[l].push({ 2415 "gtm.start": new Date().getTime(), 2416 event: "gtm.js", 2417 }) 2418 2419 const load = function () { 2420 const f = d.getElementsByTagName(s)[0], 2421 j = d.createElement(s), 2422 dl = l != "dataLayer" ? "&l=" + l : "" 2423 j.async = true 2424 j.src = "https://www.googletagmanager.com/gtm.js?id=" + i + dl 2425 f.parentNode.insertBefore(j, f) 2426 } 2427 2428 // Cap the wait: ad-heavy pages can stay busy for many seconds and may 2429 // never hit a true idle period. 2430 if ("requestIdleCallback" in w) { 2431 w.requestIdleCallback(load, { timeout: 4000 }) 2432 } else { 2433 w.setTimeout(load, 2000) 2434 } 2435 })(window, document, "script", "dataLayer", gtmId) 2436})();</script>
2436<div class="fixed top-0 left-0 right-0 z-1000 bg-white shadow-sm transition-transform duration-300 ease-in-out print:static" id="main-navigation"> <div class="border-t-19 border-primary"> <div class="flex items-center justify-between h-[60px] px-2 md:px-4 self-center w-full max-w-[min(100%,1200px)] mx-auto"> <div class="pl-4 mr-4 md:hidden"> <astro-island uid="AT27U" prefix="s23" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/MobileNavigation.DKwrTyEy.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"mode":[0,"push"],"hasDrawerTop":[0,false],"hasSubmenus":[0,true],"class":[0],"data-mobile-navigation":[0,true]}" ssr="" client="visible" opts="{"name":"MobileNavigationVue","value":true}" await-children=""><div data-mobile-navigation="true" data-v-0c8284e0=""><button class="nav-icon aspect-square h-full flex" aria-label="Open navigation menu" aria-expanded="false" data-v-0c8284e0=""><!----><!--[--><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu-icon lucide-menu h-[30px] w-[30px]" aria-hidden="true" data-v-0c8284e0=""><path d="M4 5h16" /><path d="M4 12h16" /><path d="M4 19h16" /></svg><!--]--></button><div class="nav-drawer absolute left-0 z-100 w-screen overflow-y-auto overscroll-contain pb-[100px]" style="display:none;" data-v-0c8284e0=""><!----><ul class="nav-drawer-list flex flex-col justify-center gap-4 p-[20px]" data-v-0c8284e0=""><!--[--><astro-slot name="navigation-items"><li class="nav-drawer-divider w-full" data-nav-slot="0"> <button class="nav-drawer-item" data-nav-item="0" aria-expanded="false"> How to Cite <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right h-5 w-5" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </button> </li><li class="nav-drawer-divider w-full" data-nav-slot="1"> <button class="nav-drawer-item" data-nav-item="1" aria-expanded="false"> Language & Lit <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right h-5 w-5" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </button> </li><li class="nav-drawer-divider w-full" data-nav-slot="2"> <button class="nav-drawer-item" data-nav-item="2" aria-expanded="false"> Rhyme & Rhythm <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right h-5 w-5" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </button> </li><li class="nav-drawer-divider w-full" data-nav-slot="3"> <button class="nav-drawer-item" data-nav-item="3" aria-expanded="false"> The Rewrite <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right h-5 w-5" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </button> </li></astro-slot><!--]--></ul><!----></div><div class="nav-drawer shadow-l group absolute left-0 z-100 w-screen overflow-y-auto overscroll-contain p-[20px]" style="display:none;" data-v-0c8284e0=""><button class="text-primary flex items-center gap-2 font-semibold" data-v-0c8284e0=""><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-left-icon lucide-chevron-left h-5 w-5" aria-hidden="true" data-v-0c8284e0=""><path d="m15 18-6-6 6-6" /></svg> Back to Menu </button><!--[--><astro-slot name="submenu-content"><div class="h-full w-full" data-nav-submenu="0"> <div class="wrap mx-auto"> <div class="flex flex-col gap-6 py-5"> <div class="flex flex-col gap-6"><div class="flex flex-col gap-4"><div class="flex flex-col gap-2"><div class="nav-panel-label">Related Topics</div><div class="flex flex-col gap-1"><a class="nav-panel-link" href="/pen-and-the-pad/"> Pen and the Pad </a></div></div></div><div class="flex-1"><div class="flex items-center justify-between"><div class="nav-panel-label">Articles</div><a class="flex items-center gap-1 text-[14px]/[20px] hover:underline" href="/how-to-cite/">
2436 View All<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right h-4 w-4" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </a></div><astro-island uid="1uJznD" prefix="s2" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicCategoryPosts.BdSPUR1t.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"How to Cite"],"categoryId":[0,18998],"href":[0,"/how-to-cite/"],"category":[0,{"id":[0,18998],"slug":[0,"how-to-cite"],"name":[0,"How to Cite"],"description":[0,""],"link":[0,"/how-to-cite/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/how-to-cite/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/how-to-cite/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/how-to-cite/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"How to Cite"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/how-to-cite/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"How to Cite"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[[0,{"name":[0,"Pen and the Pad"],"href":[0,"/pen-and-the-pad/"]}]]]}],"variant":[0,"mobile"],"locale":[0,"en"]}" ssr="" client="visible" opts="{"name":"DynamicCategoryPosts","value":true}" await-children=""><div data-dynamic-posts="" class="nav-panel-articles"><div class="flex items-center justify-center py-8"><div class="text-gray-400">Hover to load posts</div></div></div><!--astro:end--></astro-island></div></div> </div> </div> </div><div class="h-full w-full" data-nav-submenu="1"> <div class="wrap mx-auto"> <div class="flex flex-col gap-6 py-5"> <div class="flex flex-col gap-6"><div class="flex-1"><div class="flex items-center justify-between"><div class="nav-panel-label">Articles</div><a class="flex items-center gap-1 text-[14px]/[20px] hover:underline" href="/language-lit/"> View All<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right h-4 w-4" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </a></div><astro-island uid="N1prE" prefix="s3" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicCategoryPosts.BdSPUR1t.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"Language & Lit"],"categoryId":[0,18995],"href":[0,"/language-lit/"],"category":[0,{"id":[0,18995],"slug":[0,"language-lit"],"name":[0,"Language & Lit"],"description":[0,""],"link":[0,"/language-lit/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/language-lit/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/language-lit/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/language-lit/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"Language & Lit"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/language-lit/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"Language & Lit"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"variant":[0,"mobile"],"locale":[0,"en"]}" ssr="" client="visible" opts="{"name":"DynamicCategoryPosts","value":true}" await-children=""><div data-dynamic-posts="" class="nav-panel-articles"><div class="flex items-center justify-center py-8"><div class="text-gray-400">Hover to load posts</div></div></div><!--astro:end--></astro-island></div></div> </div> </div> </div><div class="h-full w-full" data-nav-submenu="2"> <div class="wrap mx-auto"> <div class="flex flex-col gap-6 py-5"> <div class="flex flex-col gap-6"><div class="flex-1"><div class="flex items-center justify-between"><div class="nav-panel-label">Articles</div><a class="flex items-center gap-1 text-[14px]/[20px] hover:underline" href="/rhyme-rhythm/"> View All<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right h-4 w-4" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </a></div><astro-island uid="X7sXX" prefix="s4" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicCategoryPosts.BdSPUR1t.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"Rhyme & Rhythm"],"categoryId":[0,18997],"href":[0,"/rhyme-rhythm/"],"category":[0,{"id":[0,18997],"slug":[0,"rhyme-rhythm"],"name":[0,"Rhyme & Rhythm"],"description":[0,""],"link":[0,"/rhyme-rhythm/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/rhyme-rhythm/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/rhyme-rhythm/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/rhyme-rhythm/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"Rhyme & Rhythm"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/rhyme-rhythm/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"Rhyme & Rhythm"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"variant":[0,"mobile"],"locale":[0,"en"]}" ssr="" client="visible" opts="{"name":"DynamicCategoryPosts","value":true}" await-children=""><div data-dynamic-posts="" class="nav-panel-articles"><div class="flex items-center justify-center py-8"><div class="text-gray-400">Hover to load posts</div></div></div><!--astro:end--></astro-island></div></div> </div> </div> </div><div class="h-full w-full" data-nav-submenu="3"> <div class="wrap mx-auto"> <div class="flex flex-col gap-6 py-5"> <div class="flex flex-col gap-6"><div class="flex-1"><div class="flex items-center justify-between"><div class="nav-panel-label">Articles</div><a class="flex items-center gap-1 text-[14px]/[20px] hover:underline" href="/the-rewrite/">
2436 View All<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-right-icon lucide-chevron-right h-4 w-4" aria-hidden="true"><path d="m9 18 6-6-6-6" /></svg> </a></div><astro-island uid="xRLmR" prefix="s5" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicCategoryPosts.BdSPUR1t.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"The Rewrite"],"categoryId":[0,18996],"href":[0,"/the-rewrite/"],"category":[0,{"id":[0,18996],"slug":[0,"the-rewrite"],"name":[0,"The Rewrite"],"description":[0,""],"link":[0,"/the-rewrite/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/the-rewrite/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/the-rewrite/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/the-rewrite/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"The Rewrite"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/the-rewrite/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"The Rewrite"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"variant":[0,"mobile"],"locale":[0,"en"]}" ssr="" client="visible" opts="{"name":"DynamicCategoryPosts","value":true}" await-children=""><div data-dynamic-posts="" class="nav-panel-articles"><div class="flex items-center justify-center py-8"><div class="text-gray-400">Hover to load posts</div></div></div><!--astro:end--></astro-island></div></div> </div> </div> </div></astro-slot><!--]--></div></div><template data-astro-template="drawer-top"></template><!--astro:end--></astro-island> </div> <a class="block max-h-[90px] px-4" href="/"> <div class="max-h-[35px] w-auto self-start shrink relative"> <img src="https://penandthepad.com/astrostatic/3a22e5c5/_image/?href=%2F_astro%2Fpenandthepad.CAcBzb0Z.svg&w=205&h=70&f=svg" alt="Pen and the Pad Logo" loading="eager" fetchpriority="high" showPlaceholder="false" data-image="true" style="opacity:1" decoding="async" width="205" height="70" class="max-h-[35px] w-auto self-start shrink transition-opacity duration-300"> </div> </a> <div class="flex items-center gap-4"> <div class="flex items-center gap-5 px-4"> <div class="h-[23px] md:flex hidden"> <div class="flex items-center"> </div> </div> <div> <astro-island uid="lxyul" prefix="s1" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/ButtonNavigationSearch.B7sFWfe1.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"domain":[0,"penandthepad.com"]}" ssr="" client="idle" opts="{"name":"ButtonNavigationSearch","value":true}" await-children=""><div class="nav-search-root z-50 shrink-0" data-search-open="false" data-v-14b806f0=""><button class="nav-icon" aria-label="Toggle search" data-v-14b806f0=""><!----><!--[--><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-search-icon lucide-search w-6 h-6" aria-hidden="true" data-v-14b806f0=""><path d="m21 21-4.34-4.34" /><circle cx="11" cy="11" r="8" /></svg><!--]--></button><!----></div><!--astro:end--></astro-island> </div> </div> </div> </div> </div> <div class="hidden md:block"> <div class="z-50"> <div class="border-primary/25 flex w-full items-center justify-center border-y bg-white"> <ul class="container mx-auto flex w-full max-w-[min(100%,1200px)] justify-center" id="site-navigation"> <li class="group [&_.more-dropdown-link]:hidden" data-nav-href="/how-to-cite/" data-nav-type="category-posts"><astro-island uid="Z2fBkBt" prefix="s27" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicNavigationDropdown.BVD6Rpyr.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"How to Cite"],"categoryId":[0,18998],"href":[0,"/how-to-cite/"],"category":[0,{"id":[0,18998],"slug":[0,"how-to-cite"],"name":[0,"How to Cite"],"description":[0,""],"link":[0,"/how-to-cite/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/how-to-cite/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/how-to-cite/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/how-to-cite/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"How to Cite"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/how-to-cite/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"How to Cite"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[[0,{"name":[0,"Pen and the Pad"],"href":[0,"/pen-and-the-pad/"]}]]]}],"domain":[0,"penandthepad.com"],"href":[0,"/how-to-cite/"],"translatedLabel":[0,"How to Cite"]}" ssr="" client="visible" opts="{"name":"DynamicNavigationDropdown","value":true}" await-children=""><!--[--><a href="/how-to-cite/" class="more-dropdown-link nav-more-link">How to Cite</a><div data-dropdown-open="false"><button class="nav-item group" data-open="false"><!--[-->How to Cite <!--]--><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down nav-item-chevron w-
24365 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6" /></svg></button><div class="w-screen left-0 nav-panel absolute" style="display:none;"><!--[--><div class="nav-panel-body wrapper"><div><!--[--><astro-slot><div class="flex gap-6"> <div class="flex max-w-[250px] flex-col gap-4"> <div class="flex flex-col gap-2"> <div class="nav-panel-label">Related Topics</div> <div class="flex flex-col gap-1"> <a class="nav-panel-link" href="/pen-and-the-pad/"> Pen and the Pad </a> </div> </div> </div> <div class="flex-1"> <div class="flex items-center justify-between"> <div class="nav-panel-label">Top Articles</div> <a href="/how-to-cite/"> <button class="button cursor-pointer tracking-[1.2px] font-semibold font-mono rounded-full flex items-center transition uppercase gap-[10px] min-h-[30px] px-4 py-1 text-[12px]/[16px] text-primary border-2 border-primary hover:bg-primary hover:text-primary-foreground w-fit"> View All<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right-icon lucide-arrow-right h-4 w-4" aria-hidden="true"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg> </button> </a> </div> <div class="@container max-h-[60vh] overflow-y-auto"> <astro-island uid="2kmi6d" prefix="s6" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicCategoryPosts.BdSPUR1t.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"How to Cite"],"categoryId":[0,18998],"href":[0,"/how-to-cite/"],"category":[0,{"id":[0,18998],"slug":[0,"how-to-cite"],"name":[0,"How to Cite"],"description":[0,""],"link":[0,"/how-to-cite/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/how-to-cite/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/how-to-cite/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/how-to-cite/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"How to Cite"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/how-to-cite/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"How to Cite"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[[0,{"name":[0,"Pen and the Pad"],"href":[0,"/pen-and-the-pad/"]}]]]}],"variant":[0,"desktop"],"locale":[0,"en"],"featureKicker":[0],"featureCta":[0],"featureImage":[0],"featureOnly":[0]}" ssr="" client="visible" opts="{"name":"DynamicCategoryPosts","value":true}" await-children=""><div data-dynamic-posts="" class="nav-panel-articles"><div class="flex items-center justify-center py-8"><div class="text-gray-400">Hover to load posts</div></div></div><!--astro:end--></astro-island> </div> </div> </div></astro-slot><!--]--></div></div><!--]--></div></div><!--]--><!--astro:end--></astro-island></li><li class="group [&_.more-dropdown-link]:hidden" data-nav-href="/language-lit/" data-nav-type="category-posts"><astro-island uid="ZWjlVL" prefix="s24" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicNavigationDropdown.BVD6Rpyr.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"Language & Lit"],"categoryId":[0,18995],"href":[0,"/language-lit/"],"category":[0,{"id":[0,18995],"slug":[0,"language-lit"],"name":[0,"Language & Lit"],"description":[0,""],"link":[0,"/language-lit/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/language-lit/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/language-lit/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/language-lit/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"Language & Lit"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/language-lit/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"Language & Lit"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"domain":[0,"penandthepad.com"],"href":[0,"/language-lit/"],"translatedLabel":[0,"Language & Lit"]}" ssr="" client="visible" opts="{"name":"DynamicNavigationDropdown","value":true}" await-children=""><!--[--><a href="/language-lit/" class="more-dropdown-link nav-more-link">Language & Lit</a><div data-dropdown-open="false"><button class="nav-item group" data-open="false"><!--[-->Language & Lit <!--]--><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down nav-item-chevron w-
24365 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6" /></svg></button><div class="w-screen left-0 nav-panel absolute" style="display:none;"><!--[--><div class="nav-panel-body wrapper"><div><!--[--><astro-slot><div class="flex gap-6"> <div class="flex-1"> <div class="flex items-center justify-between"> <div class="nav-panel-label">Top Articles</div> <a href="/language-lit/"> <button class="button cursor-pointer tracking-[1.2px] font-semibold font-mono rounded-full flex items-center transition uppercase gap-[10px] min-h-[30px] px-4 py-1 text-[12px]/[16px] text-primary border-2 border-primary hover:bg-primary hover:text-primary-foreground w-fit"> View All<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right-icon lucide-arrow-right h-4 w-4" aria-hidden="true"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg> </button> </a> </div> <div class="@container max-h-[60vh] overflow-y-auto"> <astro-island uid="1EUm1k" prefix="s7" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicCategoryPosts.BdSPUR1t.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"Language & Lit"],"categoryId":[0,18995],"href":[0,"/language-lit/"],"category":[0,{"id":[0,18995],"slug":[0,"language-lit"],"name":[0,"Language & Lit"],"description":[0,""],"link":[0,"/language-lit/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/language-lit/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/language-lit/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/language-lit/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"Language & Lit"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/language-lit/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"Language & Lit"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"variant":[0,"desktop"],"locale":[0,"en"],"featureKicker":[0],"featureCta":[0],"featureImage":[0],"featureOnly":[0]}" ssr="" client="visible" opts="{"name":"DynamicCategoryPosts","value":true}" await-children=""><div data-dynamic-posts="" class="nav-panel-articles"><div class="flex items-center justify-center py-8"><div class="text-gray-400">Hover to load posts</div></div></div><!--astro:end--></astro-island> </div> </div> </div></astro-slot><!--]--></div></div><!--]--></div></div><!--]--><!--astro:end--></astro-island></li><li class="group [&_.more-dropdown-link]:hidden" data-nav-href="/rhyme-rhythm/" data-nav-type="category-posts"><astro-island uid="eC5Sh" prefix="s25" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicNavigationDropdown.BVD6Rpyr.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"Rhyme & Rhythm"],"categoryId":[0,18997],"href":[0,"/rhyme-rhythm/"],"category":[0,{"id":[0,18997],"slug":[0,"rhyme-rhythm"],"name":[0,"Rhyme & Rhythm"],"description":[0,""],"link":[0,"/rhyme-rhythm/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/rhyme-rhythm/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/rhyme-rhythm/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/rhyme-rhythm/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"Rhyme & Rhythm"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/rhyme-rhythm/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"Rhyme & Rhythm"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"domain":[0,"penandthepad.com"],"href":[0,"/rhyme-rhythm/"],"translatedLabel":[0,"Rhyme & Rhythm"]}" ssr="" client="visible" opts="{"name":"DynamicNavigationDropdown","value":true}" await-children=""><!--[--><a href="/rhyme-rhythm/" class="more-dropdown-link nav-more-link">Rhyme & Rhythm</a><div data-dropdown-open="false"><button class="nav-item group" data-open="false"><!--[-->Rhyme & Rhythm <!--]--><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down nav-item-chevron w-
24365 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6" /></svg></button><div class="w-screen left-0 nav-panel absolute" style="display:none;"><!--[--><div class="nav-panel-body wrapper"><div><!--[--><astro-slot><div class="flex gap-6"> <div class="flex-1"> <div class="flex items-center justify-between"> <div class="nav-panel-label">Top Articles</div> <a href="/rhyme-rhythm/"> <button class="button cursor-pointer tracking-[1.2px] font-semibold font-mono rounded-full flex items-center transition uppercase gap-[10px] min-h-[30px] px-4 py-1 text-[12px]/[16px] text-primary border-2 border-primary hover:bg-primary hover:text-primary-foreground w-fit"> View All<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right-icon lucide-arrow-right h-4 w-4" aria-hidden="true"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg> </button> </a> </div> <div class="@container max-h-[60vh] overflow-y-auto"> <astro-island uid="2wEfiX" prefix="s8" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicCategoryPosts.BdSPUR1t.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"Rhyme & Rhythm"],"categoryId":[0,18997],"href":[0,"/rhyme-rhythm/"],"category":[0,{"id":[0,18997],"slug":[0,"rhyme-rhythm"],"name":[0,"Rhyme & Rhythm"],"description":[0,""],"link":[0,"/rhyme-rhythm/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/rhyme-rhythm/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/rhyme-rhythm/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/rhyme-rhythm/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"Rhyme & Rhythm"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/rhyme-rhythm/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"Rhyme & Rhythm"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"variant":[0,"desktop"],"locale":[0,"en"],"featureKicker":[0],"featureCta":[0],"featureImage":[0],"featureOnly":[0]}" ssr="" client="visible" opts="{"name":"DynamicCategoryPosts","value":true}" await-children=""><div data-dynamic-posts="" class="nav-panel-articles"><div class="flex items-center justify-center py-8"><div class="text-gray-400">Hover to load posts</div></div></div><!--astro:end--></astro-island> </div> </div> </div></astro-slot><!--]--></div></div><!--]--></div></div><!--]--><!--astro:end--></astro-island></li><li> <astro-island uid="1FARGE" prefix="s22" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/ButtonNavigationDropdown.CT9-r434.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"width":[0,"auto"],"data-nav-more-button":[0,true]}" ssr="" client="idle" opts="{"name":"ButtonNavigationDropdown","value":true}" await-children=""><div class="relative" data-dropdown-open="false" data-nav-more-button="true"><button class="nav-item group" data-open="false"><!--[--><astro-slot>More </astro-slot><!--]--><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down nav-item-chevron w-
24365 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6" /></svg></button><div class="nav-panel-more w-[300px] border-x left-1/2 transform -translate-x-1/2 nav-panel absolute" style="display:none;"><!--[--><astro-slot name="content"> <div class="nav-panel-surface w-full"> <div class="wrap mx-auto"> <div class="flex flex-col py-5" id="hidden-nav-items"></div> </div> </div> </astro-slot><!--]--></div></div><!--astro:end--></astro-island> </li><li class="group [&_.more-dropdown-link]:hidden" data-nav-href="/the-rewrite/" data-nav-type="category-posts"><astro-island uid="2tHIlF" prefix="s26" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicNavigationDropdown.BVD6Rpyr.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"The Rewrite"],"categoryId":[0,18996],"href":[0,"/the-rewrite/"],"category":[0,{"id":[0,18996],"slug":[0,"the-rewrite"],"name":[0,"The Rewrite"],"description":[0,""],"link":[0,"/the-rewrite/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/the-rewrite/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/the-rewrite/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/the-rewrite/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"The Rewrite"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/the-rewrite/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"The Rewrite"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"domain":[0,"penandthepad.com"],"href":[0,"/the-rewrite/"],"translatedLabel":[0,"The Rewrite"]}" ssr="" client="visible" opts="{"name":"DynamicNavigationDropdown","value":true}" await-children=""><!--[--><a href="/the-rewrite/" class="more-dropdown-link nav-more-link">The Rewrite</a><div data-dropdown-open="false"><button class="nav-item group" data-open="false"><!--[-->The Rewrite <!--]--><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down-icon lucide-chevron-down nav-item-chevron w-5 transition-transform duration-200" aria-hidden="true"><path d="m6 9 6 6 6-6" /></svg></button><div class="w-screen left-0 nav-panel absolute" style="display:none;"><!--[--><div class="nav-panel-body wrapper"><div><!--[--><astro-slot><div class="flex gap-6"> <div class="flex-1"> <div class="flex items-center justify-between"> <div class="nav-panel-label">Top Articles</div> <a href="/the-rewrite/"> <button class="button cursor-pointer tracking-[1.2px] font-semibold font-mono rounded-full flex items-center transition uppercase gap-[10px] min-h-[30px] px-4 py-1 text-[12px]/[16px] text-primary border-2 border-primary hover:bg-primary hover:text-primary-foreground w-fit"> View All<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right-icon lucide-arrow-right h-4 w-4" aria-hidden="true"><path d="M5 12h14" /><path d="m12 5 7 7-7 7" /></svg> </button> </a> </div> <div class="@container max-h-[60vh] overflow-y-auto"> <astro-island uid="1BKLI3" prefix="s9" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/DynamicCategoryPosts.BdSPUR1t.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{"navitem":[0,{"type":[0,"category-posts"],"label":[0,"The Rewrite"],"categoryId":[0,18996],"href":[0,"/the-rewrite/"],"category":[0,{"id":[0,18996],"slug":[0,"the-rewrite"],"name":[0,"The Rewrite"],"description":[0,""],"link":[0,"/the-rewrite/"],"parent":[0,19000],"taxonomy":[0,"category"],"expert":[0],"_links":[0,{"self":[1,[[0,{"href":[0,"https://penandthepad.com/the-rewrite/"]}]]],"wp:post_type":[1,[[0,{"href":[0,"https://penandthepad.com/the-rewrite/posts/"]}]]]}],"meta":[0,{"canonical":[0,"https://penandthepad.com/the-rewrite/"],"indexable":[0,true],"yoast_head_json":[0,{"title":[0,"The Rewrite"],"description":[0,""],"robots":[0,{}],"canonical":[0,"https://penandthepad.com/the-rewrite/"],"og_locale":[0,"en_US"],"og_type":[0,"object"],"og_title":[0,"The Rewrite"],"og_description":[0,""],"og_image":[0],"schema":[0,{}]}]}]}],"posts":[1,[]],"subcategories":[1,[]]}],"variant":[0,"desktop"],"locale":[0,"en"],"featureKicker":[0],"featureCta":[0],"featureImage":[0],"featureOnly":[0]}" ssr="" client="visible" opts="{"name":"DynamicCategoryPosts","value":true}" await-children=""><div data-dynamic-posts="" class="nav-panel-articles"><div class="flex items-center justify-center py-8"><div class="text-gray-400">Hover to load posts</div></div></div><!--astro:end--></astro-island> </div> </div> </div></astro-slot><!--]--></div></div><!--]--></div></div><!--]--><!--astro:end--></astro-island></li> </ul> </div> </div> </div> <div class="absolute top-0 left-0 w-full h-full bg-primary/5 -z-1"></div> </div> <!-- Spacer to prevent content jump when navigation becomes fixed --> <div id="nav-spacer" class="h-[80px] md:h-[120px]"></div> <a class="promo-banner flex items-center justify-center gap-3 px-4 py-2.5 text-center text-sm font-medium text-secondary hover:underline" data-astro-cid-lroifm73="true" href="/vocabulary-study-game/"> <span class="shrink-0 rounded-full border border-secondary/40 px-2.5 py-0.5 text-[11px] font-semibold uppercase tracking-wide" data-astro-cid-lroifm73="">NEW</span><span data-astro-cid-lroifm73="">Learn new words with our Vocabulary Swiper!</span> </a> <div class="wrapper flex flex-col b penandthepad-com pt-5"> <div class="w-full md:w-[1024px]! mx-auto px-4 py-6"> <div class="prose"> <h1 class="h1"> <span>About Pen and the Pad</span> </h1> <p> 2437The Pen & The Pad is a go-to resource for writers. Whether 2438 you're a poet, novelist or just want to improve your 2439 communication skills, The Pen & The Pad has all the information 2440 to help. Contact us here to contribute or learn more. 2441</p> <h2>Get In Touch</h2> <h3>Brand Partnerships</h3> <p> 2442To inquire about advertising opportunities, please email 2443<a href="mailto:[email protected]">[email protected]</a>. 2444</p> <h3>Contact</h3> <p> 2445Have a question, comment or concern? Send a message to 2446<a href="mailto:[email protected]">[email protected]</a>. 2447</p> </div> </div> </div> <div class="wrapper relative bg-primary text-primary-foreground pt-[44px] pb-[9px] z-999">
2447 <div class="flex flex-col lg:grid lg:grid-cols-5 gap-x-[64px] space-y-[24px] lg:space-y-[16px]"> <div class="space-y-[24px] lg:space-y-[16px] lg:col-span-3"> <a class="inline-block" href="/"> <div class="max-w-[200px] self-start md:ml-[unset] invert brightness-0 contrast-200 relative"> <img src="https://penandthepad.com/astrostatic/3a22e5c5/_image/?href=%2F_astro%2Fpenandthepad.CAcBzb0Z.svg&w=205&h=70&f=svg" alt="Pen and the Pad Logo" data-image="true" style="opacity:1" loading="lazy" decoding="async" fetchpriority="auto" width="205" height="70" class="max-w-[200px] self-start md:ml-[unset] invert brightness-0 contrast-200 transition-opacity duration-300"> </div> </a> <p class="leading-6"> Pen and the Pad is your resource for writing, grammar, citations, and the craft of language and literature. </p> <div class="flex gap-6 justify-center lg:justify-normal h-fit"> <div class="flex items-center gap-3 gap-4"> </div> </div> </div> <div class="flex gap-x-[64px] lg:col-span-2 justify-center lg:justify-start"> <div class="space-y-[24px] lg:space-y-[16px]"> <h3 class="h3 uppercase font-bold text-[16px]/[16px] text-white">Company</h3> <div class="grid space-y-[12px]"> <a class="text-primary-foreground hover:text-primary-foreground/80 text-[16px]/[16px] text-nowrap" href="/about-us/"> About us </a> <a class="text-primary-foreground hover:text-primary-foreground/80 text-[16px]/[16px] text-nowrap" href="https://technologyadvice.com/contact-us/" target="_blank" rel="nofollow"> Contact us </a> <a class="text-primary-foreground hover:text-primary-foreground/80 text-[16px]/[16px] text-nowrap" href="https://technologyadvice.com/contact-us/?utm_medium=portfolio_footer&utm_campaign=advertise_contact-us&utm-source=penandthepad" target="_blank" rel="nofollow"> Advertise with us </a> </div> </div> <div class="space-y-[24px] lg:space-y-[16px]"> <h3 class="h3 uppercase font-bold text-[16px]/[16px] text-white">Categories</h3> <div class="grid space-y-[12px]"> <a class="text-primary-foreground hover:text-primary-foreground/80 text-[16px]/[20px] text-ellipsis line-clamp-1" href="/how-to-cite/"> How to Cite </a><a class="text-primary-foreground hover:text-primary-foreground/80 text-[16px]/[20px] text-ellipsis line-clamp-1" href="/language-lit/"> Language & Lit </a><a class="text-primary-foreground hover:text-primary-foreground/80 text-[16px]/[20px] text-ellipsis line-clamp-1" href="/rhyme-rhythm/"> Rhyme & Rhythm </a><a class="text-primary-foreground hover:text-primary-foreground/80 text-[16px]/[20px] text-ellipsis line-clamp-1" href="/the-rewrite/"> The Rewrite </a> </div> </div> </div> </div> </div> <div class="wrapper relative bg-white pt-[9px] pb-[100px] z-999"> <div class="flex flex-col items-center lg:grid lg:grid-cols-2 gap-x-[64px] space-y-[24px] lg:space-y-[16px]"> <div class="flex flex-col gap-4 col-span-full text-[12px]/[21px] text-secondary"> <div class="space-y-2"> <p class="font-bold"> Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved </p> <p> Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace. </p> </div> <div class="flex gap-4 items-center font-bold uppercase"> <a class="text-secondary hover:text-primary" href="/terms-conditions/"> Terms of Service </a> <a class="text-secondary hover:text-primary" href="/privacy-policy/"> Privacy Policy </a> <a class="text-secondary hover:text-primary" href="https://technologyadvice.com/privacy-policy/ccpa-opt-out-form/" target="_blank" rel="nofollow"> California - Do Not Sell My Information </a> </div> <div id="choice-footer-msg" class="text-[12px]/[21px]"></div> </div> </div> </div><astro-island uid="Z11ETh1" prefix="s0" component-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/BackToTop.BI7COpem.js" component-export="default" renderer-url="https://penandthepad.com/astrostatic/3a22e5c5/_astro/client.GG9X53Pw.js" props="{}" ssr="" client="idle" opts="{"name":"BackToTop","value":true}" await-children=""><button id="back-to-top" class="fixed right-4 z-1001 cursor-pointer transition-all duration-500 ease-in-out rounded-full hover:shadow-[0px_0px_3px_#71717a] hover:scale-105 bg-primary text-primary-foreground border-none p-0 opacity-0 translate-y-[70px]" style="bottom:calc( 2448 var(--sticky-ad-height, 0px) + var(--floating-bar-height, 0px) + 2449 16px 2450 );" aria-label="Back to top"><svg width="48" height="48" viewBox="0 0 48 48" class="block" aria-hidden="true"><circle cx="24" cy="24" r="21" fill="none" stroke="currentColor" stroke-width="3" opacity="0.2" /><circle cx="24" cy="24" r="21" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-dasharray="131.94689145077132" stroke-dashoffset="131.94689145077132" transform="rotate(-90 24 24)" style="transition:stroke-dashoffset 150ms ease;" /></svg><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-up-icon lucide-chevron-up absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2" aria-hidden="true"><path d="m18 15-6-6-6 6" /></svg></button><!--astro:end--></astro-island>
2450<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":"190db4ef16d546b18839d2ef3eeb7b8a","r":1,"spa":2}' crossorigin="anonymous"></script>
2450 2451</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.