/* ===== fonts.css ===== */
/*
 * fonts.css
 *
 * Generated by public_html/fonts/fetch-fonts.sh - do not edit.
 *
 * Source: the Google Fonts CSS API, self-hosted so the faces ship inside
 * the CSS bundle instead of costing two extra origins and a serial hop.
 * Request: https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;1,9..144,400;1,9..144,500&family=Inter:wght@400;500;600&family=Kalam:wght@700&display=swap
 *
 * Metric-matched fallbacks for these families live in vanguard.css, which
 * is what keeps font-display: swap from shifting the page.
 */

@font-face {
  font-family: 'Fraunces';
  font-style: italic;
  font-weight: 400 500;
  font-display: swap;
  src: url('/fonts/fraunces-italic-latin.4af9c759c805.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Fraunces';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/fonts/fraunces-normal-latin.48282a415ec2.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url('/fonts/inter-normal-latin.c940764593d0.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
  font-family: 'Kalam';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('/fonts/kalam-normal-latin.c1bc5092263c.woff2') format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* ===== normalize.cssz ===== */
/*! normalize.css v1.0.1 | MIT License | git.io/normalize */

/* ==========================================================================
   HTML5 display definitions
   ========================================================================== */

/*
 * Corrects `block` display not defined in IE 6/7/8/9 and Firefox 3.
 */

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
nav,
section,
summary {
    display: block;
}

/*
 * Corrects `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
 */

audio,
canvas,
video {
    display: inline-block;
    *display: inline;
    *zoom: 1;
}

/*
 * Prevents modern browsers from displaying `audio` without controls.
 * Remove excess height in iOS 5 devices.
 */

audio:not([controls]) {
    display: none;
    height: 0;
}

/*
 * Addresses styling for `hidden` attribute not present in IE 7/8/9, Firefox 3,
 * and Safari 4.
 * Known issue: no IE 6 support.
 */

[hidden] {
    display: none;
}

/* ==========================================================================
   Base
   ========================================================================== */

/*
 * 1. Corrects text resizing oddly in IE 6/7 when body `font-size` is set using
 *    `em` units.
 * 2. Prevents iOS text size adjust after orientation change, without disabling
 *    user zoom.
 */

html {
    font-size: 100%; /* 1 */
    -webkit-text-size-adjust: 100%; /* 2 */
    -ms-text-size-adjust: 100%; /* 2 */
}

/*
 * Addresses `font-family` inconsistency between `textarea` and other form
 * elements.
 */

html,
button,
input,
select,
textarea {
    font-family: sans-serif;
}

/*
 * Addresses margins handled incorrectly in IE 6/7.
 */

body {
    margin: 0;
}

/* ==========================================================================
   Links
   ========================================================================== */

/*
 * Addresses `outline` inconsistency between Chrome and other browsers.
 */

a:focus {
    outline: thin dotted;
}

/*
 * Improves readability when focused and also mouse hovered in all browsers.
 */

a:active,
a:hover {
    outline: 0;
}

/* ==========================================================================
   Typography
   ========================================================================== */

/*
 * Addresses font sizes and margins set differently in IE 6/7.
 * Addresses font sizes within `section` and `article` in Firefox 4+, Safari 5,
 * and Chrome.
 */

h1 {
    font-size: 2em;
    margin: 0.67em 0;
}

h2 {
    font-size: 1.5em;
    margin: 0.83em 0;
}

h3 {
    font-size: 1.17em;
    margin: 1em 0;
}

h4 {
    font-size: 1em;
    margin: 1.33em 0;
}

h5 {
    font-size: 0.83em;
    margin: 1.67em 0;
}

h6 {
    font-size: 0.75em;
    margin: 2.33em 0;
}

/*
 * Addresses styling not present in IE 7/8/9, Safari 5, and Chrome.
 */

abbr[title] {
    border-bottom: 1px dotted;
}

/*
 * Addresses style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
 */

b,
strong {
    font-weight: bold;
}

blockquote {
    margin: 1em 40px;
}

/*
 * Addresses styling not present in Safari 5 and Chrome.
 */

dfn {
    font-style: italic;
}

/*
 * Addresses styling not present in IE 6/7/8/9.
 */

mark {
    background: #ff0;
    color: #000;
}

/*
 * Addresses margins set differently in IE 6/7.
 */

p,
pre {
    margin: 1em 0;
}

/*
 * Corrects font family set oddly in IE 6, Safari 4/5, and Chrome.
 */

code,
kbd,
pre,
samp {
    font-family: monospace, serif;
    _font-family: 'courier new', monospace;
    font-size: 1em;
}

/*
 * Improves readability of pre-formatted text in all browsers.
 */

pre {
    white-space: pre;
    white-space: pre-wrap;
    word-wrap: break-word;
}

/*
 * Addresses CSS quotes not supported in IE 6/7.
 */

q {
    quotes: none;
}

/*
 * Addresses `quotes` property not supported in Safari 4.
 */

q:before,
q:after {
    content: '';
    content: none;
}

/*
 * Addresses inconsistent and variable font size in all browsers.
 */

small {
    font-size: 80%;
}

/*
 * Prevents `sub` and `sup` affecting `line-height` in all browsers.
 */

sub,
sup {
    font-size: 75%;
    line-height: 0;
    position: relative;
    vertical-align: baseline;
}

sup {
    top: -0.5em;
}

sub {
    bottom: -0.25em;
}

/* ==========================================================================
   Lists
   ========================================================================== */

/*
 * Addresses margins set differently in IE 6/7.
 */

dl,
menu,
ol,
ul {
    margin: 1em 0;
}

dd {
    margin: 0 0 0 40px;
}

/*
 * Addresses paddings set differently in IE 6/7.
 */

menu,
ol,
ul {
    padding: 0 0 0 40px;
}

/*
 * Corrects list images handled incorrectly in IE 7.
 */

nav ul,
nav ol {
    list-style: none;
    list-style-image: none;
}

/* ==========================================================================
   Embedded content
   ========================================================================== */

/*
 * 1. Removes border when inside `a` element in IE 6/7/8/9 and Firefox 3.
 * 2. Improves image quality when scaled in IE 7.
 */

img {
    border: 0; /* 1 */
    -ms-interpolation-mode: bicubic; /* 2 */
}

/*
 * Corrects overflow displayed oddly in IE 9.
 */

svg:not(:root) {
    overflow: hidden;
}

/* ==========================================================================
   Figures
   ========================================================================== */

/*
 * Addresses margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
 */

figure {
    margin: 0;
}

/* ==========================================================================
   Forms
   ========================================================================== */

/*
 * Corrects margin displayed oddly in IE 6/7.
 */

form {
    margin: 0;
}

/*
 * Define consistent border, margin, and padding.
 */

fieldset {
    border: 1px solid #c0c0c0;
    margin: 0 2px;
    padding: 0.35em 0.625em 0.75em;
}

/*
 * 1. Corrects color not being inherited in IE 6/7/8/9.
 * 2. Corrects text not wrapping in Firefox 3.
 * 3. Corrects alignment displayed oddly in IE 6/7.
 */

legend {
    border: 0; /* 1 */
    padding: 0;
    white-space: normal; /* 2 */
    *margin-left: -7px; /* 3 */
}

/*
 * 1. Corrects font size not being inherited in all browsers.
 * 2. Addresses margins set differently in IE 6/7, Firefox 3+, Safari 5,
 *    and Chrome.
 * 3. Improves appearance and consistency in all browsers.
 */

button,
input,
select,
textarea {
    font-size: 100%; /* 1 */
    margin: 0; /* 2 */
    vertical-align: baseline; /* 3 */
    *vertical-align: middle; /* 3 */
}

/*
 * Addresses Firefox 3+ setting `line-height` on `input` using `!important` in
 * the UA stylesheet.
 */

button,
input {
    line-height: normal;
}

/*
 * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
 *    and `video` controls.
 * 2. Corrects inability to style clickable `input` types in iOS.
 * 3. Improves usability and consistency of cursor style between image-type
 *    `input` and others.
 * 4. Removes inner spacing in IE 7 without affecting normal text inputs.
 *    Known issue: inner spacing remains in IE 6.
 */

button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
    -webkit-appearance: button; /* 2 */
    cursor: pointer; /* 3 */
    *overflow: visible;  /* 4 */
}

/*
 * Re-set default cursor for disabled elements.
 */

button[disabled],
input[disabled] {
    cursor: default;
}

/*
 * 1. Addresses box sizing set to content-box in IE 8/9.
 * 2. Removes excess padding in IE 8/9.
 * 3. Removes excess padding in IE 7.
 *    Known issue: excess padding remains in IE 6.
 */

input[type="checkbox"],
input[type="radio"] {
    box-sizing: border-box; /* 1 */
    padding: 0; /* 2 */
    *height: 13px; /* 3 */
    *width: 13px; /* 3 */
}

/*
 * 1. Addresses `appearance` set to `searchfield` in Safari 5 and Chrome.
 * 2. Addresses `box-sizing` set to `border-box` in Safari 5 and Chrome
 *    (include `-moz` to future-proof).
 */

input[type="search"] {
    -webkit-appearance: textfield; /* 1 */
    -moz-box-sizing: content-box;
    -webkit-box-sizing: content-box; /* 2 */
    box-sizing: content-box;
}

/*
 * Removes inner padding and search cancel button in Safari 5 and Chrome
 * on OS X.
 */

input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
    -webkit-appearance: none;
}

/*
 * Removes inner padding and border in Firefox 3+.
 */

button::-moz-focus-inner,
input::-moz-focus-inner {
    border: 0;
    padding: 0;
}

/*
 * 1. Removes default vertical scrollbar in IE 6/7/8/9.
 * 2. Improves readability and alignment in all browsers.
 */

textarea {
    overflow: auto; /* 1 */
    vertical-align: top; /* 2 */
}

/* ==========================================================================
   Tables
   ========================================================================== */

/*
 * Remove most spacing between table cells.
 */

table {
    border-collapse: collapse;
    border-spacing: 0;
}

/* ===== site.cssz ===== */
﻿/*
 * HTML5 Boilerplate
 *
 * What follows is the result of much research on cross-browser styling.
 * Credit left inline and big thanks to Nicolas Gallagher, Jonathan Neal,
 * Kroc Camen, and the H5BP dev community and team.
 */

/* ==========================================================================
   Base styles: opinionated defaults
   ========================================================================== */

html,
button,
input,
select,
textarea {
    color: #222;
}

body {
    font-size: 1em;
    line-height: 1.4;
}

/*
 * Remove text-shadow in selection highlight: h5bp.com/i
 * These selection declarations have to be separate.
 * Customize the background color to match your design.
 */

::-moz-selection {
    background: #b3d4fc;
    text-shadow: none;
}

::selection {
    background: #b3d4fc;
    text-shadow: none;
}

/*
 * A better looking default horizontal rule
 */

hr {
    display: block;
    height: 1px;
    border: 0;
    border-top: 1px solid #ccc;
    margin: 1em 0;
    padding: 0;
}

/*
 * Remove the gap between images and the bottom of their containers: h5bp.com/i/440
 */

img {
    vertical-align: middle;
}

/*
 * Remove default fieldset styles.
 */

fieldset {
    border: 0;
    margin: 0;
    padding: 0;
}

/*
 * Allow only vertical resizing of textareas.
 */

textarea {
    resize: vertical;
}

/* ==========================================================================
   Chrome Frame prompt
   ========================================================================== */

.chromeframe {
    margin: 0.2em 0;
    background: #ccc;
    color: #000;
    padding: 0.2em 0;
}

/* ==========================================================================
   Author's custom styles
   ========================================================================== */
textarea.ViewTpl {
    visibility: hidden;
    display: none;
}
html, body {
    width: 100%;
    height: 100%;
    margin: 0;
}
body {
    background: #1d8718 url('../img/bkgr/BackgroundLandscape.scale-100.jpg') no-repeat 100% 50%;
    background-size: cover;
    overflow: hidden;
}
body { 
    -webkit-touch-callout: none; -webkit-text-size-adjust: none; -webkit-user-select: none; -webkit-highlight: none; -webkit-tap-highlight-color: rgba(0,0,0,0);
}
#mgnt-ui {
    overflow: scroll;
    height: 100%;
}

h1, h2, h3, h4, h5, p {
    color: #333;
}
.console {
    z-index: 1000;
    position: absolute;
    bottom: 0;
}
.main {
    width: 80%;
    max-width: 626px;
    margin: 0 auto;
    padding: 1em;
    z-index: 101;
}
.main.play-mash-online-free { 
    max-width: 700px;
    background-color: #FFF;
}
.intro,
.content {
    padding: .75em;
    border-radius: 8px;
    border: 1px solid #FFF;
    background-color: rgba(255, 255, 255, 0.6);
    z-index: 102;
}
.fb-comments {
    margin: 0 auto;
}

.widgets .widget {
    width: 80px;
    float: left;
}

#MASH.logo {
    max-width: 600px;
    width: 100%;
    height: 3em;
    background: transparent url('../img/logos/MASHPlusLogoText.scale-100.png') no-repeat 0 0;
    background-size: contain;
}

#store,
#stores {
    width: 90%;
    max-width: 480px;
    margin: 0 auto;
}
#store .storeItem,
#stores .storeItem {
    width: 45%;
    float: left;
    margin-right: 10px;
    margin-bottom: 10px;
    list-style-type: none;
}
#store .storeItem p,
#stores .storeItem p {
    font-size: 75%;
}
#store .storeBtn,
#stores .storeBtn {
    display: block;
    width: 100%;
    height: 60px;
    background-position: 0 0;
    background-repeat: no-repeat;
    background-size: contain;
}
#store .storeItem p,
#store .storeItem a {
    text-align: center;
}
#store .storeBtn {
    height: 80px;
    background-position: 50% 50%;
}
#store .storeItem:last-child,
#stores .storeItem:last-child {
    margin-right: 0;
}
.storeBtn.iOS,
.storeBtn#iOS {
    background-image: url("../img/buttons/Available_on_the_App_Store_Badge_135x40.svg");
}
.storeBtn.GooglePlay,
.storeBtn#GooglePlay {
    background-image: url("../img/buttons/Get_it_on_Google_Play_Badge.svg");
}
.storeBtn.GoogleChromeWS,
.storeBtn#GoogleChromeWS {
    background-image: url("../img/buttons/ChromeWebStore_BadgeWBorder_v2.svg");
}
.storeBtn.Amazon,
.storeBtn#Amazon {
    background-image: url("../img/buttons/Available_at_Amazon_Appstore.svg");   
}
.storeBtn.WindowsStore,
.storeBtn#WindowsStore {
    background-image: url("../img/buttons/WindowsStore_badge_green.svg");   
}
.storeBtn.WindowsPhone,
.storeBtn#WindowsPhone {
    background-image: url("../img/buttons/WindowsPhone_badge_blue.svg");   
}

.now-available-on-mas,
#now-available-on-mas {
    width: 100%;
    max-width: 480px;
    margin: 0 auto;
}
.now-available-on-mas .storeBtn,
#now-available-on-mas .storeBtn {
    display: block;
    width: 100%;
    height: 100px;
    margin-right: 10px;
    margin-bottom: 10px;
    background-position: 0 0;
    background-repeat: no-repeat;
}
.storeBtn.Mac,
.storeBtn#Mac {
    background-image: url("../img/buttons/Download_on_the_Mac_App_Store_Badge_US-UK_165x40.svg");
    background-position: 100px 50%;
    background-size: 70%;
    min-width: 338px;
}
#stores .storeBtn#Mac {
    background-position: 0 0;
    background-size: contain;
    min-width: 0;
}
.storeBtn.Mac .icon,
.storeBtn#Mac .icon {
    background-image: url("../img/icons/MASH-for-Mac-icon@2x.png");
    width: 100px;
    height: 100px;
    display: block;
    background-size: cover;
}

ul#store {
    padding-left: 0;
}
#store .storeItem {
    width: 100%;
    padding: 0;
}

#facebookLikeWidget {
    max-width: 100% !important;
    /*overflow: scroll;*/
}
#play-on-facebook {
    padding: 1em;
    background-color: rgba(255,255,255,0.8);
    border-radius: 8px;
    margin-bottom: 1em;    
    -webkit-box-shadow: 0px 1px 2px 1px rgba(0,0,0,0.5);
    box-shadow: 0px 1px 2px 1px rgba(0,0,0,0.5);

}
.iconBtn.Facebook {
    background: transparent url('../img/logos/f_logo.svg') no-repeat 0 0;
    background-size: 48px;
    display: block;
    padding-left: 64px;
    font-size: 200%;
    font-weight: bold;
    padding-bottom: .1em;
    text-decoration: none;
}

.promoted {
    padding: .25em 1em;
    background-color: rgba(174, 245, 255, 0.38);
    border-radius: 8px;
    -webkit-box-shadow: 0px 1px 2px 1px rgba(0,0,0,0.5);
    box-shadow: 0px 1px 2px 1px rgba(0,0,0,0.5);
    border: 2px solid #FFF;
}

.intro a:link {
    color: #317ffb;
}
.intro a:visited {
    color: #5664bf;
}
.intro a:hover {
    color: #3db6f2;
}
.intro a:active {
    color: #21670f;
}

#socialLinks a:link, #socialLinks a:visited, 
#socialLinks a:hover, #socialLinks a:active {
    color: rgb(9, 102, 163);
}

.sharable-pin img {
    width: 100%;
    height: auto;
}

.ogImage img {
    width: 100%;
    height: auto;
}

footer p {
    color: #FFF;
    font-size: 90%;
    font-weight: normal;
}
footer a:link {
    color: #FFF;
    text-decoration: none;
}
footer a:hover {
    text-decoration: underline;
}
footer a:visited {
    color: #FFF;
    text-decoration: none;
}
.play-mash-online-free footer p {
    color: #333;
}
.play-mash-online-free footer a:link {
    color: #333;
    text-decoration: none;
}
.play-mash-online-free footer a:visited {
    color: #333;
    text-decoration: none;
}
.play-mash-online-free footer a:hover {
    color: #333;
    text-decoration: underline;
}

/* Overthrow CSS:
   Enable overflow: auto on elements with overthrow class when html element has overthrow class too */
.overthrow-enabled .overthrow {
    overflow: auto;
    -webkit-overflow-scrolling: touch;
}
.scrollable {
    overflow: scroll;
    -webkit-overflow-scrolling: touch;
    -ms-overflow-scrolling: touch;
    /*padding-right: 2em;*/
    padding-bottom: 2em;
}
.scrollable * {
    -webkit-transform: translate3d(0,0,0);
}

button.basicButton {
    padding: 1em;
    border: 2px solid #FFF;
    color: #062954;
    font-weight: bold;
    font-size: 125%;
    background-color: #bdd8e2;
}
button.basicButton:hover {
    background-color: #7ecff1;
}
button.basicButton:active {
    background-color: #348bf4;
    color: #FFF;
}
.backButton {
    display: block;
    color: #FFF;
    font-size: 110%;
    font-weight: bold;
    text-decoration: none;
    width: 48px;
    height: 48px;
    background: transparent url('../img/skin/BackButton.scale-100.png') no-repeat 0 0;
    float: left;
}
.backButton:active {
    background-position: 0 -48px;
    outline: none;
}
.backButton:focus {
    outline: none;
}
.titleView {
    color: #FFF;
    font-size: 125%;
    float: left;
    margin-left: 10px;
}

#Dwellings {
    width: 100%;
    max-width: 500px;
    height: 192px;
    margin: 0 auto;
    background: transparent url('../img/dwellings/Dwellings-Flat.scale-100.png') no-repeat 0 100%;
    background-size: contain;
    z-index: 1;
    margin-top: 1em;
}

.controlsContainer {
    max-width: 580px;
    min-width: 280px;
    padding: 0 1em;
    margin-top: 1em;
}
.hbox .control {
    float: left;
}

#overlay {
    position: absolute;
    background: transparent url('../img/skin/transparent.png') repeat 0 0;
    width: 100%;
    height: 100%;
    z-index: 200;
}
.listControl {
    position: absolute;
    visibility: hidden;
    overflow: auto;
    border: 2px solid #333;
    background-color: #FFF;
    z-index: 300;
}
.listControlItem {
    background-color: #FFF;
    border-bottom: 1px solid #333;
    padding: 1em;
}
.listControlItem .titleLbl {
    color: #222;
    font-size: 125%;
    cursor: default;
}
.listControlItem:hover, .segmentedListControlItem .listControlItem:hover {
    background-color: #bdd8e2;
}
.listControlItem:active, .segmentedListControlItem .listControlItem:active {
    background-color: #7dcef3;
}
.segmentedListControlItem {
    width: 100%;
    padding: 0;
}
.segmentedListControlItem .listControlItem {
    float: left;
    width: 40%;
    padding: 5%;
    background-color: #d8e5e6;
}
.segmentedListControlItem .listControlItem.selected {
    background-color: #FFF;
}

.wordLblOuter {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    position: absolute;
    opacity: 0;
}
label.wordLbl {
    color: #222222;
}
canvas.wordLblCanvas {
    position: absolute;
}

.adModule {
    position: absolute;
    z-index: 2000;
    width: 0;
    height: 0;
    background-color: #FEFEFE;
}
/* MS unit id: 109757 */
.adModule.ad_160x600 {
    width: 160px;
    height: 600px;
}
/* MS unit id: 109758 */
.adModule.ad_292x60 {
    width: 292px;
    height: 60px;
}
/* MS unit id: 109759 */
.adModule.ad_728x90 {
    width: 728px;
    height: 90px;
}

ul.full-width, ol.full-width {
    width: 100%;
    padding: 0;
}
ul.full-width li .section-leader-img {
    margin-left: 0;
}

li .section-leader-img {
    display: block;
    margin-left: -20px;
    width: 100%;
    height: auto;
}

@media screen and (max-width: 600px) {
    .desktop-specific {
        display: none;
        visibility: hidden;
    }
    .main {
        width: auto;
        padding-left: 10px;
        padding-right: 10px;
    }
}


/* Portrait */
@media screen and (orientation:portrait),
screen and (-ms-view-state: fullscreen-portrait) {
    body {
        background: #1d8718 url('../img/bkgr/BackgroundPortrait.scale-100.jpg') no-repeat 50% 50%;
        background-size: cover;
    }
}
/* Landscape */
@media screen and (orientation:landscape),
screen and (-ms-view-state: fullscreen-landscape) {
    body {
        background: #1d8718 url('../img/bkgr/BackgroundLandscape.scale-100.jpg') no-repeat 50% 50%;
        background-size: cover;
    }
}
@media screen and (max-width: 540px) and (orientation: portrait) {
    #stores .storeItem {
        float: left;
        width: 80%;
    }
    #stores .storeBtn {
        display: block;
        width: 100%;
        height: 80px;
        background-position: 0 0;
        background-repeat: no-repeat;
        background-size: contain;
    }
    #MASH.logo {
        margin: 2% 0;
        height: 2em;
    }
}
/* Snapped */
@media screen and (max-width: 600px) and (orientation: portrait),
screen and (max-width: 720px) and (min-device-pixel-ratio: 1.5) {
    body {
        background: #1d8718 url('../img/bkgr/BackgroundSnapped.scale-100.jpg') no-repeat 50% 50%;
        background-size: cover;
    }
    .backButton {
        width: 72px;
        height: 72px;
        background: transparent url('../img/skin/BackButton.scale-180.png') no-repeat 0 0;
        background-size: cover;
    }
    
    .controlsContainer {
        max-width: 580px;
        min-width: 280px;
        margin: 0 auto;
        padding: 0 1em;
    }
}

@media screen and (max-height: 672px) {
    
}
@media screen and (max-height: 554px) {
    #Dwellings {
        display: none;
        visibility: hidden;
    }
}

@media screen and (min-width: 1280px) {
    #Dwellings {
        width: 100%;
        max-width: 1200px;
        height: 400px;
        margin: 0 auto;
        background: transparent url('../img/dwellings/Dwellings-Flat.scale-100.png') no-repeat 0 100%;
        background-size: contain;
        z-index: 1;
        margin-top: 1em;
    }
}



/* ==========================================================================
   Helper classes
   ========================================================================== */

/*
 * Image replacement
 */
.replaced {
    text-indent: 100%;  
    white-space: nowrap;  
    overflow: hidden;
}
.ir {
    background-color: transparent;
    border: 0;
    overflow: hidden;
    /* IE 6/7 fallback */
    *text-indent: -9999px;
}

.ir:before {
    content: "";
    display: block;
    width: 0;
    height: 100%;
}

/*
 * Hide from both screenreaders and browsers: h5bp.com/u
 */

.hidden {
    display: none !important;
    visibility: hidden;
}

/*
 * Hide only visually, but have it available for screenreaders: h5bp.com/v
 */

.visuallyhidden {
    border: 0;
    clip: rect(0 0 0 0);
    height: 1px;
    margin: -1px;
    overflow: hidden;
    padding: 0;
    position: absolute;
    width: 1px;
}

/*
 * Extends the .visuallyhidden class to allow the element to be focusable
 * when navigated to via the keyboard: h5bp.com/p
 */

.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
    clip: auto;
    height: auto;
    margin: 0;
    overflow: visible;
    position: static;
    width: auto;
}

/*
 * Hide visually and from screenreaders, but maintain layout
 */

.invisible {
    visibility: hidden;
}

/*
 * Clearfix: contain floats
 *
 * For modern browsers
 * 1. The space content is one way to avoid an Opera bug when the
 *    `contenteditable` attribute is included anywhere else in the document.
 *    Otherwise it causes space to appear at the top and bottom of elements
 *    that receive the `clearfix` class.
 * 2. The use of `table` rather than `block` is only necessary if using
 *    `:before` to contain the top-margins of child elements.
 */

.clearfix:before,
.clearfix:after {
    content: " "; /* 1 */
    display: table; /* 2 */
}

.clearfix:after {
    clear: both;
}

/*
 * For IE 6/7 only
 * Include this rule to trigger hasLayout and contain floats.
 */

.clearfix {
    *zoom: 1;
}

/* ==========================================================================
   EXAMPLE Media Queries for Responsive Design.
   Theses examples override the primary ('mobile first') styles.
   Modify as content requires.
   ========================================================================== */

@media only screen and (min-width: 35em) {
    /* Style adjustments for viewports that meet the condition */
}

@media only screen and (-webkit-min-device-pixel-ratio: 1.5),
       only screen and (min-resolution: 144dpi) {
    /* Style adjustments for high resolution devices */
}

/* ==========================================================================
   Print styles.
   Inlined to avoid required HTTP connection: h5bp.com/r
   ========================================================================== */

@media print {
    * {
        background: transparent !important;
        color: #000 !important; /* Black prints faster: h5bp.com/s */
        box-shadow: none !important;
        text-shadow: none !important;
    }

    a,
    a:visited {
        text-decoration: underline;
    }

    a[href]:after {
        content: " (" attr(href) ")";
    }

    abbr[title]:after {
        content: " (" attr(title) ")";
    }

    /*
     * Don't show links for images, or javascript/internal links
     */

    .ir a:after,
    a[href^="javascript:"]:after,
    a[href^="#"]:after {
        content: "";
    }

    pre,
    blockquote {
        border: 1px solid #999;
        page-break-inside: avoid;
    }

    thead {
        display: table-header-group; /* h5bp.com/t */
    }

    tr,
    img {
        page-break-inside: avoid;
    }

    img {
        max-width: 100% !important;
    }

    @page {
        margin: 0.5cm;
    }

    p,
    h2,
    h3 {
        orphans: 3;
        widows: 3;
    }

    h2,
    h3 {
        page-break-after: avoid;
    }
}

/* ===== site.supplement.css ===== */
/* Ensure html element allows bounce */
html {
  overflow-x: hidden !important;
  background-image: linear-gradient(to bottom, #2d84f8, #1d8718) !important;
  background-attachment: fixed !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
  background-size: cover !important;
  height: 100% !important;
  min-height: 100vh !important;
  min-height: 100dvh !important;
  width: 100% !important;
  width: 100vw !important;
  overscroll-behavior: contain !important;
}


/* Ensure body can scroll and background stays fixed */
body {
  overflow-y: scroll !important;
  overflow-x: hidden !important;
  background-image: url('https://mgnt-app-assets.s3.amazonaws.com/MASHPlus/site/img/bkgr/BackgroundLandscape.scale-100.jpg'), linear-gradient(to bottom, #2d84f8, #1d8718) !important;
  background-attachment: fixed !important;
  background-position: center center !important;
  background-repeat: no-repeat !important;
  background-size: cover !important;
  min-height: 100vh !important;
  min-height: 100dvh !important;
  width: 100% !important;
}

/* Content meta styling for author and date information */
.content-meta {
  margin: 10px 0;
  font-size: 0.9em;
  color: #666;
  line-height: 1.4;
}

.content-meta .date {
  display: inline-block;
  margin-right: 15px;
}

.content-meta .author {
  display: inline-block;
  font-style: italic;
}

.content-meta .date::before {
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  content: "\f133";
  margin-right: 5px;
}

.content-meta .author::before {
  font-family: "Font Awesome 6 Free";
  font-weight: 900;
  content: "\f304";
  margin-right: 5px;
}

/* Content area responsive styles */
.content {
  max-width: 960px;
  margin: 0 auto;
  padding: 20px;
  background: rgba(255, 255, 255, 0.95);
  border-radius: 8px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  line-height: 1.6;
}

.content header {
  margin-bottom: 30px;
  border-bottom: 2px solid #2d84f8;
  padding-bottom: 20px;
}

.content h1 {
  font-size: 2.5em;
  color: #2d84f8;
  margin-bottom: 10px;
  line-height: 1.2;
}

.content h2 {
  font-size: 1.8em;
  color: #1d8718;
  margin: 25px 0 15px 0;
  line-height: 1.3;
}

.content h3 {
  font-size: 1.4em;
  color: #333;
  margin: 20px 0 10px 0;
  line-height: 1.4;
}

.content p {
  margin-bottom: 15px;
  text-align: justify;
}

.content ul, .content ol {
  margin: 15px 0;
  padding-left: 30px;
}

.content li {
  margin-bottom: 8px;
}

.content a {
  color: #2d84f8;
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-bottom-color 0.3s ease;
}

.content a:hover {
  border-bottom-color: #2d84f8;
}

.content strong {
  color: #1d8718;
  font-weight: bold;
}

.content em {
  font-style: italic;
  color: #666;
}

.content hr {
  border: none;
  border-top: 1px solid #ddd;
  margin: 30px 0;
}

/* Mobile responsive styles */
@media screen and (max-width: 768px) {
  .content {
    padding: 15px;
    margin: 10px;
    border-radius: 6px;
  }
  
  .content h1 {
    font-size: 2em;
  }
  
  .content h2 {
    font-size: 1.5em;
  }
  
  .content h3 {
    font-size: 1.2em;
  }
  
  .content ul, .content ol {
    padding-left: 20px;
  }
}

@media screen and (max-width: 480px) {
  .content {
    padding: 10px;
    margin: 5px;
  }
  
  .content h1 {
    font-size: 1.8em;
  }
  
  .content h2 {
    font-size: 1.3em;
  }
  
  .content h3 {
    font-size: 1.1em;
  }
  
  .content p {
    text-align: left;
  }
  
  .content ul, .content ol {
    padding-left: 15px;
  }
  
  .content-meta {
    font-size: 0.8em;
  }
  
  .content-meta .date,
  .content-meta .author {
    display: block;
    margin-bottom: 5px;
  }
}

/* Main layout responsive adjustments */
@media screen and (max-width: 768px) {
  .main {
    padding: 10px;
  }
  
  #MASH .logo {
    height: 2.5em;
  }
  
  .intro {
    padding: 15px;
  }
  
  .intro h1 {
    font-size: 1.8em;
  }
  
  .intro h2 {
    font-size: 1.3em;
  }
  
  .intro p {
    font-size: 0.95em;
  }
}

@media screen and (max-width: 480px) {
  .main {
    padding: 5px;
  }
  
  #MASH .logo {
    height: 2em;
  }
  
  .intro {
    padding: 10px;
  }
  
  .intro h1 {
    font-size: 1.5em;
  }
  
  .intro h2 {
    font-size: 1.1em;
  }
  
  .intro p {
    font-size: 0.9em;
  }
  
  .sub-pages ul {
    padding-left: 15px;
  }
  
  .sub-pages li {
    margin-bottom: 8px;
  }
}

