@import "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap";*{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0d0d0d;--surface:#1a1a1a;--surface-strong:#202020;--surface-hover:#222;--border:#2a2a2a;--text:#fff;--text-secondary:#888;--text-muted:#555;--primary:#8b5cf6;--accent-secondary:#06b6d4;--primary-gradient:linear-gradient(135deg, #8b5cf6, #7c3aed);--success:#22c55e;--success-soft:#22c55e2e;--success-border:#22c55e2e;--danger:#ef4444;--warning:#eab308}body{background:var(--bg);color:var(--text);max-width:480px;min-height:100vh;margin:0 auto;font-family:Inter,-apple-system,BlinkMacSystemFont,sans-serif;overflow-x:hidden}.app{background:var(--bg);min-height:100vh;color:var(--text);flex-direction:column;padding-bottom:80px;display:flex}.app.theme-heatmap{--primary:#22c55e;--accent-secondary:#16a34a;--success:#22c55e}.app.theme-pixel{--primary:#8b5cf6;--accent-secondary:#06b6d4;--success:#8b5cf6}.app.theme-neon{--primary:#ec4899;--accent-secondary:#22d3ee;--success:#ec4899}.app.theme-minimal{--primary:#fff;--accent-secondary:#a3a3a3;--success:#d4d4d4}.app.theme-retro{--primary:#eab308;--accent-secondary:#22c55e;--success:#eab308}.app.theme-gradient{--primary:#8b5cf6;--accent-secondary:#06b6d4;--success:#06b6d4}.app-header{padding:24px 24px 16px}.app-header h1{font-size:28px;font-weight:800}.streak-badge{color:var(--warning);background:#eab30826;border-radius:20px;align-items:center;gap:6px;margin-top:8px;padding:6px 12px;font-size:13px;font-weight:700;display:inline-flex}.app-main{flex:1;overflow-y:auto}.grid-screen{padding:0 24px}.daily-pulse{background:radial-gradient(circle at top left, #22c55e2e, transparent 38%), linear-gradient(135deg, var(--surface-strong), #151515);border:1px solid var(--success-border);border-radius:18px;justify-content:space-between;align-items:center;gap:14px;margin-bottom:18px;padding:16px;display:flex}.daily-pulse>div{min-width:0}.daily-pulse .eyebrow,.export-kicker{color:var(--success);text-transform:uppercase;font-size:11px;font-weight:800;display:block}.daily-pulse strong{margin-top:4px;font-size:22px;font-weight:800;display:block}.daily-pulse p{color:var(--text-secondary);margin-top:2px;font-size:12px}.btn-compact{color:#111;min-height:40px;font:inherit;cursor:pointer;background:#fff;border:1px solid #ffffff1a;border-radius:999px;flex-shrink:0;padding:0 14px;font-size:12px;font-weight:800}.quest-strip{grid-template-columns:1fr 1fr;gap:8px;margin-bottom:18px;display:grid}.quest-strip span{border:1px solid var(--border);background:var(--surface);min-width:0;color:var(--text-secondary);text-align:center;border-radius:14px;padding:10px 12px;font-size:12px;font-weight:800}.grid-section{margin-bottom:24px}.day-labels{grid-template-columns:repeat(7,1fr);gap:3px;margin-bottom:6px;display:grid}.day-labels span{text-align:center;color:var(--text-muted);font-size:10px;font-weight:600}.pixel-grid{grid-template-columns:repeat(7,1fr);gap:3px;display:grid}.pixel-cell{aspect-ratio:1;border-radius:3px;transition:all .2s}.pixel-cell.empty{background:var(--surface)}.pixel-cell.today{outline:2px solid var(--primary);outline-offset:1px}.completion-bar{background:var(--surface);border-radius:14px;margin-bottom:20px;padding:16px}.completion-bar .label{color:var(--text-secondary);margin-bottom:8px;font-size:12px;font-weight:600}.bar-track{background:#222;border-radius:4px;height:8px;overflow:hidden}.bar-fill{background:linear-gradient(90deg, var(--primary), var(--accent-secondary));border-radius:4px;height:100%;transition:width .5s}.bar-pct{text-align:right;margin-top:6px;font-size:20px;font-weight:800}.today-section{margin-bottom:20px}.today-section h3{color:var(--text-secondary);margin-bottom:12px;font-size:14px;font-weight:700}.habit-row{background:var(--surface);cursor:pointer;width:100%;color:var(--text);font:inherit;text-align:left;border:1px solid #0000;border-radius:14px;align-items:center;gap:12px;margin-bottom:8px;padding:14px 16px;transition:background .2s;display:flex}.habit-row:hover,.habit-row:active{background:var(--surface-hover)}.habit-row.done{background:#22c55e1f;border-color:#22c55e2e}.habit-row.done:active{background:#22c55e24}.habit-dot{border-radius:50%;flex-shrink:0;width:10px;height:10px}.habit-name{flex:1;font-size:15px;font-weight:600}.habit-check{border:2px solid var(--border);border-radius:50%;justify-content:center;align-items:center;width:28px;height:28px;font-size:14px;transition:all .2s;display:flex}.habit-check.done{background:var(--success);border-color:var(--success);animation:.24s ease-out checkPop}.checkin-toast{z-index:120;background:#141414f5;border:1px solid #22c55e47;border-radius:16px;justify-content:space-between;align-items:center;gap:14px;width:min(100% - 32px,448px);padding:12px 14px;animation:.22s ease-out toastIn;display:flex;position:fixed;bottom:96px;left:50%;transform:translate(-50%);box-shadow:0 12px 40px #0006}.checkin-toast span{min-width:0;color:var(--text);font-size:13px;font-weight:800}.toast-actions{flex-shrink:0;align-items:center;gap:10px;display:flex}.toast-actions button{color:var(--success);font:inherit;cursor:pointer;background:0 0;border:none;flex-shrink:0;font-size:12px;font-weight:800}.onboarding-screen{justify-content:center;align-items:center;min-height:100vh;padding:24px;display:flex}.onboarding-content{width:100%;max-width:400px}.onboarding-content h2{margin-bottom:8px;font-size:32px;font-weight:800;line-height:1.2}.onboarding-content .subtitle{color:var(--text-secondary);margin-bottom:14px;font-size:14px;line-height:1.5}.proof-strip{flex-wrap:wrap;gap:8px;margin-bottom:28px;display:flex}.proof-strip span{border:1px solid var(--border);background:var(--surface);color:var(--text-secondary);border-radius:999px;padding:7px 10px;font-size:11px;font-weight:700}.template-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:24px;display:grid}.template-card{background:var(--surface);cursor:pointer;border:2px solid #0000;border-radius:14px;padding:16px;transition:all .2s}.template-card.selected{border-color:var(--primary);background:#8b5cf61a}.template-card .emoji{margin-bottom:8px;font-size:24px}.template-card .name{font-size:13px;font-weight:600}.template-card .desc{color:var(--text-muted);margin-top:2px;font-size:11px}.hint{text-align:center;color:var(--text-muted);margin-top:8px;font-size:12px}.btn-primary{background:var(--primary-gradient);color:#fff;cursor:pointer;border:none;border-radius:14px;justify-content:center;align-items:center;gap:8px;width:100%;padding:16px;font-family:inherit;font-size:16px;font-weight:700;transition:opacity .2s;display:inline-flex}.btn-share{background:linear-gradient(135deg, var(--success), #14b8a6);margin-bottom:10px}.btn-primary:hover{opacity:.9}.btn-primary:disabled{opacity:.5;cursor:not-allowed}.btn-secondary{background:var(--surface-strong);min-height:44px;color:var(--text);cursor:pointer;border:1px solid #ffffff1a;border-radius:12px;justify-content:center;align-items:center;gap:8px;padding:0 12px;font-family:inherit;font-size:13px;font-weight:800;display:inline-flex}.btn-secondary:hover{background:var(--surface-hover)}.themes-screen{padding:0 24px}.themes-screen h2{margin-bottom:20px;font-size:22px;font-weight:800}.theme-card{background:var(--surface);cursor:pointer;border:2px solid #0000;border-radius:16px;align-items:center;gap:14px;margin-bottom:12px;padding:16px;transition:border-color .2s;display:flex}.theme-card.active{border-color:var(--primary)}.theme-preview{background:#111;border-radius:12px;flex-shrink:0;grid-template-columns:repeat(3,1fr);gap:2px;width:56px;height:56px;padding:6px;display:grid}.theme-info{flex:1}.theme-info .name{font-size:15px;font-weight:700}.theme-info .desc{color:var(--text-muted);margin-top:2px;font-size:12px}.theme-lock{color:var(--warning);background:#eab30826;border-radius:8px;padding:4px 10px;font-size:11px;font-weight:600}.theme-check{background:var(--primary);border-radius:50%;justify-content:center;align-items:center;width:24px;height:24px;font-size:12px;display:flex}.settings-screen{padding:0 24px 120px}.settings-screen h2{margin-bottom:20px;font-size:22px;font-weight:800}.settings-group{background:var(--surface);border-radius:16px;margin-bottom:16px;padding:4px 0}.settings-item{cursor:pointer;border-bottom:1px solid #222;justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.settings-item:last-child{border-bottom:none}.settings-item .left{align-items:center;gap:12px;display:flex}.settings-item .icon{text-align:center;width:28px;font-size:18px}.settings-item .text{font-size:15px;font-weight:500}.settings-item .arrow{color:var(--text-muted);font-size:14px}.settings-select{cursor:default}.settings-select select,.settings-text-field input{border:1px solid var(--border);min-width:112px;max-width:48%;color:var(--text);font:inherit;background:#111;border-radius:10px;padding:8px 10px;font-size:13px}.settings-text-field{cursor:default;align-items:flex-start;gap:16px}.settings-text-field .left{align-items:flex-start}.settings-text-field p{color:var(--text-muted);margin:4px 0 0;font-size:12px;line-height:1.35}.settings-text-field input{width:150px}.toggle{cursor:pointer;background:#333;border-radius:14px;width:48px;height:28px;transition:background .2s;position:relative}.toggle.on{background:var(--primary)}.toggle:after{content:"";background:#fff;border-radius:50%;width:22px;height:22px;transition:transform .2s;position:absolute;top:3px;left:3px}.toggle.on:after{transform:translate(20px)}.premium-banner{text-align:center;background:linear-gradient(135deg,#8b5cf633,#06b6d433);border:1px solid #8b5cf64d;border-radius:16px;padding:24px}.auth-panel{text-align:left;gap:14px;margin-bottom:16px;display:grid}.auth-panel__header strong{font-size:20px;font-weight:800;display:block}.auth-panel p{color:#ffffffb8;margin:4px 0 0;font-size:.9rem}.auth-form{gap:10px;display:grid}.auth-panel input{color:#fff;min-height:44px;font:inherit;background:#ffffff14;border:1px solid #ffffff24;border-radius:12px;padding:0 12px}.auth-panel input:focus{border-color:#8b5cf6bd;outline:3px solid #8b5cf633}.auth-actions{grid-template-columns:1fr;gap:10px;margin-top:2px;display:grid}.auth-button{width:100%;min-height:46px;font:inherit;cursor:pointer;border:0;border-radius:14px;padding:0 16px;font-size:14px;font-weight:800}.auth-button--primary{background:var(--primary-gradient);color:#fff;box-shadow:0 14px 32px #7c3aed47}.auth-button--secondary{color:#ffffffe0;background:#ffffff14;border:1px solid #ffffff29}.auth-button:hover:not(:disabled){transform:translateY(-1px)}.auth-button:focus-visible{outline-offset:2px;outline:3px solid #8b5cf647}.auth-button:disabled{cursor:not-allowed;opacity:.56}.auth-message{font-weight:700}.auth-message.success{color:var(--success)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (width>=420px){.auth-actions{grid-template-columns:minmax(0,1fr) minmax(150px,auto)}}.premium-banner .crown{margin-bottom:8px;font-size:32px}.premium-banner h3{margin-bottom:4px;font-size:16px;font-weight:700}.premium-banner p{color:var(--text-secondary);margin-bottom:12px;font-size:12px}.pro-status{text-align:left;background:#ffffff12;border:1px solid #ffffff24;border-radius:14px;gap:6px;margin:14px 0;padding:14px;display:grid}.pro-status strong{color:#fffffff0;font-size:14px}.pro-status span{color:#ffffffb3;font-size:12px;line-height:1.35}.pro-status.active{background:#22c55e1a;border-color:#22c55e57}.billing-actions{gap:10px;margin-top:12px;display:grid}.premium-btn{background:linear-gradient(135deg, var(--primary), #06b6d4);color:#fff;cursor:pointer;text-wrap:balance;border:none;border-radius:12px;justify-content:center;align-items:center;min-height:48px;padding:10px 14px;font-family:inherit;font-size:12px;font-weight:700;line-height:1.2;display:inline-flex}.premium-btn:disabled{opacity:.45;cursor:not-allowed}.premium-btn.secondary{color:#ffffffe6;background:#ffffff1f;border:1px solid #ffffff2e}.premium-btn.tertiary{background:linear-gradient(135deg, var(--warning), #f97316)}.premium-btn.danger{background:linear-gradient(135deg,#ef4444,#f97316)}.pricing-options{grid-template-columns:1fr;gap:8px;margin-top:8px;display:grid}.trial-disclosure{max-width:34ch;margin:10px auto 0;line-height:1.35}@media (width>=420px){.pricing-options{grid-template-columns:1fr 1fr}}.export-screen{padding:0 24px}.export-screen h2{margin-bottom:8px;font-size:22px;font-weight:800}.export-screen .desc{color:var(--text-secondary);margin-bottom:24px;font-size:14px}.export-preview{margin-bottom:24px}.export-card{text-align:center;background:radial-gradient(circle at 100% 0,#06b6d433,#0000 34%),radial-gradient(circle at 0 100%,#8b5cf640,#0000 40%),#111;border:1px solid #ffffff14;border-radius:22px;padding:32px 24px}.export-logo{margin:8px 0 10px}.export-title{background:linear-gradient(135deg, var(--primary), #06b6d4, var(--success));-webkit-text-fill-color:transparent;-webkit-background-clip:text;font-size:24px;font-weight:800}.export-card h3{margin-bottom:14px;font-size:18px;line-height:1.2}.export-score{background:#ffffff12;border-radius:14px;justify-content:space-between;align-items:center;gap:10px;max-width:240px;margin:0 auto 18px;padding:10px 12px;display:flex}.export-score strong{text-align:left;min-width:0;font-size:13px}.export-score span{color:var(--success);flex-shrink:0;font-size:18px;font-weight:800}.export-grid{grid-template-columns:repeat(7,1fr);gap:3px;max-width:200px;margin:0 auto 16px;display:grid}.export-cell{aspect-ratio:1;background:#ffffff14;border-radius:3px}.export-cell.today{outline-offset:1px;outline:2px solid #fff}.export-cta{color:var(--text);margin-bottom:18px;font-size:13px;font-weight:800}.export-footer{color:var(--text-muted);justify-content:space-between;font-size:12px;display:flex}.share-panel{border:1px solid var(--border);background:var(--surface);border-radius:16px;gap:12px;margin-bottom:12px;padding:14px;display:grid}.share-link-box{gap:6px;min-width:0;display:grid}.share-link-box span{color:var(--text-muted);text-transform:uppercase;font-size:11px;font-weight:800}.share-link-box strong{min-width:0;color:var(--text);overflow-wrap:anywhere;background:#ffffff0a;border:1px solid #ffffff14;border-radius:12px;padding:10px 12px;font-size:13px;line-height:1.3}.share-actions{grid-template-columns:1fr 1fr;gap:8px;display:grid}.social-share-row{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;display:grid}.social-share-button{min-height:42px;color:var(--text);cursor:pointer;font:inherit;background:#ffffff0d;border:1px solid #ffffff1a;border-radius:12px;justify-content:center;align-items:center;font-size:14px;font-weight:900;display:inline-flex}.social-share-button:hover{background:#ffffff14;border-color:#fff3}.share-error{color:#fca5a5;margin:0;font-size:12px;font-weight:700}@media (width<=360px){.share-actions{grid-template-columns:1fr}}.public-share-page{color:#fff;background:radial-gradient(circle at 20% 0,#22c55e29,#0000 28%),radial-gradient(circle at 90% 18%,#06b6d424,#0000 30%),#0d0d0d;min-height:100vh;padding:24px}.public-share-shell{width:min(760px,100%);margin:0 auto}.public-share-header{justify-content:space-between;align-items:flex-start;gap:18px;margin-bottom:18px;display:flex}.public-share-kicker{color:#ffffff94;text-transform:uppercase;margin-bottom:6px;font-size:12px;font-weight:800;display:block}.public-share-header h1,.public-share-empty h1{letter-spacing:0;margin:0;font-size:clamp(32px,8vw,56px);line-height:1}.public-share-header p,.public-share-empty p{color:#ffffff9e;margin:10px 0 0;font-weight:700;line-height:1.45}.public-share-cta{color:#fff;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:8px;flex:none;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:10px 14px;font-weight:900;text-decoration:none;display:inline-flex}.public-share-stats{grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:14px;display:grid}.public-share-stats div{background:#ffffff14;border:1px solid #ffffff21;border-radius:8px;min-width:0;padding:14px}.public-share-stats span{color:#ffffff94;margin-bottom:6px;font-size:12px;font-weight:800;display:block}.public-share-stats strong{font-size:26px;line-height:1}.public-share-card{background:#ffffff14;border:1px solid #ffffff24;border-radius:8px;padding:18px;box-shadow:0 24px 80px #00000047}.public-share-card-head{color:#ffffffb8;justify-content:space-between;align-items:center;margin-bottom:14px;font-weight:900;display:flex}.public-share-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;display:grid}.public-share-cell{aspect-ratio:1;border-radius:5px;box-shadow:inset 0 0 0 1px #ffffff0f}.public-share-cell.empty{opacity:0}.public-share-cell.today{outline-offset:2px;outline:2px solid #ffffffd1}.public-share-habits{flex-wrap:wrap;gap:8px;margin-top:14px;display:flex}.public-share-habit{color:#ffffffd6;background:#ffffff14;border:1px solid #ffffff1f;border-radius:8px;align-items:center;gap:8px;max-width:100%;padding:9px 11px;font-size:13px;font-weight:800;display:inline-flex}.public-share-habit-dot{border-radius:999px;flex:none;width:9px;height:9px}.public-share-loading{text-align:center;color:#ffffffad;margin-top:32vh;font-weight:900}.public-share-empty{align-content:center;justify-items:start;min-height:72vh;display:grid}@media (width<=640px){.public-share-page{padding:18px}.public-share-header{display:grid}.public-share-cta{width:100%}.public-share-stats{grid-template-columns:1fr}.public-share-grid{gap:6px}}.nav-bar{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--surface);z-index:100;background:#0d0d0df2;justify-content:space-around;width:100%;max-width:480px;padding:12px 0 24px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.nav-item{color:var(--text-muted);cursor:pointer;flex-direction:column;align-items:center;gap:4px;font-size:10px;transition:color .2s;display:flex}.nav-item.active{color:var(--primary)}.nav-item .nav-icon{font-size:20px}button:focus-visible,select:focus-visible,.nav-item:focus-visible,.habit-row:focus-visible,.template-card:focus-visible,.theme-card:focus-visible{outline:2px solid var(--success);outline-offset:3px}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes checkPop{0%{transform:scale(.82)}72%{transform:scale(1.12)}to{transform:scale(1)}}@keyframes toastIn{0%{opacity:0;transform:translate(-50%,8px)}to{opacity:1;transform:translate(-50%)}}.pixel-cell{animation:.3s forwards fadeIn}.pixel-cell:nth-child(n){animation-delay:calc(var(--i,0) * 10ms)}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
