:root{--bg:#0a0807;--bg-deep:#050403;--surface:#100d0c;--surface2:#181412;--surface3:#211c19;--border:#1f1a18;--border2:#2a2421;--text:#ffffff;--text2:#a89e94;--text3:#6e655c;--accent:#FF5C3D;--accent2:#FF7A5C;--accentBg:rgba(255,92,61,.10);--yellow:#FFD23F;--yellowBg:rgba(255,210,63,.10);--green:#2dd4a0;--greenBg:rgba(45,212,160,.10);--red:#f06;--redBg:rgba(255,0,102,.10);--amber:#f0a020;--r:14px;--rs:10px;--glow-sharp:color-mix(in srgb,var(--accent) 50%,transparent);--glow-soft:color-mix(in srgb,var(--accent) 15%,transparent);--glow-ambient:color-mix(in srgb,var(--accent) 6%,transparent);--grain-opacity:.55}

/* THEME: Hype — neon rave, deeper */
:root.theme-hype{--bg:#0f0518;--bg-deep:#080210;--surface:#16092a;--surface2:#1d0e36;--surface3:#251444;--border:#2b1850;--border2:#3a2068;--text:#ffffff;--text2:#cab3e0;--text3:#7a6a90;--accent:#ff2e88;--accent2:#ff5fa3;--accentBg:rgba(255,46,136,.10);--yellow:#fff700;--yellowBg:rgba(255,247,0,.10)}

/* THEME: Hard love — blood red, intense, deeper */
:root.theme-hardlove{--bg:#0c0506;--bg-deep:#06030310;--surface:#160a0d;--surface2:#1d0e12;--surface3:#251218;--border:#2c1820;--border2:#3a212b;--text:#f0d4d8;--text2:#c89aa3;--text3:#7d5a64;--accent:#a8182e;--accent2:#c4263e;--accentBg:rgba(168,24,46,.12);--yellow:#e8a64a;--yellowBg:rgba(232,166,74,.10)}

/* THEME: Mean — default brand, deepest warm-black */
:root.theme-mean{--bg:#0a0807;--bg-deep:#050403;--surface:#100d0c;--surface2:#181412;--surface3:#211c19;--border:#1f1a18;--border2:#2a2421;--text:#ffffff;--text2:#a89e94;--text3:#6e655c;--accent:#FF5C3D;--accent2:#FF7A5C;--accentBg:rgba(255,92,61,.10);--yellow:#FFD23F;--yellowBg:rgba(255,210,63,.10)}

/* THEME: Drill Sgt — army field, deeper */
:root.theme-drill{--bg:#0c100a;--bg-deep:#060805;--surface:#13180e;--surface2:#1a2014;--surface3:#22291b;--border:#2a3322;--border2:#384430;--text:#e8e4cf;--text2:#a8a48a;--text3:#6d6a55;--accent:#a3b56c;--accent2:#b8ca80;--accentBg:rgba(163,181,108,.10);--yellow:#d97014;--yellowBg:rgba(217,112,20,.10)}

/* THEME: Soft — cherry blossom, deeper */
:root.theme-soft{--bg:#100c0d;--bg-deep:#080506;--surface:#1a1416;--surface2:#221a1c;--surface3:#2b2125;--border:#332830;--border2:#42333d;--text:#f7e4e8;--text2:#c9a8b3;--text3:#856070;--accent:#ff9bb3;--accent2:#ffb5c8;--accentBg:rgba(255,155,179,.10);--yellow:#b8d4c0;--yellowBg:rgba(184,212,192,.10)}

/* THEME: Stoic — marble & ink */
:root.theme-stoic{--bg:#050505;--bg-deep:#020202;--surface:#0d0d0d;--surface2:#141414;--surface3:#1c1c1c;--border:#222;--border2:#2e2e2e;--text:#ffffff;--text2:#a8a8a8;--text3:#5a5a5a;--accent:#e0e0e0;--accent2:#f5f5f5;--accentBg:rgba(224,224,224,.08);--yellow:#888888;--yellowBg:rgba(136,136,136,.10)}
:root.theme-gold{--bg:#0b0903;--bg-deep:#050402;--surface:#151107;--surface2:#1d1709;--surface3:#26200d;--border:#2c2411;--border2:#3d3318;--text:#fbf3df;--text2:#cbb986;--text3:#897a52;--accent:#D4AF37;--accent2:#F4D77E;--accentBg:rgba(212,175,55,.13);--yellow:#E8C766;--yellowBg:rgba(232,199,102,.12);--gold-grad:linear-gradient(135deg,#8A6A1C 0%,#D4AF37 26%,#F9EFC0 50%,#C9A227 74%,#7A5E15 100%)}
/* Gold theme: carry the metallic gradient onto focal elements for a luxe feel */
:root.theme-gold #generateBtn{background:var(--gold-grad)}
:root.theme-gold #generateBtn .get-up-inner{box-shadow:inset 0 1px 0 rgba(249,239,192,.35)}
:root.theme-gold .momentum-box{border-color:transparent;background:linear-gradient(var(--surface),var(--surface)) padding-box,var(--gold-grad) border-box}
:root.theme-gold .style-chip.active{border-color:transparent;color:#1a1206 !important;font-weight:600;background:var(--gold-grad)}
/* Bottom-nav Get Up tab: same metallic gold, dark label/icon for contrast */
:root.theme-gold .tab-primary,
:root.theme-gold .tab-primary:hover,
:root.theme-gold .tab-primary.active{background:var(--gold-grad);color:#1a1206 !important}
:root.theme-gold .tab-primary .icon{color:#1a1206}

/* Smooth theme transitions */
html{transition:background-color .4s ease}
body{transition:background-color .4s ease,color .4s ease}
.card,.surface,[class*="surface"]{transition:background-color .4s ease,border-color .4s ease}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}

/* @property for the animated conic-gradient angle (browsers: Chrome 85+, Safari 16.4+, FF 128+) */
@property --angle{syntax:'<angle>';initial-value:0deg;inherits:false}
@keyframes spin-border{to{--angle:360deg}}

body{font-family:'Geist',-apple-system,sans-serif;color:var(--text);min-height:100vh;display:flex;align-items:flex-start;justify-content:center;padding:1.5rem 1rem;position:relative;touch-action:manipulation;background:
  radial-gradient(ellipse 80% 60% at 50% 0%, color-mix(in srgb, var(--accent) 8%, transparent), transparent 60%) no-repeat fixed,
  radial-gradient(ellipse 60% 50% at 80% 90%, color-mix(in srgb, var(--accent) 4%, transparent), transparent 60%) no-repeat fixed,
  var(--bg)}

/* Subtle film grain — gives the background texture, makes flat black feel made-of-something */
body::before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:var(--grain-opacity,.55);mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.5 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
body>*{position:relative;z-index:1}
.screen{display:none;width:100%;max-width:520px}.screen.active{display:block}
.card{background:var(--surface);border-radius:var(--r);border:1px solid var(--border);padding:1.75rem;width:100%;margin-bottom:.75rem;box-shadow:0 1px 3px rgba(0,0,0,.25),0 8px 24px rgba(0,0,0,.18)}
.api-logo{font-size:32px;margin-bottom:.75rem}.api-title{font-family:'Major Mono Display',monospace;font-size:24px;font-weight:400;margin-bottom:.4rem;letter-spacing:0;text-transform:lowercase}.api-sub{font-size:14px;color:var(--text2);margin-bottom:1.5rem;line-height:1.6}
input[type="password"],input[type="text"],textarea{width:100%;padding:10px 12px;border-radius:var(--rs);border:1px solid var(--border);font-size:14px;font-family:inherit;background:var(--surface2);color:var(--text);transition:border-color .15s}
input:focus,textarea:focus{outline:none;border-color:var(--accent);background:var(--surface3)}textarea{resize:none}
.text-input{width:100%;padding:12px 14px;border-radius:var(--rs);border:1px solid var(--border);font-size:15px;font-family:inherit;background:var(--surface2);color:var(--text);display:block;margin-bottom:1.25rem}.text-input:focus{outline:none;border-color:var(--accent)}
.label{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--text2);margin-bottom:8px;font-weight:600}
.api-row{display:flex;gap:8px;margin-bottom:6px;align-items:center}
.toggle-key{padding:10px 12px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface2);font-size:13px;cursor:pointer;white-space:nowrap;color:var(--text2)}.toggle-key:hover{border-color:var(--accent);color:var(--text)}
.key-hint{font-size:11px;color:var(--text3);margin-bottom:1.5rem}.key-hint a{color:var(--accent2);text-decoration:none}
.progress-bar-wrap{height:3px;background:var(--surface3);border-radius:99px;margin-bottom:2rem}.progress-bar{height:3px;background:var(--accent);border-radius:99px;transition:width .4s ease}
.q-emoji{font-size:36px;margin-bottom:.6rem}.q-text{font-family:'Major Mono Display',monospace;font-size:20px;font-weight:400;margin-bottom:.4rem;line-height:1.3;letter-spacing:0;text-transform:lowercase}.q-sub{font-size:13px;color:var(--text2);margin-bottom:1.25rem}
.options-grid{display:flex;flex-direction:column;gap:8px;margin-bottom:1.5rem}
.option-btn{padding:12px 14px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface2);cursor:pointer;font-size:14px;color:var(--text);text-align:left;transition:all .25s;display:flex;align-items:center;gap:10px}.option-btn:hover{color:var(--text);box-shadow:0 0 20px rgba(255,92,61,.25),0 0 6px rgba(255,92,61,.15);border-color:var(--accent)}.option-btn.selected{border-color:var(--accent);background:var(--accentBg);color:var(--accent2);font-weight:500;box-shadow:0 0 12px rgba(255,92,61,.2)}.option-emoji{font-size:18px}
.btn-primary{width:100%;padding:12px;border-radius:var(--rs);border:none;background:#FF5C3D;font-size:14px;font-weight:600;cursor:pointer;color:#fff;transition:all .25s;letter-spacing:.02em}.btn-primary:hover{background:#FF7A5C;box-shadow:0 0 32px rgba(255,92,61,.45),0 0 12px rgba(255,92,61,.3)}.btn-primary:disabled{opacity:.4;cursor:not-allowed}

/* Get Up button — outlined card-style with animated conic-gradient ring on press */
#generateBtn{position:relative;width:100%;padding:1.5px;border:none;border-radius:99px;background:var(--accent);cursor:pointer;color:var(--text);font-family:'Geist',sans-serif;font-size:15px;font-weight:600;letter-spacing:-.005em;transition:filter .3s ease,box-shadow .3s ease,opacity .3s ease;box-shadow:0 0 0 1px var(--glow-sharp),0 0 24px var(--glow-soft),0 0 60px var(--glow-ambient);-webkit-tap-highlight-color:transparent;overflow:hidden}
#generateBtn::before{content:'';position:absolute;inset:0;border-radius:inherit;background:conic-gradient(from var(--angle,0deg),var(--accent) 0deg,var(--yellow) 90deg,var(--accent) 180deg,var(--yellow) 270deg,var(--accent) 360deg);opacity:0;transition:opacity .25s ease;pointer-events:none}
#generateBtn.active::before{opacity:1;animation:spin-border 1.4s linear infinite}
#generateBtn:hover:not(:disabled){filter:brightness(1.05);box-shadow:0 0 0 1px var(--accent2),0 0 36px var(--glow-soft),0 0 100px var(--glow-ambient)}
#generateBtn:active:not(:disabled){transform:scale(.995)}
#generateBtn:disabled{opacity:.5;cursor:not-allowed;box-shadow:none}
#generateBtn .get-up-inner{position:relative;z-index:1;display:flex;align-items:center;justify-content:center;gap:10px;padding:15px 20px;border-radius:99px;background:linear-gradient(180deg,var(--surface) 0%,var(--bg-deep) 100%);color:var(--text);font-weight:600;font-size:15px;box-shadow:inset 0 1px 0 color-mix(in srgb,var(--accent2) 8%,transparent)}
#generateBtn .spinner{width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;border-radius:50%;animation:spin 0.7s linear infinite;display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.btn-secondary{width:100%;padding:12px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface2);font-size:14px;font-weight:500;cursor:pointer;color:var(--text2);transition:all .25s;margin-top:8px}.btn-secondary:hover{color:var(--text);box-shadow:0 0 24px rgba(255,92,61,.25),0 0 8px rgba(255,92,61,.15);border-color:var(--accent)}
.btn-green{width:100%;padding:12px;border-radius:var(--rs);border:none;background:var(--green);font-size:14px;font-weight:600;cursor:pointer;color:#111;transition:all .15s;margin-top:8px}.btn-green:hover{opacity:.9}
.nav-row{display:flex;gap:8px}.nav-row .btn-primary{flex:1}
.btn-back{padding:12px 16px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface2);font-size:14px;cursor:pointer;color:var(--text3)}.btn-back:hover{border-color:var(--accent);color:var(--text)}
.result-top{text-align:center;margin-bottom:1.25rem}.result-emoji{font-size:40px;margin-bottom:.4rem}.result-name{font-family:'Major Mono Display',monospace;font-size:18px;font-weight:400;margin-bottom:.2rem;letter-spacing:0;text-transform:lowercase;line-height:1.3}.result-tagline{font-size:13px;color:var(--text2)}
.profile-pills{display:flex;flex-wrap:wrap;gap:6px;justify-content:center;margin-bottom:1.25rem}.pill{padding:5px 12px;border-radius:99px;background:var(--accentBg);color:var(--accent2);font-size:12px;font-weight:500}
.style-row{display:flex;gap:6px;flex-wrap:nowrap;overflow-x:auto;margin-bottom:1rem;padding-bottom:2px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.style-row::-webkit-scrollbar{display:none}
.vibe-row .style-chip{font-size:11.5px;padding:6px 12px}
.vibe-row .style-chip.active{border-color:var(--yellow);color:var(--yellow);background:var(--yellowBg);box-shadow:none}
.style-chip{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;min-height:38px;padding:7px 14px;border-radius:99px;border:1px solid var(--border2);background:transparent;font-size:12px;font-weight:500;color:var(--text2);cursor:pointer;transition:all .25s;font-family:inherit}.style-chip:hover{color:var(--text);border-color:var(--text3)}.style-chip.active{border-color:var(--accent);color:var(--accent);background:var(--accentBg);box-shadow:0 0 0 1px var(--glow-sharp),0 0 16px var(--glow-soft)}
.pro-badge-mini{display:inline-block;background:var(--yellow);color:#13100f;font-size:9px;font-weight:700;padding:2px 5px;border-radius:4px;margin-left:4px;letter-spacing:.05em;vertical-align:1px;font-family:'Geist',sans-serif}
.theme-hint{font-size:11px;color:var(--text2);text-align:center;margin:6px 0 12px;letter-spacing:.01em;font-family:'Geist',sans-serif;display:flex;align-items:center;justify-content:center;gap:5px}
.theme-hint .icon-sm{width:12px;height:12px;color:var(--text3)}
.message-card{position:relative;background:linear-gradient(180deg,var(--surface) 0%,var(--bg-deep) 100%);border:1px solid var(--accent);border-radius:20px;padding:1.5rem 1.4rem 1.2rem;min-height:120px;display:flex;flex-direction:column;align-items:stretch;margin-bottom:.75rem;box-shadow:0 0 0 1px var(--glow-sharp),0 0 30px var(--glow-soft),0 0 80px var(--glow-ambient),inset 0 1px 0 color-mix(in srgb,var(--accent2) 12%,transparent)}
.message-card::before{content:'';position:absolute;top:0;left:22%;right:22%;height:1px;background:linear-gradient(90deg,transparent,var(--accent2),transparent);opacity:.55;pointer-events:none}
.message-text{font-size:18px;line-height:1.5;color:var(--text);text-align:left;font-weight:500;letter-spacing:-.01em;font-style:normal}
.placeholder{flex:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--text2);text-align:center;padding:.5rem 0}
.message-card:has(.placeholder){border-color:var(--border2);box-shadow:none}
.error-text{flex:1;display:flex;align-items:center;justify-content:center;font-size:13px;color:var(--accent2);text-align:center;padding:.5rem 0}
.message-row{display:flex;align-items:flex-start;gap:.6rem;justify-content:center;width:100%}
.message-row .message-text{flex:1}
.msg-play-btn{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--surface2);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;margin-top:2px}
.msg-play-btn:hover:not(:disabled){border-color:#FF5C3D;color:#FF5C3D;background:rgba(255,92,61,.08)}
.msg-play-btn:disabled{opacity:.5;cursor:wait}
.msg-play-btn.is-playing{background:#FF5C3D;border-color:#FF5C3D;color:#fff}
.msg-play-btn.is-playing:hover{background:#FF7A5C}
.msg-play-btn.is-locked{opacity:.45;color:var(--text3)}
.msg-play-btn.is-locked:hover{border-color:var(--accent2);color:var(--accent2);background:rgba(255,210,63,.06);opacity:.7}
.msg-play-btn.is-free-play{border-color:var(--yellow);background:rgba(255,210,63,.08);color:var(--yellow);box-shadow:0 0 0 0 rgba(255,210,63,.5);animation:pulse-free 2s ease-in-out infinite}
.msg-play-btn.is-free-play:hover{background:rgba(255,210,63,.18);transform:scale(1.05)}
@keyframes pulse-free{0%,100%{box-shadow:0 0 0 0 rgba(255,210,63,.5)}50%{box-shadow:0 0 0 6px rgba(255,210,63,0)}}

/* Share button (alongside play button) */
.msg-actions{display:flex;flex-direction:row;align-items:center;gap:.5rem;margin-top:.85rem;padding-top:.75rem;border-top:1px solid var(--border)}
.msg-share-btn{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--surface2);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}
.msg-share-btn:hover{border-color:#FF5C3D;color:#FF5C3D;background:rgba(255,92,61,.08)}
.msg-share-btn:disabled{opacity:.5;cursor:wait}
.msg-share-btn .icon-sm{width:14px;height:14px}

/* Save button (bookmark) */
.msg-save-btn{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--surface2);color:var(--text2);cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s}
.msg-save-btn:hover{border-color:var(--yellow);color:var(--yellow);background:rgba(255,210,63,.08)}
.msg-save-btn.is-saved{background:var(--yellow);border-color:var(--yellow);color:#13100f}
.msg-save-btn.is-saved:hover{background:#ffdc5c}
.msg-save-btn .icon-sm{width:14px;height:14px}

/* Library items */
/* ── LIBRARY: header, filter, view toggle, empty state ── */
.lib-page-title{font-family:'Major Mono Display',monospace;font-size:22px;color:var(--text);text-transform:lowercase;letter-spacing:0}
.lib-header-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px}
.view-toggle{display:inline-flex;align-items:center;padding:3px;background:var(--surface);border:1px solid var(--border2);border-radius:99px}
.view-btn{width:36px;height:32px;border:none;background:transparent;color:var(--text3);border-radius:99px;cursor:pointer;display:grid;place-items:center;transition:all .2s ease}
.view-btn:hover{color:var(--text2)}
.view-btn.active{background:var(--accent);color:#1a0905;box-shadow:0 0 16px color-mix(in srgb,var(--accent) 25%,transparent)}
.view-btn svg{width:16px;height:16px}

.filter-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:22px;gap:12px}
.filter-wrap{position:relative}
.filter-btn{display:inline-flex;align-items:center;gap:8px;padding:9px 14px 9px 16px;border-radius:99px;background:var(--surface);border:1px solid var(--border2);color:var(--text);font-family:'Geist',sans-serif;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;-webkit-tap-highlight-color:transparent}
.filter-btn:hover{border-color:var(--text3)}
.filter-btn.is-open{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 35%,transparent),0 0 18px color-mix(in srgb,var(--accent) 12%,transparent)}
.filter-btn .chev{width:12px;height:12px;color:var(--text3);transition:transform .2s ease}
.filter-btn.is-open .chev{transform:rotate(180deg);color:var(--accent)}
.filter-panel{position:absolute;top:calc(100% + 8px);left:0;min-width:220px;background:linear-gradient(180deg,var(--surface) 0%,var(--bg-deep) 100%);border:1px solid var(--border2);border-radius:14px;padding:6px;z-index:10;box-shadow:0 12px 36px rgba(0,0,0,.5),0 0 0 1px rgba(255,92,61,.06);opacity:0;transform:translateY(-4px);pointer-events:none;transition:opacity .18s ease,transform .18s ease}
.filter-panel.is-open{opacity:1;transform:translateY(0);pointer-events:auto}
.filter-option{display:flex;align-items:center;justify-content:space-between;width:100%;padding:9px 12px;border:none;background:transparent;color:var(--text2);font-family:'Geist',sans-serif;font-size:13px;font-weight:500;border-radius:8px;cursor:pointer;transition:all .15s ease;text-align:left}
.filter-option:hover{background:var(--surface2);color:var(--text)}
.filter-option.is-selected{color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}
.filter-option-left{display:flex;align-items:center}
.filter-option-dot{width:8px;height:8px;border-radius:99px;margin-right:10px;flex-shrink:0}
.filter-option-count{font-family:'Geist Mono',monospace;font-size:11px;color:var(--text3);letter-spacing:.04em}
.filter-option.is-selected .filter-option-count{color:var(--accent)}
.filter-summary{font-family:'Geist Mono',monospace;font-size:11px;text-transform:uppercase;letter-spacing:.14em;color:var(--text3)}
.filter-summary b{color:var(--text);font-weight:600}

.lib-empty-state{display:none;flex-direction:column;align-items:center;text-align:center;padding:60px 20px 30px;color:var(--text3)}
.lib-empty-state.visible{display:flex}
.lib-empty-icon{width:56px;height:56px;border-radius:99px;border:1px solid var(--border2);background:var(--surface);display:grid;place-items:center;margin-bottom:18px;color:var(--text3)}
.lib-empty-icon .icon{width:22px;height:22px}
.lib-empty-title{font-family:'Major Mono Display',monospace;font-size:18px;color:var(--text);text-transform:lowercase;margin-bottom:8px}
.lib-empty-sub{font-size:13px;color:var(--text3);max-width:280px;line-height:1.5}

/* Per-style accents for library cards */
.style-mean    {--card-accent:#FF5C3D;--card-accent-2:#FF7A5C}
.style-hype    {--card-accent:#ff2e88;--card-accent-2:#ff5fa3}
.style-hardlove{--card-accent:#c4263e;--card-accent-2:#e0364f}
.style-drill   {--card-accent:#b8ca80;--card-accent-2:#c8db94}
.style-soft    {--card-accent:#ff9bb3;--card-accent-2:#ffb5c8}
.style-stoic   {--card-accent:#e0e0e0;--card-accent-2:#f5f5f5}

.lib-card{position:relative;background:linear-gradient(180deg,var(--surface) 0%,var(--bg-deep) 100%);border:1px solid var(--card-accent,var(--accent));border-radius:22px;padding:24px 24px 20px;box-shadow:0 0 0 1px color-mix(in srgb,var(--card-accent,var(--accent)) 50%,transparent),0 0 30px color-mix(in srgb,var(--card-accent,var(--accent)) 15%,transparent),0 0 80px color-mix(in srgb,var(--card-accent,var(--accent)) 6%,transparent),inset 0 1px 0 color-mix(in srgb,var(--card-accent-2,var(--accent2)) 12%,transparent)}
.lib-card::before{content:'';position:absolute;top:0;left:22%;right:22%;height:1px;background:linear-gradient(90deg,transparent,var(--card-accent-2,var(--accent2)),transparent);opacity:.55;pointer-events:none}
.card-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.card-style-label{font-family:'Geist Mono',monospace;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.16em;color:var(--card-accent,var(--accent))}
.card-date{font-family:'Geist Mono',monospace;font-size:11px;color:var(--text3);letter-spacing:.04em}
.card-body{display:flex;gap:14px;margin-bottom:18px}
.card-avatar{width:44px;height:44px;flex-shrink:0;border-radius:99px;background:linear-gradient(135deg,var(--card-accent,var(--accent)) 0%,color-mix(in srgb,var(--card-accent,var(--accent)) 60%,#000) 100%);display:grid;place-items:center;color:#1a0905;font-family:'Major Mono Display',monospace;font-size:16px;text-transform:lowercase;box-shadow:0 0 18px color-mix(in srgb,var(--card-accent,var(--accent)) 25%,transparent);overflow:hidden}
.card-avatar img{width:100%;height:100%;object-fit:cover;border-radius:99px;display:block}
.card-text{flex:1;font-size:16px;line-height:1.5;color:var(--text);letter-spacing:-.005em;white-space:pre-wrap;word-break:break-word}
.card-actions{display:flex;gap:6px;padding-top:14px;border-top:1px solid var(--border);flex-wrap:wrap}
.card-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:10px;background:var(--surface2);border:1px solid var(--border2);color:var(--text2);font-family:'Geist',sans-serif;font-size:12px;font-weight:500;cursor:pointer;transition:all .2s ease}
.card-btn:hover{color:var(--text);border-color:var(--card-accent,var(--accent));background:color-mix(in srgb,var(--card-accent,var(--accent)) 6%,var(--surface2))}
.card-btn .icon-sm{width:13px;height:13px}
.card-btn.danger:hover{color:#ff6b6b;border-color:#ff6b6b;background:rgba(255,107,107,.06)}

/* Carousel */
.carousel-wrap{position:relative;margin:0 -1.5rem;padding:20px 0 24px;display:none}
.carousel-wrap.visible{display:block}
.carousel-track{position:relative;height:440px;display:flex;align-items:center;justify-content:center}
.carousel-wrap .lib-card{position:absolute;width:88%;max-width:480px;transition:transform .5s cubic-bezier(.2,.7,.2,1),opacity .5s ease,filter .5s ease;will-change:transform,opacity}
.carousel-wrap .lib-card.is-active{transform:translateX(0) scale(1);opacity:1;filter:none;z-index:3}
.carousel-wrap .lib-card.is-prev{transform:translateX(-78%) scale(.86);opacity:.32;filter:blur(1px);z-index:2;pointer-events:none}
.carousel-wrap .lib-card.is-next{transform:translateX(78%) scale(.86);opacity:.32;filter:blur(1px);z-index:2;pointer-events:none}
.carousel-wrap .lib-card.is-hidden{transform:translateX(0) scale(.7);opacity:0;pointer-events:none;z-index:1}
.carousel-nav{position:absolute;top:50%;transform:translateY(-50%);width:44px;height:44px;border-radius:99px;background:rgba(20,17,16,.7);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border:1px solid var(--border2);color:var(--text2);cursor:pointer;display:grid;place-items:center;z-index:4;transition:all .2s ease}
.carousel-nav:hover{color:var(--text);border-color:var(--accent);box-shadow:0 0 24px color-mix(in srgb,var(--accent) 20%,transparent)}
.carousel-nav.prev{left:14px}.carousel-nav.next{right:14px}
.carousel-nav svg{width:18px;height:18px}
.carousel-footer{display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:4px}
.carousel-dots{display:flex;gap:6px}
.dot{width:6px;height:6px;border-radius:99px;background:var(--border2);transition:all .3s ease;cursor:pointer}
.dot.active{width:22px;background:var(--accent);box-shadow:0 0 8px color-mix(in srgb,var(--accent) 40%,transparent)}
.carousel-counter{font-family:'Geist Mono',monospace;font-size:11px;letter-spacing:.1em;color:var(--text3)}
.carousel-counter b{color:var(--text);font-weight:600}

/* List view */
.list-wrap{display:none;flex-direction:column;gap:14px}
.list-wrap.visible{display:flex}
.list-wrap .lib-card{position:relative;width:100%;max-width:none}

@media(max-width:480px){
  /* Library Option A — single full-width swipe card, no side-peek, no arrows */
  .carousel-wrap{margin:0;padding:14px 0 6px}
  .carousel-track{height:auto;display:block}
  .carousel-wrap .lib-card{position:relative;width:100%;max-width:none;transform:none;opacity:1;filter:none}
  .carousel-wrap .lib-card.is-prev,
  .carousel-wrap .lib-card.is-next,
  .carousel-wrap .lib-card.is-hidden{display:none}
  .carousel-nav{display:none}
  .carousel-wrap .lib-card.is-active.slide-next{animation:libSlideNext .34s cubic-bezier(.2,.7,.2,1)}
  .carousel-wrap .lib-card.is-active.slide-prev{animation:libSlidePrev .34s cubic-bezier(.2,.7,.2,1)}
  @keyframes libSlideNext{from{transform:translateX(42%);opacity:0}to{transform:translateX(0);opacity:1}}
  @keyframes libSlidePrev{from{transform:translateX(-42%);opacity:0}to{transform:translateX(0);opacity:1}}
  .carousel-footer{margin-top:14px}
  .card-text{font-size:15px}
  .card-actions .card-btn{flex:1;justify-content:center}
  .carousel-wrap .lib-card{transition:transform .12s ease}
  .carousel-wrap .lib-card.is-pressed{transform:scale(.97)}
}

/* Share preview modal */
.share-preview-wrap{display:flex;flex-direction:column;align-items:center;gap:1rem;padding:.5rem 0}
.share-preview-canvas{max-width:240px;width:100%;border-radius:12px;box-shadow:0 8px 32px rgba(0,0,0,.4);display:block}
.share-action-row{display:flex;gap:.6rem;width:100%}
.share-action-btn{flex:1;background:#FF5C3D;color:#fff;border:none;padding:.7rem;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.4rem}
.share-action-btn:hover{background:#FF7A5C}
.share-action-btn.secondary{background:var(--surface2);color:var(--text);border:1px solid var(--border)}
.share-action-btn.secondary:hover{background:var(--surface3);border-color:var(--text3)}
.msg-play-btn .icon-sm{width:14px;height:14px}
.spinner-mini{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;display:inline-block}

/* Coach feature */
.coach-cta-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:.85rem 1rem;display:flex;align-items:center;gap:.75rem;cursor:pointer;transition:all .2s;margin:.5rem 0;box-shadow:0 1px 2px rgba(0,0,0,.25),0 6px 18px rgba(0,0,0,.15)}
.coach-cta-card:hover{border-color:#FF5C3D;background:rgba(255,92,61,.06);transform:translateY(-1px)}
.coach-cta-icon{width:36px;height:36px;border-radius:50%;background:linear-gradient(135deg,#FF5C3D,#FFD23F);display:flex;align-items:center;justify-content:center;color:#13100f;flex-shrink:0}
.coach-cta-icon .icon-sm{width:16px;height:16px}
.coach-cta-text{flex:1;text-align:left;min-width:0}
.coach-cta-title{font-size:14px;font-weight:600;color:var(--text);line-height:1.2}
.coach-cta-sub{font-size:12px;color:var(--text2);margin-top:2px;line-height:1.2}
.coach-cta-arrow{color:var(--text3);flex-shrink:0;width:18px;height:18px}

/* Coach loading spinner */
.coach-loading-img{width:120px;height:120px;border-radius:50%;background:var(--surface2);border:2px solid var(--border);margin:0 auto;display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden}
.spinner-coach{width:48px;height:48px;border:4px solid var(--border);border-top-color:#FF5C3D;border-radius:50%;animation:spin 1s linear infinite}

/* Coach customization dropdowns */
.coach-select{
  width:100%;padding:12px 36px 12px 14px;
  background:var(--surface2);border:1px solid var(--border);border-radius:10px;
  color:var(--text);font-family:inherit;font-size:14px;font-weight:500;
  cursor:pointer;transition:all .15s;
  appearance:none;-webkit-appearance:none;-moz-appearance:none;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23a89e94' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><polyline points='6 9 12 15 18 9'/></svg>");
  background-repeat:no-repeat;background-position:right 12px center;
}
.coach-select:hover{border-color:var(--border2);background-color:var(--surface)}
.coach-select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(255,92,61,.15)}
.coach-select option{background:var(--surface2);color:var(--text)}

/* Coach reveal image — bigger, no background, more "in the app" feel */
.coach-reveal-img{width:280px;height:280px;object-fit:contain;margin:.25rem auto .75rem;display:block;filter:drop-shadow(0 16px 32px rgba(0,0,0,.6)) drop-shadow(0 0 40px rgba(255,92,61,.2))}

/* Tiny coach avatar next to messages */
.msg-coach-avatar{width:40px;height:40px;border-radius:50%;object-fit:cover;border:2px solid #FF5C3D;flex-shrink:0;margin-top:2px}

/* Profile coach gallery */
.coach-profile-empty{padding:1.5rem 1rem;background:var(--surface2);border:1px dashed var(--border2);border-radius:12px;text-align:center}
.coach-profile-empty-icon{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,#FF5C3D,#FFD23F);display:flex;align-items:center;justify-content:center;color:#13100f;margin:0 auto .75rem}
.coach-profile-empty-icon .icon{width:22px;height:22px}
.coach-profile-empty-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:.25rem}
.coach-profile-empty-sub{font-size:12px;color:var(--text2);margin-bottom:.85rem}
.coach-profile-design-btn{background:#FF5C3D;color:#fff;border:none;padding:.6rem 1.2rem;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer}
.coach-profile-design-btn:hover{background:#FF7A5C}

.coach-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:.6rem}
.coach-gallery-item{position:relative;aspect-ratio:1;border-radius:12px;overflow:hidden;background:var(--surface2);border:1px solid var(--border);cursor:pointer;transition:all .2s}
.coach-gallery-item:hover{border-color:#FF5C3D;transform:translateY(-2px)}
.coach-gallery-item img{width:100%;height:100%;object-fit:cover}
.coach-gallery-locked{display:flex;align-items:center;justify-content:center;color:var(--text3);position:relative}
.coach-gallery-locked .icon{width:24px;height:24px}
.coach-gallery-locked::before{content:'';position:absolute;inset:0;background:rgba(0,0,0,.35);pointer-events:none}
.coach-gallery-label{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(to top,rgba(0,0,0,.85),transparent);color:#fff;font-size:10px;font-weight:600;padding:1rem .4rem .35rem;text-align:center;letter-spacing:.04em;text-transform:uppercase}
.coach-gallery-pro-badge{position:absolute;top:5px;right:5px;background:var(--yellow);color:#13100f;font-size:8px;font-weight:800;padding:2px 4px;border-radius:3px;letter-spacing:.06em;z-index:1}
.coach-grid-3{grid-template-columns:repeat(3,1fr)!important}
.coach-grid-3 .option-btn{padding:.6rem .4rem;font-size:13px}

/* Pricing modal */
.pricing-features{margin:1rem 0 1.25rem;display:flex;flex-direction:column;gap:.5rem}
.pricing-feature{display:flex;align-items:center;gap:.5rem;font-size:13px;color:var(--text)}
.pricing-feature .icon-sm{color:#FF5C3D;width:14px;height:14px;flex-shrink:0}
.pricing-options{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-bottom:.5rem}
.pricing-option{position:relative;padding:.85rem .6rem;border:2px solid var(--border);border-radius:12px;background:var(--surface2);cursor:pointer;text-align:center;transition:all .15s}
.pricing-option:hover{border-color:var(--accent2);background:var(--surface3)}
.pricing-option.selected{border-color:#FF5C3D;background:rgba(255,92,61,.08)}
.pricing-option-label{font-size:12px;color:var(--text2);text-transform:uppercase;letter-spacing:.06em;font-weight:600;margin-bottom:.3rem}
.pricing-option-price{font-size:22px;font-weight:700;color:var(--text);font-family:'Major Mono Display',monospace}
.pricing-option-per{font-size:11px;color:var(--text3);font-weight:400;font-family:'Geist',sans-serif;margin-left:2px}
.pricing-option-sub{font-size:11px;color:var(--text3);margin-top:.3rem}
.pricing-option-badge{position:absolute;top:-8px;right:50%;transform:translateX(50%);background:#FFD23F;color:#13100f;font-size:8px;font-weight:800;padding:3px 6px;border-radius:4px;letter-spacing:.06em;white-space:nowrap}

/* Pro section in profile */
.pro-cta-card{padding:1rem;background:linear-gradient(135deg,rgba(255,92,61,.1),rgba(255,210,63,.05));border:1px solid rgba(255,92,61,.3);border-radius:12px;text-align:center}
.pro-cta-title{font-size:14px;font-weight:600;color:var(--text);margin-bottom:.25rem}
.pro-cta-sub{font-size:12px;color:var(--text2);margin-bottom:.85rem;line-height:1.5}
.pro-cta-btn{background:#FF5C3D;color:#fff;border:none;padding:.65rem 1.2rem;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;width:100%}
.pro-cta-btn:hover{background:#FF7A5C}
.pro-active-badge{display:inline-block;background:linear-gradient(135deg,#FF5C3D,#FFD23F);color:#13100f;font-size:10px;font-weight:800;padding:3px 8px;border-radius:4px;letter-spacing:.06em;vertical-align:middle;margin-left:6px}
.pro-status-line{font-size:13px;color:var(--text);margin-bottom:.4rem}
.pro-manage-btn{background:var(--surface2);color:var(--text);border:1px solid var(--border);padding:.55rem 1rem;border-radius:8px;font-size:12px;font-weight:500;cursor:pointer;width:100%;margin-top:.5rem}
.pro-manage-btn:hover{background:var(--surface3);border-color:var(--text3)}

/* Pro toast (after successful upgrade) */
.pro-toast{position:fixed;top:20px;left:50%;transform:translateX(-50%) translateY(-200%);background:linear-gradient(135deg,#FF5C3D,#FFD23F);color:#13100f;padding:.85rem 1.5rem;border-radius:12px;font-weight:600;box-shadow:0 8px 32px rgba(255,92,61,.4);z-index:9999;transition:transform .35s cubic-bezier(.34,1.56,.64,1)}
.pro-toast.show{transform:translateX(-50%) translateY(0)}

.option-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem;margin-top:.4rem}
.option-btn{padding:.7rem .5rem;border-radius:8px;border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s;font-family:inherit;text-align:center}
.option-btn:hover{border-color:var(--accent2);background:var(--surface3)}
.option-btn.selected{border-color:#FF5C3D;background:var(--accentBg);color:var(--accent2);font-weight:600}
#generateBtn{box-shadow:0 0 24px var(--glow-soft)}
.daily-counter{font-size:11px;color:var(--text2);text-align:center;margin-bottom:6px}.daily-counter.warning{color:var(--amber);font-weight:500}.daily-counter.maxed{color:var(--red);font-weight:500}
.profile-field{margin-bottom:1.25rem}.profile-field-label{font-size:12px;font-weight:600;margin-bottom:5px;color:var(--text2)}

/* Profile page sections */
.profile-section{margin-bottom:1.5rem}
.profile-section-header{font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:var(--text2);font-weight:700;margin-bottom:.75rem;padding-bottom:.5rem;border-bottom:1px solid var(--border)}
.profile-row{display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid var(--border);gap:1rem}
.profile-row:last-child{border-bottom:none}
.profile-row-label{font-size:13px;color:var(--text2);flex-shrink:0}
.profile-row-value{font-size:13px;color:var(--text);font-weight:500;text-align:right;display:flex;align-items:center;gap:6px;flex-shrink:0}
.profile-row-value.muted{color:var(--text3);font-weight:400}
.profile-row-value.editable{cursor:pointer;color:var(--accent2)}
.profile-row-value.editable:hover{color:var(--accent)}
.profile-row-edit{font-size:11px;color:var(--accent2);background:none;border:1px solid var(--accent);border-radius:6px;padding:3px 10px;cursor:pointer;font-weight:600}
.profile-row-edit:hover{background:var(--accentBg)}
.profile-row-clickable{cursor:pointer;transition:background .15s;margin:0 -10px;padding:10px;border-radius:8px;border-bottom:none}
.profile-row-clickable:hover{background:var(--surface2)}

/* Account section */
.account-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--rs);padding:1.25rem;text-align:center;margin-bottom:1rem}
.account-avatar{width:48px;height:48px;border-radius:50%;background:var(--accentBg);color:var(--accent);display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;margin:0 auto .75rem}
.account-email{font-size:14px;font-weight:600;margin-bottom:.25rem}
.account-status{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:.1em;margin-bottom:1rem}
.account-actions{display:flex;gap:6px}
.account-actions button{flex:1}

/* Stats grid */
.stats-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.stat-card{background:var(--surface2);border:1px solid var(--border);border-radius:var(--rs);padding:14px 12px}
.stat-num{font-size:22px;font-weight:700;color:var(--accent2);font-family:'Major Mono Display',monospace;line-height:1;margin-bottom:4px}
.stat-label{font-size:11px;color:var(--text3);text-transform:uppercase;letter-spacing:.05em;font-weight:600}

/* Toggle switch */
.toggle-switch{position:relative;width:36px;height:20px;background:var(--surface3);border-radius:99px;cursor:pointer;transition:background .2s;flex-shrink:0}
.toggle-switch.on{background:var(--accent)}
.toggle-switch::after{content:'';position:absolute;top:2px;left:2px;width:16px;height:16px;background:#fff;border-radius:50%;transition:transform .2s}
.toggle-switch.on::after{transform:translateX(16px)}

/* Goals manager list */
.goal-manage-row{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border:1px solid var(--border);border-radius:8px;margin-bottom:5px;background:var(--surface2)}
.goal-manage-name{font-size:13px;font-weight:500}
.goal-manage-actions{display:flex;gap:6px}

/* Danger button */
.btn-danger{
  width:100%;padding:11px;border-radius:var(--rs);
  border:1px solid var(--red);background:transparent;
  font-size:13px;font-weight:600;cursor:pointer;color:var(--red);
  transition:all .2s;font-family:inherit;margin-top:8px;
}
.btn-danger:hover{background:var(--red);color:#fff}

/* Sign in/up bottom buttons */
.btn-mini-secondary{padding:8px 14px;border-radius:8px;border:1px solid var(--border);background:var(--surface2);color:var(--text2);font-size:12px;cursor:pointer;font-weight:500;transition:all .15s;font-family:inherit}
.btn-mini-secondary:hover{border-color:var(--accent);color:var(--text)}
.btn-mini-primary{padding:8px 14px;border-radius:8px;border:none;background:#FF5C3D;color:#fff;font-size:12px;cursor:pointer;font-weight:600;transition:all .15s;font-family:inherit}
.btn-mini-primary:hover{background:#FF7A5C}

/* Coming soon badge */
.coming-soon{font-size:9px;color:var(--yellow);background:var(--yellowBg);padding:2px 6px;border-radius:99px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}

/* Version footer */
.version-footer{text-align:center;font-size:11px;color:var(--text3);margin-top:1.5rem;padding-top:1rem;border-top:1px solid var(--border)}
.version-footer a{color:var(--text2);text-decoration:none;margin:0 6px}
.version-footer a:hover{color:var(--accent2)}
.habit-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:.75rem}.habit-title{font-family:'Major Mono Display',monospace;font-size:16px;font-weight:400;letter-spacing:0;text-transform:lowercase}
.habit-back{font-size:12px;color:var(--accent2);cursor:pointer;background:none;border:none;padding:0}.habit-back:hover{text-decoration:underline}
.streak-summary{display:flex;gap:8px;margin-bottom:1rem}.streak-card{flex:1;text-align:center;padding:10px 6px;background:var(--accentBg);border-radius:var(--rs)}.streak-card:last-child{background:var(--yellowBg)}.streak-num{font-size:22px;font-weight:700;color:var(--accent2)}.streak-card:last-child .streak-num{color:var(--yellow)}.streak-label{font-size:10px;color:var(--text3);margin-top:2px}
/* Progress-ring summary header (replaces 3-card stats) */
.hm-summary{display:flex;align-items:center;gap:14px;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:14px 16px;margin-bottom:1rem;box-shadow:0 1px 3px rgba(0,0,0,.25),0 8px 24px rgba(0,0,0,.18)}
.hm-summary-ring{position:relative;width:54px;height:54px;flex-shrink:0}
.hm-summary-ring svg{width:54px;height:54px;transform:rotate(-90deg)}
.hm-ring-bg{fill:none;stroke:var(--surface3);stroke-width:3.6}
.hm-ring-fg{fill:none;stroke:var(--green);stroke-width:3.6;stroke-linecap:round;transition:stroke-dasharray .5s ease}
.hm-ring-label{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text)}
.hm-summary-text{flex:1;min-width:0}
.hm-summary-title{font-size:14px;font-weight:600;color:var(--text);line-height:1.25}
.hm-summary-sub{font-size:12px;color:var(--text2);margin-top:2px;line-height:1.3}
.hm-summary-streak{text-align:right;padding-left:14px;border-left:1px solid var(--border);flex-shrink:0}
.hm-streak-num{color:var(--yellow);font-size:18px;font-weight:700;display:inline-flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums}
.hm-streak-num .icon-sm{width:14px;height:14px}
.hm-streak-lbl{color:var(--text3);font-size:10px;margin-top:1px}
.habit-streak{display:inline-flex;align-items:center;gap:3px;color:var(--yellow);font-weight:600}.habit-streak.is-zero{color:var(--text3)}.habit-streak .icon-sm{width:13px;height:13px}
/* Ring celebration when all habits done */
.hm-summary.is-alldone{border-color:var(--green);box-shadow:0 0 0 1px color-mix(in srgb,var(--green) 45%,transparent),0 0 28px color-mix(in srgb,var(--green) 16%,transparent),0 8px 24px rgba(0,0,0,.18)}
.hm-summary-ring{transform-origin:center}
.hm-summary-ring.celebrate{animation:ring-celebrate .8s cubic-bezier(.34,1.56,.64,1)}
@keyframes ring-celebrate{0%{transform:scale(1);filter:drop-shadow(0 0 0 transparent)}40%{transform:scale(1.18);filter:drop-shadow(0 0 12px var(--green))}100%{transform:scale(1);filter:drop-shadow(0 0 0 transparent)}}
/* Congrats banner */
.hm-congrats{display:none;align-items:center;gap:10px;background:linear-gradient(180deg,color-mix(in srgb,var(--green) 14%,var(--surface)) 0%,var(--surface) 100%);border:1px solid var(--green);border-radius:var(--r);padding:12px 14px;margin-bottom:1rem;color:var(--text);box-shadow:0 0 0 1px color-mix(in srgb,var(--green) 35%,transparent),0 0 24px color-mix(in srgb,var(--green) 12%,transparent);overflow:hidden;position:relative}
.hm-congrats.show{display:flex;animation:congrats-in .45s cubic-bezier(.34,1.56,.64,1)}
@keyframes congrats-in{0%{opacity:0;transform:translateY(-8px) scale(.97)}100%{opacity:1;transform:translateY(0) scale(1)}}
.hm-congrats-icon{width:34px;height:34px;border-radius:50%;background:var(--green);color:#06231a;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.hm-congrats-icon .icon-sm{width:18px;height:18px}
.hm-congrats-text{flex:1;min-width:0}
.hm-congrats-title{font-size:14px;font-weight:600;line-height:1.2}
.hm-congrats-sub{font-size:12px;color:var(--text2);margin-top:1px;line-height:1.2}
.section-divider{border:none;border-top:1px solid var(--border);margin:1.25rem 0}.empty-habits{text-align:center;color:var(--text3);font-size:13px;padding:2rem 0}
.goal-group{margin-bottom:1rem}.goal-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;padding:10px 12px;background:var(--surface2);border:1px solid var(--border);border-radius:var(--rs);margin-bottom:6px}.goal-header:hover{border-color:var(--accent)}.goal-header-left{display:flex;align-items:center;gap:8px}.goal-icon{font-size:14px}.goal-name{font-size:14px;font-weight:600}.goal-count{font-size:11px;color:var(--text3)}.goal-toggle{font-size:12px;color:var(--text3);transition:transform .2s;display:inline-block}.goal-toggle.open{transform:rotate(180deg)}.goal-habits{padding-left:4px}
.habit-row{display:flex;align-items:center;justify-content:space-between;padding:8px 10px;border:1px solid var(--border);border-radius:8px;margin-bottom:4px;background:var(--surface)}.habit-row-left{display:flex;flex-direction:column;gap:1px}.habit-row-name{font-size:13px;font-weight:600}.habit-row-meta{font-size:10px;color:var(--text3)}.habit-row-right{display:flex;align-items:center;gap:4px;flex-shrink:0}
.habit-edit-btn{font-size:10px;color:var(--accent2);background:none;border:1px solid var(--accent);border-radius:6px;padding:2px 7px;cursor:pointer}.habit-edit-btn:hover{background:var(--accentBg)}
.habit-del-btn{font-size:14px;color:var(--text3);background:none;border:none;cursor:pointer;padding:2px 4px;border-radius:4px;line-height:1}.habit-del-btn:hover{color:var(--red);background:var(--redBg)}
.day-picker{display:flex;gap:5px;flex-wrap:wrap}.day-chip{padding:5px 9px;border-radius:99px;border:1px solid var(--border);font-size:11px;font-weight:500;color:var(--text3);cursor:pointer;transition:all .25s;background:var(--surface2);user-select:none}.day-chip:hover{box-shadow:0 0 12px rgba(255,92,61,.25),0 0 4px rgba(255,92,61,.15);border-color:var(--accent);color:var(--text)}.day-chip.active{border-color:var(--accent);color:var(--accent2);background:var(--accentBg);box-shadow:0 0 8px rgba(255,92,61,.2)}
.add-habit-input{margin-bottom:8px}.add-habit-btn{width:100%;padding:10px;border-radius:var(--rs);border:none;background:#FF5C3D;color:#fff;font-size:13px;font-weight:600;cursor:pointer;margin-top:8px}.add-habit-btn:hover{background:#FF7A5C}
.goal-select{width:100%;padding:10px 12px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:14px;font-family:inherit;cursor:pointer}.goal-select:focus{outline:none;border-color:var(--accent)}
.month-nav-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px}.month-label{font-size:13px;font-weight:700;color:var(--text)}.month-nav{background:none;border:1px solid var(--border);border-radius:6px;cursor:pointer;color:var(--text3);font-size:13px;padding:2px 8px}.month-nav:hover{color:var(--accent2);border-color:var(--accent)}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:2px}.cal-dow{font-size:9px;color:var(--text2);text-align:center;padding:3px 0;font-weight:600}
.cal-cell{border:1px solid var(--border);border-radius:6px;min-height:56px;padding:3px;background:var(--surface);display:flex;flex-direction:column;gap:1px;overflow:hidden}.cal-cell.empty-cell{background:transparent;border-color:transparent}.cal-cell.is-today{border-color:var(--accent2);background:var(--accentBg)}.cal-cell.has-note::after{content:'📝';font-size:7px;display:block;text-align:right;margin-top:auto}
.cal-date{font-size:9px;font-weight:700;color:var(--text);line-height:1;margin-bottom:1px;cursor:pointer}.cal-cell.is-today .cal-date{color:var(--accent2)}
.cal-date-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:1px}
.cal-day-ring{width:16px;height:16px;position:relative;flex-shrink:0}.cal-day-ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.cal-day-ring-bg{fill:none;stroke:var(--border);stroke-width:4}.cal-day-ring-fg{fill:none;stroke-width:4;stroke-linecap:round}
.cal-big-ring{position:relative;width:38px;height:38px;display:flex;align-items:center;justify-content:center;margin:2px auto 0}
.cal-big-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.cal-big-ring-bg{fill:none;stroke:var(--border);stroke-width:3}.cal-big-ring-fg{fill:none;stroke-width:3;stroke-linecap:round;transition:stroke-dasharray .3s ease}
.cal-big-ring-num{position:relative;z-index:1;font-size:12px;font-weight:600;color:var(--text2);font-variant-numeric:tabular-nums}
.cal-cell.is-selected{border-color:var(--green);box-shadow:0 0 0 1px var(--green)}
.cal-cell.is-future{opacity:.55}
.cal-legend{display:flex;align-items:center;gap:16px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border);font-size:12px;color:var(--text2)}
.cal-legend span{display:inline-flex;align-items:center;gap:6px}
.cal-legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}
.cal-legend-hint{margin-left:auto;color:var(--text3)}
.dd-header{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:14px}
.dd-date{font-size:17px;font-weight:600;color:var(--text)}
.dd-ratio{font-size:14px;font-weight:600;color:var(--accent2)}
.dd-row{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--border)}
.dd-row:last-of-type{border-bottom:none}
.dd-row.is-clickable{cursor:pointer}
.dd-dot{width:11px;height:11px;border-radius:50%;border:2px solid var(--text3);box-sizing:border-box;flex-shrink:0}
.dd-name{flex:1;font-size:15px;color:var(--text)}
.dd-check{width:20px;height:20px;border-radius:5px;border:1.5px solid var(--border2);display:flex;align-items:center;justify-content:center;font-size:12px;color:transparent;flex-shrink:0}
.dd-row.is-done .dd-check{background:var(--green);border-color:var(--green);color:#111}
.dd-hint{font-size:12px;color:var(--text3);margin-top:14px}
.dd-empty{font-size:13px;color:var(--text3);padding:8px 0}
.cal-habit-entry{display:flex;align-items:center;gap:2px;border-radius:3px;padding:1px 2px;flex-shrink:0}.cal-habit-entry.is-done{background:var(--greenBg)}.cal-habit-entry.is-missed{opacity:.55}.cal-habit-entry.is-future{opacity:.3}.cal-habit-entry.clickable{cursor:pointer}.cal-habit-entry.clickable:hover{background:var(--accentBg)}.cal-habit-entry.is-done.clickable:hover{background:var(--greenBg)}
.cal-cb{width:10px;height:10px;border-radius:2px;border:1px solid var(--border2);flex-shrink:0;display:flex;align-items:center;justify-content:center;font-size:7px;background:var(--surface2);color:transparent}.cal-habit-entry.is-done .cal-cb{background:var(--green);border-color:var(--green);color:#111}
.cal-habit-name{font-size:7px;color:var(--text);overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.1}.cal-habit-entry.is-done .cal-habit-name{color:var(--green);font-weight:600}
.cal-note-hint{opacity:0;transition:opacity .15s}#calendarSectionW:hover .cal-note-hint{opacity:1}
.modal-overlay{display:none;position:fixed;inset:0;background:rgba(0,0,0,.7);z-index:100;align-items:center;justify-content:center;padding:1rem}.modal-overlay.open{display:flex}
.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:1.5rem;width:100%;max-width:420px;max-height:90vh;overflow-y:auto;position:relative}
.modal-title{font-family:'Major Mono Display',monospace;font-size:15px;font-weight:400;margin-bottom:.2rem;color:var(--text);letter-spacing:0;text-transform:lowercase}.modal-sub{font-size:12px;color:var(--text3);margin-bottom:1rem}
.modal-close{position:absolute;top:.75rem;right:1rem;background:none;border:none;font-size:18px;cursor:pointer;color:var(--text3);line-height:1}.modal-close:hover{color:var(--text)}
.modal-field{margin-bottom:.75rem}.modal-field-label{font-size:11px;font-weight:600;color:var(--text2);margin-bottom:4px}.note-textarea{min-height:90px}
.modal-actions{display:flex;gap:6px;margin-top:1rem}.modal-btn-cancel{flex:1;padding:10px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface2);font-size:13px;cursor:pointer;color:var(--text3)}.modal-btn-cancel:hover{border-color:var(--accent);color:var(--text)}
.modal-btn-danger{flex:1;padding:10px;border-radius:var(--rs);border:none;background:var(--red);font-size:13px;font-weight:600;cursor:pointer;color:#fff}.modal-btn-danger:hover{opacity:.85}
.delete-warning{font-size:13px;color:var(--text2);margin-bottom:1rem;line-height:1.6}

/* Desktop habits layout */
.habits-wide{display:none}

/* ============ MOBILE HABITS — list-based design ============ */
.hm-topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:1rem}
.hm-back-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);width:44px;height:44px;border-radius:10px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s}
.hm-back-btn:hover{background:var(--surface3);border-color:var(--accent2);color:var(--accent2)}
.hm-back-btn:active{transform:scale(.94)}
.hm-back-btn .icon{width:22px;height:22px}

.hm-cal-icon-btn{background:var(--surface2);border:1px solid var(--border);color:var(--text);width:40px;height:40px;border-radius:8px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;margin-left:.25rem}
.hm-cal-icon-btn:hover{background:var(--surface3);border-color:var(--accent2)}
.hm-cal-icon-btn:active{transform:scale(.96)}
.hm-cal-icon-btn .icon{width:20px;height:20px}

.hm-date-nav{display:flex;align-items:center;justify-content:center;gap:.6rem;margin:1rem 0 1.25rem}
.hm-arrow{background:var(--surface2);border:1px solid var(--border);color:var(--text);width:40px;height:40px;border-radius:8px;font-size:20px;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .15s;font-weight:500}
.hm-arrow:hover{background:var(--surface3);border-color:var(--accent2)}
.hm-arrow:active{transform:scale(.94)}
.hm-date{font-size:17px;font-weight:600;color:var(--text);min-width:130px;text-align:center;letter-spacing:-.01em}
.hm-date-today{color:var(--accent2)}

.hm-goal-card{background:var(--surface2);border:1px solid var(--border);border-radius:12px;padding:1rem;margin-bottom:.85rem;transition:all .2s;box-shadow:0 1px 2px rgba(0,0,0,.3),0 4px 12px rgba(0,0,0,.2)}
.hm-goal-card:hover{border-color:var(--border2);box-shadow:0 2px 4px rgba(0,0,0,.35),0 8px 20px rgba(0,0,0,.25)}
.hm-goal-header{display:flex;align-items:center;justify-content:space-between;cursor:pointer;user-select:none}
.hm-goal-header-left{display:flex;align-items:center;gap:.5rem;flex:1;min-width:0}
.hm-goal-name{font-size:16px;font-weight:600;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hm-goal-chevron{color:var(--text3);transition:transform .2s;flex-shrink:0;width:18px;height:18px}
.hm-goal-card.collapsed .hm-goal-chevron{transform:rotate(-90deg)}
.hm-goal-ratio{font-size:14px;font-weight:600;color:var(--text2);font-variant-numeric:tabular-nums;padding:.25rem .6rem;background:var(--surface);border-radius:6px;flex-shrink:0;margin-left:.5rem}
.hm-goal-ratio.is-complete{color:var(--green);background:var(--greenBg)}
.hm-goal-ratio.is-partial{color:var(--amber);background:rgba(240,160,32,.13)}

.hm-habits{margin-top:.75rem;display:flex;flex-direction:column;gap:.4rem}
.hm-goal-card.collapsed .hm-habits{display:none}
.hm-habit-row{display:flex;align-items:center;gap:.7rem;padding:.7rem .75rem;background:var(--surface);border-radius:8px;transition:background .15s}
.hm-habit-row.is-checked{background:rgba(45,212,160,.06)}
.hm-habit-row.is-not-scheduled{opacity:.35}
.hm-habit-row.is-clickable{cursor:pointer}
.hm-habit-row.is-clickable:active{background:var(--surface2)}

.hm-checkbox{width:24px;height:24px;border-radius:50%;border:2px solid var(--border2);background:transparent;display:flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .15s}
.hm-habit-row.is-checked .hm-checkbox{background:var(--green);border-color:var(--green)}
.hm-checkbox-tick{color:#13100f;font-size:12px;font-weight:800;line-height:1;opacity:0;transition:opacity .15s}
.hm-habit-row.is-checked .hm-checkbox-tick{opacity:1}
.hm-habit-row.is-future .hm-checkbox{border-style:dashed;border-color:var(--text3)}
.hm-habit-row.is-past .hm-checkbox{border-color:var(--text3)}

.hm-habit-name{flex:1;font-size:15px;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.hm-habit-row.is-checked .hm-habit-name{color:var(--text2)}
.hm-habit-actions{display:flex;gap:.3rem;flex-shrink:0;opacity:.5;transition:opacity .15s}
.hm-habit-row:hover .hm-habit-actions,.hm-habit-row.show-actions .hm-habit-actions{opacity:1}
.hm-habit-action-btn{background:transparent;border:none;color:var(--text3);padding:.35rem;cursor:pointer;display:flex;align-items:center;border-radius:4px}
.hm-habit-action-btn:hover{color:var(--text);background:var(--surface2)}
.hm-habit-action-btn .icon-sm{width:16px;height:16px}

.hm-not-scheduled-note{font-size:12px;color:var(--text3);font-style:italic;margin-left:auto;flex-shrink:0}

.hm-add-goal-btn{width:100%;background:var(--surface2);border:1.5px dashed var(--border2);color:var(--text2);padding:.85rem;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.4rem;transition:all .15s;margin-top:.5rem}
.hm-add-goal-btn:hover{border-color:var(--accent);color:var(--accent2);background:var(--accentBg)}

.hm-add-habit-link{width:100%;background:transparent;border:none;color:var(--text3);padding:.55rem;font-size:13px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:.3rem;border-radius:6px;margin-top:.3rem;transition:all .15s}
.hm-add-habit-link:hover{color:var(--accent2);background:var(--accentBg)}
.hm-add-habit-link .icon-sm{width:14px;height:14px}

.hm-empty-goal-note{font-size:13px;color:var(--text3);font-style:italic;text-align:center;padding:.75rem .5rem;background:var(--surface);border-radius:8px}

.hm-empty-day{text-align:center;padding:2rem 1rem;color:var(--text3);font-size:14px;background:var(--surface2);border:1px solid var(--border);border-radius:12px;margin-bottom:.75rem}

/* Calendar Modal */
.hm-cal-modal{max-width:380px;padding:1.25rem}
.hm-cal-modal-title{font-family:'Major Mono Display',monospace;text-transform:lowercase;font-size:15px;color:var(--accent);margin-bottom:.75rem;text-align:center}
.hm-cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:3px}
.hm-cal-dow{font-size:11px;color:var(--text3);text-align:center;padding:4px 0;font-weight:600;text-transform:uppercase}
.hm-cal-cell{aspect-ratio:1;border:1px solid var(--border);border-radius:6px;padding:3px;background:var(--surface2);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;cursor:pointer;transition:all .15s;font-variant-numeric:tabular-nums}
.hm-cal-cell:hover{border-color:var(--accent2)}
.hm-cal-cell.empty-cell{background:transparent;border-color:transparent;cursor:default}
.hm-cal-cell.is-today{border-color:var(--accent2);background:var(--accentBg)}
.hm-cal-cell.is-selected{border-color:var(--accent2);background:var(--accentBg);box-shadow:0 0 0 1px var(--accent2)}
.hm-cal-cell.is-future{opacity:.55}
.hm-cal-day-num{font-size:13px;font-weight:600;color:var(--text);line-height:1;position:relative;z-index:1}
/* progress ring on calendar days */
.hm-cal-ring{position:relative;width:32px;height:32px;display:flex;align-items:center;justify-content:center}
.hm-cal-ring svg{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg)}
.hm-cal-ring-bg{fill:none;stroke:var(--border);stroke-width:3}
.hm-cal-ring-fg{fill:none;stroke-width:3;stroke-linecap:round;transition:stroke-dasharray .3s ease}
.hm-cal-cell.is-today .hm-cal-day-num{color:var(--accent2)}
.hm-cal-cell.has-note::after{content:'';width:4px;height:4px;border-radius:50%;background:var(--accent2);position:absolute;top:3px;right:3px}
.hm-cal-cell{position:relative}
/* ====================================================== */

@media(min-width:900px){
  .screen#screen-habits.active{max-width:1200px;width:100%}
  .habits-narrow{display:none}
  .habits-wide{display:grid;grid-template-columns:1fr 380px;gap:1.5rem;align-items:start}
  .habits-wide .habits-left,.habits-wide .habits-right{display:flex;flex-direction:column;gap:1rem}
  .habits-wide .card-block{background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:1.5rem;box-shadow:0 1px 3px rgba(0,0,0,.25),0 8px 24px rgba(0,0,0,.18)}
  .habits-wide .cal-cell{aspect-ratio:1;min-height:0;padding:4px;align-items:center;justify-content:flex-start;cursor:pointer;transition:all .15s}
  .habits-wide .cal-cell:not(.empty-cell):hover{border-color:var(--accent2)}
  .habits-wide .cal-date{font-size:12px;align-self:flex-start}
  .habits-wide .cal-dow{font-size:11px;padding:6px 0}
  .habits-wide .month-label{font-size:18px}
  .habits-wide .month-nav{font-size:16px;padding:6px 14px}
  .habits-wide .streak-summary{margin-bottom:0}
}
.goal-visibility-row{display:flex;align-items:center;gap:8px;padding:6px 0}
.goal-toggle-cb{width:14px;height:14px;border-radius:3px;border:1.5px solid var(--border2);background:var(--surface2);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:9px;color:transparent;flex-shrink:0;transition:all .15s}
.goal-toggle-cb.checked{background:var(--accent);border-color:var(--accent);color:#fff}
.goal-toggle-cb:hover{border-color:var(--accent)}
.goal-toggle-label{font-size:13px;color:var(--text);cursor:pointer;flex:1;user-select:none}
.goal-toggle-label.hidden-goal{color:var(--text3);text-decoration:line-through}
.section-mini-header{font-size:11px;text-transform:uppercase;letter-spacing:.1em;color:var(--text3);font-weight:600;margin-bottom:8px}
/* Signup modal */
.signup-modal{max-width:440px;padding:2rem}
#signupModal.open{animation:fadeIn .5s ease}
#signupModal.open .modal{animation:fadeInUp .55s cubic-bezier(.2,.8,.25,1)}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes fadeInUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.signup-emoji{font-size:32px;text-align:center;margin-bottom:.5rem;color:var(--accent)}
.signup-headline{font-family:'Major Mono Display',monospace;font-size:20px;text-transform:lowercase;text-align:center;margin-bottom:.5rem;line-height:1.2}
.signup-sub{font-size:13px;color:var(--text2);text-align:center;margin-bottom:1.5rem;line-height:1.6}
.signup-benefits{background:var(--surface2);border:1px solid var(--border);border-radius:var(--rs);padding:1rem;margin-bottom:1.25rem}
.signup-benefit{font-size:12px;color:var(--text);display:flex;align-items:center;gap:8px;padding:4px 0}
.signup-benefit .icon{color:var(--green);width:14px;height:14px}
.signup-field{margin-bottom:.75rem}
.signup-field input{width:100%;padding:11px 14px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:14px;font-family:inherit}
.signup-field input:focus{outline:none;border-color:var(--accent)}
.signup-divider{display:flex;align-items:center;gap:8px;margin:.75rem 0;color:var(--text3);font-size:11px;text-transform:uppercase;letter-spacing:.1em}
.signup-divider::before,.signup-divider::after{content:'';flex:1;height:1px;background:var(--border)}
.btn-google{width:100%;padding:11px;border-radius:var(--rs);border:1px solid var(--border);background:var(--surface2);color:var(--text);font-size:14px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:8px;transition:all .2s;margin-bottom:.75rem}
.btn-google:hover{border-color:var(--text2);background:var(--surface3)}
.signup-skip{display:block;text-align:center;font-size:12px;color:var(--text3);background:none;border:none;cursor:pointer;padding:8px;width:100%;text-decoration:underline}
.signup-skip:hover{color:var(--text2)}
.signup-terms{font-size:11px;color:var(--text3);text-align:center;margin-top:.75rem;line-height:1.5}
.signup-terms a{color:var(--accent2);text-decoration:none}
.auth-message{padding:.75rem 1rem;border-radius:8px;font-size:13px;margin-bottom:.75rem;text-align:center;line-height:1.5}
.auth-message-error{background:rgba(255,92,61,.1);border:1px solid rgba(255,92,61,.3);color:var(--accent2)}
.auth-message-success{background:rgba(110,200,120,.1);border:1px solid rgba(110,200,120,.3);color:#8edb96}
.suggestions-wrap{margin:8px 0}.suggestion-btn{width:100%;padding:8px 12px;border-radius:8px;border:1px dashed var(--accent);background:var(--accentBg);font-size:12px;color:var(--accent2);cursor:pointer;text-align:left;margin-bottom:5px}.suggestion-btn:hover{border-style:solid;background:rgba(124,109,240,.2)}
.suggest-link{font-size:11px;color:var(--accent2);background:none;border:none;cursor:pointer;padding:0;text-decoration:underline;display:block;margin-bottom:8px}.suggest-link:hover{color:var(--accent)}
.suggest-loading{font-size:12px;color:var(--text3);padding:6px 0;display:flex;align-items:center;gap:6px}
.spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite;vertical-align:middle;margin-right:5px}
.spinner-dark{border-color:var(--border2);border-top-color:var(--accent)}.spinner-purple{border-color:rgba(124,109,240,.3);border-top-color:var(--accent)}
@keyframes spin{to{transform:rotate(360deg)}}
/* Icons */
.icon{width:18px;height:18px;stroke-width:2;flex-shrink:0;display:inline-block;vertical-align:middle}
.icon-sm{width:14px;height:14px;stroke-width:2}
.icon-lg{width:32px;height:32px;stroke-width:1.75;color:var(--accent)}
.icon-xl{width:48px;height:48px;stroke-width:1.5;color:var(--accent)}
.icon-color{color:var(--accent2)}
.result-greeting{margin-bottom:1.25rem;text-align:left}
.greeting-time{font-size:11px;text-transform:uppercase;letter-spacing:.15em;color:var(--text3);font-weight:600;margin-bottom:6px}
.greeting-name{font-family:'Major Mono Display',monospace;font-size:22px;font-weight:400;color:var(--text);letter-spacing:0;text-transform:lowercase;line-height:1.2;margin-bottom:4px}
.greeting-tagline{font-size:13px;color:var(--text2);line-height:1.4}
.q-icon-wrap,.result-icon-wrap,.api-icon-wrap{margin-bottom:.75rem}
.btn-with-icon{display:flex;align-items:center;justify-content:center;gap:8px}
.option-icon-wrap{display:flex;align-items:center;gap:10px}
.option-icon-wrap .icon{color:var(--accent2)}

/* Bottom tab bar */
.tab-bar{
  position:fixed;bottom:0;left:0;right:0;
  background:rgba(19,16,15,.92);backdrop-filter:blur(20px);
  border-top:1px solid var(--border);
  display:none;align-items:stretch;
  padding:6px 4px calc(env(safe-area-inset-bottom,0px));
  z-index:80;
}
.tab-bar.visible{display:flex}
.tab{
  flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
  background:none;border:none;color:var(--text3);
  padding:8px 4px calc(26px + 8px);font-size:10px;font-weight:600;letter-spacing:.05em;
  cursor:pointer;transition:all .15s;font-family:inherit;
  text-transform:uppercase;border-radius:12px;
}
.tab .icon{width:22px;height:22px;stroke-width:2}
.tab:hover{color:var(--text2)}
.tab.active{color:var(--accent)}
.tab-primary{
  background:var(--accent);color:#fff !important;
  margin:0 6px 26px 4px;flex:1.15;
  padding-bottom:8px;
}
.tab-primary:hover{background:var(--accent2);color:#fff !important}
.tab-primary.active{background:var(--accent2);color:#fff !important}
.tab-primary .icon{width:24px;height:24px}
/* Stoic accent is near-white — flip text/icon to dark so they're readable */
:root.theme-stoic .tab-primary,
:root.theme-stoic .tab-primary:hover,
:root.theme-stoic .tab-primary.active{color:#0a0a0a !important}
body.has-tabbar #screen-result,
body.has-tabbar #screen-profile,
body.has-tabbar #screen-habits,
body.has-tabbar #screen-incentives,
body.has-tabbar #screen-library{padding-bottom:calc(110px + env(safe-area-inset-bottom,0px))}
@media(max-width:480px){
  .tab{font-size:9px;padding:6px 2px calc(26px + 6px)}
  .tab-primary{padding-bottom:6px;margin-bottom:26px}
  .tab .icon{width:20px;height:20px}
}

/* ===== Top auth header ===== */
.app-header{position:fixed;top:0;left:0;right:0;height:52px;z-index:40;display:flex;align-items:center;justify-content:space-between;padding:0 16px;background:color-mix(in srgb,var(--bg) 82%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--border)}
.app-header-brand{font-family:'Major Mono Display',monospace;font-size:16px;text-transform:lowercase;letter-spacing:.02em;color:var(--text2)}
.app-header-actions{display:flex;gap:8px}
.header-auth-btn{font-family:inherit;font-size:12.5px;font-weight:600;color:var(--text2);background:var(--surface2);border:1px solid var(--border);border-radius:99px;padding:7px 14px;cursor:pointer;transition:.15s}
.header-auth-btn:hover{color:var(--text);border-color:var(--border2)}
.header-auth-btn-primary{color:#fff;background:var(--accent);border-color:var(--accent)}
.header-auth-btn-primary:hover{filter:brightness(1.08);color:#fff}
body{padding-top:68px}

/* ===== Get motivated CTA ===== */
.onboard-cta{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin:4px 0 14px;font-family:inherit;font-size:15px;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent2));border:none;border-radius:var(--rs);padding:14px;cursor:pointer;box-shadow:0 6px 18px var(--glow-soft);transition:.15s}
.onboard-cta:hover{filter:brightness(1.06);box-shadow:0 8px 24px var(--glow-sharp)}
/* Cap action-button width on the unboxed main screen so they don't stretch full-width */
#screen-result #generateBtn{display:block;max-width:360px;margin-left:auto;margin-right:auto}
#screen-result .btn-green,#screen-result .onboard-cta{max-width:360px;margin-left:auto;margin-right:auto}

/* ===== Onboarding slide-up sheet ===== */
.onboard-backdrop{position:fixed;inset:0;z-index:50;background:rgba(0,0,0,.55);opacity:0;pointer-events:none;transition:opacity .25s}
body.onboard-open .onboard-backdrop{opacity:1;pointer-events:auto}
.onboard-sheet{position:fixed;left:0;right:0;bottom:0;z-index:51;height:75vh;max-height:75vh;background:var(--bg);border-top-left-radius:20px;border-top-right-radius:20px;border:1px solid var(--border);border-bottom:none;box-shadow:0 -8px 40px rgba(0,0,0,.5);transform:translateY(100%);transition:transform .3s cubic-bezier(.4,0,.2,1);overflow-y:auto;padding:8px 16px 28px}
.onboard-sheet.open{transform:translateY(0)}
.onboard-sheet-grab{width:38px;height:4px;border-radius:99px;background:var(--border2);margin:8px auto 4px}
.onboard-sheet-close{position:absolute;top:10px;right:14px;background:none;border:none;color:var(--text3);font-size:26px;line-height:1;cursor:pointer;padding:0 4px}
.onboard-sheet-close:hover{color:var(--text)}
.onboard-card{max-width:520px;margin:0 auto;box-shadow:none;border:none;background:none;padding:1rem .25rem}
@media(min-width:560px){.onboard-sheet{left:50%;transform:translate(-50%,100%);max-width:560px;border-radius:20px 20px 0 0}.onboard-sheet.open{transform:translate(-50%,0)}}


/* ===== Main-screen Momentum box ===== */
.result-greeting-row{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:16px}
.result-greeting{min-width:0}
.momentum-box{flex:0 0 132px;width:132px;min-height:78px;box-sizing:border-box;border:1px solid var(--border2);border-radius:var(--rs);background:var(--surface2);padding:10px 12px;cursor:pointer;display:flex;flex-direction:column;justify-content:center;transition:.15s}
.momentum-box:hover{border-color:var(--accent);background:var(--surface3)}
.momentum-box-label{font-size:10px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--text3);display:flex;align-items:center;gap:5px}
.momentum-box-val{display:inline-block;font-size:30px;font-weight:800;line-height:1.05;letter-spacing:-.02em;color:var(--accent2);margin-top:2px}
.momentum-box-val.momentum-pop{animation:momentumPop .42s ease}
@keyframes momentumPop{0%{transform:scale(1)}40%{transform:scale(1.16)}100%{transform:scale(1)}}
.momentum-box-empty .momentum-box-empty-text{font-size:11px;line-height:1.35;color:var(--text3)}
@media(max-width:440px){.momentum-box{flex-basis:118px;width:118px}}

/* ===== Momentum box: yellow→orange gradient outline + glow ===== */
.momentum-box{
  border:2px solid transparent;
  background:linear-gradient(var(--surface2),var(--surface2)) padding-box,
            linear-gradient(135deg,var(--yellow),var(--accent)) border-box;
  box-shadow:0 0 0 1px rgba(0,0,0,.15),0 4px 14px var(--glow-soft);
}
.momentum-box:hover{
  background:linear-gradient(var(--surface3),var(--surface3)) padding-box,
            linear-gradient(135deg,var(--yellow),var(--accent)) border-box;
  box-shadow:0 0 0 1px rgba(0,0,0,.15),0 6px 20px var(--glow-sharp);
  transform:translateY(-1px);
}
.momentum-box-val{background:linear-gradient(135deg,var(--yellow),var(--accent2));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:var(--accent2)}

/* ===== Momentum box: designer polish ===== */
.momentum-box{flex-basis:140px;width:140px;gap:6px;position:relative;overflow:hidden}
.momentum-box:active{transform:translateY(0) scale(.98)}
.momentum-box:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.momentum-box-label .icon-sm{width:13px;height:13px;color:var(--accent)}
.momentum-box-figure{display:flex;align-items:baseline;gap:4px}
.momentum-box-unit{font-size:12px;font-weight:600;color:var(--text3)}
.icon-xs{width:11px;height:11px;vertical-align:-1px}
.momentum-box-empty-text{margin-top:1px}
.momentum-box-cta{display:inline-flex;align-items:center;gap:4px;margin-top:7px;font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--accent2)}
.momentum-box:hover .momentum-box-cta{gap:6px}
.momentum-box-cta .icon-xs{transition:transform .15s}
.momentum-box:hover .momentum-box-cta .icon-xs{transform:translateX(2px)}
@media(max-width:440px){.momentum-box{flex-basis:124px;width:124px}}
