:root{--paper:#f7f6f1;--ink:#34364c;--muted:#858595;--pink:#ed76a4;--pink-soft:#fae1eb;--mint:#dceecb;--blue:#dfedf8;--lilac:#ebe5f8;--border:#e9e7e3;--white:#fff;--radius:1.6rem;font-size:16px;color-scheme:light}
*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Avenir Next","Nunito","Trebuchet MS",Arial,sans-serif;line-height:1.5}button,input,select,textarea{font:inherit}button{cursor:pointer;color:inherit}button:disabled{cursor:wait;opacity:.55}button,a,input,select,textarea{touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,.remote-focus{outline:3px solid #d54f91;outline-offset:4px}button:focus:not(:focus-visible){outline:none}button.remote-focus{outline:3px solid #d54f91;outline-offset:4px}button{border:0}svg{display:block}.icon{width:1.35rem;height:1.35rem;flex-shrink:0;display:inline-block;vertical-align:middle}h1,h2,h3,p{margin:0}h1,h2,h3{line-height:1.15;letter-spacing:-.035em}h2{font-size:1.55rem}h3{font-size:1.08rem}.muted{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:.68rem;font-weight:800}.pill{display:inline-flex;align-items:center;gap:.35rem;border-radius:2rem;padding:.35rem .75rem;font-size:.72rem;font-weight:700}.pill.white{background:#ffffffa8}.pill.mint{background:var(--mint);color:#536346}.app-wrap{max-width:90rem;margin:auto;padding:0 3rem}.topbar{min-height:6.2rem;border-bottom:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:1rem}.brand{display:flex;align-items:center;gap:.85rem}.brand-mark{width:2.65rem;height:2.65rem;display:grid;place-items:center;background:var(--pink-soft);border-radius:.85rem;font-size:2rem;color:var(--pink);transform:rotate(-8deg)}.brand-name{font-size:1.15rem;font-weight:800;letter-spacing:-.045em}.brand small{display:block;font-size:.68rem;letter-spacing:.035em;color:var(--muted)}.header-actions{display:flex;align-items:center;gap:.65rem}.button{display:inline-flex;justify-content:center;align-items:center;gap:.55rem;border-radius:.8rem;min-height:2.8rem;padding:.55rem 1rem;background:var(--white);border:1px solid var(--border);font-size:.8rem;font-weight:700;transition:background .15s,transform .15s}.button:hover{background:#f3f0f6}.button.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.button.primary:hover{background:#4c4866}.button.pink{background:var(--pink);color:white;border-color:var(--pink)}.button.ghost{background:transparent;border-color:transparent}.button.danger{color:#bb4e68;background:#fff0f2;border-color:#f4d9de}.button.active{background:var(--lilac);border-color:#ded1ef}.icon-button{width:2.25rem;height:2.25rem;display:grid;place-items:center;border:1px solid var(--border);background:#fff;border-radius:.75rem;font-size:1.5rem}.hero{display:flex;align-items:center;justify-content:space-between;gap:2rem;padding:2.2rem 0 1.9rem}.hello{display:flex;align-items:center;gap:.45rem;color:#92908d;font-size:.76rem;margin-bottom:.8rem}.hello .icon{width:1rem;height:1rem;color:#c9a052}.hero h1{font-size:2.65rem;font-weight:800;line-height:1.12}.hero h1 span{color:var(--pink)}.hero-copy>p{font-size:.83rem;color:var(--muted);margin-top:.8rem}.hero-stats{display:flex;gap:.85rem}.stat-card{padding:1rem 1.1rem;min-width:8.6rem;min-height:6.6rem;border:1px solid var(--border);background:var(--white);border-radius:1.1rem}.stat-card.mint{background:var(--mint);border-color:#d6e7c5}.stat-card .stat-label{font-size:.7rem;color:#838590;display:flex;gap:.35rem;align-items:center}.stat-card.mint .stat-label{color:#657556}.stat-card .stat-label .icon{width:1rem;height:1rem}.stat-number{display:flex;gap:.35rem;align-items:baseline;margin-top:.35rem;line-height:1.15}.stat-number strong{font-size:2.1rem;letter-spacing:-.055em}.stat-number small{font-size:.7rem;color:#7d8672}.stat-sub{display:block;font-size:.6rem;color:var(--muted);margin-top:.35rem}.parent-strip{padding:.65rem 1rem;margin:0 0 1rem;border-radius:.8rem;background:#e6efd9;display:flex;align-items:center;gap:.5rem;justify-content:space-between;font-size:.76rem;color:#52613e}.parent-strip .button{min-height:2rem;padding:.2rem .65rem;font-size:.72rem}.dashboard{display:grid;grid-template-columns:1fr;gap:1.5rem;align-items:stretch}.journey-card{position:relative;background:var(--lilac);border:1px solid #e0d8ef;border-radius:var(--radius);padding:1.5rem;overflow:hidden;display:flex;flex-direction:column}.card-heading{display:flex;align-items:center;justify-content:space-between;gap:1rem}.card-heading .eyebrow{color:#a095b2;margin-bottom:.35rem}.card-heading h2{font-size:1.45rem}.card-heading .sticker-star{font-size:2.5rem;color:#b99ad8;transform:rotate(12deg);text-shadow:3px 3px white}.tabs{display:flex;gap:.25rem;padding:.25rem;border-radius:.85rem;background:#ffffff65;margin-top:1.1rem}.tab{flex:1;padding:.4rem .6rem;background:transparent;border-radius:.6rem;font-size:.76rem;font-weight:700;min-height:2.1rem;color:#8d849f}.tab.active{background:var(--white);color:var(--ink);box-shadow:0 2px 5px #766f9210}.journey-scene{position:relative;width:100%;margin:.2rem 0 0;flex:1;min-height:13rem}.journey-scene svg{width:100%;height:100%;max-height:19rem;overflow:visible}.map-note{font-size:12px;font-family:inherit;fill:#9e91b3;font-weight:700}.map-star{fill:#d6baeb;stroke:#f9f5ff;stroke-width:2}.goal-progress{display:flex;justify-content:space-between;align-items:center;gap:.5rem;font-size:.71rem;color:#968aa9;margin:.5rem 0 .6rem}.goal-progress strong{font-size:1.05rem;letter-spacing:-.02em;color:var(--ink)}.goal-progress strong small{font-size:.71rem;color:#968aa9;font-weight:500}.progress-track{height:.55rem;border-radius:1rem;background:#dcd3ed;overflow:hidden}.progress-track>span{display:block;min-width:0;height:100%;border-radius:inherit;background:#b095d6;transition:width .7s cubic-bezier(.2,.8,.2,1)}.reward-card{background:#fff;border-radius:1rem;padding:.9rem;display:flex;gap:.85rem;align-items:center;margin-top:1rem;border:1px solid #fff8}.reward-icon{width:3rem;height:3rem;display:grid;place-items:center;background:#fff0d6;border-radius:.85rem;flex-shrink:0;color:#cfa66c}.reward-icon .icon{width:1.6rem;height:1.6rem}.reward-copy{flex:1;min-width:0}.reward-copy .eyebrow{color:#b39d83;font-size:.6rem;letter-spacing:.09em;margin-bottom:.25rem}.reward-copy strong{display:block;font-size:.86rem;overflow-wrap:anywhere}.reward-copy p{color:var(--muted);font-size:.66rem;margin-top:.15rem}.reward-card .icon-button{border-color:#ede8f1;font-size:1.05rem}.tasks-card{border:1px solid var(--border);background:var(--white);border-radius:var(--radius);padding:1.5rem;display:flex;flex-direction:column}.tasks-card .card-heading h2{font-size:1.45rem}.task-count{font-size:.76rem;color:var(--muted);white-space:nowrap}.task-filter{display:flex;gap:1rem;margin:1rem 0 1.05rem;border-bottom:1px solid #efedf0}.filter-button{background:none;color:#9997a4;padding:0 0 .65rem;font-size:.75rem;font-weight:700;border-bottom:2px solid transparent}.filter-button.active{color:var(--ink);border-bottom-color:var(--pink)}.task-list{display:flex;flex-direction:column;gap:.6rem;flex:1}.task-row{width:100%;display:flex;align-items:center;gap:.75rem;text-align:left;padding:.65rem .75rem;border:1px solid #eeedf0;background:#fcfcfb;border-radius:.95rem;min-height:4.15rem;transition:background .2s,border-color .2s}.task-row:hover{background:#f7f5fa;border-color:#dfd5e9}.task-row.done{background:#f1f7e9;border-color:#e2ecd8}.task-icon{width:2.5rem;height:2.5rem;display:grid;place-items:center;border-radius:.75rem;flex-shrink:0}.task-icon .icon{width:1.4rem;height:1.4rem}.cat-school{background:#e6ebfa;color:#8a98c5}.cat-dance{background:#f9e5ef;color:#c17f9f}.cat-art{background:#f9eddb;color:#c6a069}.cat-home{background:#e7f0df;color:#94ac7a}.cat-achievement{background:#ece4f6;color:#a28abf}.cat-other{background:#e1eef2;color:#80a9b2}.cat-penalty{background:#f7e0e3;color:#c48489}.task-text{flex:1;min-width:0}.task-text strong{display:block;font-size:.79rem;font-weight:700;overflow-wrap:anywhere}.task-text small{display:block;font-size:.63rem;color:var(--muted);margin-top:.15rem}.task-points{font-size:.73rem;font-weight:800;color:#a599ae;white-space:nowrap}.task-points.negative{color:#c27d85}.task-check{width:1.15rem;height:1.15rem;border:1.5px solid #d8d6df;border-radius:.35rem;flex-shrink:0;display:grid;place-items:center;font-size:.8rem;color:#fff}.done .task-check{background:#9fb67e;border-color:#9fb67e}.done .task-points{color:#90a774}.tasks-foot{margin-top:1rem;padding-top:.85rem;border-top:1px solid #efedf0;display:flex;align-items:center;gap:.5rem;font-size:.64rem;color:#96939f}.tasks-foot .icon{width:.95rem;height:.95rem;color:#baafc9}.empty{padding:2rem 1rem;text-align:center;color:var(--muted);font-size:.8rem}.empty .big-symbol{font-size:2rem;display:block;margin-bottom:.5rem}.achievements{padding:1.8rem 0}.section-title{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem}.section-title h2{font-size:1.15rem;display:flex;align-items:center;gap:.5rem}.section-title h2 .icon{color:#caa474;width:1.1rem;height:1.1rem}.section-title>span{font-size:.7rem;color:var(--muted)}.achievement-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.achievement-card{display:flex;align-items:center;gap:.9rem;padding:1rem 1.1rem;background:#fff;border:1px solid var(--border);border-radius:1.1rem;text-align:left;min-height:6rem}.achievement-card .task-icon{width:3rem;height:3rem;border-radius:1rem}.achievement-card .task-text strong{font-size:.8rem}.achievement-card .task-text small{font-size:.65rem}.achievement-card .icon-lock{color:#c0b8c9;width:1rem;height:1rem}.achievement-card.done{background:#f1f7e9;border-color:#dce7ce}.encouragement{background:#e4edf7;border:1px solid #dbe5ef;border-radius:1.1rem;display:flex;align-items:center;gap:1rem;padding:1rem 1.1rem}.encouragement .flower{font-size:2.2rem;color:#aac3e0;line-height:1}.encouragement strong{font-size:.79rem;display:block}.encouragement p{font-size:.66rem;color:#8598ab;margin-top:.2rem}.footer{border-top:1px solid var(--border);display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:1.2rem 0 1.5rem;font-size:.65rem;color:#a39da3}.footer .remote-help{display:flex;align-items:center;gap:.45rem}.key{font-size:.58rem;padding:.1rem .3rem;border:1px solid #dcd8dc;border-radius:.2rem;background:#fff;color:#a49bac}.connection{display:flex;align-items:center;gap:.4rem}.connection-dot{width:.35rem;height:.35rem;border-radius:50%;background:#aabd91}.connection.offline .connection-dot{background:#dc9a8b}.connection.offline{color:#ba7a6e}.loading{display:grid;place-content:center;text-align:center;min-height:80vh;color:var(--muted);gap:1rem}.loading-star{font-size:3rem;color:var(--pink);animation:pulse 1s ease-in-out infinite alternate}.error-screen{max-width:30rem;margin:20vh auto;text-align:center;padding:2rem}.error-screen p{margin:1rem 0;color:var(--muted)}.modal-shell{position:fixed;inset:0;background:#35304760;backdrop-filter:blur(5px);z-index:100;display:flex;align-items:center;justify-content:center;padding:1.5rem}.modal-shell[hidden],.toast[hidden]{display:none}.modal-card{width:100%;max-width:42rem;max-height:90vh;overflow-y:auto;background:var(--paper);border-radius:1.5rem;padding:1.5rem;box-shadow:0 20px 100px #30223833}.modal-card.narrow{max-width:28rem}.modal-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem}.modal-header h2{font-size:1.35rem}.modal-header .icon-button{flex-shrink:0}.modal-description{font-size:.8rem;color:var(--muted);margin-bottom:1.2rem}.panel-tabs{display:flex;gap:.4rem;margin-bottom:1.2rem;flex-wrap:wrap}.panel-tabs .button{min-height:2.5rem;font-size:.75rem;padding:.35rem .75rem}.panel-actions{display:flex;align-items:center;justify-content:space-between;gap:.6rem;margin-bottom:1rem}.panel-note{color:var(--muted);font-size:.7rem}.admin-list{display:flex;flex-direction:column;gap:.6rem}.admin-row{border:1px solid var(--border);background:white;border-radius:.85rem;padding:.75rem;display:flex;align-items:center;gap:.65rem}.admin-row .button{min-height:2.2rem;font-size:.68rem;padding:.3rem .6rem}.admin-row .task-text small{font-size:.63rem}.admin-row .task-text{min-width:0}.form{display:flex;flex-direction:column;gap:1rem}.field{display:flex;flex-direction:column;gap:.35rem;font-size:.78rem;font-weight:700}.field input,.field select,.field textarea{width:100%;padding:.7rem .8rem;border:1px solid #dedbe3;background:#fff;border-radius:.7rem;color:var(--ink);font-weight:400;min-height:2.7rem}.field textarea{min-height:5rem;resize:vertical}.form-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.field small{font-weight:400;color:var(--muted);font-size:.65rem}.form-footer{display:flex;justify-content:flex-end;gap:.6rem;margin-top:.25rem}.form-error{color:#b65273;background:#fde9ee;border-radius:.6rem;padding:.6rem .8rem;font-size:.75rem}.form-error:empty{display:none}.checkbox-field{display:flex;align-items:center;gap:.55rem;font-size:.75rem}.checkbox-field input{width:1.1rem;height:1.1rem;accent-color:var(--pink)}.days-selector{border:0;padding:0;margin:0}.days-selector legend{font-size:.78rem;font-weight:700;margin-bottom:.5rem}.days-options{display:flex;gap:.4rem;flex-wrap:wrap}.day-choice{display:flex;align-items:center;gap:.25rem;font-size:.72rem;border-radius:.6rem;background:white;border:1px solid var(--border);padding:.4rem .5rem}.day-choice input{accent-color:var(--pink)}.history-item{display:flex;justify-content:space-between;gap:1rem;padding:.75rem 0;border-bottom:1px solid var(--border)}.history-item strong{font-size:.76rem;display:block;overflow-wrap:anywhere}.history-item small{font-size:.62rem;color:var(--muted)}.history-amount{font-size:.85rem;font-weight:800;color:#91a972;white-space:nowrap}.history-amount.negative{color:#c67e90}.goal-admin{background:white;border:1px solid var(--border);padding:1rem;border-radius:1rem;margin-bottom:.7rem}.goal-admin .goal-progress{margin:.5rem 0}.goal-admin p{font-size:.75rem;color:var(--muted);margin:.25rem 0 .75rem}.goal-admin .button{font-size:.72rem;min-height:2.3rem}.goal-detail{background:var(--lilac);padding:1.2rem;border-radius:1rem}.goal-detail h3{font-size:1.2rem}.goal-detail p{font-size:.85rem;margin:.75rem 0}.detail-points{font-size:2rem;font-weight:800;color:#a187c2;letter-spacing:-.05em}.toast{position:fixed;bottom:1.8rem;left:50%;transform:translateX(-50%);max-width:90vw;padding:.8rem 1.3rem;background:var(--ink);color:white;border-radius:1rem;box-shadow:0 6px 24px #33333320;font-size:.8rem;z-index:150;text-align:center}.celebration{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:140}.confetti{position:absolute;top:-1rem;width:.5rem;height:.85rem;animation:fall 1.8s ease-in forwards;border-radius:.15rem}.skip-link{position:fixed;top:-5rem;left:1rem;padding:.5rem 1rem;background:white;z-index:200}.skip-link:focus{top:1rem}body.modal-open{overflow:hidden}
@keyframes fall{to{transform:translateY(105vh) rotate(480deg);opacity:0}}@keyframes pulse{to{transform:scale(1.15)}}
@media(min-width:1700px){:root{font-size:clamp(18px,1.04vw,40px)}.app-wrap{max-width:90rem}.hero{padding-top:1.8rem}.journey-scene{min-height:12rem}.journey-scene svg{max-height:16rem}}
@media(max-width:1100px){.app-wrap{padding:0 1.5rem}.hero h1{font-size:2.3rem}.hero-stats{gap:.6rem}.stat-card{min-width:7.6rem;padding:.8rem}.dashboard{gap:1rem;grid-template-columns:1fr}.journey-card,.tasks-card{padding:1.2rem}.achievement-grid{grid-template-columns:1fr 1fr}.encouragement{grid-column:1/-1}.task-text strong{font-size:.75rem}.hero{gap:1rem}}
@media(max-width:760px){.app-wrap{padding:0 1rem}.topbar{min-height:5rem}.brand-name{font-size:1rem}.brand small{font-size:.6rem}.brand-mark{width:2.1rem;height:2.1rem;font-size:1.6rem}.header-actions{gap:.25rem}.header-actions .button{padding:.55rem .7rem}.tv-toggle .button-label{display:none}.hero{padding:1.5rem 0;align-items:stretch;flex-direction:column;gap:1.2rem}.hero h1{font-size:2.3rem}.hero-stats{display:grid;grid-template-columns:1fr 1fr}.stat-card{min-height:5.7rem;display:grid;grid-template-columns:1fr auto;align-items:center;gap:.1rem}.stat-number{margin:0;grid-row:1/3;grid-column:2}.stat-number strong{font-size:1.8rem}.stat-sub{margin:0}.dashboard{grid-template-columns:1fr}.journey-scene{min-height:14rem;flex:auto}.journey-scene svg{height:auto;max-height:none}.journey-card,.tasks-card{padding:1.2rem}.tasks-card .task-row{min-height:4.25rem}.task-text strong{font-size:.82rem}.achievement-grid{grid-template-columns:1fr}.encouragement{grid-column:auto}.achievements{padding:1.5rem 0}.section-title>span{font-size:.6rem}.footer{flex-direction:column;align-items:flex-start;padding-bottom:1.2rem}.modal-shell{padding:.6rem}.modal-card{max-height:94vh;padding:1.2rem;border-radius:1.1rem}.modal-header h2{font-size:1.2rem}.form-row{gap:.6rem}.admin-row{flex-wrap:wrap}.admin-row .task-text{flex-basis:60%}.admin-row .button{margin-left:auto}.parent-strip{font-size:.65rem}.hero-copy>p{font-size:.78rem}}
body.tv-mode .app-wrap{max-width:94rem}body.tv-mode .task-row{min-height:4.35rem}body.tv-mode .task-text strong{font-size:.87rem}body.tv-mode .task-text small{font-size:.68rem}body.tv-mode .task-points{font-size:.82rem}body.tv-mode .achievements{padding-top:1.3rem}body.tv-mode .button{min-height:2.9rem}body.tv-mode .tab{min-height:2.3rem}

/* Generated scenery sits behind the live SVG road and character. */
.journey-card{background-color:#dceecb;background-image:url('/assets/pastel-voxel-world-v1.png');background-size:cover;background-position:center;border-color:#cbdac5}
.journey-header>.card-heading{flex:0 1 auto;background:#fffaf2ed;padding:.55rem .85rem;border-radius:1rem;box-shadow:0 2px 12px #4853470b}
.journey-header>.tabs{background:#fffaf2ed;box-shadow:0 2px 12px #4853470b}
.journey-header .eyebrow{color:#81748f}
.journey-metrics{background:#fffaf2f2;padding:.8rem 1rem;border:1px solid #fff8;border-radius:1rem}
.journey-metrics .goal-progress,.journey-metrics .goal-progress strong small{color:#75687f}
.journey-card .reward-card{background:#fffaf2f7}
.map-note{fill:#634c79;stroke:#fffaf2;stroke-width:5;paint-order:stroke fill;stroke-linejoin:round;font-weight:800}
/* The journey spans the full page; missions sit below it. */
.journey-header{display:flex;align-items:center;justify-content:space-between;gap:2rem}
.journey-header>.card-heading{justify-content:flex-start;gap:1.5rem}
.journey-header>.tabs{width:19rem;flex-shrink:0;margin:0}
.journey-scene-wide{flex:none;min-height:0;margin:.65rem 0}
.journey-scene-wide svg{width:100%;height:auto;max-height:none}
.journey-bottom{display:grid;grid-template-columns:1.4fr 1fr;align-items:center;gap:2rem}
.journey-bottom>.reward-card{margin:0}
.journey-metrics .goal-progress{margin:0 0 .65rem}
.tasks-card>.task-list{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem}
.tasks-card{column-gap:1.5rem}
.tasks-card>.task-list>.empty{grid-column:1/-1}
@media(min-width:761px){.tasks-card{display:grid;grid-template-columns:1fr auto;align-items:center}.tasks-card>.task-filter{margin:0;border:0;gap:1.2rem}.tasks-card .filter-button{padding:.4rem 0}.tasks-card>.task-list{grid-column:1/-1;margin-top:1rem}.tasks-card>.tasks-foot{grid-column:1/-1}.task-row{min-height:4.5rem}}
@media(min-width:761px) and (max-width:1100px){.tasks-card>.task-list{grid-template-columns:repeat(2,minmax(0,1fr))}.journey-header{gap:1rem}.journey-header>.tabs{width:15rem}.journey-header .sticker-star{display:none}.journey-bottom{gap:1rem;grid-template-columns:1fr 1fr}}
@media(max-width:760px){.journey-header{display:block}.journey-header>.tabs{width:100%;margin-top:1rem}.journey-bottom{grid-template-columns:1fr;gap:1rem}.tasks-card>.task-list{grid-template-columns:1fr}.journey-card .journey-scene{flex:none;min-height:0}.journey-card .journey-scene svg{height:auto}.journey-metrics .goal-progress{margin-top:.5rem}}
@media(min-width:1100px){
  html.tv-layout{font-size:clamp(16px,1.35vh,32px)}
  body.tv-mode .app-wrap{max-width:112rem}
  body.tv-mode .topbar{min-height:4rem}
  body.tv-mode .hero{padding:.7rem 0;gap:1rem}
  body.tv-mode .hero h1{font-size:1.65rem}
  body.tv-mode .hero h1 br{display:none}
  body.tv-mode .hero h1 span{margin-left:.3em}
  body.tv-mode .hello{margin-bottom:.5rem}
  body.tv-mode .hero-copy>p{display:none}
  body.tv-mode .stat-card{min-height:5rem;padding:.65rem 1rem}
  body.tv-mode .dashboard{height:auto;min-height:0;gap:1rem}
  body.tv-mode .journey-card,body.tv-mode .tasks-card{min-height:0;padding:1rem}
  body.tv-mode .journey-scene-wide{min-height:0;flex:none;margin:.4rem 0}
  body.tv-mode .journey-scene-wide svg{height:auto;max-height:none}
  body.tv-mode .task-list{min-height:0;grid-template-columns:repeat(4,minmax(0,1fr));gap:.55rem;max-height:9rem;overflow-y:auto;padding:.2rem .35rem .2rem .2rem;scrollbar-width:thin;scrollbar-color:#ded4e7 transparent;margin-top:.65rem}
  body.tv-mode .task-row{min-height:3.8rem}
  body.tv-mode .task-filter{margin:0}
  body.tv-mode .journey-header>.tabs{margin:0}
  body.tv-mode .reward-card{margin:0;padding:.65rem}
  body.tv-mode .tasks-foot{display:none}
  body.tv-mode .achievements{padding:.8rem 0}
  body.tv-mode .section-title{margin-bottom:.55rem}
  body.tv-mode .achievement-card{min-height:4.5rem;padding:.7rem 1rem}
  body.tv-mode .encouragement{padding:.7rem 1rem}
  body.tv-mode .footer{padding:.6rem 0 .7rem}
}

@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.confetti{display:none}}

@media(max-width:760px){.journey-card{background-position:85% center}.journey-header>.card-heading{width:fit-content}.journey-metrics{padding:.7rem .8rem}.journey-metrics .goal-progress{font-size:.65rem}}

/* Legacy TV engines (Samsung Tizen 4 browser = Chrome 56): no CSS grid, no flex gap, no #rrggbbaa, inset or clamp().
   Modern browsers skip this block. It only restores the layout described above; tuned for TV/desktop widths. */
@supports not (display:grid){
  .pill.white{background:rgba(255,255,255,.66)}.tabs{background:rgba(255,255,255,.4)}.tab.active{box-shadow:0 2px 5px rgba(118,111,146,.06)}
  .reward-card,.journey-metrics{border:1px solid rgba(255,255,255,.53)}
  .journey-header>.card-heading,.journey-header>.tabs{background:rgba(255,250,242,.93);box-shadow:0 2px 12px rgba(72,83,71,.04)}
  .journey-metrics{background:rgba(255,250,242,.95)}.journey-card .reward-card{background:rgba(255,250,242,.97)}
  .modal-shell{background:rgba(53,48,71,.38);top:0;right:0;bottom:0;left:0}.modal-card{box-shadow:0 20px 100px rgba(48,34,56,.2)}
  .toast{box-shadow:0 6px 24px rgba(51,51,51,.13)}.celebration{top:0;right:0;bottom:0;left:0}
  .remote-focus{outline:3px solid #d54f91;outline-offset:4px}
  .reward-copy strong,.task-text strong,.history-item strong{word-wrap:break-word}
  @media(min-width:1700px){:root{font-size:1.04vw}}
  @media(min-width:1100px){html.tv-layout{font-size:16px}}
  @media(min-width:1100px) and (min-height:1186px){html.tv-layout{font-size:1.35vh}}

  /* grid → flex */
  .brand-mark,.icon-button,.reward-icon,.task-icon,.task-check{display:flex;align-items:center;justify-content:center}
  .loading{display:flex;flex-direction:column;justify-content:center;align-items:center}.loading>*+*{margin-top:1rem}
  .dashboard>*+*{margin-top:1.5rem}body.tv-mode .dashboard>*+*{margin-top:1rem}
  .journey-bottom{display:flex;align-items:center}
  .journey-bottom>.journey-metrics{flex:1.4 1 0%;min-width:0}.journey-bottom>.reward-card{flex:1 1 0%;min-width:0;margin-left:2rem}
  .achievement-grid{display:flex;flex-wrap:wrap;margin:-.5rem}.achievement-grid>*{width:calc(33.33% - 1rem);margin:.5rem}
  .form-row{display:flex}.form-row>*{flex:1 1 0%;min-width:0}.form-row>*+*{margin-left:1rem}
  .tasks-card>.task-list{flex-direction:row;flex-wrap:wrap;align-items:stretch}
  .tasks-card>.task-list>.task-row{width:calc(33.33% - .75rem);margin:.35rem}.tasks-card>.task-list>.empty{width:100%}
  @media(min-width:761px){
    .tasks-card{flex-direction:row;flex-wrap:wrap;align-items:center}
    .tasks-card>.card-heading{flex:1 1 auto;min-width:0;margin-right:1.5rem}
    .tasks-card>.task-list,.tasks-card>.tasks-foot{flex:0 0 100%}
    .journey-header>*+*{margin-left:2rem}.hero-stats>*+*{margin-left:.85rem}
  }
  @media(min-width:761px) and (max-width:1100px){
    .tasks-card>.task-list>.task-row{width:calc(49.99% - .75rem)}.journey-header>*+*{margin-left:1rem}.hero-stats>*+*{margin-left:.6rem}
    .journey-bottom>.journey-metrics{flex-grow:1}.journey-bottom>.reward-card{margin-left:1rem}
    .achievement-grid>*{width:calc(49.99% - 1rem)}.achievement-grid>.encouragement{width:calc(100% - 1rem)}
  }
  @media(min-width:1100px){body.tv-mode .tasks-card>.task-list>.task-row{width:calc(25% - .6rem);margin:.275rem}}
  @media(max-width:760px){
    .journey-bottom{display:block}.journey-bottom>.reward-card{margin:1rem 0 0}
    .tasks-card>.task-list>.task-row{width:100%;margin:0 0 .6rem}.achievement-grid>*{width:calc(100% - 1rem)}
  }

  /* flex gap → margins */
  .brand>*+*{margin-left:.85rem}.header-actions>*+*{margin-left:.65rem}.button>.icon{margin-right:.55rem}
  .hello>.icon{margin-right:.45rem}.stat-label>.icon{margin-right:.35rem}.stat-number>*+*{margin-left:.35rem}
  .parent-strip>*+*{margin-left:.5rem}.card-heading>*+*{margin-left:1rem}.journey-header>.card-heading>*+*{margin-left:1.5rem}
  .tab+.tab{margin-left:.25rem}.goal-progress>*+*{margin-left:.5rem}.reward-card>*+*{margin-left:.85rem}
  .filter-button+.filter-button{margin-left:1.2rem}.task-row>*+*{margin-left:.75rem}.tasks-foot>.icon{margin-right:.5rem}
  .section-title>*+*{margin-left:1rem}.section-title h2>.icon{margin-right:.5rem}
  .achievement-card>*+*{margin-left:.9rem}.encouragement>*+*{margin-left:1rem}
  .footer>*+*{margin-left:1rem}.remote-help>.key{margin:0 .45rem}.remote-help>.key:first-child{margin-left:0}.connection-dot{margin-right:.4rem}
  .modal-header>*+*{margin-left:1rem}.panel-tabs>*{margin:0 .4rem .4rem 0}.panel-actions>*+*{margin-left:.6rem}
  .admin-list>*+*{margin-top:.6rem}.admin-row>*+*{margin-left:.65rem}.history-item>*+*{margin-left:1rem}
  .form>*+*{margin-top:1rem}.field>*{margin-top:.35rem}.form-footer>*+*{margin-left:.6rem}
  .checkbox-field>input{margin-right:.55rem}.days-options>*{margin:0 .4rem .4rem 0}.day-choice>input{margin-right:.25rem}
}