footer a {
  font-weight: bold;
}

.content article a {
  text-decoration: underline;
}

/* ===== mash.css ===== */
#MASH.logo {
  font-size: 2em;
  margin: 0 0 0.67em 0;
}

.frosted-glass {
  background: var(--surface-frosted);
  border-radius: var(--radius);
}

.ogImage {
  width: 100%;
  max-width: 256px;
  height: auto;
  display: block;
  border-radius: 8px;
  overflow: hidden;
}

.game-instructions {
  margin-top: 10px;
}

.xpromo-container .inner-content {
  width: 100%;
  max-width: 500px;
  margin: 0 auto;
  padding: 10px;
}

/* ===== site.fixes.css ===== */
/*
 * site.fixes.css
 *
 * Targeted overrides for measured layout/perf defects on top of the legacy
 * S3 style.cssz bundle and site.supplement.css. Deliberately NOT wrapped in
 * @layer: layered styles always lose to unlayered CSS, and every rule here
 * has to beat the legacy bundle.
 *
 * Revert: remove the <link> to this file from
 * _includes/common_scripts_and_styles.inc.php. This file can stay on disk.
 */

/* Fix 1: Store badges clip at narrow widths.
   site.cssz sets min-width: 338px on the Mac badge and tries to undo it with
   `#stores .storeBtn#Mac`, but the markup id is `store`, not `stores`, so
   that selector never matches. */
.stores .storeBtn#Mac,
.stores .storeBtn.Mac {
  min-width: 0;
}

/* min() keeps auto-fit tracks from exceeding a narrow container */
#store,
#stores {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17.5rem), 1fr));
}
.storeItem {
  box-sizing: border-box;
}

/* Fix 3: Make print work.
   The only print CSS today is the h5bp default inside the gzipped bundle. */
@media print {
  .top-navigation,
  .footer-container,
  .mash-share,
  .st-sticky-share-buttons,
  .sharethis-inline-share-buttons,
  .xpromo-container,
  .mash-download-ad,
  .newsletter-signup,
  .social-widgets,
  .widgets,
  #facebookLikeWidget {
    display: none !important;
  }

  /* Legacy h5bp appends href to every anchor. Keep it only where a URL is
     actually useful on paper. */
  a[href]::after {
    content: none;
  }
  a[href^="http"]:not([href*="mashplus.com"])::after {
    content: " (" attr(href) ")";
    font-size: 0.8em;
  }

  /* site.supplement.css sets these with !important */
  html,
  body {
    background-image: none !important;
    background-color: #fff !important;
  }
  .content,
  .frosted-glass,
  .intro {
    background: none !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
  }

  h1,
  h2,
  h3 {
    break-after: avoid;
  }
  img,
  li {
    break-inside: avoid;
  }
}

/* Fix 4: Stop applying the prose measure to the whole blog column.
   body.editorial .content-body { max-width: 68ch } caps the container, and
   blog article banner images fill the column, so a capped container would
   shrink them. The measure moves from the container to its text children. */
body#blog .content-body {
  max-width: none;
}
body#blog .content-body > :where(p, ol, ul, h3) {
  max-width: 68ch;
}

/* ===== mash.tokens.css ===== */
/*
 * mash.tokens.css
 *
 * Single token layer for MASHPlus. Unlayered on :root so custom properties
 * apply without fighting the legacy S3 bundle. Revert: remove this <link>.
 */

:root {
  /* Type — editorial scale (320px → 1440px) */
  --step--1: clamp(0.80rem, 0.74rem + 0.22vw, 0.94rem);
  --step-0: clamp(1.00rem, 0.92rem + 0.28vw, 1.13rem);
  --step-1: clamp(1.20rem, 1.10rem + 0.38vw, 1.40rem);
  --step-2: clamp(1.44rem, 1.28rem + 0.56vw, 1.75rem);
  --step-3: clamp(1.73rem, 1.50rem + 0.82vw, 2.19rem);
  --step-4: clamp(2.07rem, 1.73rem + 1.20vw, 2.74rem);
  --step-5: clamp(2.488rem, 1.846rem + 3.209vw, 4.735rem);

  /* Space — one scale for padding, margin, and gap */
  --space-3xs: clamp(0.25rem, 0.232rem + 0.089vw, 0.313rem);
  --space-2xs: clamp(0.5rem, 0.464rem + 0.179vw, 0.625rem);
  --space-xs: clamp(0.75rem, 0.696rem + 0.268vw, 0.938rem);
  --space-s: clamp(1rem, 0.929rem + 0.357vw, 1.25rem);
  --space-m: clamp(1.5rem, 1.393rem + 0.536vw, 1.875rem);
  --space-l: clamp(2rem, 1.857rem + 0.714vw, 2.5rem);
  --space-xl: clamp(3rem, 2.786rem + 1.071vw, 3.75rem);
  --space-2xl: clamp(4rem, 3.714rem + 1.429vw, 5rem);
  --space-3xl: clamp(6rem, 5.571rem + 2.143vw, 7.5rem);

  /* Measure and rhythm */
  --measure: 68ch;
  --leading-tight: 1.1;
  --leading-body: 1.6;
  --rhythm: 1.6em;

  /* Layout frame */
  --gutter: var(--space-m);
  --content-max: 60rem;
  --radius: 8px;
  --radius-sm: 4px;
  --radius-lg: 14px;
  --duration: 0.2s;

  /* Brand colors — named, not resolved (visual pass picks accent) */
  --brand-blue: #2d84f8;
  --brand-green: #1d8718;
  --accent-editorial: #b03a48;
  --ink: #1a1a1f;
  --ink-soft: #4a4a55;
  --rule: #e6e2da;
  --bg-card: #fbf8f3;
  --surface-frosted: rgba(255, 255, 255, 0.69);
  --surface-frosted-strong: rgba(255, 255, 255, 0.85);
  --focus-ring: var(--brand-blue);
}

/* Editorial pages alias crimson accent; swap --accent-editorial later for unified brand */
body.editorial {
  --accent: var(--accent-editorial);
}

/* ===== mash.components.css ===== */
/*
 * mash.components.css
 *
 * Shared layout components aliased to existing class names. Revert: remove this <link>.
 */

/* ─── Card grids (one implementation, five names) ─────────────────────────── */
.feature-grid,
.games-grid,
.apps-grid,
.printables-grid,
.classic-grid,
#store,
#stores {
  display: grid;
  gap: var(--space-m);
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 20rem), 1fr));
}

#store,
#stores {
  max-width: 100%;
  list-style: none;
  padding: 0;
  margin: var(--space-m) 0;
}

.apps-grid {
  padding-left: 0;
  margin-top: 0;
}

.printables-grid {
  max-width: 56.25rem;
  margin-inline: auto;
}

/* Categories page keeps 2-col classic cards */
.mash-categories-page .classic-grid {
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-s);
}

@media (max-width: 37.5rem) {
  .mash-categories-page .classic-grid {
    grid-template-columns: 1fr;
  }
}

/* ─── Shared card lift (aliased surfaces) ───────────────────────────────── */
:where(
  .feature-card,
  .game-card,
  .app-card,
  .printable-item,
  .classic-card,
  .storeItem
):is(a, li, div) {
  transition:
    transform var(--duration) ease,
    box-shadow var(--duration) ease,
    background var(--duration) ease;
}

:where(.game-card, .app-card, .storeItem):hover {
  transform: translateY(-4px);
}

:where(.feature-card):hover {
  transform: translateY(-2px);
}

:where(.storeItem):hover {
  transform: translateY(-2px);
}

/* ─── Focus ring (sitewide) ───────────────────────────────────────────────── */
:where(a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

:where(.feature-card, .game-card, .app-card-link, .top-navigation a):focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

/* ─── Frosted glass (single definition) ─────────────────────────────────── */
.frosted-glass {
  background: var(--surface-frosted);
  border-radius: var(--radius);
}

@media (prefers-reduced-transparency: reduce), (pointer: coarse) {
  .frosted-glass {
    background: rgba(255, 255, 255, 0.92);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
}

@media (prefers-reduced-transparency: no-preference) and (pointer: fine) {
  .frosted-glass {
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }
}

.content.frosted-glass {
  background: var(--surface-frosted-strong);
}

/* ─── Reduced motion ──────────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }

  :where(.feature-card, .game-card, .app-card, .storeItem):hover {
    transform: none;
  }
}

/* ===== nav.css ===== */
/*
 * nav.css — top navigation. Extracted from top_nav.inc.php.
 */

.top-navigation {
  background: rgba(255, 255, 255, 0.95);
  border-bottom: 2px solid var(--brand-blue);
  margin-bottom: var(--space-m);
  padding: 0;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
  position: relative;
  border-radius: var(--radius);
}

.hamburger-menu {
  display: none;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  background: transparent;
  border: none;
  cursor: pointer;
  padding: 0;
  z-index: 1001;
  position: absolute;
  top: 10px;
  right: 15px;
  font-size: 28px;
  color: var(--brand-blue);
  transition: color 0.3s ease;
  border-radius: 6px;
}

.hamburger-menu:hover {
  color: var(--brand-green);
}

.hamburger-icon,
.close-icon {
  position: absolute;
  transition: opacity 0.3s ease, transform 0.3s ease;
}

.close-icon {
  opacity: 0;
  transform: rotate(90deg);
}

.hamburger-menu[aria-expanded="true"] .hamburger-icon {
  opacity: 0;
  transform: rotate(-90deg);
}

.hamburger-menu[aria-expanded="true"] .close-icon {
  opacity: 1;
  transform: rotate(0deg);
}

.top-navigation ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
}

.top-navigation li {
  margin: 0;
  padding: 0;
}

.top-navigation a {
  display: block;
  padding: 15px 20px;
  color: var(--brand-blue);
  text-decoration: none;
  font-weight: 500;
  transition: background-color 0.3s ease, color 0.3s ease;
  border-bottom: 3px solid transparent;
}

.top-navigation a svg {
  display: inline-block;
  vertical-align: middle;
  width: 24px;
  height: 24px;
  fill: currentColor;
}

.top-navigation a:hover,
.top-navigation a:focus {
  background-color: #f0f7ff;
  color: var(--brand-green);
  border-bottom-color: var(--brand-green);
}

.top-navigation a.active {
  background-color: #e0efff;
  color: var(--brand-green);
  border-bottom-color: var(--brand-green);
  font-weight: 600;
}

.top-navigation a:active {
  background-color: #e0efff;
}

@media (max-width: 64rem) {
  .top-navigation a {
    padding: 10px;
  }
}

@media (max-width: 37.5rem) {
  .hamburger-menu {
    display: flex;
    background-color: #ffffff;
    border-radius: 50%;
    padding: 10px;
  }

  .top-navigation {
    padding-bottom: 0;
  }

  .top-navigation .nav-menu {
    flex-direction: column;
    max-height: 0;
    overflow: hidden;
    opacity: 0;
    transition: max-height 0.3s ease-out, opacity 0.3s ease-out;
    width: 100%;
  }

  .top-navigation .nav-menu.menu-open {
    max-height: 500px;
    opacity: 1;
    transition: max-height 0.3s ease-in, opacity 0.3s ease-in;
    border-radius: var(--radius);
    overflow: hidden;
  }

  .top-navigation a {
    width: 100%;
    text-align: center;
    border-bottom: 1px solid #e0e0e0;
  }

  .top-navigation li:first-child a {
    border-radius: 0;
  }

  .top-navigation li:last-child a {
    border-bottom: none;
    border-radius: 0 0 var(--radius) var(--radius);
  }
}

/* ===== footer.css ===== */
/*
 * footer.css — footer and dwellings. Extracted from footer_nav.inc.php.
 */

.footer-container {
  position: relative;
}

#footer {
  background-color: var(--brand-green);
  padding: 3em 2em 0 2em;
}

.footer-dwellings-container {
  background-image: linear-gradient(to top, var(--brand-green), var(--brand-green) 25%, transparent 25%);
}

#Dwellings {
  max-width: 62.5rem;
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center bottom;
  margin: 0 auto;
}

#Dwellings.lazy-loaded {
  background-image: var(--bg-image);
}

.footer-nav {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-l);
  max-width: 62.5rem;
  margin: 0 auto var(--space-l);
}

.footer-column h4 {
  color: #fff;
  font-size: 0.75em;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  margin: 0 0 1em;
  padding-bottom: 0.5em;
  border-bottom: 2px solid rgba(255, 255, 255, 0.3);
}

.footer-column ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.footer-column li {
  margin: 0 0 0.6em;
}

.footer-column a {
  color: rgba(255, 255, 255, 0.76) !important;
  text-decoration: none;
  font-size: 0.95em;
  opacity: 0.9;
  transition: opacity 0.2s ease;
}

.footer-column a:hover {
  color: rgba(255, 255, 255, 1) !important;
  opacity: 1;
  text-decoration: underline;
}

.footer-bottom {
  text-align: center;
  padding-top: 1.5em;
  border-top: 1px solid rgba(255, 255, 255, 0.2);
}

.footer-bottom p {
  color: rgba(255, 255, 255, 0.7);
  font-size: 0.85em;
  margin: 0;
}

@media screen and (max-width: 48rem) {
  .footer-dwellings-container {
    background-image: linear-gradient(to top, var(--brand-green), var(--brand-green) 25%, transparent 25%);
  }

  .footer-nav {
    grid-template-columns: 1fr;
    gap: var(--space-m);
  }

  .footer-column {
    text-align: center;
  }

  .footer-column h4 {
    border-bottom: none;
    padding-bottom: 0;
  }
}

/* ===== pages.css ===== */
/*
 * pages.css
 *
 * Page-specific and shell overrides. Scoped by body id/class where possible.
 * Revert: remove this <link>.
 */

/* ─── Legacy shell overrides (from common_scripts_and_styles.inc.php) ─────── */
.main {
  max-width: var(--content-max);
}

/* The legacy bundle sets `html, body { height: 100% }` and site.supplement.css
   gives body its own overflow, which makes body a scroll container fixed at
   viewport height. Body then scrolls the content while the viewport separately
   scrolls body's padding, so the page has two scrollbars. Scrolling belongs to
   the viewport: body keeps its intrinsic height and no overflow of its own.
   Horizontal overflow is still clipped because a non-visible overflow on the
   root element propagates to the viewport. */
html {
  overflow-y: auto !important;
  height: auto !important;
  min-height: 100% !important;
}

body {
  overflow: visible !important;
  height: auto !important;
  padding-top: 2em !important;
  padding-bottom: 4em !important;
  /* No background here: site.supplement.css puts one on body too, and
     Safari repaints an element's own `background-attachment: fixed` on
     every scroll frame instead of compositing it, which jitters on a page
     this long. The photo lives on ::before below instead, as a genuine
     `position: fixed` layer, which Safari composites properly. */
  background: none !important;
}

body::before {
  content: '';
  position: fixed;
  inset: 0;
  z-index: -1;
  background-image: url('https://mgnt-app-assets.s3.amazonaws.com/MASHPlus/site/img/bkgr/BackgroundLandscape.scale-100.jpg');
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
}

/* Reproduce the content column that .main gave the hoisted site header/nav.
   .main is content-box, so its width is the width these children occupied. */
body > header,
body > nav.top-navigation {
  inline-size: min(80%, var(--content-max));
  margin-inline: auto;
}

/* Individual games inject a border-box reset, so .main's declared width
   includes its legacy padding instead of describing the content column. */
body:where(:has(.back-to-games)) > header,
body:where(:has(.back-to-games)) > nav.top-navigation {
  inline-size: calc(min(80%, var(--content-max)) - 2em);
}

@media (max-width: 48rem) {
  body:where(:has(.back-to-games)) > header,
  body:where(:has(.back-to-games)) > nav.top-navigation {
    inline-size: calc(min(80%, var(--content-max)) - 20px);
  }
}

@media (max-width: 37.5rem) {
  body > header,
  body > nav.top-navigation {
    inline-size: auto;
    margin-inline: 10px;
  }
}

@media (max-width: 30rem) {
  body > header,
  body > nav.top-navigation {
    margin-inline: 5px;
  }
}

/* Logo sprite override (games, blog, etc.) */
#MASH.logo {
  max-width: 37.5rem;
  width: 100%;
  height: 3em;
  background: transparent url('//mgnt-app-assets.s3.amazonaws.com/MASHPlus/site/img/logos/MASHPlusLogoText.scale-100.png?v=20250828') no-repeat 0 0;
  background-size: contain;
  display: block;
  text-indent: -9999px;
  overflow: hidden;
  white-space: nowrap;
  text-align: left;
  margin: 0 0 0.67em 0;
  padding: 0;
}

/* Frosted panel padding variants */
.frosted-glass {
  padding: var(--space-m);
}

body#games .frosted-glass,
body.editorial:not(#home) .intro.frosted-glass {
  padding: var(--space-m);
  margin-bottom: var(--space-m);
}

body#games .content.frosted-glass {
  padding: var(--space-s);
}

/* ─── Shared utilities ────────────────────────────────────────────────────── */
.intro {
  position: relative;
}

.gasns-m {
  width: 20rem;
  margin: 0 auto;
  padding: var(--space-2xs);
}

.gasns-r {
  width: auto;
  margin: 0 auto;
  padding: var(--space-2xs);
}

.xpromo-container {
  width: auto;
  overflow: hidden;
}

.responsive-ad-container {
  background-color: rgb(204, 208, 209);
}

.responsive-ad-container .inner-content ins {
  margin: 0 auto;
}

/* Google ad dimensions reserve space before the ad request to prevent CLS. */
.mashapp-responsive {
  width: 20rem;
  height: 3.125rem;
  min-height: 3.125rem;
  margin: 1.25rem auto;
  display: block;
}

@media (min-width: 31.25rem) {
  .mashapp-responsive {
    width: 29.25rem;
    height: 3.75rem;
    min-height: 3.75rem;
  }
}

@media (min-width: 50rem) {
  .mashapp-responsive {
    width: 100%;
    height: 5.625rem;
    min-height: 5.625rem;
  }
}

/* ─── Blog index (body#blog) ──────────────────────────────────────────────── */
body#blog .newsletter-signup {
  margin-top: var(--space-xl);
  min-height: 6.25rem;
}

/* ─── Games page (body#games) ─────────────────────────────────────────────── */
body#games .games-page {
  /* wrapper — no extra rules needed */
}

body#games .games-grid {
  padding: var(--space-m) 0;
}

body#games .game-card {
  background: rgba(255, 255, 255, 0.95);
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
  overflow: hidden;
  text-decoration: none;
  color: inherit;
  display: block;
}

body#games .game-card:hover {
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15);
  text-decoration: none;
}

body#games .game-card-image {
  width: 100%;
  height: 12.5rem;
  background-color: var(--brand-blue);
  background-image: linear-gradient(135deg, var(--brand-blue) 0%, var(--brand-green) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 4em;
  color: white;
  position: relative;
  overflow: hidden;
  background-size: cover;
  background-repeat: no-repeat;
  background-position: center;
}

body#games .game-card-image-tic-tac-toe { background-image: url('/games/tic-tac-toe/TicTacToe.jpg'); }
body#games .game-card-image-four-in-a-row { background-image: url('/games/four-in-a-row/FourInARow.jpg'); }
body#games .game-card-image-dots-and-boxes { background-image: url('/games/dots-and-boxes/DotsAndBoxes-CardHeader.jpg'); }
body#games .game-card-image-cootie-catcher { background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); }
body#games .game-card-image-coloring { background-image: url('/games/coloring/thumbnails/shack.jpg'); }
body#games .game-card-image-snowman { background-image: url('/games/snowman/SnowmanCardHeader.jpg'); }
body#games .game-card-image-mash { background-image: url('/games/mash/MASH-Card-Header.jpg'); }

body#games .game-card-image::before {
  content: '';
  position: absolute;
  inset: 0;
  background: rgba(255, 255, 255, 0.1);
  opacity: 0;
  transition: opacity 0.3s ease;
}

body#games .game-card:hover .game-card-image::before {
  opacity: 1;
}

body#games .game-card-content {
  padding: var(--space-m);
}

body#games .game-card h3 {
  font-size: 1.5em;
  color: var(--brand-blue);
  margin-bottom: var(--space-2xs);
  border-bottom: 2px solid var(--brand-blue);
  padding-bottom: var(--space-2xs);
}

body#games .game-card p {
  color: #666;
  line-height: 1.6;
  margin: 0;
  text-align: left;
}

@media (max-width: 48rem) {
  body#games .game-card-image {
    height: 9.375rem;
    font-size: 3em;
  }
}

/* ─── Individual games ───────────────────────────────────────────────────── */
body:has(.back-to-games) {
  background-color: transparent;
}

body:has(.back-to-games) .xpromo-container {
  margin-top: 0.625rem;
  padding: 0.5rem !important;
}

.back-to-games {
  margin: 1.25rem auto;
  max-width: 75rem;
  padding: 0 1.25rem;
}

.back-to-games a {
  display: inline-block;
  padding: 0.625rem 1.25rem;
  background: var(--brand-blue);
  color: white;
  text-decoration: none;
  border-radius: 0.3125rem;
  font-size: 1em;
  transition: background 0.3s ease;
}

.back-to-games a:hover {
  background: #1d6fd8;
  text-decoration: none;
}

/* ─── Apps page ───────────────────────────────────────────────────────────── */
.apps-grid {
  padding-left: 0 !important;
  margin-top: 0 !important;
}

.app-card {
  background: rgba(255, 255, 255, 0.95);
  padding: var(--space-m);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.app-card-link {
  text-decoration: none;
  color: inherit;
  display: block;
  width: 100%;
  height: 100%;
}

.app-card:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
}

.app-icon {
  width: 7.5rem;
  height: 7.5rem;
  object-fit: cover;
  margin-bottom: var(--space-s);
}

.app-name {
  font-size: 1.5em;
  color: #222 !important;
  margin: 0 0 12px 0;
  font-weight: 600;
  line-height: 1.2;
}

.app-description {
  color: #333;
  font-size: 0.95em;
  line-height: 1.5;
  margin: 0 0 var(--space-m) 0;
  flex-grow: 1;
  text-align: left !important;
}

.app-download-btn {
  display: inline-block;
  margin-top: var(--space-2xs);
  pointer-events: none;
}

.app-download-btn img {
  height: 2.5rem;
  width: auto;
  display: block;
}

body.editorial .intro h1 {
  margin-bottom: var(--space-m);
}

@media (max-width: 48rem) {
  .app-icon {
    width: 6.25rem;
    height: 6.25rem;
  }

  .app-name {
    font-size: 1.3em;
  }
}

@media (max-width: 30rem) {
  .app-card {
    padding: var(--space-s);
  }

  .app-icon {
    width: 5.625rem;
    height: 5.625rem;
  }

  .app-name {
    font-size: 1.2em;
  }

  .app-description {
    font-size: 0.9em;
  }
}

/* ─── Store download grid ─────────────────────────────────────────────────── */
#store .storeItem {
  padding-bottom: 1em;
}

.storeItem {
  background: rgba(255, 255, 255, 0.95);
  padding: var(--space-m);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}

.storeItem:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.storeItem.primary {
  background: rgba(255, 255, 255, 0.9);
  border: 2px solid #fff;
}

.storeItem.secondary {
  background: linear-gradient(135deg, rgba(45, 132, 248, 0.1), rgba(29, 135, 24, 0.1));
  border: 2px solid rgba(45, 132, 248, 0.3);
}

.storeItem p {
  margin: 0 0 var(--space-s) 0;
  color: #333;
  font-size: 0.95em;
  line-height: 1.5;
  text-align: left;
}

.storeItem a {
  text-align: left;
  display: inline-block;
}

.storeBtn.Mac,
.storeBtn#Mac {
  background-size: 75%;
  background-position: 50%;
}

@media (max-width: 48rem) {
  .storeItem {
    padding: var(--space-s);
  }
}

@media (max-width: 30rem) {
  .storeItem {
    padding: var(--space-s);
  }

  .storeItem p {
    font-size: 0.9em;
  }
}

/* ─── Printable page ──────────────────────────────────────────────────────── */
.printable-preview-img {
  width: 100%;
  height: auto;
  margin: 0 auto;
  display: block;
}

.download-button {
  display: inline-block;
  padding: 1.125rem 2.25rem;
  background: linear-gradient(135deg, #2ecc71 0%, #27ae60 50%, #229954 100%);
  color: #fff;
  text-decoration: none;
  border-radius: 12px;
  font-size: 1.125rem;
  font-weight: bold;
  box-shadow: 0 4px 15px rgba(46, 204, 113, 0.4), 0 2px 5px rgba(0, 0, 0, 0.2), inset 0 1px 0 rgba(255, 255, 255, 0.3);
  position: relative;
  overflow: hidden;
  transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  text-align: center;
  border: 2px solid rgba(255, 255, 255, 0.2);
  margin: var(--space-m) 0;
}

.download-button::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent);
  transition: left 0.5s;
}

.download-button:hover::before {
  left: 100%;
}

.download-button:hover {
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 8px 25px rgba(46, 204, 113, 0.6), 0 4px 10px rgba(0, 0, 0, 0.3), inset 0 1px 0 rgba(255, 255, 255, 0.4);
}

.download-button-content {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--space-s);
  position: relative;
  z-index: 1;
}

.pdf-icon {
  width: 1.75rem;
  height: 1.75rem;
  fill: #fff;
}

.printable-item {
  text-align: center;
  padding: var(--space-m);
  background: rgba(255, 255, 255, 0.5);
}

.printable-item:hover {
  box-shadow: 0 8px 20px rgba(0, 0, 0, 0.15);
}

.printable-item h2 {
  margin: 0 0 var(--space-s) 0;
  font-size: 1.25rem;
  color: #333;
}

.printable-item .printable-preview-img {
  border-radius: var(--radius);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
  transition: transform 0.3s ease;
}

.printable-item a:hover .printable-preview-img {
  transform: scale(1.02);
}

.printable-item .download-button {
  width: 100%;
  max-width: 17.5rem;
  padding: 0.875rem 1.5rem;
  font-size: 1rem;
  margin: var(--space-s) auto 0;
}

@keyframes bounce {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}

.download-button:hover .pdf-icon {
  animation: bounce 0.6s ease;
}

/* ─── MASH categories page ────────────────────────────────────────────────── */
.mash-categories-page .category-section {
  margin-bottom: 2.5rem;
}

.mash-categories-page .category-section h2 {
  border-bottom: 2px solid var(--brand-green);
  padding-bottom: 0.4em;
  margin-bottom: 1em;
}

.mash-categories-page .classic-card {
  background: linear-gradient(180deg, rgba(235, 254, 241, 0.65) 0%, rgba(211, 250, 224, 0.85) 100%);
  border: 2px solid #fff;
  padding: 1.2rem 1.4rem;
  box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.12);
}

.mash-categories-page .classic-card h3 {
  font-size: 1.05em;
  margin: 0 0 0.4em;
  color: #1d5e1a;
}

.mash-categories-page .classic-card p {
  margin: 0;
  font-size: 0.95em;
  color: #334;
}

.mash-categories-page .cta-block,
.hams-game-page .cta-block,
.sham-game-page .cta-block {
  background: linear-gradient(180deg, rgba(174, 245, 255, 0.45) 0%, rgba(174, 245, 255, 0.75) 100%);
  border: 2px solid rgba(255, 255, 255, 0.95);
  border-radius: var(--radius);
  padding: 1.8rem 2rem;
  text-align: center;
  margin: 2.5rem 0;
  box-shadow: 0 1px 2px 1px rgba(0, 0, 0, 0.12);
}

.mash-categories-page .cta-block h2,
.hams-game-page .cta-block h2,
.sham-game-page .cta-block h2 {
  margin-top: 0;
  border: none;
}

.mash-categories-page .cta-buttons,
.hams-game-page .cta-buttons,
.sham-game-page .cta-buttons {
  display: flex;
  gap: var(--space-s);
  justify-content: center;
  flex-wrap: wrap;
  margin-top: var(--space-s);
}

.mash-categories-page .cta-btn,
.hams-game-page .cta-btn,
.sham-game-page .cta-btn {
  display: inline-block;
  padding: 0.75rem 1.6rem;
  border-radius: 2.5rem;
  font-weight: 600;
  font-size: 1em;
  text-decoration: none;
}

.mash-categories-page .cta-btn-primary,
.hams-game-page .cta-btn-primary,
.sham-game-page .cta-btn-primary {
  background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
  color: #fff !important;
}

.mash-categories-page .cta-btn-secondary,
.hams-game-page .cta-btn-secondary,
.sham-game-page .cta-btn-secondary {
  background: #fff;
  color: var(--brand-blue);
  border: 2px solid var(--brand-blue);
}

/* ─── How to play page ────────────────────────────────────────────────────── */
html.how-to-play-mash-page {
  overflow-x: clip;
}

@supports not (overflow: clip) {
  html.how-to-play-mash-page {
    overflow-x: visible;
  }
}

body.how-to-play-mash-page .main {
  overflow: visible;
}

.section-leader-img {
  width: 100%;
  height: auto;
  display: block;
}

body.how-to-play-mash-page .frosted-glass {
  padding: var(--space-m);
}

body.editorial .hero-header-img {
  border-radius: var(--radius-lg);
  box-shadow: 0 18px 48px -22px rgba(20, 20, 30, 0.38);
  margin-bottom: var(--space-l);
  aspect-ratio: 25 / 16;
}

body.editorial div.copy-holder > h1 {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(2.25rem, 1.6rem + 2.4vw, 3.5rem);
  font-weight: 500;
  line-height: 1.05;
  letter-spacing: -0.02em;
  text-wrap: balance;
  color: var(--ink);
  margin: 0 0 0.6rem 0;
}

body.editorial div.copy-holder > h1 + h2 {
  font-family: 'Fraunces', Georgia, serif;
  font-style: italic;
  font-weight: 400;
  font-size: clamp(1.1rem, 1rem + 0.5vw, 1.35rem);
  color: var(--ink-soft);
  line-height: 1.3;
  margin: 0 0 1.5rem 0;
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--rule);
  text-wrap: balance;
}

body.editorial div.copy-holder > h1 + h2::before {
  content: none;
}

body.editorial div.copy-holder p.content-meta small,
body.editorial div.copy-holder p.content-meta em {
  font-family: 'Inter', sans-serif;
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ink-soft);
  font-style: normal;
}

body.editorial div.content ol > li {
  padding-left: 2.8rem;
  margin-top: var(--space-l);
  padding-bottom: 0.4em;
}

body.editorial div.content ol > li::before {
  top: 0.05em;
}

body.editorial div.content ol > li > p {
  margin-bottom: 0.8em;
}

body.editorial div.content ol > li > p:first-of-type {
  font-weight: 600;
  font-size: clamp(1.05rem, 0.95rem + 0.3vw, 1.15rem);
  margin-bottom: 0.6em;
  color: var(--ink);
}

body.editorial div.content ol > li > ul {
  margin-top: 0.8em;
}

body.editorial div.content ol > li > ul li p {
  margin-bottom: 0.2em;
}

body.editorial .section-leader-img:not(.hero-header-img) {
  border-radius: var(--radius);
  box-shadow: 0 12px 32px -18px rgba(20, 20, 30, 0.3);
  margin: 0.8rem 0 1.4rem;
}

