:root{--bg-top: #f6efe5;--bg-bottom: #dbe8de;--surface: rgba(255, 251, 247, .86);--surface-strong: rgba(255, 255, 255, .96);--surface-soft: rgba(255, 255, 255, .68);--text: #182432;--muted: #5c6875;--border: rgba(24, 36, 50, .1);--accent: #0f766e;--accent-strong: #115e59;--accent-soft: #d9f1ec;--warm: #ea580c;--warm-soft: #ffedd5;--danger: #b93815;--shadow: 0 24px 70px rgba(24, 36, 50, .14);--radius-xl: 28px;--radius-lg: 22px;--radius-md: 18px;--radius-sm: 14px}*{box-sizing:border-box}html{color-scheme:light}body{margin:0;font-family:Avenir Next,Trebuchet MS,Segoe UI,sans-serif;color:var(--text);background:radial-gradient(circle at top left,rgba(234,88,12,.16),transparent 34%),radial-gradient(circle at top right,rgba(15,118,110,.2),transparent 28%),linear-gradient(180deg,var(--bg-top),var(--bg-bottom));min-height:100vh;position:relative;overflow-x:hidden}body:before,body:after{content:"";position:fixed;z-index:0;border-radius:999px;filter:blur(10px);pointer-events:none}body:before{top:6%;left:-90px;width:220px;height:220px;background:#ffffff70}body:after{right:-70px;bottom:12%;width:180px;height:180px;background:#0f766e1f}button,input,select{font:inherit}button{cursor:pointer}.wrap{position:relative;z-index:1;width:min(100% - 20px,960px);margin:0 auto;padding:calc(env(safe-area-inset-top,0px) + 16px) 0 calc(env(safe-area-inset-bottom,0px) + 32px);display:grid;gap:16px}.card{background:var(--surface);border:1px solid rgba(255,255,255,.55);border-radius:var(--radius-xl);padding:18px;box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px)}h1,h2,h3{margin:0;font-family:Avenir Next Condensed,Gill Sans,Trebuchet MS,sans-serif;letter-spacing:-.03em}h1{font-size:clamp(2rem,7vw,2.9rem);line-height:.95}h2{font-size:clamp(1.35rem,4.5vw,1.85rem);line-height:1}.stack,.app-shell,.section-card,.header-copy,.header-actions,.habit-form{display:grid;gap:12px}.field{display:grid;gap:8px;font-size:.92rem;color:var(--muted)}.field span{font-weight:700;letter-spacing:.01em}input,select,button{width:100%;border:1px solid var(--border);background:#ffffffd1;border-radius:var(--radius-sm);padding:13px 14px;font-size:1rem;color:var(--text);transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease,background-color .2s ease}input::placeholder{color:#8b97a4}input:focus,select:focus,button:focus{outline:none;border-color:#0f766e59;box-shadow:0 0 0 4px #0f766e1f}button{font-weight:700;border:1px solid transparent;background:#ffffff9e}button:disabled{cursor:wait;opacity:.8}button.primary{background:linear-gradient(135deg,var(--accent),var(--accent-strong));color:#fff;box-shadow:0 16px 28px #0f766e38}button:active{transform:scale(.985)}.ghost{background:#ffffff80;border-color:#18243214}.danger{background:var(--warm-soft);color:var(--danger)}.success{background:#0f766e24;color:var(--accent-strong)}.eyebrow{margin:0 0 8px;color:var(--accent-strong);font-size:.78rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.muted{color:var(--muted);margin:0;line-height:1.5}.auth-card{width:min(100%,480px);margin:0 auto;padding:clamp(24px,4vw,34px);display:grid;gap:18px;text-align:center;position:relative;overflow:hidden;background:radial-gradient(circle at top right,rgba(15,118,110,.12),transparent 32%),linear-gradient(180deg,#fffffffa,#faf7f3eb);border-color:#ffffffd1}.auth-card:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,#ea4335,#fbbc05,#34a853,#4285f4)}.auth-wrap{min-height:100vh;width:min(100% - 24px,760px);display:grid;place-items:center;padding:calc(env(safe-area-inset-top,0px) + 24px) 0 calc(env(safe-area-inset-bottom,0px) + 24px)}.auth-brand,.auth-header,.auth-actions{position:relative;z-index:1}.auth-brand{display:grid;justify-items:center;gap:12px}.auth-brand-mark{width:56px;height:56px;border-radius:18px;display:grid;place-items:center;background:linear-gradient(145deg,#0f766e24,#0f766e0a),#ffffffeb;border:1px solid rgba(15,118,110,.12);box-shadow:0 18px 30px #18243214;color:var(--accent-strong);font-size:1rem;font-weight:800;letter-spacing:.08em}.auth-eyebrow{margin:0}.auth-header{display:grid;gap:10px}.auth-header h1{font-size:clamp(2.25rem,6vw,3.4rem)}.auth-copy{width:min(100%,28ch);margin:0 auto;font-size:1rem;line-height:1.55}.auth-google-button{min-height:58px;display:inline-flex;align-items:center;justify-content:center;gap:14px;width:100%;padding:16px 18px;border-radius:18px;text-decoration:none;color:#202124;background:#fffffffa;border:1px solid rgba(24,36,50,.12);box-shadow:0 22px 34px #1824321f,inset 0 1px #fffc;font-weight:700;transition:transform .2s ease,box-shadow .2s ease,border-color .2s ease}.auth-google-button:hover{transform:translateY(-1px);box-shadow:0 24px 38px #18243224,inset 0 1px #fffc;border-color:#1824322e}.auth-google-button:focus-visible{outline:none;box-shadow:0 0 0 4px #4285f42e,0 24px 38px #18243224}.auth-google-icon{width:24px;height:24px;display:inline-grid;place-items:center}.auth-google-icon svg{width:100%;height:100%}.auth-footer{position:relative;z-index:1;display:inline-flex;align-items:center;justify-content:center;gap:10px;font-size:.94rem}.auth-footer-link{color:var(--muted);text-decoration:none}.auth-footer-link:hover{color:var(--text)}.auth-footer-separator{color:#18243247}.app-shell{gap:16px}.app-header{padding-top:20px}.field-compact input{min-height:48px}.header-note{display:grid;gap:2px;padding:14px 16px;background:linear-gradient(145deg,#ffffffc7,#ffffff85);border:1px solid rgba(255,255,255,.52);border-radius:var(--radius-lg)}.header-note strong{font-size:.95rem;text-transform:capitalize}.section-heading{display:grid;grid-template-columns:1fr auto;gap:4px 12px;align-items:center}.section-heading p.eyebrow{grid-column:1 / -1}.section-heading h2{margin:0}.top-bar{display:flex;justify-content:space-between;align-items:flex-start;gap:14px}.summary{position:relative;overflow:hidden;padding:18px;border-radius:var(--radius-lg);background:radial-gradient(circle at top right,rgba(255,255,255,.6),transparent 28%),linear-gradient(135deg,#0f766e1f,#ea580c14);border:1px solid rgba(15,118,110,.1)}.summary-shell{display:grid;gap:16px;align-items:center}.summary-label{margin:0 0 6px;color:var(--muted);font-size:.84rem;letter-spacing:.08em;text-transform:uppercase}.summary-main{display:block;font-size:1.45rem;line-height:1.05}.summary-caption{margin:8px 0 0;color:var(--muted)}.summary-ring{width:86px;height:86px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,rgba(255,251,247,1) 56%,transparent 58%),conic-gradient(var(--accent) var(--progress, 0%),rgba(24,36,50,.08) 0);justify-self:start}.summary-ring span{font-weight:800;font-size:1rem}.feedback-banner{border-color:#b938152e;background:#ffedd5c2;color:var(--danger);font-weight:700}.state-card{min-height:220px;display:grid;place-items:center;text-align:center;gap:12px}.legal-card{width:min(100%,760px);margin:0 auto;display:grid;gap:18px}.legal-intro{font-size:1rem}.legal-sections{display:grid;gap:16px}.legal-section{display:grid;gap:8px;padding:16px 18px;border-radius:var(--radius-lg);background:#ffffff8c;border:1px solid rgba(24,36,50,.08)}.legal-section h2{font-size:1.1rem}.legal-link{width:auto;justify-self:start;text-decoration:none}.loader{width:40px;height:40px;border-radius:999px;border:4px solid rgba(15,118,110,.12);border-top-color:var(--accent);animation:spin .85s linear infinite}.error{min-height:1.2rem;margin:0;color:var(--danger);font-size:.95rem}.habits{list-style:none;margin:0;padding:0;display:grid;gap:12px}.habit-card{border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px;background:var(--surface-strong);display:grid;gap:10px;box-shadow:0 16px 30px #18243214}.habit-card.is-complete{border-color:#0f766e2e;background:linear-gradient(180deg,#fffffff5,#ebf8f4f5)}.habit-card-button{width:100%;text-align:left;padding:14px;background:var(--surface-strong);border-color:#18243214}.habit-card-button:hover{transform:translateY(-1px);box-shadow:0 20px 36px #1824321c}.habit-card-button.is-reopenable{position:relative}.habit-card-button.is-armed{border-color:#ea580c4d;background:linear-gradient(180deg,#fff8f1fa,#fffffff5);box-shadow:0 22px 36px #1824321f,0 0 0 5px #ea580c1a}.habit-top{display:flex;justify-content:stretch;gap:12px;align-items:center}.habit-copy{display:grid;gap:6px;width:100%}.habit-name{font-size:1.02rem;font-weight:800;line-height:1.1}.habit-meta{display:grid;grid-template-columns:auto auto 1fr;gap:8px;align-items:center;justify-content:start;color:var(--muted);font-size:.84rem}.type-pill{display:inline-flex;align-items:center;justify-content:center;padding:5px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent-strong);font-weight:700}.habit-goal{font-size:.78rem;font-weight:700;color:var(--text)}.habit-progress{display:grid;gap:10px}.habit-progress-static{gap:12px}.habit-progress-row{display:flex;justify-content:space-between;gap:12px;align-items:end}.habit-value{font-size:.95rem;color:var(--text)}.habit-percent{font-size:1.25rem;font-weight:800;color:var(--accent-strong)}.habit-card-chevron{display:inline-grid;place-items:center;width:42px;min-width:42px;height:42px;border-radius:14px;background:#1824320f;color:var(--text);font-size:1.2rem}.habit-static-track{width:100%;height:10px;border-radius:999px;overflow:hidden;background:#1824321a}.habit-static-fill{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),#19a28f)}.slider-shell{display:grid;gap:0}input[type=range]{--range-progress: 0%;width:100%;padding:0;border:0;border-radius:999px;appearance:none;-webkit-appearance:none;background:transparent;box-shadow:none}input[type=range]::-webkit-slider-runnable-track{height:8px;border-radius:999px;background:linear-gradient(90deg,var(--accent) 0,var(--accent) var(--range-progress),rgba(24,36,50,.12) var(--range-progress),rgba(24,36,50,.12) 100%)}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;margin-top:-7px;border-radius:50%;border:3px solid #ffffff;background:var(--warm);box-shadow:0 10px 18px #ea580c4d}input[type=range]::-moz-range-track{height:8px;border-radius:999px;background:#1824321f}input[type=range]::-moz-range-progress{height:8px;border-radius:999px;background:var(--accent)}input[type=range]::-moz-range-thumb{width:22px;height:22px;border:3px solid #ffffff;border-radius:50%;background:var(--warm);box-shadow:0 10px 18px #ea580c4d}.habit-controls{display:flex;justify-content:flex-end;gap:8px}.habit-controls button{width:auto;border-radius:999px;padding:8px 10px;line-height:1}.habit-controls .icon-btn{width:32px;height:32px;display:inline-grid;place-items:center;padding:0;border-radius:999px;font-size:.95rem}.badge{border-radius:999px;padding:6px 10px;background:#1824320f;border:1px solid rgba(24,36,50,.08);font-size:.72rem;font-weight:800;white-space:nowrap;justify-self:end}.badge.is-complete{background:var(--accent-soft);color:var(--accent-strong);border-color:#0f766e1f}.empty-state{padding:16px;border-radius:var(--radius-lg);background:#ffffff8c;border:1px dashed rgba(24,36,50,.12);text-align:center;display:grid;gap:8px}.habit-workspace{position:fixed;inset:0;z-index:40;background:linear-gradient(180deg,#1018283d,#10182857),#f6efe5f0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.habit-workspace-shell{width:100%;height:100dvh;overflow-y:auto;background:radial-gradient(circle at top right,rgba(15,118,110,.16),transparent 24%),radial-gradient(circle at top left,rgba(234,88,12,.14),transparent 28%),linear-gradient(180deg,#f9f5effa,#e8f1eafa)}.habit-workspace-header{position:sticky;top:0;z-index:2;display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;padding:calc(env(safe-area-inset-top,0px) + 18px) min(4vw,34px) 18px;background:#faf7f2c2;border-bottom:1px solid rgba(24,36,50,.08);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.habit-workspace-heading{display:grid;gap:6px}.habit-workspace-heading h2{font-size:clamp(2rem,6vw,3.6rem);line-height:.92}.habit-workspace-back,.habit-workspace-toggle{width:auto;min-width:120px;padding-inline:18px}.habit-workspace-body{width:min(100% - 28px,1080px);margin:0 auto;padding:22px 0 calc(env(safe-area-inset-bottom,0px) + 34px);display:grid;gap:20px}.habit-workspace-hero{display:grid;gap:28px;padding:clamp(20px,4vw,34px);border-radius:34px;background:radial-gradient(circle at top right,rgba(255,255,255,.74),transparent 30%),linear-gradient(145deg,#fffffffa,#f9fcfbe6);border:1px solid rgba(255,255,255,.8);box-shadow:0 28px 60px #18243224}.habit-workspace-hero.is-complete{background:radial-gradient(circle at top right,rgba(255,255,255,.78),transparent 30%),linear-gradient(145deg,#edfbf6fa,#f7fdfbeb)}.habit-workspace-meta{display:flex;flex-wrap:wrap;gap:10px;align-items:center}.habit-workspace-meter{display:grid;grid-template-columns:minmax(70px,92px) minmax(0,1fr) minmax(70px,92px);gap:clamp(12px,3vw,26px);align-items:center}.habit-stepper{width:100%;aspect-ratio:1;border-radius:28px;font-size:clamp(2rem,4vw,2.7rem);font-weight:800;display:grid;place-items:center;padding:0;box-shadow:0 18px 32px #1824321f}.habit-stepper.success{background:linear-gradient(135deg,#0f766e,#14b8a6);color:#fff}.habit-stepper.danger{background:linear-gradient(135deg,#fff2e2,#ffe6d6);color:var(--danger)}.habit-workspace-value{display:grid;justify-items:center;gap:10px;text-align:center}.habit-workspace-number,.habit-workspace-number-input{width:min(100%,260px);padding:0;border:0;background:transparent;box-shadow:none;text-align:center;font-size:clamp(4rem,12vw,7rem);line-height:.9;font-weight:800;letter-spacing:-.05em;color:var(--text)}.habit-workspace-number:hover{color:var(--accent-strong);transform:none}.habit-workspace-number:focus,.habit-workspace-number-input:focus{box-shadow:none}.habit-workspace-number-input{border-bottom:3px solid rgba(15,118,110,.18);border-radius:0}.habit-workspace-target{font-size:clamp(1rem,2vw,1.2rem);font-weight:700;color:var(--muted)}.habit-workspace-slider{display:grid;gap:14px}.habit-workspace-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:12px}.habit-workspace-complete,.habit-workspace-accept{width:auto;min-width:180px;padding-inline:22px}.habit-edit-card{width:min(100%,760px);margin:0 auto;display:grid;gap:22px;padding:clamp(20px,4vw,30px)}.habit-edit-grid{display:grid;gap:14px}.habit-edit-actions{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px}.habit-edit-delete,.habit-edit-save{width:auto;min-width:180px}.habit-workspace-error{text-align:center;min-height:1.5rem;font-weight:700}input:disabled,select:disabled{background:#e2e8f0b3;color:#7b8794;cursor:not-allowed}#openAddHabitBtn,#closeAddHabitBtn,.top-bar>button,.section-heading>button{width:auto}#openAddHabitBtn,#closeAddHabitBtn{justify-self:start;padding-inline:16px}#openAddHabitBtn{box-shadow:0 14px 24px #18243214}#addHabitPanel{background:linear-gradient(180deg,#fffffffa,#fffbf7e6);border-color:#0f766e1f}@keyframes spin{to{transform:rotate(360deg)}}@media(max-width:640px){.auth-wrap{width:min(100% - 16px,760px)}.top-bar,.habit-top,.habit-progress-row{flex-direction:column;align-items:stretch}.top-bar button,.habit-controls button,.section-heading>button,.habit-workspace-actions button,.habit-edit-actions button{width:100%}.badge{justify-self:start}.summary-ring{justify-self:stretch}.auth-card{gap:16px;padding:22px 18px;border-radius:24px}.auth-google-button{min-height:54px}.habit-card-button{padding:13px}.habit-card-chevron{width:36px;min-width:36px;height:36px}.habit-workspace-header{grid-template-columns:1fr;padding-inline:16px}.habit-workspace-back,.habit-workspace-toggle{width:100%}.habit-workspace-body{width:min(100% - 18px,1080px);padding-top:18px}.habit-workspace-hero{border-radius:26px;gap:22px;padding:18px}.habit-workspace-meter{grid-template-columns:1fr}.habit-stepper{max-width:180px;justify-self:center}.habit-workspace-number,.habit-workspace-number-input{width:100%;font-size:clamp(3.2rem,18vw,5rem)}}@media(min-width:641px){.summary-shell{grid-template-columns:minmax(0,1fr) auto}.header-actions{grid-template-columns:minmax(220px,280px) minmax(0,1fr);align-items:end}.habit-edit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(min-width:760px){.wrap{width:min(100% - 36px,1040px);padding-top:28px}.card{padding:22px}.habit-form{grid-template-columns:repeat(2,minmax(0,1fr));align-items:end}.habit-form button,.habit-form .error{grid-column:1 / -1}.app-shell{gap:18px}}
