@font-face{font-family:Source Sans 3;src:url("/fonts/source-sans-3-variable.ttf") format('truetype');font-style:normal;font-weight:200 900;font-display:swap}
@font-face{font-family:Fraunces;src:url("/fonts/fraunces-variable.ttf") format('truetype');font-style:normal;font-weight:100 900;font-display:swap}
:root,[data-season-theme=paper]{--surface:#f7f0e5;--raised:#fffaf2;--ink:#211d18;--muted:#6f665c;--rule:#d9cdc0;--accent:#b45c32;--soft:#edd9ca}
[data-season-theme=grove]{--surface:#eef3e9;--raised:#f9fcf6;--ink:#182019;--muted:#5d695c;--rule:#cbd8c5;--accent:#58744b;--soft:#d7e4d0}
[data-season-theme=tide]{--surface:#edf4f3;--raised:#f8fcfc;--ink:#162326;--muted:#5b6d70;--rule:#c8d9d9;--accent:#2c6d72;--soft:#d0e3e3}
[data-season-theme=dusk]{--surface:#f2ece8;--raised:#fcf8f6;--ink:#241f25;--muted:#6d626d;--rule:#d9cdcf;--accent:#8a5f58;--soft:#e4d4cf}
[data-season-appearance=dark][data-season-theme=paper]{--surface:#171512;--raised:#211e1a;--ink:#f5eee5;--muted:#b9aea2;--rule:#3a342d;--accent:#e8a176;--soft:#402b21}
[data-season-appearance=dark][data-season-theme=grove]{--surface:#111a15;--raised:#19241d;--ink:#e7f0e9;--muted:#a9b9ab;--rule:#304036;--accent:#a7c789;--soft:#263a2b}
[data-season-appearance=dark][data-season-theme=tide]{--surface:#10191c;--raised:#182326;--ink:#e3eef0;--muted:#a6b8bb;--rule:#2c3c40;--accent:#74b7ba;--soft:#20383b}
[data-season-appearance=dark][data-season-theme=dusk]{--surface:#17161b;--raised:#222027;--ink:#f0ebf2;--muted:#b8aebc;--rule:#3b3640;--accent:#d99a8d;--soft:#402d2d}
@media(prefers-color-scheme:dark){[data-season-appearance=system][data-season-theme=paper]{--surface:#171512;--raised:#211e1a;--ink:#f5eee5;--muted:#b9aea2;--rule:#3a342d;--accent:#e8a176;--soft:#402b21}[data-season-appearance=system][data-season-theme=grove]{--surface:#111a15;--raised:#19241d;--ink:#e7f0e9;--muted:#a9b9ab;--rule:#304036;--accent:#a7c789;--soft:#263a2b}[data-season-appearance=system][data-season-theme=tide]{--surface:#10191c;--raised:#182326;--ink:#e3eef0;--muted:#a6b8bb;--rule:#2c3c40;--accent:#74b7ba;--soft:#20383b}[data-season-appearance=system][data-season-theme=dusk]{--surface:#17161b;--raised:#222027;--ink:#f0ebf2;--muted:#b8aebc;--rule:#3b3640;--accent:#d99a8d;--soft:#402d2d}}
*{box-sizing:border-box}html{background:var(--surface);color:var(--ink);font-size:17px}body{margin:0;font-family:"Source Sans 3",system-ui,sans-serif;background:var(--surface);color:var(--ink);line-height:1.5;min-height:100vh}a{color:inherit;text-decoration:none}h1,h2,h3,.hero-count strong,.preview-count strong,.season-row>strong,.wordmark{font-family:Fraunces,Georgia,serif}h1{font-size:clamp(2.4rem,7vw,5rem);line-height:.98;letter-spacing:-.035em;margin:.3em 0}h2{font-size:clamp(1.55rem,3vw,2.35rem);line-height:1.08}p{margin:.5em 0}.seasons-header{border-bottom:1px solid var(--rule);position:sticky;top:0;background:color-mix(in srgb,var(--surface) 88%,transparent);backdrop-filter:blur(14px);z-index:10}.seasons-nav{max-width:1120px;margin:auto;padding:14px 24px;display:flex;align-items:center;justify-content:space-between;gap:24px}.wordmark{font-weight:700;font-size:1.35rem}.nav-links{display:flex;align-items:center;gap:22px}.nav-links a[aria-current=page]{color:var(--accent)}.button{display:inline-flex;justify-content:center;align-items:center;border:0;border-radius:12px;padding:14px 22px;background:var(--ink);color:var(--surface);font:700 1rem "Source Sans 3";cursor:pointer}.button:hover{opacity:.86}.button-small{padding:9px 14px;font-size:.9rem}.text-link,.text-button{color:var(--accent);font-weight:700}.text-button{background:none;border:0;padding:0;font:inherit;cursor:pointer}.flash{max-width:720px;margin:18px auto 0;padding:12px 18px;border:1px solid var(--accent);border-radius:12px;background:var(--soft)}.flash-alert,.errors{border-color:#a04444}.landing-hero,.landing-section,.app-page,.composer-page{max-width:980px;margin:0 auto;padding:clamp(60px,9vw,120px) 24px}.landing-hero>.lede{max-width:680px;font-size:1.25rem;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.16em;font-size:.76rem;font-weight:800;color:var(--accent)}.hero-actions{display:flex;align-items:center;gap:24px;margin:32px 0 54px}.product-preview{max-width:700px;background:var(--raised);border:1px solid var(--rule);border-radius:28px;padding:clamp(28px,6vw,60px);box-shadow:0 28px 80px color-mix(in srgb,var(--ink) 9%,transparent)}.hero-count{font-size:clamp(1.5rem,4vw,2.4rem);color:var(--accent)}.hero-count strong{font-size:clamp(4rem,13vw,8rem);line-height:.8}.product-preview h2,.season-hero h1,.detail-header h1{margin:.4em 0}.product-preview blockquote,.season-hero blockquote,.detail-section blockquote{margin:28px 0 0;padding:18px;border-radius:14px;background:var(--soft);font-size:1.08rem}.product-preview blockquote span,.season-hero blockquote span{display:block;text-transform:uppercase;letter-spacing:.14em;font-size:.7rem;font-weight:800;color:var(--muted);margin-bottom:6px}.preview-row,.season-row{display:grid;grid-template-columns:70px 1fr auto;gap:16px;align-items:center;border-top:1px solid var(--rule);padding:20px 0}.preview-row>strong,.season-row>strong{font-size:2rem}.preview-row small,.season-row small{display:block;color:var(--muted)}.principles{display:grid;grid-template-columns:repeat(3,1fr);gap:28px;margin-top:34px}.principles article{border-top:2px solid var(--accent)}.app-page{max-width:760px}.reckoning-callout{display:flex;justify-content:space-between;align-items:center;gap:24px;border:1px solid var(--accent);background:var(--soft);padding:20px;border-radius:16px;margin-bottom:46px}.empty-state{padding:50px 0;max-width:620px}.empty-state p:not(.eyebrow){font-size:1.2rem;color:var(--muted);margin-bottom:28px}.season-hero{padding-bottom:44px}.ranked-list{border-top:1px solid var(--rule);padding-top:25px}.season-row:hover span:first-of-type,.season-hero h1 a:hover{color:var(--accent)}.composer-page{max-width:760px}.composer-page>header{margin-bottom:46px}.composer{display:grid;gap:28px}.composer fieldset,.detail-section{border:1px solid var(--rule);border-radius:18px;background:var(--raised);padding:clamp(20px,5vw,34px)}.composer legend{font-family:Fraunces,Georgia,serif;font-size:1.5rem;font-weight:700;padding:0 12px}.composer legend span{color:var(--accent);margin-right:8px}.composer label{display:block;font-weight:700;margin:14px 0 6px}.composer input[type=text],.composer input[type=number],.composer input[type=date],.composer select,.composer textarea,.inline-form input,.inline-form textarea{width:100%;border:1px solid var(--rule);border-radius:10px;padding:13px 14px;background:var(--surface);color:var(--ink);font:inherit}.composer textarea,.inline-form textarea{min-height:100px;resize:vertical}.choice-row{display:flex;gap:10px;flex-wrap:wrap}.choice{margin:0!important}.choice input{position:absolute;opacity:0}.choice span{display:block;border:1px solid var(--rule);border-radius:10px;padding:10px 15px;cursor:pointer}.choice input:checked+span{background:var(--soft);border-color:var(--accent);color:var(--accent)}.season-preview{border-left:3px solid var(--accent);padding:16px 20px;background:var(--soft)}.preview-count{font-size:1.45rem;color:var(--accent)}.preview-count strong{font-size:2.7rem}.errors{padding:16px;border:1px solid;border-radius:12px}.detail-page{display:grid;gap:24px}.detail-header{padding:35px 0}.detail-section h3{margin-bottom:0}.inline-form{display:grid;gap:10px;margin-top:20px}.ledger-entry+.ledger-entry{border-top:1px solid var(--rule);margin-top:20px;padding-top:16px}.muted{color:var(--muted)}.secondary-actions{padding:10px 0 50px}
@media(max-width:700px){html{font-size:16px}.seasons-body{padding-bottom:72px}.seasons-nav{padding:12px 16px}.seasons-header .nav-links>a{display:none}.landing-hero,.landing-section,.app-page,.composer-page{padding-left:18px;padding-right:18px}.hero-actions{align-items:flex-start;flex-direction:column}.principles{grid-template-columns:1fr}.reckoning-callout{align-items:flex-start;flex-direction:column}.choice-row{display:grid;grid-template-columns:1fr}.choice span{text-align:center}.product-preview{border-radius:20px}.season-row{grid-template-columns:58px 1fr auto}}
@media(prefers-reduced-motion:no-preference){a,.button,.choice span{transition:color .18s,background .18s,opacity .18s}.season-row:hover{transform:translateX(3px);transition:transform .18s}}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
.reckoning-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.reckoning-choices .choice span{padding:22px 12px;text-align:center}.theme-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.theme-choice input{position:absolute;opacity:0}.theme-swatch{display:grid;gap:8px;border:2px solid var(--rule);border-radius:13px;padding:8px;cursor:pointer}.theme-swatch i{height:54px;border-radius:8px;background:linear-gradient(135deg,var(--theme-surface),var(--theme-accent))}.theme-choice[data-preview-theme=paper]{--theme-surface:#f7f0e5;--theme-accent:#b45c32}.theme-choice[data-preview-theme=grove]{--theme-surface:#eef3e9;--theme-accent:#58744b}.theme-choice[data-preview-theme=tide]{--theme-surface:#edf4f3;--theme-accent:#2c6d72}.theme-choice[data-preview-theme=dusk]{--theme-surface:#f2ece8;--theme-accent:#8a5f58}.theme-choice input:checked+.theme-swatch{border-color:var(--accent)}.switch{display:flex!important;align-items:center;gap:10px}.switch input{width:22px;height:22px;accent-color:var(--accent)}@media(max-width:700px){.reckoning-choices,.theme-grid{grid-template-columns:1fr 1fr}}
.step-actions{display:flex;align-items:center;justify-content:flex-end;gap:20px;margin-top:28px}.step-actions .text-button{margin-right:auto}[hidden]{display:none!important}
.landing-composer{max-width:700px}.landing-composer .season-preview{border-radius:0 12px 12px 0}.landing-composer>.eyebrow{margin:0}
.js-only{display:none}.is-enhanced .js-only{display:flex}.choice input:focus-visible+span,.theme-choice input:focus-visible+.theme-swatch{outline:3px solid var(--accent);outline-offset:3px}.account-menu{position:relative}.account-menu summary{display:flex;align-items:center;gap:8px;cursor:pointer;list-style:none;font-weight:700}.account-menu summary::-webkit-details-marker{display:none}.account-menu summary>span:first-child{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--soft);color:var(--accent)}.account-menu>div{position:absolute;right:0;top:calc(100% + 12px);width:min(280px,80vw);padding:16px;border:1px solid var(--rule);border-radius:14px;background:var(--raised);box-shadow:0 18px 45px color-mix(in srgb,var(--ink) 14%,transparent)}.account-menu p{overflow-wrap:anywhere;color:var(--muted);font-size:.9rem}.account-menu .account-home{display:block;margin:12px 0 10px;padding-top:12px;border-top:1px solid var(--rule);color:var(--accent);font-weight:700}.seasons-mobile-nav{display:none}
@media(max-width:700px){.account-label{display:none}.seasons-mobile-nav{position:fixed;z-index:20;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);padding:max(10px,env(safe-area-inset-bottom)) 8px 10px;border-top:1px solid var(--rule);background:color-mix(in srgb,var(--raised) 94%,transparent);backdrop-filter:blur(16px)}.seasons-mobile-nav a{text-align:center;font-weight:700;font-size:.82rem;color:var(--muted)}.seasons-mobile-nav a[aria-current=page]{color:var(--accent)}}
/* HourLife → this app. See app/views/shared/_mini_app_brand. The parent is
   deliberately quieter than the app's own name: it is the way out, not the
   title of the page you are on. */
.brand{display:flex;align-items:center;gap:12px;min-width:0}.brand-home{display:flex;align-items:center;gap:8px;flex:none;font-weight:700;font-size:.95rem;color:var(--muted)}.brand-home:hover{color:var(--ink)}.brand-home img{display:block;width:24px;height:24px}.brand-divider{flex:none;width:1px;height:22px;background:var(--rule)}
/* Once the word goes, the 24px mark is the whole way back out. The padding brings
   the hit area to 44px and the negative margin keeps it looking as if it never grew. */
@media(max-width:700px){.brand-name{display:none}.brand-home{padding:10px;margin:-10px}}