body.editorial .how-to-play-mash-what-you-need,
body.editorial .promoted.printable-mash-game {
  background: var(--bg-card);
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  padding: 1.4rem 1.5rem;
  margin: 1.5rem 0 2rem;
}

body.editorial .how-to-play-mash-what-you-need p,
body.editorial .promoted.printable-mash-game p {
  border-left: none;
  background: none;
  padding-left: 0;
  border-radius: 0;
  margin-bottom: 0.6em;
}

body.editorial .how-to-play-mash-what-you-need-title,
body.editorial .promoted.printable-mash-game h3 {
  font-family: 'Fraunces', Georgia, serif;
  font-style: normal;
  color: var(--ink);
  font-size: 1.1rem;
  font-weight: 500;
  margin: 0 0 0.5rem;
}

body.editorial .promoted.printable-mash-game h3::before {
  content: none;
}

body.editorial #gasns-ph-01,
body.how-to-play-mash-page .xpromo-container {
  margin-top: var(--space-l);
  padding-top: var(--space-m);
  border-top: 1px solid var(--rule);
}

body.how-to-play-mash-page .newsletter-signup {
  margin-top: 2.5rem;
  padding-top: var(--space-l);
  border-top: 1px solid var(--rule);
}

body.editorial .how-to-play-shell {
  display: grid;
  grid-template-columns: minmax(11.5rem, 15rem) minmax(0, 1fr);
  gap: clamp(1.25rem, 4vw, 2rem);
  align-items: start;
  max-width: min(90rem, 100%);
  margin-inline: auto;
  box-sizing: border-box;
}

body.editorial .how-to-play-main {
  min-width: 0;
}

body.editorial .page-toc-aside {
  position: sticky;
  top: 5rem;
  align-self: start;
  z-index: 2;
  margin-top: var(--space-l);
  max-height: calc(100vh - 6rem);
  overflow-x: hidden;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
}

@media (max-width: 52rem) {
  body.editorial .page-toc-aside {
    position: static;
    top: auto;
    z-index: auto;
    margin-top: 0;
    max-height: none;
    overflow: visible;
    align-self: stretch;
  }

  body.editorial .how-to-play-shell {
    grid-template-columns: 1fr;
  }
}

body.editorial nav.page-toc {
  margin: 0 0 2.25rem;
  padding: 1.25rem 1.35rem;
  border: 1px solid var(--rule);
  border-radius: var(--radius);
  background: color-mix(in oklab, var(--accent) 6%, transparent);
}

@media (min-width: 52.01rem) {
  body.editorial .page-toc-aside nav.page-toc {
    margin-bottom: 0;
  }
}

body.editorial .page-toc__title {
  margin: 0 0 0.85rem;
  font-family: 'Inter', sans-serif;
  font-size: var(--step--1);
  font-weight: 600;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-soft);
}

body.editorial ul.page-toc__list,
body.editorial ul.page-toc__sublist {
  margin: 0;
  padding-left: 0;
  list-style: none;
}

body.editorial ul.page-toc__list > li {
  margin: 0.45rem 0 0;
}

body.editorial ul.page-toc__list > li:first-child {
  margin-top: 0;
}

body.editorial ul.page-toc__sublist {
  margin: 0.35rem 0 0 0.85rem;
  padding-left: 0.85rem;
  border-left: 2px solid color-mix(in oklab, var(--accent) 45%, transparent);
}

body.editorial nav.page-toc a {
  font-family: 'Inter', sans-serif;
  font-size: var(--step-0);
  font-weight: 500;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}

@media (min-width: 52.01rem) {
  body.editorial .page-toc-aside nav.page-toc a {
    font-size: var(--step--1);
    line-height: 1.35;
  }
}


/* Play MASH online (body#PlayMASH) is styled in play.css. */

/* ===== vanguard.css ===== */
/*
 * vanguard.css
 *
 * Sitewide surface-elevation layer. This file deliberately loads after the
 * foundation styles so removing its single <link> restores the previous UI.
 */

/* Font metric fallbacks keep the Google Fonts swap from moving the page. */
@font-face {
  font-family: "Inter Fallback";
  src: local("Arial");
  size-adjust: 107%;
  ascent-override: 90%;
  descent-override: 22%;
  line-gap-override: 0%;
}

@font-face {
  font-family: "Fraunces Fallback";
  src: local("Georgia");
  size-adjust: 95%;
  ascent-override: 96%;
  descent-override: 24%;
  line-gap-override: 0%;
}

:root,
body.editorial {
  --accent: #0d5ec8;
  --accent-bright: #2d84f8;
  --accent-wash: color-mix(in oklab, var(--accent) 5%, #fff);
  --surface-tray: color-mix(in oklab, var(--accent) 9%, #fff);
  --hairline: color-mix(in oklab, var(--accent) 14%, transparent);
  --shadow-tint: rgb(12 34 78 / 0.26);
  --focus-ring: var(--ink);
  --ease-spring: cubic-bezier(0.32, 0.72, 0, 1);
  --dur-fast: 180ms;
  --dur-base: 320ms;
}

/* Inline icons share one optical box and inherit color from their context. */
.mash-icon {
  display: inline-block;
  inline-size: 1em;
  block-size: 1em;
  flex: none;
  vertical-align: -0.125em;
}

/* The legacy bundle used Font Awesome private-use glyphs for article metadata.
   Masks keep those generated icons after the icon-font dependency is removed. */
.content-meta .date::before,
.content-meta .author::before {
  content: "";
  display: inline-block;
  inline-size: 1em;
  block-size: 1em;
  margin-inline-end: var(--space-3xs);
  vertical-align: -0.125em;
  background-color: currentColor;
  -webkit-mask-position: center;
  mask-position: center;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: contain;
  mask-size: contain;
}

.content-meta .date::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M208 34h-26V24a6 6 0 0 0-12 0v10H86V24a6 6 0 0 0-12 0v10H48a14 14 0 0 0-14 14v160a14 14 0 0 0 14 14h160a14 14 0 0 0 14-14V48a14 14 0 0 0-14-14M48 46h26v10a6 6 0 0 0 12 0V46h84v10a6 6 0 0 0 12 0V46h26a2 2 0 0 1 2 2v34H46V48a2 2 0 0 1 2-2m160 164H48a2 2 0 0 1-2-2V94h164v114a2 2 0 0 1-2 2'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='M208 34h-26V24a6 6 0 0 0-12 0v10H86V24a6 6 0 0 0-12 0v10H48a14 14 0 0 0-14 14v160a14 14 0 0 0 14 14h160a14 14 0 0 0 14-14V48a14 14 0 0 0-14-14M48 46h26v10a6 6 0 0 0 12 0V46h84v10a6 6 0 0 0 12 0V46h26a2 2 0 0 1 2 2v34H46V48a2 2 0 0 1 2-2m160 164H48a2 2 0 0 1-2-2V94h164v114a2 2 0 0 1-2 2'/%3E%3C/svg%3E");
}

.content-meta .author::before {
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='m225.9 74.78-44.69-44.69a14 14 0 0 0-19.8 0L38.1 153.41a13.94 13.94 0 0 0-4.1 9.9V208a14 14 0 0 0 14 14h44.69a13.94 13.94 0 0 0 9.9-4.1L225.9 94.58a14 14 0 0 0 0-19.8M94.1 209.41a2 2 0 0 1-1.41.59H48a2 2 0 0 1-2-2v-44.69a2 2 0 0 1 .59-1.41L136 72.48 183.51 120ZM217.41 86.1 192 111.51 144.49 64l25.41-25.42a2 2 0 0 1 2.83 0l44.68 44.69a2 2 0 0 1 0 2.83'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 256 256'%3E%3Cpath d='m225.9 74.78-44.69-44.69a14 14 0 0 0-19.8 0L38.1 153.41a13.94 13.94 0 0 0-4.1 9.9V208a14 14 0 0 0 14 14h44.69a13.94 13.94 0 0 0 9.9-4.1L225.9 94.58a14 14 0 0 0 0-19.8M94.1 209.41a2 2 0 0 1-1.41.59H48a2 2 0 0 1-2-2v-44.69a2 2 0 0 1 .59-1.41L136 72.48 183.51 120ZM217.41 86.1 192 111.51 144.49 64l25.41-25.42a2 2 0 0 1 2.83 0l44.68 44.69a2 2 0 0 1 0 2.83'/%3E%3C/svg%3E");
}

/* editorial.css loads after this layer and otherwise restores its dot marker. */
html body.editorial article.content .content-meta .author::before {
  content: "";
  margin-inline-end: var(--space-3xs);
}

/* Ensure the metric-adjusted fallback faces participate in the existing pair. */
html body.editorial :is(article.content, div.intro, div.content) {
  font-family: "Inter", "Inter Fallback", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}

html body.editorial :is(
  article.content header h1,
  .content-body h2,
  div.content h2,
  .content-body h3,
  div.content h3,
  div.copy-holder > h1,
  div.copy-holder > h1 + h2
) {
  font-family: "Fraunces", "Fraunces Fallback", Georgia, "Times New Roman", serif;
}

/* One radius for every page-level surface, whether the article carries it
   itself or wraps a frosted panel. Nested panels keep the smaller --radius. */
article.content:not(.frosted-glass) {
  border-radius: var(--radius-lg);
  background: color-mix(in oklab, var(--accent) 3%, #fff);
  box-shadow:
    0 0 0 1px var(--hairline),
    0 var(--space-m) var(--space-xl) calc(-1 * var(--space-s)) var(--shadow-tint);
}

/* The blog article shell sets its own inset. Elsewhere the legacy .content
   padding still applies. */
body#blog article.content:not(.frosted-glass) {
  padding: var(--space-s);
}

.frosted-glass {
  border-radius: var(--radius);
  box-shadow: inset 0 1px 0 rgb(255 255 255 / 0.62);
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Pages where content and frosted-glass are the same node use one surface. */
article.content.frosted-glass,
body#games .content.frosted-glass {
  border-radius: var(--radius-lg);
  box-shadow:
    0 0 0 1px var(--hairline),
    inset 0 1px 0 rgb(255 255 255 / 0.62),
    0 var(--space-m) var(--space-xl) calc(-1 * var(--space-s)) var(--shadow-tint);
}

/* Navigation uses one contrast-safe action color. */
.top-navigation {
  border-bottom-color: var(--accent);
  box-shadow:
    0 0 0 1px var(--hairline),
    0 var(--space-2xs) var(--space-m) calc(-1 * var(--space-s)) var(--shadow-tint);
}

.top-navigation a,
.hamburger-menu {
  color: var(--accent);
  transition: none;
}

.top-navigation a:hover,
.top-navigation a:focus,
.top-navigation a.active,
.hamburger-menu:hover {
  color: var(--accent);
  background-color: var(--accent-wash);
  border-bottom-color: var(--accent);
}

.top-navigation a:active {
  background-color: color-mix(in oklab, var(--accent) 10%, #fff);
}

/* Sitewide surface holdouts get the same navy-tinted material language. */
:is(.game-card, .app-card, .storeItem, .printable-item, .classic-card),
body#games .game-card {
  border-radius: var(--radius-lg);
  box-shadow:
    0 0 0 1px var(--hairline),
    0 var(--space-s) var(--space-l) calc(-1 * var(--space-s)) var(--shadow-tint);
}

/* App cards stay planted while their icon moves. Game and store cards lift as
   one object, with a deeper shadow state that follows the raised surface. */
.app-card,
.app-card:hover {
  transform: none;
}

:is(.game-card, .storeItem) {
  transition: transform var(--dur-base) var(--ease-spring);
}

:is(.game-card, .storeItem):hover,
body#games .game-card:hover {
  transform: translateY(calc(-1 * var(--space-3xs)));
  box-shadow:
    0 0 0 1px var(--hairline),
    0 var(--space-m) var(--space-xl) calc(-1 * var(--space-s)) var(--shadow-tint);
}

.storeItem.primary,
.storeItem.secondary {
  border: 0;
  background: var(--accent-wash);
}

/* Only the artless card gets a gradient; the rest keep their photography. */
body#games .game-card-image {
  background-color: var(--accent);
}

body#games .game-card-image-cootie-catcher {
  background-image: linear-gradient(135deg, var(--accent), var(--accent-bright));
}

body#games .game-card h3 {
  color: var(--accent);
  border-bottom-color: var(--accent);
}

/* The apps grid is a <ul> inside div.content, so the editorial prose rules
   reach into the cards: list markers, link underlines, and the display <h2>
   with its accent rule. Insulate the shelf from the article first. */
body.editorial div.content ul.apps-grid > li.app-card {
  margin-top: 0;
  padding: var(--space-m);                 /* restated so the list indent loses */
}

body.editorial div.content ul.apps-grid > li.app-card::before {
  content: none;
}

/* The whole card is one link, so the prose underline and the hover rule would
   both draw a line across it. The icon lift is the hover signal instead. */
body.editorial div.content .app-card-link,
body.editorial div.content .app-card-link:hover {
  text-decoration: none;
  border-bottom-color: transparent;
}

body.editorial div.content h2.app-name {
  margin: 0 0 var(--space-2xs);
  font-size: var(--step-1);
  font-style: normal;
  font-weight: 600;
  line-height: var(--leading-tight);
  letter-spacing: -0.01em;
  text-wrap: balance;
}

body.editorial div.content h2.app-name::before {
  content: none;
}

/* A white core keeps the vivid icons from fighting a tinted card; the depth
   comes from the accent tray ring instead. */
.app-card,
.app-card:hover {
  background: #fff;
  box-shadow:
    0 0 0 var(--space-3xs) var(--surface-tray),
    0 0 0 calc(var(--space-3xs) + 1px) var(--hairline),
    0 var(--space-s) var(--space-l) calc(-1 * var(--space-s)) var(--shadow-tint);
}

/* The link is the real flex context, which is what lets the store badges land
   on a common baseline no matter how long the description runs. */
.app-card {
  align-items: stretch;
  text-align: left;
}

.app-card-link {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  border-radius: var(--radius);            /* rounds the focus ring to match */
}

.app-description {
  color: var(--ink);
  font-size: var(--step-0);
  line-height: var(--leading-body);
  text-wrap: pretty;
}

/* Trim the store badge so the icon stays the heaviest thing in the card. */
.app-download-btn {
  margin-top: auto;
}

.app-download-btn img {
  height: var(--space-l);
}

/* Signature moment for this page: the icon is the only thing that moves, and
   its shadow tracks the PNG alpha so the squircle mask stays intact. */
.app-icon {
  filter: drop-shadow(0 var(--space-2xs) var(--space-s) var(--shadow-tint));
  transition: transform var(--dur-base) var(--ease-spring);
}

.app-card-link:hover .app-icon {
  transform: translateY(calc(-1 * var(--space-3xs))) scale(1.03);
}

/* Replace the remaining green actions with the blue system. */
.download-button,
.mash-categories-page .cta-btn-primary,
.hams-game-page .cta-btn-primary,
.sham-game-page .cta-btn-primary {
  color: #fff;
  background: var(--accent);
  border-color: transparent;
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 0.26),
    0 var(--space-s) var(--space-l) calc(-1 * var(--space-s)) var(--shadow-tint);
  transition: transform var(--dur-base) var(--ease-spring);
}

body.editorial .content .download-button {
  color: #fff;
  text-decoration: none;
  transition: transform var(--dur-base) var(--ease-spring);
}

.download-button:hover {
  box-shadow:
    inset 0 1px 0 rgb(255 255 255 / 0.26),
    0 var(--space-s) var(--space-l) calc(-1 * var(--space-s)) var(--shadow-tint);
}

body.editorial .content .download-button:hover {
  color: #fff;
  text-decoration: none;
}

.download-button::before {
  content: none;
}

.download-button:hover .pdf-icon {
  animation: none;
}

.mash-categories-page .classic-card,
.mash-categories-page .cta-block,
.hams-game-page .cta-block,
.sham-game-page .cta-block {
  border-color: transparent;
  background: var(--accent-wash);
  box-shadow:
    0 0 0 1px var(--hairline),
    0 var(--space-s) var(--space-l) calc(-1 * var(--space-s)) var(--shadow-tint);
}

.mash-categories-page .classic-card h3 {
  color: var(--accent);
}

.mash-categories-page .category-section h2 {
  border-bottom-color: var(--accent);
}

body.editorial .mash-categories-page .cta-btn-secondary,
body.editorial .hams-game-page .cta-btn-secondary,
body.editorial .sham-game-page .cta-btn-secondary {
  color: var(--accent);
  border-color: var(--accent);
  background: #fff;
}

/* Dark ink remains legible on white, washed, and filled-blue surfaces. */
:is(a, button, input, select, textarea, [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: var(--space-3xs);
}

@media (prefers-reduced-motion: reduce) {
  .download-button:hover,
  .app-card-link:hover .app-icon,
  .game-card:hover,
  .storeItem:hover {
    transform: none;
  }
}

@media print {
  html,
  body {
    background-image: none !important;
    background-color: #fff !important;
  }

  article.content,
  .frosted-glass,
  .game-card,
  .app-card,
  .storeItem,
  .printable-item,
  .classic-card,
  .top-navigation {
    background: #fff !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  .app-card {
    border: 1px solid #000;
  }

  .app-icon {
    filter: none !important;
  }
}

/* ===== share.css ===== */
/*
 * share.css
 *
 * Sticky share button. Visible only when the browser supports navigator.share
 * (the [hidden] attribute is removed by share_button.inc.php at runtime).
 * The ShareThis fallback never renders a button through this stylesheet —
 * ShareThis handles its own UI when injected.
 *
 * z-index 900: below fixed nav (1000, mash.css) and hamburger (1001, nav.css).
 */

.mash-share {
  position: fixed;
  right: var(--space-s);
  bottom: calc(env(safe-area-inset-bottom, 0px) + var(--space-s));
  z-index: 900;
}

.mash-share__btn {
  display: flex;
  align-items: center;
  gap: var(--space-2xs);
  padding: var(--space-2xs) var(--space-s);
  background: var(--surface-frosted-strong);
  border: 1px solid var(--rule);
  border-radius: var(--radius-lg);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.12);
  color: var(--ink);
  font-size: var(--step--1);
  font-family: inherit;
  cursor: pointer;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  transition: box-shadow var(--duration) ease, transform var(--duration) ease;
}

@media (prefers-reduced-motion: reduce) {
  .mash-share__btn {
    transition: none;
  }
}

.mash-share__btn:hover {
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.18);
  transform: translateY(-1px);
}

.mash-share__btn:focus-visible {
  outline: 2px solid var(--focus-ring);
  outline-offset: 2px;
}

.mash-share__btn .mash-icon {
  flex-shrink: 0;
}

/* On narrow screens show icon only; label is visually hidden but still
   available to screen readers via aria-label on the button. */
@media (max-width: 480px) {
  .mash-share {
    bottom: calc(env(safe-area-inset-bottom, 0px) + var(--space-m));
  }

  .mash-share__btn {
    padding: var(--space-xs);
    border-radius: 50%;
  }

  .mash-share__label {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
  }
}

/* ===== editorial.css ===== */
/*
 * editorial.css
 *
 * Editorial typography and article shell. Extracted from blog_article_styles.inc.php.
 * Revert: remove this <link> and restore the inline <style> in the include.
 */

/* ─── Article / content shell ─────────────────────────────────────────────── */
body.editorial :is(article.content, div.intro, div.content) {
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
  font-size: var(--step-0);
  line-height: 1.7;
  color: var(--ink);
  text-rendering: optimizeLegibility;
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "kern", "liga", "calt", "ss01", "cv11";
}

/* ─── Back link ─────────────────────────────────────────────────────────── */
body.editorial article.content > p:first-child {
  margin-bottom: var(--space-l);
}

body.editorial article.content > p:first-child a {
  font-size: var(--step--1);
  font-family: 'Inter', sans-serif;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  color: var(--ink-soft);
  text-decoration: none;
  font-weight: 500;
}

body.editorial article.content > p:first-child a:hover {
  color: var(--accent);
}

body.editorial div.content > p:has(> a[href="/"]) a {
  font-family: 'Inter', sans-serif;
  text-transform: uppercase;
  letter-spacing: 0.13em;
  font-size: var(--step--1);
  color: var(--ink-soft);
  text-decoration: none;
  font-weight: 500;
}

body.editorial div.content > p:has(> a[href="/"]) a:hover {
  color: var(--accent);
}

/* ─── Article header ────────────────────────────────────────────────────── */
body.editorial article.content header {
  margin-bottom: var(--space-l);
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--rule);
}

body.editorial article.content header h1 {
  font-family: 'Fraunces', Georgia, 'Times New Roman', serif;
  font-size: clamp(2.25rem, 1.6rem + 2.4vw, 3.5rem);
  font-weight: 500;
  font-style: normal;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--ink);
  text-wrap: balance;
  margin: 0 0 0.8rem 0;
}

body.editorial article.content .content-meta {
  display: flex;
  align-items: center;
  gap: 0.6em;
  font-family: 'Inter', sans-serif;
  font-size: 0.78rem;
  font-weight: 500;
  text-transform: uppercase;
  letter-spacing: 0.14em;
  color: var(--ink-soft);
  margin: 0;
}

body.editorial article.content .content-meta .author::before {
  content: "·";
  margin-right: 0.6em;
  font-weight: 400;
  letter-spacing: 0;
}

/* ─── Banner image ──────────────────────────────────────────────────────── */
body.editorial .content-body > img:first-child,
body.editorial .content-body img[style*="width: 100%"],
body.editorial .content > img:first-child,
body.editorial .content img[style*="width: 100%"] {
  border-radius: var(--radius-lg);
  box-shadow: 0 18px 48px -22px rgba(20, 20, 30, 0.38);
  margin-bottom: 2.4em !important;
}

/* ─── App screenshot strip ──────────────────────────────────────────────── */
/* Sits outside the prose measure so the phone shots get the full column. One
   row always: columns share the space while they each clear the floor, and
   below that the strip scrolls sideways. auto-fit would wrap five shots into a
   four-plus-one row, which reads as a mistake. */
body.editorial .content-body .app-shots {
  display: grid;
  grid-auto-flow: column;
  grid-auto-columns: minmax(9.5rem, 1fr);
  gap: var(--space-s);
  align-items: start;
  margin: var(--space-l) 0 var(--space-xl);
  overflow-x: auto;
  overscroll-behavior-x: contain;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
  padding-bottom: var(--space-2xs);
}

body.editorial .content-body .app-shots figure {
  margin: 0;
  scroll-snap-align: start;
}

body.editorial .content-body .app-shots img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 395 / 856;
  border-radius: var(--radius);
  background: var(--ink);
  box-shadow:
    0 0 0 1px var(--hairline),
    0 var(--space-2xs) var(--space-m) calc(-1 * var(--space-2xs)) var(--shadow-tint);
}

/* ─── Inline article figure ─────────────────────────────────────────────── */
/* Shares the left edge with the paragraphs instead of spanning the full column
   the way the banner does. Half the column at full measure, the whole column on
   a phone, where half of it is too small to read. The 24rem floor is half the
   measure at its widest, so the figure holds that size in between and its share
   of the column grows as the viewport narrows, with no breakpoint to snap at. */
body.editorial .content-body figure.inline-shot {
  width: min(100%, max(50%, 24rem));
  margin: var(--space-l) 0 var(--space-xl);
}

body.editorial .content-body figure.inline-shot a {
  display: block;
  text-decoration: none;
}

body.editorial .content-body figure.inline-shot img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--radius);
  box-shadow:
    0 0 0 1px var(--hairline),
    0 var(--space-2xs) var(--space-m) calc(-1 * var(--space-2xs)) var(--shadow-tint);
}

/* ─── Figure captions ───────────────────────────────────────────────────── */
body.editorial .content-body :is(.app-shots, figure.inline-shot) figcaption {
  font-size: var(--step--1);
  line-height: 1.4;
  color: var(--ink-soft);
  margin-top: var(--space-2xs);
  text-wrap: pretty;
}

body.editorial .content-body figure.inline-shot figcaption a {
  display: inline;
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-decoration-color: color-mix(in oklab, var(--accent) 40%, transparent);
  text-underline-offset: 0.18em;
}

body.editorial .content-body figure.inline-shot figcaption a:hover {
  color: var(--accent);
  text-decoration-color: var(--accent);
}

/* ─── Short-form video embed ────────────────────────────────────────────── */
/* YouTube Shorts are 9:16. Centered at a phone-ish width so the frame reads
   as vertical video instead of a wide slot with empty sides. */
body.editorial .content-body .video-container--short {
  position: relative;
  width: min(100%, 16rem);
  margin: var(--space-l) auto var(--space-xl);
  aspect-ratio: 9 / 16;
  overflow: hidden;
  border-radius: var(--radius);
  box-shadow:
    0 0 0 1px var(--hairline),
    0 var(--space-2xs) var(--space-m) calc(-1 * var(--space-2xs)) var(--shadow-tint);
}

body.editorial .content-body .video-container--short iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
}

/* ─── App Store badge ───────────────────────────────────────────────────── */
/* Apple asks for at least 40px of badge height, so the floor of the space
   scale it rides on has to clear that. */
body.editorial .content-body p.store-badge {
  margin: var(--space-m) 0 var(--rhythm);
}

body.editorial .content-body p.store-badge a {
  display: inline-block;
  text-decoration: none;
}

body.editorial .content-body p.store-badge img {
  display: block;
  height: var(--space-xl);
  width: auto;
  aspect-ratio: 186 / 62;
}

@media print {
  /* Print has no scrollbar to drag, so the shots wrap onto the sheet instead. */
  body.editorial .content-body .app-shots {
    grid-auto-flow: row;
    grid-template-columns: repeat(3, 1fr);
    overflow-x: visible;
  }

  body.editorial .content-body .app-shots figure {
    break-inside: avoid;
  }

  body.editorial .content-body .app-shots img {
    box-shadow: none;
  }
}

/* ─── Body copy measure ─────────────────────────────────────────────────── */
body.editorial .content-body,
body.editorial div.intro div.copy-holder {
  max-width: var(--measure);
  margin-left: auto;
  margin-right: auto;
}

body.editorial .content-body > img:first-child,
body.editorial .content-body img[style*="width: 100%"],
body.editorial .content-body ul,
body.editorial .content-body ol {
  max-width: none;
  width: 100%;
}

/* ─── Body paragraphs ───────────────────────────────────────────────────── */
body.editorial :is(.content-body, div.intro, div.content) p {
  font-size: var(--step-0);
  line-height: 1.7;
  color: var(--ink);
  margin: 0 0 var(--rhythm) 0;
  hyphens: auto;
  hanging-punctuation: first last;
  text-wrap: pretty;
}

/* ─── Lede paragraph ────────────────────────────────────────────────────── */
body.editorial .content-body p.lede,
body.editorial p.lede {
  font-size: clamp(1.13rem, 1.02rem + 0.42vw, 1.28rem);
  line-height: 1.56;
  color: var(--ink);
  font-weight: 400;
}

body.editorial .content-body p.lede::first-letter,
body.editorial p.lede::first-letter {
  font-family: 'Fraunces', Georgia, serif;
  font-size: 3.6em;
  font-weight: 500;
  font-style: normal;
  color: var(--accent);
  float: left;
  line-height: 0.82;
  margin: 0.05em 0.55rem -0.05em 0;
}

/* ─── H2 headings ───────────────────────────────────────────────────────── */
body.editorial :is(.content-body, div.content) h2 {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(1.6rem, 1.2rem + 1.4vw, 2.2rem);
  font-weight: 500;
  font-style: normal;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--ink);
  margin: 3.2rem 0 0.8rem 0;
  padding-top: 0;
  scroll-margin-top: 5rem;
  text-wrap: balance;
}

body.editorial :is(.content-body, div.content) h2::before {
  content: "";
  display: block;
  width: 2.5rem;
  height: 2px;
  background: var(--accent);
  margin-bottom: 0.85rem;
}

/* ─── H3 headings ───────────────────────────────────────────────────────── */
body.editorial :is(.content-body, div.content) h3 {
  font-family: 'Fraunces', Georgia, serif;
  font-size: clamp(1.2rem, 1.05rem + 0.6vw, 1.45rem);
  font-weight: 400;
  font-style: italic;
  line-height: 1.25;
  color: var(--ink-soft);
  margin: 2.2rem 0 0.6rem 0;
  scroll-margin-top: 5rem;
  text-wrap: balance;
}

/* ─── Lists ─────────────────────────────────────────────────────────────── */
body.editorial :is(.content-body, div.content) ul,
body.editorial :is(.content-body, div.content) ol {
  margin: 0 0 var(--rhythm) 0;
  padding-left: 1.6rem;
}

body.editorial :is(.content-body, div.content) ul {
  list-style: none;
  padding-left: 0;
}

body.editorial :is(.content-body, div.content) ul li {
  padding-left: 1.4rem;
  position: relative;
  line-height: 1.65;
}

body.editorial :is(.content-body, div.content) ul li::before {
  content: "\25AA";
  color: var(--accent);
  font-size: 0.6em;
  position: absolute;
  left: 0.1rem;
  top: 0.45em;
}

body.editorial :is(.content-body, div.content) ul li + li,
body.editorial :is(.content-body, div.content) ol li + li {
  margin-top: 0.55em;
}

body.editorial :is(.content-body, div.content) ol {
  counter-reset: ol-counter;
  list-style: none;
  padding-left: 0;
}

body.editorial :is(.content-body, div.content) ol li {
  counter-increment: ol-counter;
  padding-left: 2.4rem;
  position: relative;
  line-height: 1.65;
}

body.editorial :is(.content-body, div.content) ol li::before {
  content: counter(ol-counter, decimal-leading-zero) ".";
  position: absolute;
  left: 0;
  color: var(--accent);
  font-variant-numeric: tabular-nums;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.03em;
  top: 0.28em;
}

/* ─── List item strong terms ─────────────────────────────────────────────── */
body.editorial :is(.content-body, div.content) li strong {
  font-weight: 600;
  color: var(--ink);
}

/* ─── Inline strong ─────────────────────────────────────────────────────── */
body.editorial :is(.content-body, div.content) strong {
  font-weight: 600;
  color: var(--ink);
}

/* ─── Tip paragraphs ────────────────────────────────────────────────────── */
body.editorial :is(.content-body, div.content) p:has(> strong:first-child) {
  border-left: 2px solid var(--accent);
  padding-left: 1rem;
  background: linear-gradient(to right, var(--bg-card) 0%, transparent 100%);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  padding-top: 0.1em;
  padding-bottom: 0.1em;
}

/* ─── Links ─────────────────────────────────────────────────────────────── */
body.editorial :is(.content-body, div.content, div.intro) a {
  color: var(--ink);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-decoration-color: color-mix(in oklab, var(--accent) 40%, transparent);
  text-underline-offset: 0.18em;
  transition: color 0.15s, text-decoration-color 0.15s, text-decoration-thickness 0.15s;
}

body.editorial :is(.content-body, div.content, div.intro) a:hover {
  color: var(--accent);
  text-decoration-thickness: 2px;
  text-decoration-color: var(--accent);
}

/* ─── Horizontal rule ────────────────────────────────────────────────────── */
body.editorial :is(.content-body, div.content) hr {
  border: none;
  width: 64px;
  height: 2px;
  background: var(--accent);
  margin: var(--space-xl) auto;
  display: block;
}

body.editorial :is(.content-body, div.content) hr + p {
  text-align: center;
  font-family: 'Fraunces', Georgia, serif;
  font-style: italic;
  font-size: var(--step--1);
  color: var(--ink-soft);
  margin-top: 0;
}

body.editorial :is(.content-body, div.content) hr + p:has(> strong:first-child) {
  border-left: none;
  padding-left: 0;
  background: none;
}

/* ─── Ad + newsletter separators ────────────────────────────────────────── */
body.editorial article.content .mashapp-responsive,
body.editorial article.content .newsletter-signup {
  margin-top: 2.5rem;
  padding-top: var(--space-l);
  border-top: 1px solid var(--rule);
}

/* ===== paper.css ===== */
/* ─── Paper ───────────────────────────────────────────────────────────────────
   The desk-of-paper look shared by the homepage, /mash-categories/,
   /printable/, /how-to-play-mash/, /games/, /apps/, /play-mash-online-free/,
   /app/, /apple-watch/, and /mash-for-mac/: sheets, sticky notes, index
   cards, tape, section heads, and the raised buttons, over the site's
   landscape background. A page opts in by adding its body id to the :is()
   scope on every rule; page sections live in home.css, categories.css,
   printable.css, howto.css, games.css, apps.css, play.css, app.css,
   apple-watch.css, and mac.css, and the three app pages share app-kit.css.
   Tilts and lifts use the individual rotate/translate properties so the page
   scripts can animate `transform` on the same elements without either side
   overwriting the other. */

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) {
  --paper: #fffdf8;
  --paper-cream: #fbf4e4;
  --pen: #2a3fae;
  --gel: #e23d7c;
  --gel-ink: #c42a66;
  --marker: #1f8f3f;
  --highlight: #ffe45e;
  --note-yellow: #fff1a8;
  --note-pink: #ffdbe6;
  --note-blue: #dcecff;
  --note-green: #dcf3d4;
  --tape-yellow: rgb(255 222 99 / 0.8);
  --tape-pink: rgb(255 150 186 / 0.75);
  --tape-green: rgb(140 214 140 / 0.75);
  --tape-blue: rgb(130 184 255 / 0.75);
  --rule-line: #bcd5f3;
  --margin-line: #f09aa8;
  --blue: #0d5ec8;
  --blue-bright: #2d84f8;
  --blue-deep: #083f8c;
  --focus: var(--ink);
  --hand: "Kalam", "Chalkboard SE", "Comic Sans MS", cursive;
  --display: "Fraunces", "Fraunces Fallback", Georgia, "Times New Roman", serif;
  --sans: "Inter", "Inter Fallback", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
  --sheet-pad: clamp(1.25rem, 0.5rem + 3.2vw, 3rem);
  --section-gap: clamp(3.5rem, 2.5rem + 4vw, 6.5rem);
  --paper-edge: 0 0 0 1px rgb(26 26 31 / 0.06);
  --paper-shadow: var(--paper-edge), 0 1px 1px rgb(26 26 31 / 0.05), 0 1.25rem 2.5rem -1.25rem var(--shadow-tint);
  --paper-lift: var(--paper-edge), 0 2px 2px rgb(26 26 31 / 0.05), 0 1.75rem 3rem -1.25rem var(--shadow-tint);
}

/* ─── Page shell ─────────────────────────────────────────────────────────── */

/* The legacy .main clips its overflow, which would turn it into the scroll
   container that sticky elements measure against. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .main.paper-page {
  display: flow-root;
  overflow: visible;
  padding-block-end: var(--section-gap);
  font-family: var(--sans);
  color: var(--ink);
}

/* Cards waiting to be dealt in are tilted, and their corners poke past the
   viewport and widen the page. pages.css keeps body from being a scroll
   container; clip respects that and hidden wouldn't. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) {
  overflow-x: clip !important;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-page ::selection {
  color: var(--ink);
  background: var(--highlight);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-page > * + * {
  margin-block-start: var(--section-gap);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-page :is(h1, h2, h3) {
  padding: 0;
  border: 0;
  background: none;
  text-shadow: none;
  text-transform: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-vh {
  position: absolute !important;
  inline-size: 1px;
  block-size: 1px;
  margin: -1px;
  padding: 0;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}

/* ─── Paper surfaces ─────────────────────────────────────────────────────── */

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet {
  position: relative;
  padding: var(--sheet-pad);
  border-radius: var(--radius-sm);
  background-color: var(--paper);
  box-shadow: var(--paper-shadow);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--cream {
  background-color: var(--paper-cream);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--graph {
  background-image:
    linear-gradient(rgb(45 132 248 / 0.08) 1px, transparent 1px),
    linear-gradient(90deg, rgb(45 132 248 / 0.08) 1px, transparent 1px);
  background-size: 1.25rem 1.25rem;
  background-position: -1px -1px;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--dots {
  background-image: radial-gradient(circle at 1px 1px, rgb(42 63 174 / 0.16) 1px, transparent 1.5px);
  background-size: 1.25rem 1.25rem;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue {
  --focus: #fff;
  color: #fff;
  background-color: var(--blue);
  background-image: radial-gradient(circle at 1px 1px, rgb(255 255 255 / 0.16) 1px, transparent 1.5px);
  background-size: 1.25rem 1.25rem;
}

/* Index card: a small note in its --card color. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-card {
  position: relative;
  border-radius: 3px;
  background-color: var(--card, var(--note-yellow));
  background-image: linear-gradient(to bottom, rgb(255 255 255 / 0.4), transparent 45%);
  box-shadow:
    0 1px 1px rgb(60 40 0 / 0.1),
    0 0.9rem 1.4rem -0.8rem rgb(60 40 0 / 0.42);
}

/* Paper tooth: a speckle tile under the content. isolation keeps the
   z-index: -1 layer above the paper's own background. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-sheet, .paper-note, .paper-card) {
  isolation: isolate;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-sheet, .paper-note, .paper-card)::after {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 0;
  border-radius: inherit;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .2 0 0 0 0 .16 0 0 0 0 .1 0 0 0 -1.4 .95'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  opacity: 0.09;
  pointer-events: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue::after {
  opacity: 0.18;
  mix-blend-mode: multiply;
}

/* Tape is drawn by ::before on every sticky note and on anything marked
   .paper-tape. The torn ends are the clip-path; the color comes from --tape
   so each piece can pick its own. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-note, .paper-tape)::before {
  content: "";
  position: absolute;
  z-index: 2;
  inset-block-start: -0.7rem;
  inset-inline-start: 50%;
  inline-size: 5rem;
  block-size: 1.4rem;
  translate: -50% 0;
  rotate: -3deg;
  background: var(--tape, var(--tape-yellow));
  clip-path: polygon(0 12%, 4% 0, 9% 10%, 94% 4%, 100% 0, 97% 48%, 100% 100%, 90% 92%, 5% 97%, 0 100%, 3% 52%);
  pointer-events: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-note {
  position: relative;
  max-inline-size: 32rem;
  padding: var(--space-l) var(--space-m) var(--space-m);
  border-radius: 2px;
  background-color: var(--note-yellow);
  background-image: linear-gradient(to bottom, transparent 75%, rgb(120 90 0 / 0.05));
  box-shadow:
    0 1px 1px rgb(60 40 0 / 0.1),
    0 1rem 1.5rem -0.75rem rgb(60 40 0 / 0.38);
  rotate: -1.2deg;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-note--pink {
  --tape: var(--tape-blue);
  background-color: var(--note-pink);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-note--blue {
  --tape: var(--tape-pink);
  background-color: var(--note-blue);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-note--green {
  --tape: var(--tape-yellow);
  background-color: var(--note-green);
}

/* ─── Section heads ──────────────────────────────────────────────────────── */

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-head {
  max-inline-size: 40rem;
  margin-block-end: var(--space-l);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-head.paper-note {
  max-inline-size: 32rem;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-head--center {
  margin-inline: auto;
  text-align: center;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-kicker {
  display: inline-block;
  margin: 0 0 var(--space-3xs);
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.1;
  color: var(--pen);
  rotate: -2deg;
  transform-origin: left center;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-head h2 {
  margin: 0;
  font-family: var(--display);
  font-size: var(--step-4);
  font-weight: 500;
  font-variation-settings: "opsz" 96;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--ink);
  text-wrap: balance;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-intro {
  max-inline-size: 36rem;
  margin: var(--space-s) 0 0;
  font-size: var(--step-0);
  line-height: 1.55;
  color: var(--ink-soft);
  text-wrap: pretty;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-head--center .paper-intro {
  margin-inline: auto;
}

/* Links inside running text: underlined in a softer copy of the text color. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-lede, .paper-intro, .paper-prose) a {
  color: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.18em;
  text-decoration-color: color-mix(in oklab, currentColor 45%, transparent);
  border: 0;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-lede, .paper-intro, .paper-prose) a:hover {
  text-decoration-color: currentColor;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue .paper-kicker {
  color: var(--highlight);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue h2 {
  color: #fff;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue .paper-intro {
  color: rgb(255 255 255 / 0.9);
}

/* ─── Buttons ────────────────────────────────────────────────────────────────
   One button, three skins. The raised edge is a hard shadow in the border
   color; pressing sinks the button onto it. The page scripts add a springy
   scale on top through `transform`, which composes with the `translate`
   here. */

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-actions {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--space-xs);
  margin-block-start: var(--space-m);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-actions--center {
  justify-content: center;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn {
  --btn-bg: #fff;
  --btn-bg-hover: color-mix(in oklab, var(--highlight) 38%, #fff);
  --btn-ink: var(--ink);
  --btn-edge: var(--ink);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5em;
  min-block-size: 3rem;
  padding: 0.7rem 1.3rem;
  font-family: var(--sans);
  font-size: var(--step-0);
  font-weight: 600;
  line-height: 1.1;
  color: var(--btn-ink);
  text-decoration: none;
  white-space: nowrap;
  background: var(--btn-bg);
  border: 2px solid var(--btn-edge);
  border-radius: 999px;
  box-shadow: 0 0.25rem 0 var(--btn-edge);
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transition:
    background-color var(--dur-fast) ease,
    box-shadow var(--dur-fast) var(--ease-spring),
    translate var(--dur-fast) var(--ease-spring);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn--primary {
  --btn-bg: var(--blue);
  --btn-bg-hover: var(--blue-bright);
  --btn-ink: #fff;
  --btn-edge: var(--blue-deep);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn--light {
  --btn-bg: #fff;
  --btn-bg-hover: var(--highlight);
  --btn-ink: var(--blue-deep);
  --btn-edge: var(--blue-deep);
}

/* Outline for the second button on a blue sheet. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn--ghost {
  --btn-bg: transparent;
  --btn-bg-hover: rgb(255 255 255 / 0.14);
  --btn-ink: #fff;
  --btn-edge: #fff;
  box-shadow: 0 0.25rem 0 var(--blue-deep);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) a:hover > .paper-btn,
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn:hover {
  color: var(--btn-ink);
  background: var(--btn-bg-hover);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn:active,
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) a:active > .paper-btn {
  translate: 0 0.2rem;
  box-shadow: 0 0.05rem 0 var(--btn-edge);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 4px;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn-icon {
  flex: none;
  inline-size: 1.1em;
  block-size: 1.1em;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.25;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: translate var(--dur-fast) var(--ease-spring);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn:hover .paper-btn-icon {
  translate: 0.2rem 0;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-btn:hover .paper-btn-icon--down {
  translate: 0 0.2rem;
}

/* ─── Hero ───────────────────────────────────────────────────────────────────
   Copy on the left, a taped photo with doodles on the right, and a pen note
   under the buttons. */

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-hero {
  display: grid;
  gap: var(--space-xl);
  padding-block: clamp(2rem, 1rem + 4vw, 4.5rem);
}

/* On wide screens the photo hangs off the sheet's right edge, taped on top
   of it, which buys the copy column room for both buttons on one line. */
@media (min-width: 62rem) {
  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-hero {
    grid-template-columns: minmax(0, 1.12fr) minmax(0, 0.88fr);
    align-items: center;
    gap: var(--space-l);
  }

  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-hero .paper-art {
    margin-inline-end: calc(-1 * var(--sheet-pad) - 4.5rem);
  }
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-title {
  margin: 0;
  font-family: var(--display);
  font-size: clamp(2.75rem, 1.4rem + 5.4vw, 5.25rem);
  font-weight: 600;
  font-variation-settings: "opsz" 144;
  line-height: 0.98;
  letter-spacing: -0.035em;
  color: var(--ink);
  text-wrap: balance;
}

/* Each word rises out of its own clipped box on load. The padding keeps
   descenders like the ones in "way" and "play" inside the clip. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-word {
  display: inline-block;
  overflow: clip;
  padding-block-end: 0.2em;
  margin-block-end: -0.2em;
  vertical-align: top;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-word > span {
  display: inline-block;
}

/* The word that gets the gel-pen underline. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-scribbled {
  position: relative;
  display: inline-block;
  white-space: nowrap;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-scribble {
  position: absolute;
  inset-inline-start: -3%;
  inset-block-end: -0.1em;
  inline-size: 106%;
  block-size: 0.3em;
  overflow: visible;
  fill: none;
  stroke: var(--gel);
  stroke-width: 5;
  stroke-linecap: round;
  pointer-events: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-lede {
  max-inline-size: 34rem;
  margin: var(--space-m) 0 0;
  font-size: var(--step-0);
  line-height: 1.5;
  color: var(--ink-soft);
  text-wrap: pretty;
}

/* A pen note with an arrow curling up at the button before it. Each page
   sets the note's margin so the arrow lands on its own button. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-scrawl {
  display: flex;
  flex-basis: 100%;
  align-items: flex-start;
  gap: 0.35rem;
  margin: 0.15rem 0 0;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1;
  color: var(--pen);
  rotate: -3deg;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-scrawl svg {
  order: -1;
  flex: none;
  inline-size: 2.75rem;
  block-size: 2.75rem;
  margin-block-start: -1.1rem;
  fill: none;
  stroke: currentColor;
  stroke-width: 2.5;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-art {
  position: relative;
  padding: var(--space-s) var(--space-s) var(--space-m);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-photo {
  --tape: var(--tape-pink);
  position: relative;
  padding: 0.55rem;
  border-radius: 3px;
  background: #fff;
  box-shadow: var(--paper-lift);
  rotate: 1.5deg;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-photo a {
  position: relative;
  display: block;
  line-height: 0;
  text-decoration: none;
  border: 0;
  border-radius: 2px;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-photo img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  margin: 0;
  border-radius: 2px;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-photo a:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.65rem;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle {
  position: absolute;
  z-index: 3;
  display: block;
  pointer-events: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle svg {
  display: block;
  inline-size: 100%;
  block-size: auto;
  overflow: visible;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--spiral {
  inset-inline-start: -0.75rem;
  inset-block-end: -0.5rem;
  inline-size: clamp(4rem, 3rem + 3vw, 6rem);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--spiral path {
  fill: none;
  stroke: var(--marker);
  stroke-width: 7;
  stroke-linecap: round;
}

/* Tilts sit on the SVG because the page scripts animate the wrapper. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--star {
  inset-block-start: -0.9rem;
  inset-inline-end: -0.2rem;
  inline-size: 2.75rem;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--star svg {
  rotate: 10deg;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--star-sm {
  inset-block-start: 2.6rem;
  inset-inline-end: -0.9rem;
  inline-size: 1.5rem;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--star-sm svg {
  rotate: -14deg;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-doodle--star, .paper-doodle--star-sm) path {
  fill: var(--highlight);
  stroke: var(--ink);
  stroke-width: 2;
  stroke-linejoin: round;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--star-sm path {
  fill: var(--gel);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--heart {
  inset-block-end: -0.4rem;
  inset-inline-end: 14%;
  inline-size: 2.4rem;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--heart svg {
  rotate: 12deg;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle--heart path {
  fill: var(--gel);
  stroke: var(--ink);
  stroke-width: 2;
  stroke-linejoin: round;
}

/* Intro start state. Only the title words, the scribble, and anything
   marked data-intro hide, and only while the head script has opted in and
   /js/paper.js hasn't taken over. The failsafe shows everything if the
   script never arrives. */
html.paper-motion:not(.paper-motion-ready) body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-word > span {
  translate: 0 110%;
  animation: paper-failsafe 0s 2.5s forwards;
}

html.paper-motion:not(.paper-motion-ready) body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) [data-intro] {
  opacity: 0;
  animation: paper-failsafe 0s 2.5s forwards;
}

html.paper-motion:not(.paper-motion-ready) body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-scribble path {
  stroke-dasharray: 1;
  stroke-dashoffset: 1;
  animation: paper-failsafe 0s 2.5s forwards;
}

@keyframes paper-failsafe {
  to {
    opacity: 1;
    translate: none;
    stroke-dashoffset: 0;
  }
}

/* ─── App store badges ───────────────────────────────────────────────────────
   stores_download_links.inc.php on a blue sheet. */

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores h3 {
  margin: 0 0 var(--space-xs);
  font-family: var(--sans);
  font-size: var(--step--1);
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: 0.02em;
  color: rgb(255 255 255 / 0.9);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores .stores {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-s);
  margin: 0;
  padding: 0;
  list-style: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores .storeItem {
  display: block;
  float: none;
  inline-size: auto;
  margin: 0;
  padding: 0;
  background: none;
  border: 0;
  border-radius: 0;
  box-shadow: none;
  transition: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores .storeItem:hover {
  translate: none;
  transform: none;
  box-shadow: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores .storeItem p {
  position: absolute;
  inline-size: 1px;
  block-size: 1px;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* Sized to each badge's own proportions so the link is exactly the badge. */
body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores .storeBtn {
  block-size: 3.25rem;
  min-inline-size: 0;
  padding: 0;
  border-radius: 0.55rem;
  background-position: center;
  background-size: 100% 100%;
  background-repeat: no-repeat;
  filter: drop-shadow(0 0.25rem 0 var(--blue-deep));
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores .storeBtn#iOS {
  inline-size: 9.75rem;
  background-image: url("https://mgnt-app-assets.s3.amazonaws.com/SPTV/img/Download_on_the_App_Store_Badge_US-UK_RGB_blk_092917.svg");
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores .storeBtn#Mac {
  inline-size: 13.4rem;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-stores .storeBtn:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 5px;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue .mash-download-ad {
  min-block-size: 5.625rem;
  margin-block-start: var(--space-m);
  padding: var(--space-xs);
  border-radius: var(--radius);
  background: #fff;
  color: var(--ink);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue .mash-download-ad p {
  margin: var(--space-2xs) 0 0;
  font-size: var(--step--1);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue .mash-download-ad a {
  color: var(--blue);
}

/* ─── Newsletter sheet ───────────────────────────────────────────────────── */

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-signup .paper-head {
  margin-block-end: var(--space-s);
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-signup .newsletter-signup {
  margin: 0;
  padding: 0;
  background: none;
  box-shadow: none;
}

body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-signup .social-widgets-container {
  justify-content: center;
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .main.paper-page {
    padding-inline: 0.75rem;
  }

  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-note {
    padding-inline: var(--space-s);
  }
}

/* ─── Print ──────────────────────────────────────────────────────────────── */

@media print {
  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-note, .paper-tape)::before,
  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-sheet, .paper-note, .paper-card)::after,
  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-doodle,
  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .mash-download-ad,
  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-signup :is(.newsletter-signup, .social-widgets-container) {
    display: none !important;
  }

  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) :is(.paper-sheet, .paper-note, .paper-card, .paper-tape, .paper-kicker, .paper-photo, .paper-scrawl) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
    filter: none !important;
  }

  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue {
    color: #000;
    background: #fff;
    border: 1px solid #999;
  }

  body:is(#home, #mash-categories, #printable, #howto, #games, #apps, #PlayMASH, #mash-app, #apple-watch, #mash-mac) .paper-sheet--blue :is(h2, h3, .paper-intro, .paper-kicker) {
    color: #000;
  }
}

/* ===== home.css ===== */
/* ─── Homepage ────────────────────────────────────────────────────────────────
   Homepage sections. Every rule is scoped to body#home. The sheets, notes,
   cards, tape, heads, and buttons they're built from live in paper.css. */

body#home :is(.home-way, .home-game-card, .home-clip-paper):focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 4px;
}

body#home :is(.home-way, .home-clip-paper):hover .paper-btn-icon {
  translate: 0.2rem 0;
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#home .home-hero-actions {
  margin-block-start: var(--space-l);
}

/* Puts the arrow's tip under the middle of "Play MASH online". */
body#home .home-hero-note {
  margin-inline-start: 6.5rem;
}

/* The copy column is taller than the photo. Pin the photo and doodles to the
   top of the sheet on wide screens. */
@media (min-width: 62rem) {
  body#home .home-hero .paper-art {
    align-self: start;
  }
}

/* The hero is a link, so it has to look like one. The badge rides the anchor
   rather than the image, which keeps the <img> the largest paint. Its label
   tracks the A/B destination through the attribute the test already writes. */
body#home .home-hero .paper-photo a[data-ab-destination]::after {
  position: absolute;
  inset-inline-end: 0.75rem;
  inset-block-end: 0.75rem;
  padding: 0.45rem 0.9rem;
  font-family: var(--sans);
  font-size: var(--step--1);
  font-weight: 600;
  line-height: 1.1;
  color: #fff;
  background: var(--blue);
  border: 2px solid var(--blue-deep);
  border-radius: 999px;
  box-shadow: 0 0.2rem 0 var(--blue-deep);
  transition: translate var(--dur-fast) var(--ease-spring);
}

body#home .home-hero .paper-photo a[data-ab-destination="online-game"]::after {
  content: "Play free ↗";
}

body#home .home-hero .paper-photo a[data-ab-destination="app-store"]::after {
  content: "Get the app ↗";
}

body#home .home-hero .paper-photo a:hover::after {
  translate: 0 -0.2rem;
}

/* ─── 2. Ways to play ────────────────────────────────────────────────────── */

body#home .home-ways-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-l) var(--space-m);
  margin: var(--space-xl) 0 0;
  padding: 0;
  list-style: none;
}

body#home .home-ways-item {
  display: flex;
  margin: 0;
}

body#home .home-ways-item--primary {
  grid-column: span 2;
  grid-row: span 2;
}

@media (max-width: 61.99rem) {
  body#home .home-ways-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body#home .home-ways-item--primary {
    grid-column: 1 / -1;
    grid-row: auto;
  }
}

@media (max-width: 37.49rem) {
  body#home .home-ways-grid {
    grid-template-columns: minmax(0, 1fr);
  }
}

body#home .home-way {
  position: relative;
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2xs);
  padding: var(--space-m) var(--space-s) var(--space-s);
  color: var(--ink);
  text-decoration: none;
  border: 0;
  border-radius: 3px;
  background: var(--paper);
  box-shadow: var(--paper-shadow);
  rotate: var(--tilt, 0deg);
  transition:
    rotate var(--dur-base) var(--ease-spring),
    translate var(--dur-base) var(--ease-spring),
    box-shadow var(--dur-base) var(--ease-spring);
}

body#home .home-way:hover,
body#home .home-way:focus-visible {
  color: var(--ink);
  rotate: 0deg;
  translate: 0 -0.4rem;
  box-shadow: var(--paper-lift);
}

body#home .home-way:active {
  translate: 0 -0.1rem;
}

body#home .home-way-icon {
  display: inline-grid;
  place-items: center;
  inline-size: 2.75rem;
  aspect-ratio: 1;
  font-size: 1.45rem;
  color: var(--blue);
  border: 2px solid currentColor;
  border-radius: 52% 46% 55% 45% / 47% 55% 45% 53%;
}

body#home .home-way-title {
  margin: var(--space-2xs) 0 0;
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: inherit;
  text-wrap: balance;
}

body#home .home-way-text {
  margin: 0;
  font-size: 0.95rem;
  line-height: 1.5;
  color: var(--ink-soft);
  text-wrap: pretty;
}

body#home .home-way-link {
  display: inline-flex;
  align-items: center;
  gap: 0.35em;
  margin-block-start: auto;
  padding-block-start: var(--space-2xs);
  font-weight: 600;
  color: var(--blue);
}

body#home .home-way--primary {
  --tape: var(--tape-yellow);
  gap: var(--space-s);
  padding: var(--space-xl) var(--space-l) var(--space-l);
  color: #fff;
  background: var(--blue);
  box-shadow:
    0 0 0 1px var(--blue-deep),
    0 1.25rem 2.5rem -1.25rem var(--shadow-tint);
}

body#home .home-way--primary:hover,
body#home .home-way--primary:focus-visible {
  color: #fff;
  box-shadow:
    0 0 0 1px var(--blue-deep),
    0 1.75rem 3rem -1.25rem var(--shadow-tint);
}

body#home .home-way--primary .home-way-icon {
  inline-size: 3.5rem;
  font-size: 1.75rem;
  color: #fff;
}

body#home .home-way--primary .home-way-title {
  font-size: var(--step-3);
  font-weight: 500;
}

body#home .home-way--primary .home-way-text {
  max-inline-size: 22rem;
  font-size: var(--step-0);
  color: rgb(255 255 255 / 0.9);
}

body#home .home-way--primary .paper-btn {
  position: relative;
  z-index: 1;
  margin-block-start: auto;
}

body#home .home-way-swirl {
  position: absolute;
  inset-inline-end: var(--space-s);
  inset-block-end: var(--space-s);
  inline-size: min(42%, 11rem);
  opacity: 0.3;
  pointer-events: none;
}

body#home .home-way-swirl svg {
  display: block;
  inline-size: 100%;
  block-size: auto;
}

body#home .home-way-swirl path {
  fill: none;
  stroke: #fff;
  stroke-width: 6;
  stroke-linecap: round;
}

body#home .home-sticker {
  position: absolute;
  z-index: 2;
  inset-block-start: -1.1rem;
  inset-inline-end: -0.6rem;
  display: grid;
  place-items: center;
  inline-size: 4.5rem;
  aspect-ratio: 1;
  padding-block-end: 0.2rem;
  font-family: var(--hand);
  font-size: 1.35rem;
  font-weight: 700;
  line-height: 1;
  color: var(--ink);
  background: var(--highlight);
  clip-path: polygon(50% 0, 61% 12%, 77% 6%, 80% 22%, 96% 26%, 89% 41%, 100% 54%, 86% 63%, 90% 80%, 73% 81%, 66% 97%, 52% 88%, 37% 99%, 30% 83%, 13% 85%, 15% 68%, 0 58%, 11% 45%, 3% 29%, 19% 24%, 21% 8%, 37% 13%);
  rotate: 12deg;
}

/* ─── 3. What MASH stands for ────────────────────────────────────────────── */

body#home .home-letters-list {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--space-xl) var(--space-m);
  margin: var(--space-2xl) 0 0;
  padding: 0;
  list-style: none;
}

@media (max-width: 61.99rem) {
  body#home .home-letters-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

/* An index card: a red header rule, blue lines under it. The drawing is
   multiplied so the lines show through its white. */
body#home .home-letter {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  margin: 0;
  padding: 0 var(--space-xs) var(--space-s);
  text-align: center;
  border-radius: 3px;
  background:
    linear-gradient(var(--margin-line), var(--margin-line)) 0 3.25rem / 100% 2px no-repeat,
    repeating-linear-gradient(to bottom, transparent 0 calc(1.5rem - 1px), rgb(188 213 243 / 0.75) calc(1.5rem - 1px) 1.5rem) 0 3.25rem / 100% calc(100% - 3.25rem) no-repeat,
    #fff;
  box-shadow: var(--paper-shadow);
  rotate: var(--tilt, 0deg);
}

body#home .home-letter-glyph {
  display: block;
  margin-block-start: -2.25rem;
  font-family: var(--display);
  font-size: clamp(3.5rem, 2.5rem + 3.5vw, 5.25rem);
  font-weight: 600;
  font-variation-settings: "opsz" 144;
  line-height: 1;
  color: var(--blue);
  text-shadow: 0.05em 0.05em 0 var(--highlight);
}

body#home .home-letter-img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  margin-block-start: var(--space-2xs);
  mix-blend-mode: multiply;
}

body#home .home-letter-word {
  margin-block-start: var(--space-3xs);
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 600;
  line-height: 1.2;
}

body#home .home-letter-note {
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1.25;
  color: var(--gel-ink);
  rotate: -3deg;
}

/* ─── 4. How to play: steps and the demo sheet ───────────────────────────── */

body#home .home-steps-body {
  display: grid;
  gap: var(--space-xl);
}

body#home .home-steps-list {
  display: grid;
  gap: var(--space-l);
  margin: 0;
  padding: 0;
  list-style: none;
}

body#home .home-step {
  display: grid;
  grid-template-columns: 3rem minmax(0, 1fr);
  column-gap: var(--space-s);
  align-content: start;
  margin: 0;
  transition: opacity var(--dur-base) ease;
}

body#home .home-step-num {
  grid-row: span 2;
  display: grid;
  place-items: center;
  inline-size: 3rem;
  aspect-ratio: 1;
  font-family: var(--hand);
  font-size: 1.5rem;
  font-weight: 700;
  line-height: 1;
  color: var(--pen);
  border: 2.5px solid currentColor;
  border-radius: 50% 45% 53% 47% / 47% 53% 45% 51%;
  rotate: -6deg;
  transition: background-color var(--dur-base) ease;
}

body#home .home-step-title {
  margin: 0.35rem 0 var(--space-3xs);
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--ink);
}

body#home .home-step-text {
  margin: 0;
  line-height: 1.6;
  color: var(--ink-soft);
  text-wrap: pretty;
}

body#home .home-steps-text .paper-actions {
  margin-block-start: var(--space-l);
}

/* When the pair wraps, both buttons take the full column instead of
   stacking at two different widths. */
body#home .home-steps-text .paper-btn {
  flex: 1 1 auto;
}

/* home.js marks the step in the middle of the screen while it scrubs the demo. */
body#home .home-steps-list.is-tracking .home-step {
  opacity: 0.45;
}

body#home .home-steps-list.is-tracking .home-step.is-current {
  opacity: 1;
}

body#home .home-steps-list.is-tracking .home-step.is-current .home-step-num {
  background: var(--highlight);
}

/* Below 72rem the sheet is too narrow to sit beside the steps, so it goes
   above them and plays as it scrolls past. */
@media (max-width: 71.99rem) {
  body#home .home-demo {
    order: -1;
  }
}

@media (min-width: 72rem) {
  body#home .home-steps-body {
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
    align-items: start;
    gap: var(--space-xl);
  }

  body#home .home-step {
    min-block-size: min(46vh, 26rem);
  }

  body#home .home-demo {
    position: sticky;
    inset-block-start: max(1.5rem, calc(50vh - 20rem));
    grid-column: 2;
    grid-row: 1;
  }
}

body#home .home-demo {
  container-type: inline-size;
  margin: 0;
}

/* The notebook page. Every row is one --line tall and the padding is a whole
   number of lines, so the writing sits on the rules. */
body#home .home-demo-paper {
  --line: 1.75rem;
  --margin: 2.75rem;
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  grid-template-areas: "mash" "marry" "drive" "kids" "spiral" "story";
  align-items: start;
  column-gap: var(--space-s);
  padding: calc(var(--line) * 2) var(--space-s) var(--line) calc(var(--margin) + var(--space-xs));
  font-family: var(--hand);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: var(--line);
  color: var(--pen);
  border-radius: 3px;
  background:
    radial-gradient(circle, #e7e2d8 0 0.42rem, transparent 0.47rem) 0.45rem 12% / 1rem 1rem no-repeat,
    radial-gradient(circle, #e7e2d8 0 0.42rem, transparent 0.47rem) 0.45rem 50% / 1rem 1rem no-repeat,
    radial-gradient(circle, #e7e2d8 0 0.42rem, transparent 0.47rem) 0.45rem 88% / 1rem 1rem no-repeat,
    linear-gradient(90deg, transparent var(--margin), var(--margin-line) var(--margin) calc(var(--margin) + 2px), transparent calc(var(--margin) + 2px)),
    repeating-linear-gradient(to bottom, transparent 0 calc(var(--line) - 1px), var(--rule-line) calc(var(--line) - 1px) var(--line)),
    #fff;
  box-shadow: var(--paper-lift);
  rotate: -1deg;
}

@container (min-width: 27rem) {
  body#home .home-demo-paper {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    grid-template-areas:
      "mash mash"
      "marry spiral"
      "drive spiral"
      "kids kids"
      "story story";
  }
}

body#home .home-demo-paper ol {
  margin: 0;
  padding: 0;
  list-style: none;
}

body#home .home-demo-mash {
  grid-area: mash;
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 0 var(--space-s);
  margin-block-end: var(--line) !important;
}

@container (max-width: 24rem) {
  body#home .home-demo-mash {
    gap: 0 0.4rem;
    font-size: 0.94em;
  }
}

body#home .home-demo-mash .home-demo-ink::first-letter {
  font-size: 1.4em;
  color: var(--gel-ink);
}

body#home .home-demo-list {
  margin-block-end: var(--line);
}

body#home .home-demo-list ol {
  display: grid;
  grid-auto-rows: var(--line);
}

body#home .home-demo-list--spouse {
  grid-area: marry;
}

body#home .home-demo-list--car {
  grid-area: drive;
}

body#home .home-demo-list--kids-count {
  grid-area: kids;
  display: flex;
  flex-wrap: wrap;
  gap: 0 var(--space-m);
}

body#home .home-demo-list--kids-count ol {
  display: flex;
  gap: 0 var(--space-m);
}

body#home .home-demo-label {
  margin: 0;
  color: var(--ink);
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.2em;
}

body#home .home-demo-opt {
  position: relative;
  justify-self: start;
  inline-size: max-content;
  max-inline-size: 100%;
  margin: 0;
  white-space: nowrap;
}

body#home .home-demo-ink {
  display: inline-block;
}

body#home .home-demo-opt[data-cross] .home-demo-ink {
  opacity: 0.5;
}

body#home .home-demo-strike,
body#home .home-demo-keep {
  position: absolute;
  inset-block-start: 50%;
  overflow: visible;
  fill: none;
  stroke-linecap: round;
  pointer-events: none;
}

body#home .home-demo-strike {
  inset-inline-start: -0.2em;
  inline-size: calc(100% + 0.4em);
  block-size: 0.6em;
  translate: 0 -45%;
  stroke: var(--gel);
  stroke-width: 2.6;
}

body#home .home-demo-keep {
  inset-inline-start: -0.45em;
  inline-size: calc(100% + 0.9em);
  block-size: 1.45em;
  translate: 0 -52%;
  stroke: var(--marker);
  stroke-width: 2.4;
}

body#home .home-demo-spiral {
  grid-area: spiral;
  position: relative;
  align-self: center;
  justify-self: center;
  inline-size: min(100%, 14rem);
  margin-block-end: var(--line);
}

body#home .home-demo-spiral svg {
  display: block;
  inline-size: 100%;
  block-size: auto;
  overflow: visible;
}

body#home .home-demo-spiral-path {
  fill: none;
  stroke: var(--marker);
  stroke-width: 3.5;
  stroke-linecap: round;
}

body#home .home-demo-count {
  fill: none;
  stroke: var(--ink);
  stroke-width: 2.5;
  stroke-linecap: round;
}

body#home .home-demo-tick {
  fill: var(--gel);
  stroke: #fff;
  stroke-width: 1.5;
}

body#home .home-demo-magic {
  position: absolute;
  inset-block-start: -0.5rem;
  inset-inline-end: -0.5rem;
  display: grid;
  place-items: center;
  inline-size: 2.75rem;
  aspect-ratio: 1;
  margin: 0;
  font-size: 1.6rem;
  line-height: 1;
  color: #fff;
  background: var(--gel);
  border-radius: 50% 44% 52% 47% / 46% 52% 47% 53%;
  box-shadow: 0 0.35rem 0.6rem -0.2rem rgb(120 10 50 / 0.45);
  rotate: 8deg;
}

body#home .home-demo-story {
  grid-area: story;
  margin: 0;
  font-size: 1.1em;
  color: var(--gel-ink);
  text-wrap: pretty;
}

body#home .home-demo-caption {
  margin-block-start: var(--space-m);
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1.3;
  text-align: center;
  color: var(--ink-soft);
  rotate: 1deg;
  text-wrap: balance;
}

/* ─── 5. Category ideas ──────────────────────────────────────────────────── */

body#home .home-cats {
  display: grid;
  gap: var(--space-xl);
  align-items: center;
}

@media (min-width: 56rem) {
  body#home .home-cats {
    grid-template-columns: minmax(0, 1.15fr) minmax(0, 0.85fr);
    gap: var(--space-l);
  }
}

body#home .home-cats .paper-head {
  margin-block-end: 0;
  rotate: -1.8deg;
}

/* A deck of index cards stacked in one grid cell. The first three show,
   fanned; the rest wait underneath at opacity 0 so the cell stays as tall
   as the tallest card. /js/home.js deals the top card off and appends it,
   and these nth-child rules move everyone up a place. */
body#home .home-deck {
  display: grid;
  justify-items: center;
  gap: var(--space-l);
  padding-block: var(--space-s);
}

body#home .home-deck-cards {
  display: grid;
  inline-size: min(100%, 23.5rem);
  margin: 0;
  padding: 0;
  list-style: none;
}

body#home .home-deck-card {
  --line: 2.15rem;
  position: relative;
  z-index: 1;
  grid-area: 1 / 1;
  display: flex;
  flex-direction: column;
  margin: 0;
  padding: var(--space-m) var(--space-m) calc(var(--space-m) - 0.4rem);
  opacity: 0;
  rotate: 8deg;
  translate: 0 1rem;
  transition:
    rotate 0.55s var(--ease-spring),
    translate 0.55s var(--ease-spring),
    opacity 0.3s ease;
}

body#home .home-deck-card:nth-child(1) {
  z-index: 4;
  opacity: 1;
  rotate: -2.5deg;
  translate: 0 0;
}

body#home .home-deck-card:nth-child(2) {
  z-index: 3;
  opacity: 1;
  rotate: 3.5deg;
  translate: 0.9rem 0.45rem;
}

body#home .home-deck-card:nth-child(3) {
  z-index: 2;
  opacity: 1;
  rotate: -6deg;
  translate: -1rem 0.85rem;
}

@media (hover: hover) and (pointer: fine) {
  body#home .home-deck.is-ready .home-deck-card:first-child {
    cursor: pointer;
  }

  body#home .home-deck.is-ready .home-deck-cards:hover .home-deck-card:nth-child(2) {
    rotate: 7deg;
    translate: 2.1rem 0.2rem;
  }

  body#home .home-deck.is-ready .home-deck-cards:hover .home-deck-card:nth-child(3) {
    rotate: -10deg;
    translate: -2.2rem 0.9rem;
  }
}

body#home .home-deck-num {
  position: absolute;
  inset-block-start: 0.8rem;
  inset-inline-end: 0.95rem;
  font-family: var(--hand);
  font-size: var(--step--1);
  font-weight: 700;
  line-height: 1;
  color: var(--ink-soft);
  rotate: 4deg;
  transition: opacity 0.3s ease;
}

body#home .home-deck-card:not(:first-child) .home-deck-num {
  opacity: 0;
}

/* Room for two lines keeps every card's options on the same rules. */
body#home .home-deck-label {
  display: flex;
  align-items: flex-end;
  min-block-size: 2.2em;
  margin: 0 2.75rem 0 0;
  padding-block-end: 0.45rem;
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--ink);
  text-wrap: balance;
}

body#home .home-deck-options {
  margin: 0 calc(-1 * var(--space-m)) 0;
  padding: 0.35rem var(--space-m) 0;
  list-style: none;
  border-block-start: 2px solid var(--margin-line);
  background: repeating-linear-gradient(
    to bottom,
    transparent 0 calc(var(--line) - 1px),
    rgb(42 63 174 / 0.2) calc(var(--line) - 1px) var(--line)
  ) 0 0.35rem / 100% calc(100% - 0.35rem) no-repeat;
}

body#home .home-deck-options li {
  position: relative;
  inline-size: max-content;
  max-inline-size: 100%;
  margin: 0;
  padding-inline-start: 0.2rem;
  font-family: var(--hand);
  font-size: 1.35rem;
  font-weight: 700;
  line-height: var(--line);
  color: var(--pen);
}

body#home .home-deck-options .is-picked {
  color: var(--ink);
}

body#home .home-deck-controls {
  display: flex;
  justify-content: center;
}

body#home .home-deck-controls[hidden] {
  display: none;
}

/* ─── 6. More free games ─────────────────────────────────────────────────── */

body#home .home-games-row {
  display: flex;
  justify-content: center;
  margin: var(--space-xl) 0 0;
  padding: 0 0 var(--space-l);
  list-style: none;
}

body#home .home-game {
  position: relative;
  flex: 0 1 13rem;
  min-inline-size: 0;
  margin: 0 -0.6rem;
  rotate: var(--tilt, 0deg);
  translate: 0 var(--arc, 0);
}

body#home .home-game:hover,
body#home .home-game:focus-within {
  z-index: 2;
}

body#home .home-game-card {
  display: block;
  padding: 0.55rem 0.55rem 0;
  color: var(--ink);
  text-decoration: none;
  border: 0;
  border-radius: 2px;
  background: #fff;
  box-shadow: var(--paper-shadow);
  transition:
    rotate var(--dur-base) var(--ease-spring),
    translate var(--dur-base) var(--ease-spring),
    box-shadow var(--dur-base) var(--ease-spring);
}

body#home .home-game-card:hover,
body#home .home-game-card:focus-visible {
  color: var(--ink);
  rotate: calc(var(--tilt, 0deg) * -1);
  translate: 0 -0.9rem;
  box-shadow: var(--paper-lift);
}

body#home .home-game-card img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  border-radius: 1px;
  background: var(--paper-cream);
}

body#home .home-game-name {
  display: block;
  padding: 0.55rem 0.25rem 0.8rem;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1.2;
  text-align: center;
}

@media (max-width: 47.99rem) {
  body#home .home-games-row {
    justify-content: flex-start;
    gap: var(--space-s);
    margin-inline: calc(-1 * var(--sheet-pad));
    padding: var(--space-s) var(--sheet-pad) var(--space-m);
    overflow-x: auto;
    overscroll-behavior-x: contain;
    scroll-snap-type: x mandatory;
    scroll-padding-inline: var(--sheet-pad);
    scrollbar-width: none;
  }

  body#home .home-games-row::-webkit-scrollbar {
    display: none;
  }

  body#home .home-game {
    flex: 0 0 min(62%, 14rem);
    margin: 0;
    rotate: calc(var(--tilt, 0deg) * 0.4);
    translate: none;
    scroll-snap-align: start;
  }
}

/* ─── 7. Get the MASH app ────────────────────────────────────────────────── */

body#home .home-apps-body {
  display: grid;
  gap: var(--space-l);
  align-items: center;
}

@media (min-width: 48rem) {
  body#home .home-apps-body {
    grid-template-columns: minmax(0, 1.45fr) minmax(0, 0.55fr);
    gap: var(--space-xl);
  }
}

body#home .home-apps .paper-head {
  margin-block-end: var(--space-m);
}

body#home .home-apps-more {
  margin: var(--space-m) 0 0;
  font-size: var(--step--1);
  color: #fff;
}

body#home .home-apps-phone {
  --tape: var(--tape-yellow);
  position: relative;
  justify-self: center;
  inline-size: min(100%, 17rem);
  rotate: 4deg;
}

body#home .home-apps-phone img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  border: 0.45rem solid #fff;
  border-radius: 1.1rem;
  box-shadow: 0 1.5rem 3rem -1rem rgb(0 10 40 / 0.55);
}

@media (max-width: 47.99rem) {
  body#home .home-apps-phone {
    inline-size: min(70%, 14rem);
  }
}

/* ─── 8. Latest from the blog ────────────────────────────────────────────── */

body#home .home-blog {
  display: grid;
  gap: var(--space-xl);
  align-items: center;
}

@media (min-width: 48rem) {
  body#home .home-blog {
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  }
}

body#home .home-blog .paper-head {
  margin: 0;
}

body#home .home-blog .paper-note {
  rotate: -2.5deg;
}

/* A newspaper clipping with a pinked bottom edge. The mask cuts the paper,
   so the shadow sits on the wrapper where the mask can't reach it. */
body#home .home-clip {
  --tape: var(--tape-green);
  position: relative;
  margin: 0;
  filter: drop-shadow(0 0.9rem 1rem rgb(20 20 40 / 0.24));
  rotate: 1.5deg;
}

body#home .home-clip-paper {
  --teeth: 1rem;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-2xs);
  padding: var(--space-m) var(--space-m) calc(var(--space-m) + var(--teeth) / 2);
  color: var(--ink);
  text-decoration: none;
  border: 0;
  background: #fbf8f1;
  -webkit-mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / var(--teeth) 100%;
  mask: conic-gradient(from -45deg at bottom, #0000, #000 1deg 89deg, #0000 90deg) 50% / var(--teeth) 100%;
}

body#home .home-clip-paper:hover {
  color: var(--ink);
}

body#home .home-clip-paper:focus-visible {
  outline: 0;
}

body#home .home-clip:focus-within {
  outline: 3px solid var(--focus);
  outline-offset: 6px;
}

body#home .home-clip-img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  margin-block-end: var(--space-2xs);
  filter: saturate(0.9) contrast(1.02);
}

body#home .home-clip-date {
  align-self: stretch;
  padding-block: 0.35rem;
  font-size: 0.75rem;
  font-weight: 600;
  line-height: 1.2;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--ink-soft);
  border-block: 1px solid var(--ink);
}

body#home .home-clip-title {
  margin: var(--space-3xs) 0 0;
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 600;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: var(--ink);
  text-wrap: balance;
}

body#home .home-clip-text {
  margin: 0;
  font-family: var(--display);
  font-size: var(--step-0);
  line-height: 1.55;
  color: var(--ink-soft);
  text-wrap: pretty;
}

/* ─── 9. Newsletter ──────────────────────────────────────────────────────── */

body#home .home-xpromo {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(26 26 31 / 0.14);
}

body#home .home-xpromo-label {
  margin: 0 0 var(--space-2xs);
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  text-align: center;
  color: var(--ink-soft);
}

body#home .home-xpromo .xpromo-container {
  min-block-size: 7.5rem;
}

/* The ad page is 500px wide and paints its own grey body past that. */
body#home .home-xpromo iframe {
  display: block;
  inline-size: min(100%, 500px);
  margin-inline: auto;
  border-radius: var(--radius);
  box-shadow: var(--paper-shadow);
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body#home .home-deck-cards {
    inline-size: min(100% - 2rem, 23.5rem);
  }

  body#home .home-way-swirl {
    inline-size: 5.5rem;
  }

  body#home .home-hero-actions .paper-btn {
    flex: 1 1 100%;
  }

  /* Stacked, the note moves up between the buttons so it still points at
     the primary one. */
  body#home .home-hero-note {
    order: 1;
    margin-inline-start: calc(50% - 3rem);
  }

  body#home .home-hero-actions .paper-btn:not(.paper-btn--primary) {
    order: 2;
  }

  body#home .home-letters-list {
    gap: var(--space-xl) var(--space-s);
  }

  body#home .home-letter-note {
    font-size: var(--step--1);
  }
}

/* ─── Print ──────────────────────────────────────────────────────────────── */

@media print {
  body#home .home-way-swirl,
  body#home .home-sticker,
  body#home .home-hero .paper-photo a::after,
  body#home .home-xpromo {
    display: none !important;
  }

  body#home .home :is(.home-way, .home-letter, .home-demo-paper, .home-game, .home-game-card, .home-clip, .home-apps-phone) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
    filter: none !important;
  }

  body#home .home-way--primary {
    color: #000;
    background: #fff;
    border: 1px solid #999;
  }

  body#home .home-apps-more,
  body#home .home-way--primary :is(.home-way-title, .home-way-text, .home-way-icon) {
    color: #000;
  }

  body#home .home-demo {
    position: static;
    break-inside: avoid;
  }

  body#home .home-deck-controls {
    display: none;
  }

  body#home .home-deck-cards {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 0.5rem;
    inline-size: 100%;
  }

  body#home .home-deck-card {
    grid-area: auto;
    opacity: 1 !important;
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none;
    border: 1px solid #999;
    break-inside: avoid;
  }
}

/* ===== categories.css ===== */
/* ─── /mash-categories/ ────────────────────────────────────────────────────────
   The category page's sections. Every rule is scoped to body#mash-categories.
   The sheets, notes, cards, tape, heads, buttons, and hero pieces they're
   built from live in paper.css. Cards tilt with the rotate property and
   /js/categories.js animates their wrappers, so a tilt and its hover
   straightening survive the scroll motion. */

body#mash-categories .cats [id] {
  scroll-margin-block-start: var(--space-m);
}

/* Index-card ruling: a pink line under the title, then pale blue rules
   every --line. */
body#mash-categories :is(.cats-lines, .cats-classic-opts) {
  margin: 0 calc(-1 * var(--space-m));
  padding: 0.35rem var(--space-m) 0;
  border-block-start: 2px solid var(--margin-line);
  background: repeating-linear-gradient(
    to bottom,
    transparent 0 calc(var(--line) - 1px),
    rgb(42 63 174 / 0.2) calc(var(--line) - 1px) var(--line)
  ) 0 0.35rem / 100% calc(100% - 0.35rem) no-repeat;
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#mash-categories .cats-hero-actions {
  margin-block-start: var(--space-l);
}

/* Puts the arrow's tip under the middle of "Build a set". */
body#mash-categories .cats-hero-note {
  margin-inline-start: 4.5rem;
}

body#mash-categories .cats-tabs {
  grid-column: 1 / -1;
}

body#mash-categories .cats-tabs ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-tabs li {
  margin: 0;
}

body#mash-categories .cats-tabs a {
  display: block;
  padding: 0.5rem 0.95rem;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1.1;
  color: var(--ink);
  text-decoration: none;
  white-space: nowrap;
  background: var(--tab);
  border: 0;
  border-radius: 0.6rem;
  box-shadow:
    0 1px 1px rgb(60 40 0 / 0.12),
    0 0.5rem 0.8rem -0.55rem rgb(60 40 0 / 0.45);
  transition: translate var(--dur-fast) var(--ease-spring);
}

body#mash-categories .cats-tabs a:hover {
  color: var(--ink);
  translate: 0 -0.15rem;
}

body#mash-categories .cats-tabs a:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

/* Wide screens: divider tabs sticking out from under the sheet. */
@media (min-width: 62rem) {
  body#mash-categories .cats-tabs {
    position: absolute;
    inset-inline-start: var(--sheet-pad);
    inset-block-start: 100%;
  }

  body#mash-categories .cats-tabs ul {
    flex-wrap: nowrap;
    gap: 0.3rem;
  }

  body#mash-categories .cats-tabs a {
    padding: 0.7rem 1.05rem 0.6rem;
    border-radius: 0 0 0.7rem 0.7rem;
    box-shadow:
      inset 0 0.6rem 0.5rem -0.45rem rgb(60 40 0 / 0.3),
      0 0.6rem 0.9rem -0.55rem rgb(60 40 0 / 0.5);
  }

  body#mash-categories .cats-tabs a:hover {
    translate: 0 0.2rem;
  }
}

/* ─── 2. Builder ─────────────────────────────────────────────────────────── */

body#mash-categories .cats-builder .paper-head {
  margin-block-end: var(--space-l);
}

/* The played sheet: every list with its options crossed off in pen and the
   one that's left circled. */
body#mash-categories .cats-result {
  --card: var(--note-yellow);
  --tape: var(--tape-pink);
  margin-block-end: var(--space-xl);
  padding: var(--space-l) var(--space-l) var(--space-m);
  rotate: -0.6deg;
}

body#mash-categories .cats-result-head {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2xs) var(--space-m);
  padding-block-end: var(--space-xs);
  border-block-end: 2px solid var(--margin-line);
}

body#mash-categories .cats-result h3 {
  margin: 0;
  font-family: var(--display);
  font-size: var(--step-3);
  font-weight: 600;
  font-variation-settings: "opsz" 96;
  line-height: 1.05;
  letter-spacing: -0.02em;
  color: var(--ink);
}

body#mash-categories .cats-result-magic {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1;
  color: var(--pen);
}

body#mash-categories .cats-result-magic span {
  display: grid;
  place-items: center;
  inline-size: 2.9rem;
  block-size: 2.9rem;
  padding-block-start: 0.15rem;
  font-size: var(--step-2);
  color: var(--gel-ink);
  border: 3px solid var(--gel);
  border-radius: 50%;
  rotate: -8deg;
}

body#mash-categories .cats-result-rows {
  margin: 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-result-row {
  display: grid;
  align-items: center;
  gap: 0.1rem var(--space-m);
  margin: 0;
  padding-block: 0.5rem;
  border-block-end: 1px solid rgb(42 63 174 / 0.2);
}

@media (min-width: 48rem) {
  body#mash-categories .cats-result-row {
    grid-template-columns: minmax(0, 13rem) minmax(0, 1fr);
  }
}

body#mash-categories .cats-result-label {
  font-size: var(--step--1);
  font-weight: 600;
  line-height: 1.3;
  color: var(--ink-soft);
}

body#mash-categories .cats-result-opts {
  display: flex;
  flex-wrap: wrap;
  gap: 0.2rem 1.9rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-result-opt {
  position: relative;
  margin: 0;
  font-family: var(--hand);
  font-size: 1.3rem;
  font-weight: 700;
  line-height: 1.6;
  color: var(--pen);
}

body#mash-categories .cats-result-ink {
  display: inline-block;
}

body#mash-categories .cats-result-opt[data-cross] .cats-result-ink {
  opacity: 0.5;
}

body#mash-categories .cats-result-opt.is-kept {
  color: var(--ink);
}

body#mash-categories :is(.cats-strike, .cats-circle) {
  position: absolute;
  inset-block-start: 50%;
  overflow: visible;
  fill: none;
  stroke-linecap: round;
  pointer-events: none;
}

body#mash-categories .cats-strike {
  inset-inline-start: -0.2em;
  inline-size: calc(100% + 0.4em);
  block-size: 0.6em;
  translate: 0 -45%;
  stroke: var(--gel);
  stroke-width: 2.6;
}

/* The loop is an ellipse, so long words need more overhang or its ends
   cut through the first and last letters. The path also sits right of
   center in its viewBox, hence the extra pull to the left. */
body#mash-categories .cats-circle {
  inset-inline-start: calc(-12% - 0.5em);
  inline-size: calc(120% + 1em);
  block-size: 1.5em;
  translate: 0 -52%;
  stroke: var(--marker);
  stroke-width: 2.6;
}

body#mash-categories .cats-result-next {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 0 var(--space-m);
  margin-block-start: var(--space-s);
}

body#mash-categories .cats-result-next p {
  margin: 0;
  font-size: var(--step--1);
  color: var(--ink-soft);
}

body#mash-categories .cats-result-next .paper-actions {
  margin-block-start: var(--space-s);
}

body#mash-categories .cats-error {
  margin: 0 0 var(--space-l);
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.3;
  color: var(--ink);
}

/* Presets on the left, the add menu on the right. */
body#mash-categories .cats-tools {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--space-m) var(--space-l);
  padding-block: var(--space-s) var(--space-m);
  border-block-end: 2px dashed rgb(26 26 31 / 0.14);
}

body#mash-categories .cats-tools-label {
  display: block;
  margin: 0 0 0.45rem;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1.1;
  color: var(--pen);
}

body#mash-categories .cats-presets ul {
  display: flex;
  flex-wrap: wrap;
  gap: 0.45rem;
  margin: 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-presets li {
  margin: 0;
}

body#mash-categories .cats-preset {
  display: inline-flex;
  align-items: center;
  min-block-size: 2.5rem;
  padding: 0.4rem 1rem;
  font-size: var(--step--1);
  font-weight: 600;
  line-height: 1;
  color: var(--ink);
  text-decoration: none;
  background: #fff;
  border: 2px solid var(--ink);
  border-radius: 999px;
  box-shadow: 0 0.18rem 0 var(--ink);
  transition:
    background-color var(--dur-fast) ease,
    box-shadow var(--dur-fast) var(--ease-spring),
    translate var(--dur-fast) var(--ease-spring);
}

body#mash-categories .cats-preset:hover {
  color: var(--ink);
  background: color-mix(in oklab, var(--highlight) 38%, #fff);
}

body#mash-categories .cats-preset[aria-current] {
  background: var(--highlight);
}

body#mash-categories .cats-preset:active {
  translate: 0 0.15rem;
  box-shadow: 0 0.03rem 0 var(--ink);
}

body#mash-categories .cats-preset:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

body#mash-categories .cats-add {
  margin: 0;
}

body#mash-categories .cats-add-row {
  display: flex;
  gap: 0.5rem;
}

body#mash-categories .cats-add select {
  inline-size: 15rem;
  max-inline-size: 100%;
  min-block-size: 3rem;
  margin: 0;
  padding: 0.5rem 2.4rem 0.5rem 0.9rem;
  font-family: var(--sans);
  font-size: var(--step-0);
  line-height: 1.2;
  color: var(--ink);
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231a1a1f' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") no-repeat right 0.8rem center / 1rem;
  border: 2px solid var(--ink);
  border-radius: 0.75rem;
  appearance: none;
  cursor: pointer;
}

body#mash-categories .cats-add select:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

body#mash-categories .cats-add .paper-btn:hover .paper-btn-icon {
  translate: none;
  rotate: 90deg;
}

body#mash-categories .cats-add .paper-btn-icon {
  transition: rotate var(--dur-base) var(--ease-spring);
}

body#mash-categories .cats-full {
  max-inline-size: 22rem;
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1.3;
  color: var(--ink-soft);
}

body#mash-categories .cats-form {
  margin: 0;
}

body#mash-categories .cats-set {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 16.5rem), 1fr));
  gap: var(--space-l) var(--space-m);
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-slot {
  display: flex;
  margin: 0;
}

/* One list as an index card: the title, then four lines to write on. */
body#mash-categories .cats-card {
  --line: 2.15rem;
  position: relative;
  flex: 1;
  min-inline-size: 0;
  margin: 0;
  padding: var(--space-s) var(--space-m) calc(var(--space-s) - 0.2rem);
  border: 0;
  rotate: var(--tilt, 0deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#mash-categories .cats-card:focus-within {
  rotate: 0deg;
  translate: 0 -0.2rem;
}

/* Floated so the legend lays out like any other block inside its card. */
body#mash-categories .cats-card-label {
  float: left;
  display: flex;
  align-items: flex-end;
  inline-size: 100%;
  min-block-size: 2.2em;
  margin: 0;
  padding: 0 2.5rem 0.45rem 0;
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--ink);
  text-wrap: balance;
}

body#mash-categories .cats-lines {
  clear: both;
}

body#mash-categories .cats-line {
  display: block;
  margin: 0;
}

body#mash-categories .cats-line input {
  display: block;
  inline-size: 100%;
  block-size: var(--line);
  margin: 0;
  padding: 0 0.25rem;
  font-family: var(--hand);
  font-size: 1.2rem;
  font-weight: 700;
  line-height: var(--line);
  color: var(--pen);
  text-overflow: ellipsis;
  background: transparent;
  border: 0;
  border-radius: 2px;
  box-shadow: none;
  appearance: none;
  transition: background-color var(--dur-fast) ease;
}

body#mash-categories .cats-line input:hover {
  background: rgb(255 255 255 / 0.4);
}

body#mash-categories .cats-line input:focus {
  outline: 0;
  background: color-mix(in oklab, var(--highlight) 65%, transparent);
  box-shadow: inset 0 -3px 0 var(--pen);
}

body#mash-categories .cats-card.is-fixed input {
  color: var(--ink);
  cursor: default;
}

body#mash-categories .cats-card.is-fixed input:hover {
  background: transparent;
}

body#mash-categories .cats-card.is-fixed input:focus {
  background: rgb(255 255 255 / 0.4);
}

body#mash-categories .cats-card-flag {
  position: absolute;
  inset-block-start: 0.7rem;
  inset-inline-end: 0.8rem;
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step--1);
  font-weight: 700;
  line-height: 1;
  color: var(--gel-ink);
  rotate: 6deg;
}

body#mash-categories .cats-card-remove {
  position: absolute;
  inset-block-start: 0.55rem;
  inset-inline-end: 0.55rem;
  display: grid;
  place-items: center;
  inline-size: 2.25rem;
  block-size: 2.25rem;
  padding: 0;
  font: inherit;
  color: var(--ink-soft);
  text-decoration: none;
  cursor: pointer;
  background: rgb(255 255 255 / 0.55);
  border: 2px solid rgb(26 26 31 / 0.2);
  border-radius: 50%;
  transition:
    color var(--dur-fast) ease,
    background-color var(--dur-fast) ease,
    border-color var(--dur-fast) ease,
    rotate var(--dur-base) var(--ease-spring);
}

body#mash-categories .cats-card-remove:hover {
  color: #fff;
  background: var(--gel);
  border-color: var(--gel-ink);
  rotate: 90deg;
}

body#mash-categories .cats-card-remove:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 2px;
}

body#mash-categories .cats-card-remove .paper-btn-icon {
  inline-size: 1.1rem;
  block-size: 1.1rem;
  stroke-width: 2.6;
}

/* The blank card: dashed like a spot waiting for a list. */
body#mash-categories .cats-card--custom {
  background: rgb(255 255 255 / 0.6);
  border: 2px dashed rgb(26 26 31 / 0.28);
  border-radius: 3px;
}

body#mash-categories .cats-card--custom .cats-card-label {
  min-block-size: 0;
  padding: 0 0 0.15rem;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  color: var(--pen);
}

body#mash-categories .cats-custom-name {
  display: block;
  clear: both;
  margin: 0 0 0.45rem;
}

body#mash-categories .cats-custom-name input {
  display: block;
  inline-size: 100%;
  margin: 0;
  padding: 0.15rem 0.25rem;
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 500;
  line-height: 1.2;
  color: var(--ink);
  background: transparent;
  border: 0;
  border-radius: 2px;
  box-shadow: inset 0 -2px 0 rgb(26 26 31 / 0.18);
  appearance: none;
}

body#mash-categories .cats-custom-name input::placeholder {
  color: rgb(26 26 31 / 0.4);
}

body#mash-categories .cats-custom-name input:focus {
  outline: 0;
  background: color-mix(in oklab, var(--highlight) 65%, transparent);
  box-shadow: inset 0 -3px 0 var(--pen);
}

body#mash-categories .cats-card-hint {
  margin: 0.55rem 0 0;
  font-size: var(--step--1);
  line-height: 1.4;
  color: var(--ink-soft);
}

body#mash-categories .cats-play {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-m) var(--space-l);
  margin-block-start: var(--space-xl);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(26 26 31 / 0.14);
}

/* The counting number, written in a gel-pen circle. */
body#mash-categories .cats-loops {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  grid-template-areas:
    "input label"
    "input hint";
  align-items: center;
  column-gap: var(--space-s);
  max-inline-size: 28rem;
}

body#mash-categories .cats-loops-label {
  grid-area: label;
  align-self: end;
  font-size: var(--step-0);
  font-weight: 600;
  line-height: 1.3;
  color: var(--ink);
}

body#mash-categories .cats-loops-hint {
  grid-area: hint;
  align-self: start;
  margin: 0.15rem 0 0;
  font-size: var(--step--1);
  line-height: 1.4;
  color: var(--ink-soft);
}

body#mash-categories .cats-loops input {
  grid-area: input;
  inline-size: 4.5rem;
  block-size: 4.5rem;
  margin: 0;
  padding: 0.35rem 0 0;
  font-family: var(--hand);
  font-size: var(--step-3);
  font-weight: 700;
  line-height: 1;
  text-align: center;
  color: var(--gel-ink);
  background: #fff;
  border: 3px solid var(--gel);
  border-radius: 50%;
  box-shadow: 0 0.25rem 0 rgb(196 42 102 / 0.35);
  rotate: -5deg;
  appearance: textfield;
}

body#mash-categories .cats-loops input::-webkit-inner-spin-button,
body#mash-categories .cats-loops input::-webkit-outer-spin-button {
  margin: 0;
  -webkit-appearance: none;
}

body#mash-categories .cats-loops input:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 4px;
}

body#mash-categories .cats-play-btn {
  min-block-size: 3.5rem;
  padding-inline: 1.8rem;
  font-size: var(--step-1);
}

/* ─── Shared list lines ──────────────────────────────────────────────────── */

body#mash-categories .cats-items {
  margin: 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-item {
  margin: 0;
  padding-block: 0.55rem;
  border-block-start: 1px solid rgb(42 63 174 / 0.2);
}

body#mash-categories .cats-item:first-child {
  border-block-start: 2px solid var(--margin-line);
}

body#mash-categories .cats-item-label {
  display: block;
  font-size: var(--step-0);
  font-weight: 600;
  line-height: 1.3;
  color: var(--ink);
}

body#mash-categories .cats-item-opts {
  display: block;
  font-family: var(--hand);
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--pen);
}

body#mash-categories .cats-load {
  align-self: flex-start;
  min-block-size: 2.6rem;
  margin-block-start: auto;
  padding: 0.5rem 1rem;
  font-size: var(--step--1);
}

/* ─── 3. The classic four ────────────────────────────────────────────────── */

body#mash-categories .cats-classic {
  display: grid;
  gap: var(--space-xl);
}

/* Wide screens: both notes down the left, the four cards two by two. */
@media (min-width: 62rem) {
  body#mash-categories .cats-classic {
    grid-template-columns: minmax(0, 0.72fr) minmax(0, 1.28fr);
    grid-template-areas:
      "head list"
      "after list";
    gap: var(--space-xl);
  }

  body#mash-categories .cats-classic > .paper-head {
    grid-area: head;
    align-self: end;
  }

  body#mash-categories .cats-classic-list {
    grid-area: list;
  }

  body#mash-categories .cats-classic-after {
    grid-area: after;
    align-self: start;
    justify-self: center;
  }
}

body#mash-categories .cats-classic > .paper-head {
  margin: 0;
  rotate: -1.8deg;
}

body#mash-categories .cats-classic-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  gap: var(--space-xl) var(--space-l);
  margin: 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-classic-item {
  display: flex;
  margin: 0;
}

body#mash-categories .cats-classic-card {
  --line: 2rem;
  position: relative;
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: var(--space-m) var(--space-m) var(--space-s);
  background: var(--paper);
  border-radius: 3px;
  box-shadow: var(--paper-lift);
  rotate: var(--tilt, 0deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#mash-categories .cats-classic-card:hover {
  rotate: 0deg;
  translate: 0 -0.3rem;
}

body#mash-categories .cats-classic-num {
  position: absolute;
  inset-block-start: 0.7rem;
  inset-inline-end: 0.8rem;
  display: grid;
  place-items: center;
  inline-size: 2.4rem;
  block-size: 2.4rem;
  padding-block-start: 0.15rem;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1;
  color: var(--gel-ink);
  border: 2.5px solid var(--gel);
  border-radius: 50%;
  rotate: 8deg;
}

body#mash-categories .cats-classic-card h3 {
  display: flex;
  align-items: flex-end;
  min-block-size: 2.2em;
  margin: 0 2.75rem 0 0;
  padding-block-end: 0.45rem;
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 600;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  letter-spacing: -0.01em;
  color: var(--ink);
  text-wrap: balance;
}

body#mash-categories .cats-classic-opts {
  list-style: none;
}

body#mash-categories .cats-classic-opts li {
  margin: 0;
  font-family: var(--hand);
  font-size: 1.2rem;
  font-weight: 700;
  line-height: var(--line);
  color: var(--pen);
}

body#mash-categories .cats-classic-card p {
  margin: var(--space-s) 0 0;
  font-size: var(--step--1);
  line-height: 1.5;
  color: var(--ink-soft);
  text-wrap: pretty;
}

body#mash-categories .cats-classic-after {
  justify-self: end;
  max-inline-size: 24rem;
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.3;
  color: var(--ink);
  rotate: 1.8deg;
}

/* ─── 4. By age ──────────────────────────────────────────────────────────── */

body#mash-categories .cats-ages-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  gap: var(--space-xl) var(--space-m);
  margin: var(--space-xl) 0 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-ages-item {
  display: flex;
  margin: 0;
}

body#mash-categories .cats-age {
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: var(--space-l) var(--space-m) var(--space-m);
  rotate: var(--tilt, 0deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#mash-categories .cats-age:hover,
body#mash-categories .cats-age:focus-within {
  rotate: 0deg;
  translate: 0 -0.3rem;
}

body#mash-categories .cats-age h3 {
  margin: 0;
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 600;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--ink);
  text-wrap: balance;
}

body#mash-categories .cats-age-intro {
  margin: 0.35rem 0 var(--space-s);
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1.3;
  color: var(--gel-ink);
}

body#mash-categories .cats-age .cats-items {
  margin-block-end: var(--space-m);
}

/* ─── 5. Themed sets ─────────────────────────────────────────────────────── */

body#mash-categories .cats-themes {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr));
  align-items: start;
  gap: var(--space-xl) var(--space-l);
}

body#mash-categories .cats-themes > .paper-head {
  align-self: center;
  margin: 0;
  rotate: -2.2deg;
}

body#mash-categories .cats-theme-slot {
  display: flex;
  block-size: 100%;
}

body#mash-categories .cats-theme {
  --tape: var(--tape-yellow);
  position: relative;
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: var(--space-l) var(--space-m) var(--space-m);
  background: var(--paper);
  border-radius: 3px;
  box-shadow: var(--paper-lift);
  rotate: var(--tilt, 0deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#mash-categories .cats-theme:hover,
body#mash-categories .cats-theme:focus-within {
  rotate: 0deg;
  translate: 0 -0.3rem;
}

body#mash-categories .cats-theme h3 {
  margin: 0 0 var(--space-xs);
  font-family: var(--hand);
  font-size: var(--step-2);
  font-weight: 700;
  line-height: 1.1;
  color: var(--ink);
}

body#mash-categories .cats-theme .cats-items {
  margin-block-end: var(--space-m);
}

/* ─── 6. Quick-start sets ────────────────────────────────────────────────── */

body#mash-categories .cats-quick-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr));
  gap: var(--space-l);
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-quick-item {
  display: flex;
  margin: 0;
}

/* A torn-out notebook page: punch holes, the red margin, blue rules. Every
   line of text sits on --line so the writing lands on the rules. */
body#mash-categories .cats-quick-card {
  --line: 1.75rem;
  --margin: 2.5rem;
  flex: 1;
  display: flex;
  flex-direction: column;
  padding: var(--line) var(--space-s) var(--space-m) calc(var(--margin) + var(--space-xs));
  border-radius: 3px;
  background:
    radial-gradient(circle, #e7e2d8 0 0.42rem, transparent 0.47rem) 0.5rem 12% / 1rem 1rem no-repeat,
    radial-gradient(circle, #e7e2d8 0 0.42rem, transparent 0.47rem) 0.5rem 50% / 1rem 1rem no-repeat,
    radial-gradient(circle, #e7e2d8 0 0.42rem, transparent 0.47rem) 0.5rem 88% / 1rem 1rem no-repeat,
    linear-gradient(90deg, transparent var(--margin), var(--margin-line) var(--margin) calc(var(--margin) + 2px), transparent calc(var(--margin) + 2px)),
    repeating-linear-gradient(to bottom, transparent 0 calc(var(--line) - 1px), var(--rule-line) calc(var(--line) - 1px) var(--line)) 0 -0.3rem,
    #fff;
  box-shadow: var(--paper-shadow);
}

body#mash-categories .cats-quick-card h3 {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: var(--line);
  color: var(--gel-ink);
}

body#mash-categories .cats-quick-card .cats-items {
  margin-block-end: var(--line);
}

body#mash-categories .cats-quick-card .cats-item {
  padding: 0;
  border: 0;
  line-height: var(--line);
}

/* Inter and Kalam have different ascents; baseline-aligned they stretch the
   line box past --line and the writing drifts off the rules. */
body#mash-categories .cats-quick-card :is(.cats-item-label, .cats-item-opts) {
  display: inline;
  line-height: var(--line);
  vertical-align: top;
}

body#mash-categories .cats-quick-card .cats-item-label {
  font-size: var(--step--1);
}

body#mash-categories .cats-quick-card .cats-item-opts {
  font-size: 1rem;
}

/* ─── 7. Tips ────────────────────────────────────────────────────────────── */

body#mash-categories .cats-tips {
  display: grid;
  gap: var(--space-xl);
}

body#mash-categories .cats-tips > .paper-head {
  margin: 0;
  rotate: 1.5deg;
}

body#mash-categories .cats-tips-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  gap: var(--space-xl) var(--space-l);
  margin: 0;
  padding: 0;
  list-style: none;
}

body#mash-categories .cats-tip {
  max-inline-size: none;
  margin: 0;
  font-family: var(--hand);
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.4;
  color: var(--ink);
  rotate: var(--tilt, -1deg);
}

@media (min-width: 34rem) {
  body#mash-categories .cats-tip:nth-child(even) {
    margin-block-start: var(--space-m);
  }
}

/* Three notes over two, the second row centered under the first. */
@media (min-width: 62rem) {
  body#mash-categories .cats-tips-list {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }

  body#mash-categories .cats-tip {
    grid-column: span 2;
  }

  body#mash-categories .cats-tip:nth-child(4) {
    grid-column: 2 / span 2;
  }
}

body#mash-categories .cats-tip-num {
  display: block;
  margin-block-end: 0.2rem;
  font-family: var(--display);
  font-size: var(--step-4);
  font-weight: 600;
  font-variation-settings: "opsz" 144;
  line-height: 1;
  color: var(--gel-ink);
}

/* ─── 8. Artwork version and the app ─────────────────────────────────────── */

body#mash-categories .cats-cta-body {
  display: grid;
  gap: var(--space-l);
  align-items: center;
}

@media (min-width: 48rem) {
  body#mash-categories .cats-cta-body {
    grid-template-columns: minmax(0, 1.45fr) minmax(0, 0.55fr);
    gap: var(--space-xl);
  }
}

body#mash-categories .cats-cta .paper-head {
  margin-block-end: 0;
}

body#mash-categories .cats-cta-stores {
  margin-block-start: var(--space-l);
}

body#mash-categories .cats-cta-phone {
  --tape: var(--tape-yellow);
  position: relative;
  justify-self: center;
  inline-size: min(100%, 15rem);
  rotate: -3deg;
}

body#mash-categories .cats-cta-phone img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  border: 0.45rem solid #fff;
  border-radius: 1.1rem;
  box-shadow: 0 1.5rem 3rem -1rem rgb(0 10 40 / 0.55);
}

@media (max-width: 47.99rem) {
  body#mash-categories .cats-cta-phone {
    inline-size: min(70%, 13rem);
  }
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body#mash-categories .cats-hero-actions .paper-btn {
    flex: 1 1 100%;
  }

  /* Stacked, the note sits between the buttons so its arrow still points
     up at "Build a set". */
  body#mash-categories .cats-hero-note {
    order: 1;
    margin-inline-start: calc(50% - 3rem);
  }

  body#mash-categories .cats-hero-actions .paper-btn:not(.paper-btn--primary) {
    order: 2;
  }

  body#mash-categories .cats-result {
    padding-inline: var(--space-m);
  }

  body#mash-categories .cats-play-btn {
    flex: 1 1 100%;
  }

  body#mash-categories .cats-add-row {
    flex-wrap: wrap;
  }

  body#mash-categories .cats-add select {
    flex: 1 1 12rem;
  }
}

/* ─── Print ──────────────────────────────────────────────────────────────── */

@media print {
  body#mash-categories :is(.cats-tabs, .cats-tools, .cats-form, .cats-load, .cats-result-next, .cats-cta, .cats-hero-actions) {
    display: none !important;
  }

  body#mash-categories :is(.cats-result, .cats-classic-card, .cats-age, .cats-theme) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
    border: 1px solid #999;
    break-inside: avoid;
  }

  body#mash-categories .cats-quick-card {
    background: #fff;
    border: 1px solid #999;
    box-shadow: none;
    break-inside: avoid;
  }
}

/* ===== printable.css ===== */
/* ─── /printable/ ──────────────────────────────────────────────────────────────
   The printable sheet page. Every rule is scoped to body#printable. The
   sheets, notes, cards, tape, heads, and buttons live in paper.css. */

body#printable .print-page [id] {
  scroll-margin-block-start: var(--space-m);
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#printable .print-hero-actions {
  margin-block-start: var(--space-l);
}

/* Puts the arrow's tip under the middle of "Black and white PDF". */
body#printable .print-hero-note {
  margin-inline-start: 17.7rem;
}

/* Two printouts dropped on the sheet, the color one on top. */
body#printable .print-art {
  display: grid;
  place-items: center;
  min-block-size: 26rem;
}

body#printable .print-preview {
  position: relative;
  display: block;
  grid-area: 1 / 1;
  inline-size: min(78%, 17.5rem);
  padding: 0.4rem;
  line-height: 0;
  text-decoration: none;
  background: #fff;
  border-radius: 2px;
  box-shadow: var(--paper-lift);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#printable .print-preview img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  margin: 0;
  border-radius: 1px;
}

body#printable .print-preview--bw {
  --tape: var(--tape-blue);
  justify-self: start;
  align-self: end;
  z-index: 1;
  rotate: -8deg;
}

body#printable .print-preview--color {
  --tape: var(--tape-pink);
  justify-self: end;
  align-self: start;
  z-index: 2;
  rotate: 3.5deg;
}

body#printable .print-preview:hover {
  z-index: 4;
  rotate: 0deg;
  translate: 0 -0.35rem;
}

body#printable .print-preview:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.4rem;
}

/* ─── 2. What's on the sheet ─────────────────────────────────────────────── */

body#printable .print-parts-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr));
  gap: var(--space-xl) var(--space-m);
  margin: var(--space-xl) 0 0;
  padding: 0;
  list-style: none;
}

body#printable .print-deal {
  display: flex;
  margin: 0;
}

body#printable .print-part {
  --tilt: -1deg;
  position: relative;
  flex: 1;
  min-inline-size: 0;
  margin: 0;
  padding: var(--space-m);
  rotate: var(--tilt);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#printable .print-part--lines {
  --tilt: 1.1deg;
  --tape: var(--tape-blue);
  --card: var(--note-pink);
}

body#printable .print-part--circle {
  --tilt: -0.6deg;
  --tape: var(--tape-green);
  --card: var(--note-blue);
}

body#printable .print-part:hover,
body#printable .print-part:focus-within {
  rotate: 0deg;
  translate: 0 -0.2rem;
}

body#printable .print-part h3 {
  margin: 0 0 0.35rem;
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  color: var(--ink);
}

body#printable .print-part p,
body#printable .print-step p,
body#printable .print-class p {
  margin: 0;
  font-size: var(--step-0);
  line-height: 1.45;
  color: var(--ink);
  text-wrap: pretty;
}

body#printable .print-houses {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.3rem 0.6rem;
  margin: 0.7rem 0 0;
  padding: 0;
  list-style: none;
}

body#printable .print-houses li {
  margin: 0;
  font-family: var(--hand);
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.15;
  color: var(--pen);
}

body#printable .print-spiral {
  display: block;
  inline-size: 4.5rem;
  margin-block-start: 0.6rem;
}

body#printable .print-spiral svg {
  display: block;
  inline-size: 100%;
  block-size: auto;
}

body#printable .print-spiral path {
  fill: none;
  stroke: var(--marker);
  stroke-width: 7;
  stroke-linecap: round;
}

body#printable .print-more {
  max-inline-size: 36rem;
  margin: var(--space-xl) auto 0;
  rotate: -1deg;
}

/* ─── 3. Which file ──────────────────────────────────────────────────────── */

body#printable .print-which {
  display: grid;
  gap: var(--space-xl);
}

body#printable .print-which > .paper-head {
  margin: 0;
  rotate: -1deg;
}

body#printable .print-which-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  gap: var(--space-l);
  margin: 0;
  padding: 0;
  list-style: none;
}

body#printable .print-which-card {
  flex: 1;
  display: flex;
  flex-direction: column;
  gap: var(--space-s);
  margin: 0;
  padding: var(--space-m);
  rotate: var(--tilt, -1deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#printable .print-which-card:hover,
body#printable .print-which-card:focus-within {
  rotate: 0deg;
  translate: 0 -0.2rem;
}

body#printable .print-which-card h3 {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-2);
  font-weight: 700;
  line-height: 1.1;
  color: var(--gel-ink);
}

body#printable .print-which-card .paper-btn {
  align-self: flex-start;
  margin-block-start: auto;
}

/* ─── 4. Fill it ─────────────────────────────────────────────────────────── */

body#printable .print-steps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
  gap: var(--space-l) var(--space-m);
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#printable .print-step {
  flex: 1;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.15rem 0.75rem;
  align-content: start;
  margin: 0;
  padding: var(--space-s) var(--space-m) var(--space-m);
  background: #fff;
  border-radius: 3px;
  box-shadow: var(--paper-shadow);
  rotate: var(--tilt, 0deg);
}

body#printable .print-step-num {
  grid-row: 1 / span 2;
  font-family: var(--display);
  font-size: var(--step-4);
  font-weight: 600;
  font-variation-settings: "opsz" 144;
  line-height: 0.85;
  color: var(--gel-ink);
}

body#printable .print-step h3 {
  margin: 0.35rem 0 0;
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 500;
  font-variation-settings: "SOFT" 50, "opsz" 72;
  line-height: 1.15;
  color: var(--ink);
}

body#printable .print-fill-actions {
  margin-block-start: var(--space-l);
}

body#printable .print-class {
  max-inline-size: 34rem;
  margin: var(--space-xl) 0 0 auto;
  rotate: 1.4deg;
}

body#printable .print-class h2 {
  margin: 0 0 0.35rem;
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  color: var(--ink);
}

/* ─── 5. No printer ──────────────────────────────────────────────────────── */

body#printable .print-screen .paper-head {
  margin-block-end: 0;
}

body#printable .print-screen-stores {
  margin-block-start: var(--space-l);
}

/* ─── Newsletter cross-promo ─────────────────────────────────────────────── */

body#printable .print-xpromo {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(26 26 31 / 0.14);
}

body#printable .print-xpromo-label {
  margin: 0 0 var(--space-2xs);
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  text-align: center;
  color: var(--ink-soft);
}

body#printable .print-xpromo .xpromo-container {
  min-block-size: 7.5rem;
}

body#printable .print-xpromo iframe {
  display: block;
  inline-size: min(100%, 500px);
  margin-inline: auto;
  border-radius: var(--radius);
  box-shadow: var(--paper-shadow);
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body#printable .print-hero-actions .paper-btn {
    flex: 1 1 100%;
  }

  /* Stacked, the note sits under "Black and white PDF" and points up at it. */
  body#printable .print-hero-actions .paper-btn:not(.paper-btn--primary) {
    order: 1;
  }

  body#printable .print-hero-note {
    order: 2;
    margin-inline-start: calc(50% - 0.6rem);
  }

  body#printable .print-art {
    min-block-size: 22rem;
  }

  body#printable .print-preview {
    inline-size: min(74%, 14rem);
  }

  body#printable .print-class {
    margin-inline: 0;
  }
}

/* ─── Print ──────────────────────────────────────────────────────────────── */

@media print {
  body#printable :is(.print-hero-actions, .print-fill-actions, .print-screen, .print-xpromo) {
    display: none !important;
  }

  body#printable :is(.print-preview, .print-part, .print-which-card, .print-step, .print-class, .print-more) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
  }
}

/* ===== howto.css ===== */
/* ─── /how-to-play-mash/ ─────────────────────────────────────────────────────
   The rules page. Every rule is scoped to body#howto. The sheets, notes,
   cards, tape, heads, and buttons live in paper.css. */

body#howto .howto-page [id] {
  scroll-margin-block-start: var(--space-m);
}

/* ─── Hero ───────────────────────────────────────────────────────────────── */

body#howto .howto-byline {
  max-inline-size: 34rem;
  margin: var(--space-s) 0 0;
  font-size: var(--step--1);
  line-height: 1.45;
  color: var(--ink-soft);
}

body#howto .howto-byline a {
  color: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
}

body#howto .howto-hero-actions {
  margin-block-start: var(--space-l);
}

/* Puts the arrow's tip under the middle of "Printable sheet". */
body#howto .howto-hero-note {
  margin-inline-start: 15.9rem;
}

body#howto .howto-board {
  --tape: var(--tape-pink);
  max-inline-size: 28rem;
  margin-inline: auto;
}

/* The copy column is taller than the photo. Pin the photo and doodles to the
   top of the sheet on wide screens. */
@media (min-width: 62rem) {
  body#howto .paper-hero .paper-art {
    align-self: start;
  }
}

/* ─── Contents note ──────────────────────────────────────────────────────── */

body#howto .howto-toc {
  max-inline-size: 40rem;
  margin-inline: auto;
}

body#howto .howto-toc-list {
  display: grid;
  grid-auto-flow: column;
  grid-template-rows: repeat(5, auto);
  grid-template-columns: 1fr 1fr;
  gap: 0.35rem 1.25rem;
  margin: var(--space-s) 0 0;
  padding: 0;
  list-style: none;
}

body#howto .howto-toc-list a {
  font-family: var(--hand);
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.25;
  color: var(--pen);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.14em;
}

body#howto .howto-toc-list a:hover {
  color: var(--gel-ink);
}

/* ─── Shared cards ───────────────────────────────────────────────────────── */

body#howto .howto-deal {
  display: flex;
  margin: 0;
}

body#howto .howto-card {
  flex: 1;
  min-inline-size: 0;
  margin: 0;
  padding: var(--space-m);
  rotate: var(--tilt, -1deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#howto .howto-card:hover,
body#howto .howto-card:focus-within {
  rotate: 0deg;
  translate: 0 -0.2rem;
}

body#howto .howto-card h3,
body#howto .howto-step h3,
body#howto .howto-letter h3 {
  margin: 0 0 0.35rem;
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  color: var(--ink);
}

body#howto .howto-card p,
body#howto .howto-step p,
body#howto .howto-letter p,
body#howto .howto-tips li,
body#howto .howto-faq p {
  margin: 0;
  font-size: var(--step-0);
  line-height: 1.45;
  color: var(--ink);
  text-wrap: pretty;
}

body#howto .howto-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  gap: var(--space-l) var(--space-m);
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#howto .howto-grid--two {
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 18rem), 1fr));
}

/* ─── The steps ──────────────────────────────────────────────────────────── */

body#howto .howto-steps {
  display: grid;
  gap: var(--space-l);
  margin: var(--space-xl) 0 0;
  padding: 0;
  list-style: none;
}

body#howto .howto-step {
  flex: 1;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.2rem 0.9rem;
  align-content: start;
  margin: 0;
  padding: var(--space-m);
  background: #fff;
  border-radius: 3px;
  box-shadow: var(--paper-shadow);
  rotate: var(--tilt, -0.4deg);
}

body#howto .howto-step--shot {
  grid-template-columns: auto minmax(0, 1fr) minmax(12rem, 18rem);
}

body#howto .howto-num {
  font-family: var(--hand);
  font-size: 2rem;
  font-weight: 700;
  line-height: 1;
  color: var(--gel);
}

body#howto .howto-step h3 {
  margin: 0 0 0.35rem;
}

body#howto .howto-step .paper-prose + .paper-prose {
  margin-block-start: 0.7rem;
}

body#howto .howto-places {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.7rem 1.25rem;
  margin: 0.9rem 0 0;
  padding: 0;
  list-style: none;
}

body#howto .howto-places li {
  margin: 0;
  font-size: var(--step-0);
  line-height: 1.4;
  color: var(--ink);
}

body#howto .howto-shot {
  grid-column: 3;
  grid-row: 1;
  align-self: start;
  margin: 0;
  padding: 0.4rem;
  line-height: 0;
  background: #fff;
  border-radius: 2px;
  box-shadow: var(--paper-lift);
  rotate: 1.5deg;
}

body#howto .howto-shot img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  margin: 0;
  border-radius: 1px;
}

body#howto .howto-shot--pair {
  display: grid;
  gap: 0.6rem;
  padding: 0;
  background: none;
  box-shadow: none;
  rotate: none;
}

body#howto .howto-shot--pair figure {
  margin: 0;
  padding: 0.35rem;
  line-height: 0;
  background: #fff;
  border-radius: 2px;
  box-shadow: var(--paper-lift);
}

body#howto .howto-shot--pair figure:first-child {
  rotate: -2deg;
}

body#howto .howto-shot--pair figure:last-child {
  rotate: 2.5deg;
}

body#howto .howto-more {
  max-inline-size: 36rem;
  margin: var(--space-xl) 0 0 auto;
  rotate: 1.2deg;
}

body#howto #make-your-mash-story-longer {
  margin: var(--space-xl) 0 var(--space-s);
  font-family: var(--display);
  font-size: var(--step-3);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  color: var(--ink);
}

body#howto #make-your-mash-story-longer + p {
  max-inline-size: 40rem;
}

body#howto .howto-card a {
  color: inherit;
  font-weight: 600;
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 0.16em;
}

body#howto .howto-history {
  max-inline-size: 40rem;
}

body#howto .howto-history p + p {
  margin-block-start: 0.9rem;
}

/* ─── A longer story ─────────────────────────────────────────────────────── */

body#howto .howto-extra {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.35rem 1.5rem;
  max-inline-size: 40rem;
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#howto .howto-extra li {
  margin: 0;
  font-family: var(--hand);
  font-size: 1.2rem;
  font-weight: 700;
  line-height: 1.3;
  color: var(--pen);
}

body#howto .howto-extra a {
  color: inherit;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.14em;
}

body#howto .howto-aside {
  max-inline-size: 32rem;
  margin: var(--space-l) 0 0;
  rotate: -1deg;
}

/* ─── The four letters ───────────────────────────────────────────────────── */

body#howto .howto-letter h3 {
  font-family: var(--hand);
  font-weight: 700;
  color: var(--gel-ink);
}

body#howto .howto-s {
  max-inline-size: 36rem;
  margin: var(--space-xl) auto 0;
  rotate: 1deg;
}

/* ─── Tips ───────────────────────────────────────────────────────────────── */

body#howto .howto-tips {
  display: grid;
  gap: 0.85rem;
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
  counter-reset: tip;
}

body#howto .howto-tips li {
  position: relative;
  margin: 0;
  padding-inline-start: 2.2rem;
  counter-increment: tip;
}

body#howto .howto-tips li::before {
  content: counter(tip);
  position: absolute;
  inset-inline-start: 0;
  inset-block-start: 0;
  font-family: var(--hand);
  font-size: 1.35rem;
  font-weight: 700;
  line-height: 1.15;
  color: var(--pen);
}

/* ─── Questions ──────────────────────────────────────────────────────────── */

body#howto .howto-faqs {
  display: grid;
  gap: 0.7rem;
  margin: var(--space-l) 0 0;
}

body#howto .howto-faq {
  margin: 0;
  padding: 0;
  background: #fff;
  border-radius: 3px;
  box-shadow: var(--paper-shadow);
}

body#howto .howto-faq summary {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-s);
  padding: var(--space-s) var(--space-m);
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.25;
  color: var(--ink);
  cursor: pointer;
  list-style: none;
}

body#howto .howto-faq summary::-webkit-details-marker {
  display: none;
}

body#howto .howto-faq summary::after {
  content: "";
  flex: none;
  inline-size: 0.7rem;
  block-size: 0.7rem;
  background: currentColor;
  clip-path: polygon(0 35%, 35% 35%, 35% 0, 65% 0, 65% 35%, 100% 35%, 100% 65%, 65% 65%, 65% 100%, 35% 100%, 35% 65%, 0 65%);
}

body#howto .howto-faq[open] summary::after {
  clip-path: polygon(0 35%, 100% 35%, 100% 65%, 0 65%);
}

body#howto .howto-faq summary:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: -3px;
}

body#howto .howto-faq p {
  padding: 0 var(--space-m) var(--space-m);
}

/* ─── Screen + signup ────────────────────────────────────────────────────── */

body#howto .howto-screen .paper-head {
  margin-block-end: 0;
}

body#howto .howto-screen-stores {
  margin-block-start: var(--space-l);
}

body#howto .howto-xpromo {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(26 26 31 / 0.14);
}

body#howto .howto-xpromo-label {
  margin: 0 0 var(--space-2xs);
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  text-align: center;
  color: var(--ink-soft);
}

body#howto .howto-xpromo .xpromo-container {
  min-block-size: 7.5rem;
}

body#howto .howto-xpromo iframe {
  display: block;
  inline-size: min(100%, 500px);
  margin-inline: auto;
  border-radius: var(--radius);
  box-shadow: var(--paper-shadow);
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 52rem) {
  body#howto .howto-step--shot {
    grid-template-columns: auto minmax(0, 1fr);
  }

  body#howto .howto-shot,
  body#howto .howto-shot--pair {
    grid-column: 1 / -1;
    grid-row: auto;
    max-inline-size: 22rem;
  }
}

@media (max-width: 37.49rem) {
  body#howto .howto-hero-actions .paper-btn {
    flex: 1 1 100%;
  }

  body#howto .howto-hero-actions .paper-btn:not(.paper-btn--primary) {
    order: 1;
  }

  body#howto .howto-hero-note {
    order: 2;
    margin-inline-start: calc(50% - 0.6rem);
  }

  body#howto .howto-toc-list,
  body#howto .howto-places,
  body#howto .howto-extra {
    grid-auto-flow: row;
    grid-template-rows: none;
    grid-template-columns: 1fr;
  }
}

/* ─── Print ──────────────────────────────────────────────────────────────── */

@media print {
  body#howto :is(.howto-hero-actions, .howto-toc, .howto-screen, .howto-xpromo, .howto-faqs) {
    display: none !important;
  }

  body#howto :is(.howto-card, .howto-step, .howto-shot, .howto-more, .howto-aside, .howto-s) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
  }
}

/* ===== games.css ===== */
/* ─── /games/ ──────────────────────────────────────────────────────────────────
   The free-games catalog. Every rule is scoped to body#games. The sheets,
   notes, tape, heads, and buttons live in paper.css. */

body#games .games-hub [id] {
  scroll-margin-block-start: var(--space-m);
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#games .games-hero-actions {
  margin-block-start: var(--space-l);
}

/* Puts the arrow's tip under the middle of "Our apps". */
body#games .games-hero-note {
  margin-inline-start: 15.2rem;
}

body#games .games-art {
  display: grid;
  place-items: center;
  min-block-size: 22rem;
}

body#games .games-shot {
  position: relative;
  display: block;
  grid-area: 1 / 1;
  inline-size: min(82%, 18rem);
  padding: 0.45rem 0.45rem 0;
  line-height: 0;
  text-decoration: none;
  background: #fff;
  border-radius: 2px;
  box-shadow: var(--paper-lift);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#games .games-shot img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  margin: 0;
  border-radius: 1px;
}

body#games .games-shot--back {
  --tape: var(--tape-blue);
  justify-self: start;
  align-self: end;
  z-index: 1;
  rotate: -7deg;
}

body#games .games-shot--front {
  --tape: var(--tape-pink);
  justify-self: end;
  align-self: start;
  z-index: 2;
  rotate: 3deg;
}

body#games .games-shot:hover {
  z-index: 4;
  rotate: 0deg;
  translate: 0 -0.35rem;
}

body#games .games-shot:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.4rem;
}

/* ─── 2. The six games ───────────────────────────────────────────────────── */

body#games .games-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17.5rem), 1fr));
  gap: var(--space-xl) var(--space-l);
  margin: var(--space-xl) 0 0;
  padding: var(--space-s) 0 0;
  list-style: none;
}

body#games .games-deal {
  display: flex;
  margin: 0;
}

body#games .games-card {
  position: relative;
  display: flex;
  flex: 1;
  flex-direction: column;
  min-inline-size: 0;
  padding: 0.5rem 0.5rem 0.95rem;
  color: var(--ink);
  text-decoration: none;
  background: #fff;
  border-radius: 2px;
  box-shadow: var(--paper-shadow);
  rotate: var(--tilt, -1deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring),
    box-shadow 0.45s var(--ease-spring);
}

body#games .games-card:hover,
body#games .games-card:focus-visible {
  z-index: 2;
  color: var(--ink);
  rotate: 0deg;
  translate: 0 -0.45rem;
  box-shadow: var(--paper-lift);
  outline: none;
}

body#games .games-card:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.25rem;
}

body#games .games-card img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  margin: 0;
  border-radius: 1px;
  background: var(--paper-cream);
}

body#games .games-name {
  display: block;
  margin: 0.55rem 0.35rem 0.2rem;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.15;
  text-align: center;
}

body#games .games-text {
  display: block;
  margin: 0 0.45rem 0.35rem;
  font-size: var(--step--1);
  line-height: 1.45;
  text-align: center;
  text-wrap: pretty;
  color: var(--ink-soft);
}

body#games .games-more {
  margin-block-start: var(--space-xl);
  margin-inline: auto;
}

/* ─── Newsletter cross-promo ─────────────────────────────────────────────── */

body#games .games-xpromo {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(26 26 31 / 0.14);
}

body#games .games-xpromo-label {
  margin: 0 0 var(--space-2xs);
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  text-align: center;
  color: var(--ink-soft);
}

body#games .games-xpromo .xpromo-container {
  min-block-size: 7.5rem;
}

body#games .games-xpromo iframe {
  display: block;
  inline-size: min(100%, 500px);
  margin-inline: auto;
  border-radius: var(--radius);
  box-shadow: var(--paper-shadow);
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body#games .games-hero-actions .paper-btn {
    flex: 1 1 100%;
  }

  body#games .games-hero-actions .paper-btn:not(.paper-btn--primary) {
    order: 1;
  }

  body#games .games-hero-note {
    order: 2;
    margin-inline-start: calc(50% - 0.6rem);
  }

  body#games .games-art {
    min-block-size: 16rem;
  }

  body#games .games-shot {
    inline-size: min(74%, 13.5rem);
  }

  body#games .games-more {
    margin-inline: 0;
  }
}

@media print {
  body#games :is(.games-hero-actions, .games-xpromo) {
    display: none !important;
  }

  body#games :is(.games-shot, .games-card, .games-more) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
  }
}

/* ===== apps.css ===== */
/* ─── /apps/ ───────────────────────────────────────────────────────────────────
   The App Store catalog. Every rule is scoped to body#apps. The sheets,
   notes, tape, heads, and buttons live in paper.css. */

body#apps .apps-hub [id] {
  scroll-margin-block-start: var(--space-m);
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#apps .apps-hero-actions {
  margin-block-start: var(--space-l);
}

/* Puts the arrow's tip under the middle of "Play in the browser". */
body#apps .apps-hero-note {
  margin-inline-start: 6.95rem;
}

body#apps .apps-art {
  display: grid;
  grid-template-columns: repeat(2, max-content);
  justify-content: center;
  align-content: center;
  gap: 1.85rem 1.75rem;
  padding-block: 0.85rem 1.15rem;
}

/* The shared doodles sit in the photo's empty corner. On this grid they
   land on an icon, so park them on the outer edge of the cluster. */
body#apps .apps-art .paper-doodle--star {
  inset-block-start: -0.15rem;
  inset-inline-end: -0.15rem;
}

body#apps .apps-art .paper-doodle--heart {
  inset-block-end: -0.55rem;
  inset-inline-end: -0.15rem;
}

body#apps .apps-hero-icon {
  position: relative;
  display: block;
  padding: 0.45rem;
  line-height: 0;
  text-decoration: none;
  background: #fff;
  border-radius: 2px;
  box-shadow: var(--paper-lift);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#apps .apps-hero-icon img {
  display: block;
  inline-size: clamp(6.25rem, 13vw, 7.75rem);
  block-size: auto;
  aspect-ratio: 1;
  margin: 0;
  border-radius: 1.55rem;
}

/* Reading order: MASH, SketchParty TV, Truth Truth Lie, StareMaster. */
body#apps .apps-hero-icon:nth-child(1) {
  --tape: var(--tape-blue);
  rotate: -4deg;
}

body#apps .apps-hero-icon:nth-child(2) {
  --tape: var(--tape-pink);
  rotate: 3.5deg;
}

body#apps .apps-hero-icon:nth-child(3) {
  --tape: var(--tape-yellow);
  rotate: 3deg;
}

body#apps .apps-hero-icon:nth-child(4) {
  --tape: var(--tape-green);
  rotate: -3.5deg;
}

body#apps .apps-hero-icon:hover {
  z-index: 4;
  rotate: 0deg;
  translate: 0 -0.35rem;
}

body#apps .apps-hero-icon:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.4rem;
}

/* ─── 2. The apps ────────────────────────────────────────────────────────── */

body#apps .apps-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16.5rem), 1fr));
  gap: var(--space-xl) var(--space-l);
  margin: var(--space-xl) 0 0;
  padding: var(--space-s) 0 0;
  list-style: none;
}

body#apps .apps-deal {
  display: flex;
  margin: 0;
}

body#apps .apps-card {
  display: flex;
  flex: 1;
  flex-direction: column;
  align-items: center;
  min-inline-size: 0;
  padding: 1.1rem 1rem 1rem;
  color: var(--ink);
  text-align: center;
  text-decoration: none;
  rotate: var(--tilt, -1deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring),
    box-shadow 0.45s var(--ease-spring);
}

body#apps .apps-card:hover,
body#apps .apps-card:focus-visible {
  z-index: 2;
  color: var(--ink);
  rotate: 0deg;
  translate: 0 -0.45rem;
  box-shadow: var(--paper-lift);
}

body#apps .apps-card:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.25rem;
}

body#apps .apps-icon {
  display: block;
  inline-size: 5.25rem;
  block-size: 5.25rem;
  margin: 0.15rem 0 0.55rem;
  border-radius: 1.15rem;
  box-shadow: 0 0.35rem 0.7rem rgb(60 40 0 / 0.18);
}

body#apps .apps-name {
  display: block;
  margin: 0 0.2rem;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.15;
}

body#apps .apps-price {
  display: block;
  margin: 0.2rem 0 0.45rem;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  color: var(--pen);
}

body#apps .apps-price--paid {
  color: var(--gel);
}

body#apps .apps-text {
  display: block;
  margin: 0 0.15rem 0.85rem;
  font-size: var(--step--1);
  line-height: 1.45;
  text-wrap: pretty;
  color: var(--ink-soft);
}

body#apps .apps-badge {
  inline-size: 8.75rem;
  block-size: auto;
  margin-block-start: auto;
}

/* ─── Newsletter cross-promo ─────────────────────────────────────────────── */

body#apps .apps-xpromo {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(26 26 31 / 0.14);
}

body#apps .apps-xpromo-label {
  margin: 0 0 var(--space-2xs);
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  text-align: center;
  color: var(--ink-soft);
}

body#apps .apps-xpromo .xpromo-container {
  min-block-size: 7.5rem;
}

body#apps .apps-xpromo iframe {
  display: block;
  inline-size: min(100%, 500px);
  margin-inline: auto;
  border-radius: var(--radius);
  box-shadow: var(--paper-shadow);
}

/* The shared hero hangs its photo off the sheet. Four icons need the column. */
@media (min-width: 62rem) {
  body#apps .apps-hero.paper-hero .paper-art {
    margin-inline-end: 0;
  }
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body#apps .apps-hero-actions {
    display: none;
  }

  body#apps .apps-art {
    gap: 1.35rem 1.25rem;
  }
}

@media print {
  body#apps :is(.apps-hero-actions, .apps-xpromo, .apps-badge) {
    display: none !important;
  }

  body#apps :is(.apps-hero-icon, .apps-card) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
  }
}

/* ===== play.css ===== */
/* ─── /play-mash-online-free/ ─────────────────────────────────────────────────
   The browser game. Every rule is scoped to body#PlayMASH. The sheets,
   notes, tape, heads, and buttons live in paper.css. The game iframe is
   left to its own stylesheet. */

body#PlayMASH .play-page [id] {
  scroll-margin-block-start: var(--space-m);
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#PlayMASH .play-board {
  display: block;
  padding-block: clamp(1.5rem, 1rem + 2vw, 2.75rem);
}

body#PlayMASH .play-board .paper-title {
  max-inline-size: 16ch;
  font-size: clamp(2.4rem, 1.3rem + 4.2vw, 4.25rem);
}

body#PlayMASH .play-board .paper-hero-copy {
  position: relative;
  z-index: 1;
  max-inline-size: 40rem;
}

/* ─── 2. The game ────────────────────────────────────────────────────────── */

body#PlayMASH .paper-page > .play-stage {
  margin-block-start: var(--space-m);
  padding: 0.7rem;
}

body#PlayMASH #AppWrapper,
body#PlayMASH #MGNT_MASH_App {
  max-inline-size: 100%;
}

/* Short until Play is clicked. The loader then drops in a 560px iframe,
   and this box grows to fit it. A tall empty stage pushed the button
   down the page. */
body#PlayMASH #MGNT_MASH_App {
  position: relative;
  min-block-size: 14rem;
  margin-block-start: 0 !important;
}

body#PlayMASH #IntentInterstitial {
  position: absolute;
  inset: 0;
  z-index: 2;
  display: flex;
  align-items: center;
  justify-content: center;
  background:
    radial-gradient(circle at 1px 1px, rgb(42 63 174 / 0.14) 1px, transparent 1.5px);
  background-size: 1.25rem 1.25rem;
  background-color: var(--paper);
  opacity: 1;
  transition: opacity 0.5s ease-in-out;
}

body#PlayMASH #IntentInterstitial.fade-out {
  opacity: 0;
}

body#PlayMASH #MGNT_MASH_App > iframe {
  display: block;
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.5s ease-in-out, visibility 0s 0.5s;
}

body#PlayMASH #MGNT_MASH_App > iframe.fade-in {
  opacity: 1;
  visibility: visible;
  transition: opacity 0.5s ease-in-out, visibility 0s 0s;
}

body#PlayMASH #playButton.paper-btn {
  min-block-size: 4.25rem;
  padding-inline: 1.6rem;
  font-size: var(--step-2);
  border-width: 3px;
  box-shadow: 0 0.3rem 0 var(--btn-edge);
}

body#PlayMASH #playButton .mash-icon {
  inline-size: 1.15em;
  block-size: 1.15em;
}

body#PlayMASH #loadingSpinner {
  inline-size: 3.25rem;
  block-size: 3.25rem;
  border: 5px solid color-mix(in oklab, var(--blue) 22%, white);
  border-block-start-color: var(--blue);
  border-radius: 50%;
  animation: play-spin 0.8s linear infinite;
}

@keyframes play-spin {
  to { rotate: 1turn; }
}

/* ─── 3. What the page does ──────────────────────────────────────────────── */

body#PlayMASH .play-steps {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr));
  gap: var(--space-l) var(--space-m);
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#PlayMASH .play-deal {
  display: flex;
  margin: 0;
}

body#PlayMASH .play-step {
  flex: 1;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 0.15rem 0.75rem;
  align-content: start;
  margin: 0;
  padding: var(--space-s) var(--space-m) var(--space-m);
  background: #fff;
  border-radius: 3px;
  box-shadow: var(--paper-shadow);
  rotate: var(--tilt, 0deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#PlayMASH .play-step:hover {
  rotate: 0deg;
  translate: 0 -0.2rem;
}

body#PlayMASH .play-step-num {
  grid-row: 1 / span 2;
  font-family: var(--display);
  font-size: var(--step-4);
  font-weight: 600;
  font-variation-settings: "opsz" 144;
  line-height: 0.85;
  color: var(--gel-ink);
}

body#PlayMASH .play-step h3,
body#PlayMASH .play-card h3 {
  margin: 0.35rem 0 0;
  font-family: var(--display);
  font-size: var(--step-1);
  font-weight: 500;
  font-variation-settings: "SOFT" 50, "opsz" 72;
  line-height: 1.15;
  color: var(--ink);
}

body#PlayMASH .play-step p,
body#PlayMASH .play-card p,
body#PlayMASH .play-name p {
  margin: 0;
  font-size: var(--step-0);
  line-height: 1.5;
  color: var(--ink);
  text-wrap: pretty;
}

body#PlayMASH .play-resume {
  max-inline-size: 34rem;
  margin: var(--space-xl) 0 0;
}

body#PlayMASH .play-resume p,
body#PlayMASH .play-story .paper-prose {
  margin: 0;
  font-size: var(--step-0);
  line-height: 1.55;
  color: var(--ink);
  text-wrap: pretty;
}

/* ─── 4. One finished round ──────────────────────────────────────────────── */

body#PlayMASH .play-round {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 17.5rem), 1fr));
  gap: var(--space-xl) var(--space-m);
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#PlayMASH .play-card {
  flex: 1;
  min-inline-size: 0;
  margin: 0;
  padding: var(--space-m);
  rotate: var(--tilt, -1deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#PlayMASH .play-card:hover {
  rotate: 0deg;
  translate: 0 -0.2rem;
}

body#PlayMASH .play-card ul {
  margin: 0.7rem 0 0;
  padding: 0;
  list-style: none;
}

body#PlayMASH .play-card li {
  margin: 0;
  font-family: var(--hand);
  font-size: 1.15rem;
  font-weight: 700;
  line-height: 1.35;
  color: var(--pen);
}

body#PlayMASH .play-card s {
  color: color-mix(in oklab, var(--ink) 48%, transparent);
  text-decoration-color: var(--gel-ink);
  text-decoration-thickness: 2px;
}

body#PlayMASH .play-card .kept {
  color: var(--marker);
  background-image: linear-gradient(transparent 58%, var(--highlight) 58% 90%, transparent 90%);
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
}

body#PlayMASH .play-story {
  max-inline-size: 38rem;
  margin: var(--space-xl) 0 0;
}

body#PlayMASH .play-story .paper-prose + .paper-prose {
  margin-block-start: var(--space-s);
}

body#PlayMASH .play-name {
  max-inline-size: 34rem;
  margin-block-start: var(--space-xl);
}

body#PlayMASH .play-name h2 {
  margin: 0 0 0.4rem;
  font-family: var(--display);
  font-size: var(--step-2);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  color: var(--ink);
}

/* ─── 5. Paper or phone ──────────────────────────────────────────────────── */

body#PlayMASH .play-elsewhere .paper-stores {
  margin-block-start: var(--space-m);
}

/* ─── Newsletter cross-promo ─────────────────────────────────────────────── */

body#PlayMASH .play-xpromo {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(26 26 31 / 0.14);
}

body#PlayMASH .play-xpromo-label {
  margin: 0 0 var(--space-2xs);
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  text-align: center;
  color: var(--ink-soft);
}

body#PlayMASH .play-xpromo .xpromo-container {
  min-block-size: 7.5rem;
}

body#PlayMASH .play-xpromo iframe {
  display: block;
  inline-size: min(100%, 500px);
  margin-inline: auto;
  border-radius: var(--radius);
  box-shadow: var(--paper-shadow);
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 40rem) {
  body#PlayMASH #playButton.paper-btn {
    min-block-size: 3.75rem;
    padding-inline: 1.25rem;
    font-size: var(--step-1);
  }

  body#PlayMASH .play-name {
    margin-inline: 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  body#PlayMASH #loadingSpinner {
    animation: none;
  }

  body#PlayMASH :is(.play-step, .play-card):hover {
    translate: none;
  }
}

@media print {
  body#PlayMASH :is(.play-stage, .play-xpromo, .play-elsewhere .paper-actions) {
    display: none !important;
  }

  body#PlayMASH :is(.play-step, .play-card, .play-name, .play-resume) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
  }
}

/* ===== app-kit.css ===== */
/* ─── App kit ─────────────────────────────────────────────────────────────────
   Pieces shared by the app pages, /app/, /apple-watch/, and /mash-for-mac/:
   the Apple Watch drawn in CSS around the real screenshots, and the
   numbered steps (a circled number, a title, the text, and a pen note). The
   watch markup comes from paper_watch() in paper_watch.inc.php. Each page
   sizes the watch with --watch-size, and everything on the watch scales from
   it. */

body:is(#mash-app, #apple-watch, #mash-mac) {
  --mash-orange: #f26a1b;
  --mash-orange-deep: #c94f0c;
}

/* ─── The watch ──────────────────────────────────────────────────────────────
   The crown's ridges are a gradient, so sliding its background with --crown
   reads as the crown turning. */

body:is(#mash-app, #apple-watch, #mash-mac) .watch {
  --watch-size: clamp(11.5rem, 9.5rem + 5vw, 13.5rem);
  --w: calc(var(--watch-size) / 13.5);
  position: relative;
  display: grid;
  justify-items: center;
  inline-size: var(--watch-size);
  margin: 0;
}

body:is(#mash-app, #apple-watch, #mash-mac) .watch-band {
  display: block;
  inline-size: 64%;
  block-size: calc(var(--w) * 4.8);
  background:
    linear-gradient(90deg, rgb(0 0 0 / 0.12), transparent 18%, transparent 82%, rgb(0 0 0 / 0.12)),
    var(--mash-orange);
}

body:is(#mash-app, #apple-watch, #mash-mac) .watch-band--top {
  border-radius: calc(var(--w) * 1.2) calc(var(--w) * 1.2) 0.3rem 0.3rem;
  margin-block-end: -0.6rem;
}

/* The strap holes. */
body:is(#mash-app, #apple-watch, #mash-mac) .watch-band--bottom {
  margin-block-start: -0.6rem;
  border-radius: 0.3rem 0.3rem calc(var(--w) * 1.2) calc(var(--w) * 1.2);
  background:
    radial-gradient(circle, var(--mash-orange-deep) 0 0.22rem, transparent 0.26rem) 50% 1.6rem / 100% 0.95rem repeat-y,
    linear-gradient(90deg, rgb(0 0 0 / 0.12), transparent 18%, transparent 82%, rgb(0 0 0 / 0.12)),
    var(--mash-orange);
}

body:is(#mash-app, #apple-watch, #mash-mac) .watch-case {
  position: relative;
  z-index: 1;
  inline-size: 100%;
  padding: calc(var(--w) * 0.7);
  border-radius: calc(var(--w) * 2.6);
  background: linear-gradient(150deg, #4a4e59, #16171b 55%, #2b2d33);
  box-shadow:
    inset 0 0 0 1.5px rgb(255 255 255 / 0.14),
    0 1px 1px rgb(0 0 0 / 0.2),
    0 1.75rem 2.75rem -1.25rem rgb(12 34 78 / 0.55);
}

body:is(#mash-app, #apple-watch, #mash-mac) .watch-screen {
  display: grid;
  overflow: hidden;
  aspect-ratio: 422 / 514;
  border-radius: calc(var(--w) * 2);
  background: #000;
}

body:is(#mash-app, #apple-watch, #mash-mac) .watch-img {
  grid-area: 1 / 1;
  inline-size: 100%;
  block-size: 100%;
  margin: 0;
  object-fit: cover;
  opacity: 0;
  scale: 1.04;
  transition:
    opacity 0.35s ease,
    scale 0.5s var(--ease-spring);
}

body:is(#mash-app, #apple-watch, #mash-mac) .watch-img.is-shown {
  opacity: 1;
  scale: 1;
}

body:is(#mash-app, #apple-watch, #mash-mac) .watch-crown {
  position: absolute;
  inset-block-start: 20%;
  inset-inline-end: calc(var(--w) * -0.75);
  inline-size: calc(var(--w) * 1);
  block-size: calc(var(--w) * 2.8);
  border-radius: 0.3rem 0.45rem 0.45rem 0.3rem;
  background:
    linear-gradient(90deg, rgb(0 0 0 / 0.35), transparent 40%, rgb(255 255 255 / 0.25) 70%, rgb(0 0 0 / 0.25)),
    repeating-linear-gradient(to bottom, #d9dce2 0 2px, #7c818b 2px 4px);
  background-position: 0 0, 0 var(--crown, 0px);
  box-shadow: 0 0.2rem 0.4rem rgb(0 0 0 / 0.3);
}

body:is(#mash-app, #apple-watch, #mash-mac) .watch-button {
  position: absolute;
  inset-block-start: 48%;
  inset-inline-end: calc(var(--w) * -0.4);
  inline-size: calc(var(--w) * 0.55);
  block-size: calc(var(--w) * 3.6);
  border-radius: 0 0.3rem 0.3rem 0;
  background: linear-gradient(90deg, #22242a, #4a4e59);
}

/* ─── Step number ────────────────────────────────────────────────────────────
   A hand-drawn number with a pen loop around it. */

body:is(#mash-app, #apple-watch, #mash-mac) .step-num {
  position: relative;
  display: grid;
  place-items: center;
  inline-size: 3.4rem;
  block-size: 3.4rem;
  margin-block-end: var(--space-2xs);
  font-family: var(--hand);
  font-size: var(--step-3);
  font-weight: 700;
  line-height: 1;
  color: var(--pen);
}

body:is(#mash-app, #apple-watch, #mash-mac) .step-num > span {
  display: block;
  translate: 0 0.1em;
}

body:is(#mash-app, #apple-watch, #mash-mac) .step-num-ring {
  position: absolute;
  inset: -0.2rem -0.45rem;
  inline-size: calc(100% + 0.9rem);
  block-size: calc(100% + 0.4rem);
  overflow: visible;
  fill: none;
  stroke: var(--gel);
  stroke-width: 3;
  stroke-linecap: round;
  rotate: -8deg;
}

body:is(#mash-app, #apple-watch, #mash-mac) .step-num-ring path {
  vector-effect: non-scaling-stroke;
}

body:is(#mash-app, #apple-watch, #mash-mac) .step-title {
  margin: 0;
  font-family: var(--display);
  font-size: var(--step-3);
  font-weight: 500;
  font-variation-settings: "opsz" 72;
  line-height: 1.1;
  letter-spacing: -0.015em;
  color: var(--ink);
  text-wrap: balance;
}

body:is(#mash-app, #apple-watch, #mash-mac) .step-text {
  margin: var(--space-2xs) 0 0;
  font-size: var(--step-0);
  line-height: 1.55;
  color: var(--ink-soft);
  text-wrap: pretty;
}

/* The pen note under a step. */
body:is(#mash-app, #apple-watch, #mash-mac) .step-aside {
  display: inline-block;
  margin: var(--space-xs) 0 0;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.1;
  color: var(--gel-ink);
  rotate: -2.5deg;
  transform-origin: left center;
}

@media (max-width: 47.99rem) {
  body:is(#mash-app, #apple-watch, #mash-mac) .step-num {
    inline-size: 2.6rem;
    block-size: 2.6rem;
    font-size: var(--step-2);
  }

  body:is(#mash-app, #apple-watch, #mash-mac) .step-title {
    font-size: var(--step-2);
  }

  body:is(#mash-app, #apple-watch, #mash-mac) .step-text {
    font-size: var(--step--1);
  }

  body:is(#mash-app, #apple-watch, #mash-mac) .step-aside {
    font-size: var(--step-0);
  }
}

@media (prefers-reduced-motion: reduce) {
  body:is(#mash-app, #apple-watch, #mash-mac) .watch-img {
    transition: none;
  }
}

@media print {
  body:is(#mash-app, #apple-watch, #mash-mac) :is(.watch, .step-num-ring, .step-aside) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
  }
}

/* ===== app.css ===== */
/* ─── /app/ ────────────────────────────────────────────────────────────────────
   The iPhone and Apple Watch landing page. Every rule is scoped to
   body#mash-app. The sheets, notes, tape, heads, and buttons live in
   paper.css, and the watch and step numbers in app-kit.css. Like paper.css, tilts and lifts use the individual
   rotate/translate properties so /js/app.js can animate `transform` on the
   same elements. */

body#mash-app .app-page [id] {
  scroll-margin-block-start: var(--space-m);
}

@media (prefers-reduced-motion: no-preference) {
  html:has(body#mash-app) {
    scroll-behavior: smooth;
  }
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#mash-app .app-hero-actions {
  margin-block-start: var(--space-l);
}

/* Puts the arrow's tip under the middle of "Get it on the App Store". */
body#mash-app .app-hero-note {
  margin-inline-start: 7.75rem;
}

/* Three prints of the app, fanned like photos dealt onto the desk. The slots
   hold the fan's placement, and /js/app.js widens it by scrubbing --spread
   from 0 to 1. The prints inside carry the tape and the intro, so the two
   never write the same transform. */
body#mash-app .app-fan {
  --print: clamp(9.5rem, 7rem + 7vw, 13rem);
  --spread: 0;
  display: grid;
  place-items: center;
  padding-block: var(--space-m) var(--space-l);
}

body#mash-app .app-fan-slot {
  grid-area: 1 / 1;
  inline-size: var(--print);
}

body#mash-app .app-fan-slot--left {
  translate: calc(-58% - 16% * var(--spread)) calc(5% - 4% * var(--spread));
  rotate: calc(-9deg - 6deg * var(--spread));
}

body#mash-app .app-fan-slot--right {
  translate: calc(58% + 16% * var(--spread)) calc(8% - 4% * var(--spread));
  rotate: calc(8deg + 6deg * var(--spread));
}

body#mash-app .app-fan-slot--front {
  z-index: 1;
  translate: 0 calc(-7% * var(--spread));
  rotate: calc(-1.5deg + 3.5deg * var(--spread));
}

body#mash-app .app-print {
  position: relative;
  padding: 0.45rem;
  border-radius: 3px;
  background: #fff;
  box-shadow: var(--paper-lift);
}

body#mash-app .app-fan-slot:not(.app-fan-slot--front) .app-print {
  scale: 0.9;
}

body#mash-app .app-print img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  margin: 0;
  border-radius: 2px;
}

body#mash-app .app-fan .paper-doodle--star {
  inset-block-start: 0.4rem;
  inset-inline-end: 8%;
}

body#mash-app .app-fan .paper-doodle--star-sm {
  inset-block-start: 3.6rem;
  inset-inline-end: 4%;
}

body#mash-app .app-fan .paper-doodle--heart {
  inset-block-end: 0.6rem;
  inset-inline-start: 10%;
  inset-inline-end: auto;
}

/* The shared hero hangs its photo off the sheet. The fan needs the column. */
@media (min-width: 62rem) {
  body#mash-app .app-hero.paper-hero .paper-art {
    margin-inline-end: 0;
  }
}

/* ─── 2. How a game goes ─────────────────────────────────────────────────────
   Notebook paper: blue rules and, from tablet width, the red margin line. */

body#mash-app .app-ruled {
  --line: 2rem;
  background-image: repeating-linear-gradient(to bottom, transparent 0 calc(var(--line) - 1px), rgb(188 213 243 / 0.55) calc(var(--line) - 1px) var(--line));
}

@media (min-width: 48rem) {
  body#mash-app .app-ruled {
    --margin: calc(var(--sheet-pad) + 0.5rem);
    padding-inline-start: calc(var(--margin) + var(--space-m));
    background-image:
      linear-gradient(90deg, transparent var(--margin), var(--margin-line) var(--margin) calc(var(--margin) + 2px), transparent calc(var(--margin) + 2px)),
      repeating-linear-gradient(to bottom, transparent 0 calc(var(--line) - 1px), rgb(188 213 243 / 0.55) calc(var(--line) - 1px) var(--line));
  }
}

body#mash-app .app-steps-list {
  display: grid;
  gap: var(--space-xl);
  margin: var(--space-xl) 0 0;
  padding: 0;
  list-style: none;
}

/* Phones keep the screenshot beside its step, narrow, so the list reads as
   four short rows instead of four tall pictures. */
body#mash-app .app-step {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: var(--space-s);
  align-items: center;
  margin: 0;
}

@media (min-width: 48rem) {
  body#mash-app .app-step {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--space-xl);
  }

  body#mash-app .app-step:nth-child(even) .app-step-media {
    order: 2;
  }
}

/* /js/app.js slides the wrapper in, so the shot keeps its CSS tilt and
   hover straightening. */
body#mash-app .app-step-media {
  display: grid;
  justify-items: center;
}

body#mash-app .app-step-shot {
  position: relative;
  inline-size: min(100%, 12.5rem);
  margin: 0;
  padding: 0.45rem;
  border-radius: 3px;
  background: #fff;
  box-shadow: var(--paper-shadow);
  rotate: var(--tilt, -2deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring),
    box-shadow 0.45s var(--ease-spring);
}

body#mash-app .app-step:hover .app-step-shot {
  rotate: 0deg;
  translate: 0 -0.35rem;
  box-shadow: var(--paper-lift);
}

body#mash-app .app-step-shot img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  margin: 0;
  border-radius: 2px;
}

body#mash-app .app-step-copy {
  max-inline-size: 26rem;
}

@media (min-width: 48rem) {
  body#mash-app .app-step:nth-child(even) .app-step-copy {
    justify-self: end;
  }
}

/* ─── 3. Apple Watch ─────────────────────────────────────────────────────────
   The watch itself is in app-kit.css. */

body#mash-app .app-watch {
  display: grid;
  gap: var(--space-xl);
  align-items: center;
}

@media (min-width: 56rem) {
  body#mash-app .app-watch {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
}

body#mash-app .app-watch .paper-intro + .paper-intro {
  margin-block-start: var(--space-xs);
}

body#mash-app .app-watch-stage {
  position: relative;
  display: grid;
  justify-items: center;
  gap: var(--space-l);
}

body#mash-app .app-watch-caption {
  margin-block-start: var(--space-xs);
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.1;
  color: var(--pen);
  rotate: -2deg;
}

/* Only shown beside the copy, where there's room next to the top strap for
   the arrow to curl down to the crown. */
body#mash-app .app-watch-note {
  display: none;
}

@media (min-width: 56rem) {
  body#mash-app .app-watch-note {
    display: flex;
    position: absolute;
    z-index: 2;
    inset-block-start: 3.4rem;
    inset-inline-start: calc(50% + 6.6rem);
    flex-direction: column;
    align-items: flex-start;
    inline-size: 8rem;
    margin: 0;
    font-size: var(--step-0);
    rotate: 4deg;
  }

  body#mash-app .app-watch-note svg {
    order: 0;
    margin: 0.15rem 0 0 0.65rem;
    scale: 1 -1;
  }
}

body#mash-app .app-watch-picker {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-2xs);
}

body#mash-app .app-watch-picker[hidden] {
  display: none;
}

/* A small cousin of .paper-btn: the same raised edge and press, in the
   pen's blue when it's the screen on show. */
body#mash-app .app-chip {
  --chip-bg: #fff;
  --chip-ink: var(--ink);
  --chip-edge: var(--ink);
  min-block-size: 2.5rem;
  padding: 0.45rem 0.95rem;
  font-family: var(--sans);
  font-size: var(--step--1);
  font-weight: 600;
  line-height: 1.1;
  color: var(--chip-ink);
  background: var(--chip-bg);
  border: 2px solid var(--chip-edge);
  border-radius: 999px;
  box-shadow: 0 0.2rem 0 var(--chip-edge);
  cursor: pointer;
  touch-action: manipulation;
  -webkit-tap-highlight-color: transparent;
  transition:
    background-color var(--dur-fast) ease,
    color var(--dur-fast) ease,
    box-shadow var(--dur-fast) var(--ease-spring),
    translate var(--dur-fast) var(--ease-spring);
}

body#mash-app .app-chip:hover {
  --chip-bg: color-mix(in oklab, var(--highlight) 38%, #fff);
}

body#mash-app .app-chip:active {
  translate: 0 0.15rem;
  box-shadow: 0 0.05rem 0 var(--chip-edge);
}

body#mash-app .app-chip[aria-pressed="true"] {
  --chip-bg: var(--blue);
  --chip-ink: #fff;
  --chip-edge: var(--blue-deep);
}

body#mash-app .app-chip:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

/* ─── 4. Get the app ─────────────────────────────────────────────────────── */

body#mash-app .app-get-body {
  display: grid;
  gap: var(--space-xl);
  align-items: center;
}

@media (min-width: 48rem) {
  body#mash-app .app-get-body {
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 0.6fr);
  }
}

body#mash-app .app-get .paper-head {
  margin-block-end: var(--space-m);
}

body#mash-app .app-get-art {
  display: grid;
  justify-items: center;
}

body#mash-app .app-get-card {
  --card: var(--paper);
  --tape: var(--tape-yellow);
  display: flex;
  flex-direction: column;
  align-items: center;
  inline-size: min(100%, 14rem);
  padding: 1.4rem 1rem 1.1rem;
  color: var(--ink);
  text-align: center;
  text-decoration: none;
  border: 0;
  rotate: 3deg;
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#mash-app .app-get-card:hover {
  color: var(--ink);
  rotate: 0deg;
  translate: 0 -0.4rem;
}

body#mash-app .app-get-card:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.35rem;
}

body#mash-app .app-get-icon {
  display: block;
  inline-size: 7rem;
  block-size: 7rem;
  margin: 0 0 0.7rem;
  border-radius: 1.6rem;
  box-shadow: 0 0.4rem 0.9rem rgb(60 40 0 / 0.22);
}

body#mash-app .app-get-name {
  font-family: var(--hand);
  font-size: var(--step-2);
  font-weight: 700;
  line-height: 1;
}

body#mash-app .app-get-sub {
  margin-block-start: 0.35rem;
  font-size: var(--step--1);
  line-height: 1.35;
  color: var(--ink-soft);
}

/* A round price sticker slapped on the card's corner. */
body#mash-app .app-get-sticker {
  position: absolute;
  z-index: 3;
  inset-block-start: -1.1rem;
  inset-inline-end: -1.2rem;
  display: grid;
  place-items: center;
  inline-size: 4rem;
  block-size: 4rem;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1;
  color: var(--ink);
  background: var(--highlight);
  border: 2px solid var(--ink);
  border-radius: 50%;
  box-shadow: 0 0.2rem 0 var(--ink);
  rotate: 14deg;
}

body#mash-app .app-get-share {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(255 255 255 / 0.3);
}

body#mash-app .app-get-share-label {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  color: var(--highlight);
}

body#mash-app .app-get-share .social-widgets-container {
  margin-block: var(--space-2xs) 0;
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body#mash-app .app-hero-note {
    display: none;
  }

  body#mash-app .app-fan {
    --print: 8.75rem;
  }

  body#mash-app .app-watch-picker:not([hidden]) {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    inline-size: min(100%, 17rem);
  }
}

@media (prefers-reduced-motion: reduce) {
  body#mash-app :is(.app-step-shot, .app-chip, .app-get-card) {
    transition: none;
  }
}

@media print {
  body#mash-app :is(.app-hero-actions, .app-watch-picker, .app-watch-note, .app-get-share, .app-get-sticker) {
    display: none !important;
  }

  body#mash-app :is(.app-fan-slot, .app-print, .app-step-media, .app-step-shot, .app-get-art, .app-get-card) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
  }

  body#mash-app .app-ruled {
    background-image: none;
  }
}

/* ===== apple-watch.css ===== */
/* ─── /apple-watch/ ────────────────────────────────────────────────────────────
   The Apple Watch page. Every rule is scoped to body#apple-watch. The sheets,
   notes, tape, heads, and buttons live in paper.css, and the drawn watch and
   the numbered steps in app-kit.css. Like paper.css, tilts and lifts use the
   individual rotate/translate properties so /js/apple-watch.js can animate
   `transform` on the same elements. */

body#apple-watch .aw-page [id] {
  scroll-margin-block-start: var(--space-m);
}

@media (prefers-reduced-motion: no-preference) {
  html:has(body#apple-watch) {
    scroll-behavior: smooth;
  }
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#apple-watch .aw-hero-actions {
  margin-block-start: var(--space-l);
}

/* A little more room for the copy than the shared hero gives, so both
   buttons fit on one line. */
@media (min-width: 62rem) {
  body#apple-watch .aw-hero.paper-hero {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
  }
}

/* Puts the arrow's tip under the middle of "Get it on the App Store". */
body#apple-watch .aw-hero-note {
  margin-inline-start: 7.75rem;
}

/* ─── 2. How a round goes ────────────────────────────────────────────────────
   Without the script, or on narrow screens, every stop carries its own small
   watch. From 56rem the script adds .is-rigged: the small watches go, and one
   big watch rides along in a sticky column, showing the stop being read. */

body#apple-watch .aw-stops {
  display: grid;
  gap: var(--space-xl);
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#apple-watch .aw-stop {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: var(--space-s);
  align-items: center;
  margin: 0;
}

@media (min-width: 48rem) {
  body#apple-watch .aw-stop {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    gap: var(--space-xl);
  }

  body#apple-watch .aw-stop:nth-child(even) .aw-stop-media {
    order: 2;
  }

  body#apple-watch .aw-stop:nth-child(even) .aw-stop-copy {
    justify-self: end;
  }
}

/* /js/apple-watch.js slides the wrapper in, so the watch keeps its tilt. */
body#apple-watch .aw-stop-media {
  display: grid;
  justify-items: center;
}

body#apple-watch .aw-stop-watch {
  --watch-size: clamp(7rem, 4rem + 9vw, 11rem);
  rotate: -4deg;
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#apple-watch .aw-stop:nth-child(even) .aw-stop-watch {
  rotate: 4deg;
}

body#apple-watch .aw-stop:hover .aw-stop-watch {
  rotate: 0deg;
  translate: 0 -0.35rem;
}

body#apple-watch .aw-stop-copy {
  max-inline-size: 26rem;
}

body#apple-watch .aw-rig {
  --rig-watch: clamp(12.5rem, 6rem + 8vw, 15.5rem);
  display: none;
}

@media (min-width: 56rem) {
  body#apple-watch .aw-round.is-rigged .aw-round-body {
    display: grid;
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
    gap: var(--space-xl);
    align-items: start;
  }

  body#apple-watch .aw-round.is-rigged .aw-stops {
    gap: 0;
    margin-block-start: 0;
  }

  body#apple-watch .aw-round.is-rigged .aw-stop {
    display: flex;
    min-block-size: 62vh;
  }

  body#apple-watch .aw-round.is-rigged .aw-stop-media {
    display: none;
  }

  body#apple-watch .aw-round.is-rigged .aw-stop-copy {
    opacity: 0.3;
    transition: opacity 0.4s ease;
  }

  body#apple-watch .aw-round.is-rigged .aw-stop.is-current .aw-stop-copy {
    opacity: 1;
  }

  body#apple-watch .aw-round.is-rigged .aw-rig {
    position: sticky;
    inset-block-start: max(var(--space-l), calc(50vh - 17rem));
    display: grid;
    justify-items: center;
    padding-block: var(--space-m);
  }
}

body#apple-watch .aw-rig-watch {
  --watch-size: var(--rig-watch);
}

body#apple-watch .aw-rig-caption {
  margin-block-start: var(--space-s);
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.1;
  color: var(--pen);
  rotate: -2deg;
}

/* Written over the crown on the spiral stop, with the arrow curling down
   onto it. */
body#apple-watch .aw-rig-note {
  position: absolute;
  z-index: 2;
  inset-block-start: calc(var(--rig-watch) * 0.46);
  inset-inline-start: calc(50% + var(--rig-watch) / 2 + 0.55rem);
  flex-direction: column;
  inline-size: auto;
  margin: 0;
  font-size: var(--step-0);
  white-space: nowrap;
  opacity: 0;
  translate: 0 -0.5rem;
  transition:
    opacity 0.3s ease,
    translate 0.45s var(--ease-spring);
}

body#apple-watch .aw-rig-note svg {
  order: 0;
  margin: 0.1rem 0 0;
  scale: 1 -1;
}

body#apple-watch .aw-rig[data-at="2"] .aw-rig-note {
  opacity: 1;
  translate: 0 0;
}

/* ─── 3. What fits on the watch ──────────────────────────────────────────── */

body#apple-watch .aw-fit-notes {
  display: grid;
  gap: var(--space-xl);
  max-inline-size: 52rem;
  margin: var(--space-l) auto 0;
}

@media (min-width: 48rem) {
  body#apple-watch .aw-fit-notes {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  }
}

body#apple-watch .aw-fit-note {
  max-inline-size: none;
}

body#apple-watch .aw-fit-note + .aw-fit-note {
  rotate: 1.4deg;
}

body#apple-watch .aw-fit-title {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-2);
  font-weight: 700;
  line-height: 1.1;
  color: var(--ink);
}

body#apple-watch .aw-fit-list {
  display: grid;
  margin: var(--space-s) 0 0;
  padding: 0;
  list-style: none;
}

body#apple-watch .aw-fit-list li {
  display: grid;
  grid-template-columns: 1.5rem minmax(0, 1fr);
  gap: 0.55rem;
  align-items: start;
  margin: 0;
  padding-block: 0.55rem;
  font-size: var(--step-0);
  line-height: 1.4;
  color: var(--ink);
  border-block-end: 1px dashed rgb(60 40 0 / 0.18);
}

body#apple-watch .aw-fit-list li:last-child {
  border-block-end: 0;
}

body#apple-watch .aw-check {
  inline-size: 1.5rem;
  block-size: 1.5rem;
  margin-block-start: -0.1rem;
  overflow: visible;
  fill: none;
  stroke: var(--marker);
  stroke-width: 3;
  stroke-linecap: round;
  stroke-linejoin: round;
}

body#apple-watch .paper-note--blue .aw-check {
  stroke: var(--pen);
}

/* ─── 4. Put MASH on your watch ──────────────────────────────────────────── */

body#apple-watch .aw-get-body {
  display: grid;
  gap: var(--space-xl);
  align-items: center;
}

@media (min-width: 48rem) {
  body#apple-watch .aw-get-body {
    grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr);
  }
}

body#apple-watch .aw-get .paper-head {
  margin-block-end: var(--space-m);
}

body#apple-watch .aw-install {
  display: grid;
  gap: var(--space-s);
  margin: 0 0 var(--space-l);
  padding: 0;
  list-style: none;
}

body#apple-watch .aw-install-step {
  display: grid;
  grid-template-columns: 2.25rem minmax(0, 1fr);
  gap: var(--space-xs);
  align-items: center;
  margin: 0;
  font-size: var(--step-0);
  line-height: 1.45;
  color: #fff;
}

/* Yellow stickers numbered by hand, each stuck on a little crooked. */
body#apple-watch .aw-install-num {
  display: grid;
  place-items: center;
  inline-size: 2.25rem;
  block-size: 2.25rem;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1;
  color: var(--ink);
  background: var(--highlight);
  border: 2px solid var(--ink);
  border-radius: 50%;
  box-shadow: 0 0.18rem 0 var(--blue-deep);
  rotate: -6deg;
}

body#apple-watch .aw-install-step:nth-child(even) .aw-install-num {
  rotate: 5deg;
}

body#apple-watch .aw-install a {
  color: #fff;
  text-decoration: underline;
  text-decoration-color: var(--highlight);
  text-decoration-thickness: 2px;
  text-underline-offset: 0.2em;
}

body#apple-watch .aw-install a:hover {
  color: var(--highlight);
}

body#apple-watch .aw-clips {
  display: grid;
  gap: var(--space-l);
  justify-items: center;
}

body#apple-watch .aw-clips-label {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1;
  color: var(--highlight);
  rotate: -3deg;
}

body#apple-watch .aw-clip {
  --card: var(--paper);
  display: grid;
  gap: 0.2rem;
  inline-size: min(100%, 16.5rem);
  padding: 1.35rem 1.1rem 1rem;
  color: var(--ink);
  text-decoration: none;
  border: 0;
  rotate: -2.5deg;
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#apple-watch .aw-clip + .aw-clip {
  rotate: 2deg;
  translate: 1.25rem 0;
}

body#apple-watch .aw-clip:hover {
  color: var(--ink);
  rotate: 0deg;
  translate: 0 -0.35rem;
}

body#apple-watch .aw-clip:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.35rem;
}

body#apple-watch .aw-clip-version {
  font-family: var(--display);
  font-size: var(--step-3);
  font-weight: 600;
  font-variation-settings: "opsz" 72;
  line-height: 1;
  letter-spacing: -0.02em;
  color: var(--pen);
}

body#apple-watch .aw-clip-date {
  font-size: var(--step--1);
  font-weight: 600;
  color: var(--ink-soft);
}

body#apple-watch .aw-clip-text {
  margin-block-start: 0.35rem;
  font-size: var(--step--1);
  line-height: 1.45;
}

body#apple-watch .aw-clip-more {
  display: inline-flex;
  align-items: center;
  gap: 0.3rem;
  margin-block-start: 0.45rem;
  font-size: var(--step--1);
  font-weight: 600;
  color: var(--pen);
}

body#apple-watch .aw-clip .paper-btn-icon {
  transition: translate var(--dur-fast) var(--ease-spring);
}

body#apple-watch .aw-clip:hover .paper-btn-icon {
  translate: 0.2rem 0;
}

body#apple-watch .aw-share {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(255 255 255 / 0.3);
}

body#apple-watch .aw-share-label {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  color: var(--highlight);
}

body#apple-watch .aw-share .social-widgets-container {
  margin-block: var(--space-2xs) 0;
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body#apple-watch .aw-hero-note {
    display: none;
  }

  body#apple-watch .aw-clip + .aw-clip {
    translate: 0 0;
  }
}

@media (prefers-reduced-motion: reduce) {
  body#apple-watch :is(.aw-stop-watch, .aw-stop-copy, .aw-rig-note, .aw-clip) {
    transition: none !important;
  }
}

@media print {
  body#apple-watch :is(.aw-hero-actions, .aw-rig, .aw-share) {
    display: none !important;
  }

  body#apple-watch :is(.aw-stop-media, .aw-stop-watch, .aw-fit-note, .aw-install-num, .aw-clips, .aw-clip) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
  }
}

/* ===== mac.css ===== */
/* ─── /mash-for-mac/ ───────────────────────────────────────────────────────────
   The Mac page. Every rule is scoped to body#mash-mac. The sheets, cards,
   tape, heads, and buttons live in paper.css, and the numbered steps in
   app-kit.css. Like paper.css, tilts and lifts use the individual
   rotate/translate properties so /js/mac.js can animate `transform` on the
   same elements, and the laptop lid and window size are custom properties so
   the script can drive them without owning the element's transform. */

body#mash-mac .mac-page [id] {
  scroll-margin-block-start: var(--space-m);
}

@media (prefers-reduced-motion: no-preference) {
  html:has(body#mash-mac) {
    scroll-behavior: smooth;
  }
}

/* ─── 1. Hero ────────────────────────────────────────────────────────────── */

body#mash-mac .mac-hero-actions {
  margin-block-start: var(--space-l);
}

@media (min-width: 62rem) {
  body#mash-mac .mac-hero.paper-hero {
    grid-template-columns: minmax(0, 1.2fr) minmax(0, 0.8fr);
  }
}

/* Puts the arrow's tip under the middle of "Get it for $4.99". */
body#mash-mac .mac-hero-note {
  margin-inline-start: 5.75rem;
}

/* ─── 2. How a game goes ─────────────────────────────────────────────────────
   Without the script, or on narrow screens, every stop carries its own taped
   screenshot. From 56rem the script adds .is-rigged: the screenshots go, and
   a laptop rides along in a sticky column, showing the stop being read. */

body#mash-mac .mac-stops {
  display: grid;
  gap: var(--space-xl);
  margin: var(--space-l) 0 0;
  padding: 0;
  list-style: none;
}

body#mash-mac .mac-stop {
  display: grid;
  gap: var(--space-m);
  margin: 0;
}

@media (min-width: 48rem) {
  body#mash-mac .mac-stop {
    grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr);
    gap: var(--space-xl);
    align-items: center;
  }

  body#mash-mac .mac-stop:nth-child(even) {
    grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr);
  }

  body#mash-mac .mac-stop:nth-child(even) .mac-stop-media {
    order: 2;
  }
}

/* /js/mac.js slides the wrapper in, so the print keeps its tilt. */
body#mash-mac .mac-stop-media {
  display: grid;
  justify-items: center;
}

body#mash-mac .mac-shot {
  position: relative;
  inline-size: min(100%, 26rem);
  margin: 0;
  padding: 0.45rem;
  border-radius: 3px;
  background: #fff;
  box-shadow: var(--paper-shadow);
  rotate: var(--tilt, -2deg);
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring),
    box-shadow 0.45s var(--ease-spring);
}

body#mash-mac .mac-stop:hover .mac-shot {
  rotate: 0deg;
  translate: 0 -0.35rem;
  box-shadow: var(--paper-lift);
}

body#mash-mac .mac-shot img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  margin: 0;
  border-radius: 2px;
}

body#mash-mac .mac-stop-copy {
  max-inline-size: 26rem;
}

body#mash-mac .mac-rig {
  display: none;
}

@media (min-width: 56rem) {
  body#mash-mac .mac-game.is-rigged .mac-game-body {
    display: grid;
    grid-template-columns: minmax(0, 0.85fr) minmax(0, 1.15fr);
    gap: var(--space-xl);
    align-items: start;
  }

  body#mash-mac .mac-game.is-rigged .mac-stops {
    gap: 0;
    margin-block-start: 0;
  }

  body#mash-mac .mac-game.is-rigged .mac-stop {
    display: flex;
    min-block-size: 60vh;
    align-items: center;
  }

  body#mash-mac .mac-game.is-rigged .mac-stop-media {
    display: none;
  }

  body#mash-mac .mac-game.is-rigged .mac-stop-copy {
    opacity: 0.3;
    transition: opacity 0.4s ease;
  }

  body#mash-mac .mac-game.is-rigged .mac-stop.is-current .mac-stop-copy {
    opacity: 1;
  }

  body#mash-mac .mac-game.is-rigged .mac-rig {
    position: sticky;
    inset-block-start: max(var(--space-l), calc(50vh - 12rem));
    display: grid;
    justify-items: center;
    padding-block: var(--space-m);
  }
}

/* A MacBook drawn in CSS around the screenshots. The lid hinges on its
   bottom edge; /js/mac.js swings it open by scrubbing --lid. */
body#mash-mac .mac-laptop {
  --lid: 0deg;
  position: relative;
  display: grid;
  justify-items: center;
  inline-size: min(100%, 32rem);
  margin: 0;
  perspective: 1600px;
  perspective-origin: 50% 20%;
}

body#mash-mac .mac-lid {
  position: relative;
  z-index: 1;
  inline-size: 88%;
  padding: 3% 3% 3.4%;
  border-radius: 0.95rem 0.95rem 0.25rem 0.25rem;
  background: linear-gradient(#2c2e33, #121316);
  box-shadow:
    inset 0 0 0 2px #5a5d64,
    inset 0 0 0 3px #1a1b1e;
  transform-origin: 50% 100%;
  rotate: x var(--lid);
}

/* The camera. */
body#mash-mac .mac-lid::before {
  content: "";
  position: absolute;
  inset-block-start: 1.1%;
  inset-inline-start: 50%;
  inline-size: 0.3rem;
  block-size: 0.3rem;
  border-radius: 50%;
  background: #3b3e45;
  translate: -50% 0;
}

body#mash-mac .mac-screen {
  display: grid;
  overflow: hidden;
  aspect-ratio: 626 / 391;
  border-radius: 0.2rem;
  background: #000;
}

body#mash-mac .mac-img {
  grid-area: 1 / 1;
  inline-size: 100%;
  block-size: 100%;
  margin: 0;
  object-fit: cover;
  opacity: 0;
  scale: 1.03;
  transition:
    opacity 0.35s ease,
    scale 0.5s var(--ease-spring);
}

body#mash-mac .mac-img.is-shown {
  opacity: 1;
  scale: 1;
}

/* The keyboard deck seen edge-on, with the thumb notch. */
body#mash-mac .mac-base {
  position: relative;
  display: block;
  inline-size: 100%;
  block-size: clamp(0.75rem, 0.4rem + 1vw, 1.1rem);
  margin-block-start: -1px;
  border-radius: 0.2rem 0.2rem 1rem 1rem / 0.2rem 0.2rem 0.7rem 0.7rem;
  background: linear-gradient(#eef0f3, #c3c7ce 60%, #8f949d);
  box-shadow: 0 1.6rem 2.2rem -1.2rem rgb(12 34 78 / 0.55);
}

body#mash-mac .mac-base::before {
  content: "";
  position: absolute;
  inset-block-start: 0;
  inset-inline-start: 50%;
  inline-size: 15%;
  block-size: 45%;
  border-radius: 0 0 0.5rem 0.5rem;
  background: linear-gradient(#b7bbc3, #d4d7dd);
  translate: -50% 0;
}

body#mash-mac .mac-rig-caption {
  margin-block-start: var(--space-s);
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.1;
  color: var(--pen);
  rotate: -2deg;
}

/* ─── 3. What's new in 2.0 ───────────────────────────────────────────────── */

/* A window you can resize. The dashed outline is its full size, and the
   window scales from the top-left corner inside it, the way a Mac window
   grows from its corner. /js/mac.js sets --size from the grip or the scroll. */
body#mash-mac .mac-resize {
  --size: 1;
  position: relative;
  inline-size: min(100%, 36rem);
  margin: var(--space-l) auto 0;
}

body#mash-mac .mac-resize-stage {
  position: relative;
  aspect-ratio: 626 / 391;
}

body#mash-mac .mac-resize-stage::before {
  content: "";
  position: absolute;
  inset: -0.4rem;
  border: 2px dashed rgb(42 63 174 / 0.3);
  border-radius: 0.9rem;
  pointer-events: none;
}

body#mash-mac .mac-resize-win {
  position: relative;
  inline-size: calc(var(--size) * 100%);
  line-height: 0;
  border-radius: 0.6rem;
  box-shadow: var(--paper-lift);
}

body#mash-mac .mac-resize-win img {
  display: block;
  inline-size: 100%;
  block-size: auto;
  margin: 0;
  border-radius: 0.6rem;
}

body#mash-mac .mac-resize-grip {
  position: absolute;
  inset-inline-end: -0.9rem;
  inset-block-end: -0.9rem;
  display: grid;
  place-items: center;
  inline-size: 2.5rem;
  block-size: 2.5rem;
  background: var(--highlight);
  border: 2px solid var(--ink);
  border-radius: 50%;
  box-shadow: 0 0.2rem 0 var(--ink);
  cursor: nwse-resize;
  touch-action: none;
  transition:
    background-color var(--dur-fast) ease,
    box-shadow var(--dur-fast) var(--ease-spring),
    translate var(--dur-fast) var(--ease-spring);
}

body#mash-mac .mac-resize-grip[hidden] {
  display: none;
}

body#mash-mac .mac-resize-grip:hover {
  background: color-mix(in oklab, var(--highlight) 70%, #fff);
}

body#mash-mac .mac-resize-grip:active,
body#mash-mac .mac-resize-grip.is-dragging {
  translate: 0 0.15rem;
  box-shadow: 0 0.05rem 0 var(--ink);
}

body#mash-mac .mac-resize-grip:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 3px;
}

body#mash-mac .mac-resize-grip svg {
  inline-size: 1.15rem;
  block-size: 1.15rem;
  fill: none;
  stroke: var(--ink);
  stroke-width: 2.2;
  stroke-linecap: round;
}

/* Under the window's right edge, with the arrow curling up at the grip. */
body#mash-mac .mac-resize-note {
  justify-content: flex-end;
  margin: 1.4rem 1.6rem 0 0;
  font-size: var(--step-0);
  rotate: -2deg;
}

body#mash-mac .mac-resize-note[hidden] {
  display: none;
}

body#mash-mac .mac-resize-note svg {
  order: 1;
  scale: -1 1;
}

body#mash-mac .mac-cards {
  display: grid;
  gap: var(--space-l) var(--space-m);
  margin: var(--space-xl) 0 0;
  padding: 0;
  list-style: none;
}

@media (min-width: 37.5rem) {
  body#mash-mac .mac-cards {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (min-width: 62rem) {
  body#mash-mac .mac-cards {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }
}

/* /js/mac.js drops the slot in, so the card keeps its tilt. */
body#mash-mac .mac-card-slot {
  margin: 0;
}

body#mash-mac .mac-card {
  box-sizing: border-box;
  block-size: 100%;
  padding: var(--space-m) var(--space-s) var(--space-s);
  rotate: -1.5deg;
}

body#mash-mac .mac-card-slot:nth-child(even) .mac-card {
  rotate: 1.8deg;
}

body#mash-mac .mac-card-slot:nth-child(3) .mac-card {
  rotate: 0.8deg;
}

body#mash-mac .mac-card-title {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  line-height: 1.1;
  color: var(--ink);
}

body#mash-mac .mac-card-text {
  margin: var(--space-2xs) 0 0;
  font-size: var(--step--1);
  line-height: 1.5;
  color: var(--ink-soft);
}

body#mash-mac .mac-keys {
  margin-block-start: var(--space-xl);
  padding-block-start: var(--space-m);
  text-align: center;
  border-block-start: 2px dashed rgb(60 40 0 / 0.16);
}

body#mash-mac .mac-keys-label {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-1);
  font-weight: 700;
  color: var(--gel-ink);
}

body#mash-mac .mac-keys-list {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--space-m) var(--space-xl);
  margin: var(--space-s) 0 0;
  padding: 0;
  list-style: none;
}

body#mash-mac .mac-shortcut {
  display: grid;
  justify-items: center;
  gap: 0.45rem;
  margin: 0;
}

body#mash-mac .mac-combo {
  display: flex;
  gap: 0.35rem;
}

/* Keycaps: a pale cap on a darker skirt. /js/mac.js presses them. */
body#mash-mac .mac-key {
  display: inline-grid;
  place-items: center;
  min-inline-size: 2.75rem;
  block-size: 2.75rem;
  padding: 0 0.55rem;
  font-family: var(--sans);
  font-size: var(--step-1);
  font-weight: 600;
  line-height: 1;
  color: var(--ink);
  background: linear-gradient(#fff, #eceef2);
  border: 1px solid #c3c7cf;
  border-radius: 0.55rem;
  box-shadow:
    0 0.22rem 0 #a9aeb8,
    0 0.45rem 0.7rem -0.2rem rgb(0 0 0 / 0.22);
}

body#mash-mac .mac-shortcut-label {
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1.1;
  color: var(--pen);
}

/* ─── 4. Get MASH for Mac ────────────────────────────────────────────────── */

body#mash-mac .mac-get-body {
  display: grid;
  gap: var(--space-xl);
  align-items: center;
}

@media (min-width: 48rem) {
  body#mash-mac .mac-get-body {
    grid-template-columns: minmax(0, 1.4fr) minmax(0, 0.6fr);
  }
}

body#mash-mac .mac-get .paper-head {
  margin-block-end: var(--space-m);
}

body#mash-mac .mac-get .paper-intro a {
  color: #fff;
  text-decoration-color: var(--highlight);
}

body#mash-mac .mac-badge {
  display: inline-block;
  line-height: 0;
  border: 0;
  border-radius: 0.55rem;
  filter: drop-shadow(0 0.25rem 0 var(--blue-deep));
}

body#mash-mac .mac-badge img {
  display: block;
  inline-size: 13.4rem;
  block-size: auto;
  margin: 0;
}

body#mash-mac .mac-badge:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 5px;
}

body#mash-mac .mac-other {
  margin-block-start: var(--space-l);
}

body#mash-mac .mac-other-label {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  color: var(--highlight);
}

body#mash-mac .mac-other-list {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-xs);
  margin: var(--space-2xs) 0 0;
  padding: 0;
  list-style: none;
}

body#mash-mac .mac-other-list li {
  margin: 0;
}

body#mash-mac .mac-other-btn {
  min-block-size: 2.5rem;
  padding: 0.4rem 0.85rem;
  font-size: var(--step--1);
}

body#mash-mac .mac-get-art {
  display: grid;
  justify-items: center;
}

body#mash-mac .mac-get-card {
  --card: var(--paper);
  --tape: var(--tape-yellow);
  display: flex;
  flex-direction: column;
  align-items: center;
  inline-size: min(100%, 14rem);
  padding: 1.4rem 1rem 1.1rem;
  color: var(--ink);
  text-align: center;
  text-decoration: none;
  border: 0;
  rotate: 3deg;
  transition:
    rotate 0.45s var(--ease-spring),
    translate 0.45s var(--ease-spring);
}

body#mash-mac .mac-get-card:hover {
  color: var(--ink);
  rotate: 0deg;
  translate: 0 -0.4rem;
}

body#mash-mac .mac-get-card:focus-visible {
  outline: 3px solid var(--focus);
  outline-offset: 0.35rem;
}

body#mash-mac .mac-get-icon {
  display: block;
  inline-size: 7rem;
  block-size: 7rem;
  margin: 0 0 0.7rem;
  border-radius: 1.6rem;
  box-shadow: 0 0.4rem 0.9rem rgb(60 40 0 / 0.22);
}

body#mash-mac .mac-get-name {
  font-family: var(--hand);
  font-size: var(--step-2);
  font-weight: 700;
  line-height: 1;
}

body#mash-mac .mac-get-sub {
  margin-block-start: 0.35rem;
  font-size: var(--step--1);
  line-height: 1.35;
  color: var(--ink-soft);
}

/* A round price sticker slapped on the card's corner. */
body#mash-mac .mac-get-sticker {
  position: absolute;
  z-index: 3;
  inset-block-start: -1.2rem;
  inset-inline-end: -1.3rem;
  display: grid;
  place-items: center;
  inline-size: 4.4rem;
  block-size: 4.4rem;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  line-height: 1;
  color: var(--ink);
  background: var(--highlight);
  border: 2px solid var(--ink);
  border-radius: 50%;
  box-shadow: 0 0.2rem 0 var(--ink);
  rotate: 14deg;
}

body#mash-mac .mac-share {
  margin-block-start: var(--space-l);
  padding-block-start: var(--space-m);
  border-block-start: 2px dashed rgb(255 255 255 / 0.3);
}

body#mash-mac .mac-share-label {
  margin: 0;
  font-family: var(--hand);
  font-size: var(--step-0);
  font-weight: 700;
  color: var(--highlight);
}

body#mash-mac .mac-share .social-widgets-container {
  margin-block: var(--space-2xs) 0;
}

/* ─── Small screens ──────────────────────────────────────────────────────── */

@media (max-width: 37.49rem) {
  body#mash-mac .mac-hero-note {
    display: none;
  }

  body#mash-mac .mac-key {
    min-inline-size: 2.4rem;
    block-size: 2.4rem;
    font-size: var(--step-0);
  }
}

@media (prefers-reduced-motion: reduce) {
  body#mash-mac :is(.mac-shot, .mac-img, .mac-stop-copy, .mac-resize-grip, .mac-get-card) {
    transition: none !important;
  }
}

@media print {
  body#mash-mac :is(.mac-hero-actions, .mac-rig, .mac-resize-grip, .mac-resize-note, .mac-other, .mac-share, .mac-get-sticker) {
    display: none !important;
  }

  body#mash-mac :is(.mac-stop-media, .mac-shot, .mac-card-slot, .mac-card, .mac-get-art, .mac-get-card) {
    rotate: none !important;
    translate: none !important;
    transform: none !important;
    box-shadow: none !important;
  }
}

