:root{--paper:#f3f0e9;--paper2:#e9e4d9;--white:#fdfbf6;--ink:#202823;--muted:#777970;--line:#ddd8cc;--green:#26493b;--orange:#edb65c;--coral:#df7659;--blue:#5a789c;--rad:18px;--shadow:0 8px 30px rgba(40,40,30,.035);--sans:'DM Sans',system-ui,-apple-system,sans-serif;--serif:'Fraunces',Georgia,serif}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:var(--paper);color:var(--ink);font-family:var(--sans)}button,input,textarea,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #deab55;outline-offset:3px}h1,h2,h3,p{margin:0}small{color:var(--muted)}.shell{display:flex;min-height:100vh;max-width:2100px;margin:auto}.rail{width:98px;background:#eae6db;border-right:1px solid #d6d0c4;display:flex;flex-direction:column;align-items:stretch;gap:8px;padding:18px 12px;position:sticky;top:0;height:100vh;flex:none;z-index:3}.rail-brand{display:flex;align-items:center;justify-content:center;background:var(--green);color:white;border-radius:15px;min-height:59px;margin-bottom:18px}.rail-brand svg{width:27px;height:27px}.nav-item{display:flex;align-items:center;flex-direction:column;gap:7px;padding:11px 4px;border:0;border-radius:12px;background:transparent;color:#7c7d75;min-height:70px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.06em}.nav-item svg{width:23px;height:23px;stroke-width:1.9}.nav-item.active{color:var(--green);background:var(--white);box-shadow:0 2px 8px #2221}.nav-item:hover{color:var(--green);background:#faf9f2a8}.rail-bottom{margin-top:auto;border-top:1px solid var(--line);padding-top:10px}.rail-time{font-size:19px;letter-spacing:-.07em;font-weight:900;text-align:center;padding-top:12px}.workspace{padding:27px 30px 36px;width:calc(100% - 98px);min-width:0}.eyebrow{font-weight:900;font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--green)}.page-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:0 0 20px}.page-head h1{font-family:var(--serif);font-size:42px;font-weight:500;letter-spacing:-.065em}.page-head .subtitle{font-size:14px;color:var(--muted);margin-top:4px}.head-actions{display:flex;gap:9px;flex-wrap:wrap;align-items:center}.btn{border:1px solid var(--line);border-radius:11px;padding:11px 15px;background:var(--white);color:var(--ink);font-weight:800;font-size:13px;display:inline-flex;gap:8px;align-items:center;justify-content:center;min-height:42px}.btn:hover{filter:brightness(.96)}.btn.primary{background:var(--green);color:#fff;border-color:var(--green)}.btn.dark{background:var(--ink);color:white;border-color:var(--ink)}.btn.danger{background:#fff3ee;color:#a44127;border-color:#ebc5bb}.btn.ghost{border:0;background:transparent}.btn.sm{padding:7px 10px;min-height:34px;font-size:12px}.btn svg{width:17px;height:17px}.card{background:var(--white);border:1px solid rgba(0,0,0,.055);border-radius:var(--rad);box-shadow:var(--shadow)}.card-pad{padding:20px}.card-title{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:15px}.card-title h3{font-weight:900;font-size:14px;text-transform:uppercase;letter-spacing:.065em}.card-title .plain-link,.plain-link{font-size:12px;font-weight:800;color:var(--green);border:0;background:none;padding:4px}.section-label{font-weight:900;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.muted{color:var(--muted)}.pill{border-radius:999px;padding:7px 11px;background:var(--paper2);color:var(--ink);font-size:12px;font-weight:800;white-space:nowrap;display:inline-flex;align-items:center;gap:6px}.dot{width:8px;height:8px;border-radius:100%;background:var(--c,var(--green));display:inline-block;flex:none}.empty{color:var(--muted);font-size:14px;line-height:1.45;padding:20px 8px}.demo-alert{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fbe9c3;border:1px solid #ead59f;padding:9px 14px;border-radius:10px;margin-bottom:17px;font-size:12px}.demo-alert button{border:0;text-decoration:underline;font-weight:900;background:none;color:var(--ink)}
/* Dashboard */
.home-top{display:grid;grid-template-columns:1.2fr 1fr .88fr;gap:14px;margin-bottom:16px}.top-panel{min-height:200px;padding:18px 21px 15px;border-radius:16px;background:transparent;border-bottom:3px solid var(--ink);display:flex;flex-direction:column;justify-content:space-between;min-width:0}.clock-digits{font-weight:900;font-size:clamp(63px,7.4vw,126px);line-height:.83;letter-spacing:-.09em;white-space:nowrap;font-variant-numeric:tabular-nums}.clock-digits span{font-weight:500;color:var(--muted);font-size:.35em;vertical-align:top;margin-left:5px}.clock-date{font-size:19px;font-family:var(--serif);letter-spacing:-.035em;margin-top:12px}.top-weather-main{display:flex;align-items:center;gap:16px}.weather-temp{font-size:clamp(48px,5vw,76px);font-weight:800;line-height:.9;letter-spacing:-.07em}.weather-symbol{font-size:46px;font-weight:400}.weather-summary{font-size:13px;color:var(--muted);line-height:1.6}.weather-message{font-family:var(--serif);font-size:22px;line-height:1.15}.family-list{display:grid;gap:10px;margin-top:7px}.member{display:flex;align-items:center;gap:10px;min-width:0}.avatar{width:32px;height:32px;border-radius:50%;background:var(--c);display:grid;place-items:center;color:white;font-size:12px;font-weight:900;flex:none}.member strong{font-size:13px}.member small{margin-left:auto;font-size:11px}.home-bottom{display:grid;grid-template-columns:1.48fr 1fr;gap:16px}.home-left,.home-right{min-width:0;display:flex;flex-direction:column;gap:15px}.hero{background:var(--green);color:#f9f4e9;border-radius:var(--rad);padding:27px 28px;min-height:217px;display:flex;justify-content:space-between;align-items:center;gap:15px;overflow:hidden;position:relative}.hero:after{content:'';position:absolute;width:290px;height:290px;border:2px solid #ffffff16;border-radius:50%;right:-84px;top:-80px}.hero:before{content:'';position:absolute;width:225px;height:225px;border:2px solid #ffffff19;border-radius:50%;right:15px;top:10px}.hero>*{position:relative;z-index:1}.hero h2{font-family:var(--serif);font-size:clamp(34px,4vw,61px);font-weight:400;line-height:.97;letter-spacing:-.055em;max-width:450px;margin:10px 0}.hero p{color:#e9e9df;line-height:1.45;font-size:14px}.hero .kicker{font-size:12px;letter-spacing:.1em;font-weight:900;text-transform:uppercase;color:#c3dacd}.hero-big{font-size:clamp(82px,10vw,155px);font-weight:900;letter-spacing:-.1em;line-height:1;opacity:.95;min-width:120px;text-align:right}.week-card{padding:17px 19px}.week-strip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px}.day-chip{background:#f4f1e8;border:1px solid transparent;border-radius:12px;padding:14px 3px;display:flex;flex-direction:column;gap:8px;align-items:center;min-width:0}.day-chip span{font-size:11px;font-weight:900;color:var(--muted);text-transform:uppercase}.day-chip b{font-size:25px;letter-spacing:-.04em}.day-chip.active{background:var(--green);color:white}.day-chip.active span{color:#bfd3c6}.event-list{display:grid;gap:9px;margin-top:16px}.event-row{border:1px solid #e4dfd5;background:#f8f5ef;border-radius:11px;padding:10px 12px;display:flex;align-items:center;gap:12px;text-align:left;width:100%;min-width:0}.event-row .event-time{font-size:13px;font-weight:900;min-width:45px}.event-row strong{font-size:13px}.event-row .event-person{margin-left:auto;flex:none}.photo-card{height:280px;overflow:hidden;position:relative;background:#dbcfc3;display:flex;align-items:center;justify-content:center;border-radius:var(--rad);border:1px solid #ffffff52}.photo-display{width:100%;height:100%;object-fit:cover}.photo-empty{width:100%;height:100%;background:radial-gradient(circle at 75% 38%,#ffcd8599 0 10%,transparent 38%),linear-gradient(130deg,#86a091,#526e65 42%,#2b4c41);color:#fff;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:6px}.photo-empty strong{font-family:var(--serif);font-size:32px;font-weight:400}.photo-overlay{background:linear-gradient(transparent,#0009);position:absolute;bottom:0;left:0;right:0;padding:40px 16px 14px;color:white;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none}.photo-overlay strong{font-size:12px;text-transform:uppercase;letter-spacing:.08em}.photo-overlay em{font-family:var(--serif);font-size:17px}.summary-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}.quick-card{padding:18px;min-width:0}.stat-num{font-weight:900;font-size:51px;line-height:1;letter-spacing:-.07em}.quick-detail{font-size:12px;color:var(--muted);margin-top:5px}.progressbar{height:8px;background:#e5e1d7;border-radius:12px;overflow:hidden;margin-top:15px}.progressbar i{height:100%;display:block;background:var(--green);border-radius:12px}.small-list{display:grid;gap:9px;margin-top:10px}.small-item{display:flex;align-items:center;gap:8px;font-size:13px}.small-item .dot{width:6px;height:6px}.meals-row{display:flex;justify-content:space-between;gap:12px;align-items:center;font-size:13px;padding:9px 0;border-top:1px solid var(--line)}
/* Sections */
.content-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.wide{grid-column:span 2}.section-card{padding:22px}.list-stack{display:grid;gap:9px}.todo-item{display:flex;align-items:center;gap:11px;padding:14px;border:1px solid var(--line);border-radius:12px;background:#f8f6f0;min-width:0}.todo-item.done{opacity:.62}.todo-item.done .item-name{text-decoration:line-through}.item-name{font-weight:800;font-size:14px;word-break:break-word}.item-sub{font-size:12px;color:var(--muted);margin-top:4px}.item-content{min-width:0;flex:1}.check{appearance:none;width:22px;height:22px;border:2px solid #a6a99d;border-radius:7px;flex:none;background:white;cursor:pointer}.check:checked{background:var(--green);border-color:var(--green);box-shadow:inset 0 0 0 4px var(--green);position:relative}.check:checked:after{content:'✓';position:absolute;top:-3px;left:3px;color:white;font-weight:900;font-size:18px}.icon-btn{border:0;background:transparent;color:var(--muted);padding:5px;display:grid;place-items:center;flex:none}.icon-btn:hover{color:var(--ink)}.icon-btn svg{width:19px;height:19px}.formbar{display:flex;gap:9px;align-items:stretch;margin-bottom:19px;flex-wrap:wrap}.field,.select{border:1px solid #d8d4ca;background:white;color:var(--ink);padding:12px 13px;border-radius:10px;min-width:0;min-height:43px;font-size:14px}.field:focus,.select:focus{border-color:var(--green)}.field.grow{flex:1;min-width:160px}.full{width:100%}.formbar .select{min-width:112px}.chips{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:15px}.chip{border:1px solid var(--line);border-radius:100px;background:white;color:var(--ink);padding:9px 13px;font-size:12px;font-weight:800}.chip.selected{background:var(--green);color:white;border-color:var(--green)}.calendar-toolbar{display:flex;gap:10px;align-items:center;justify-content:space-between;margin-bottom:18px}.calendar-toolbar h2{font-family:var(--serif);font-size:28px;font-weight:500;text-transform:capitalize}.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.month-label{text-align:center;font-size:12px;text-transform:uppercase;letter-spacing:.1em;font-weight:900;padding:8px}.month-day{min-height:115px;border:1px solid var(--line);border-radius:11px;padding:10px;background:#fffefa;text-align:left;min-width:0;display:flex;flex-direction:column;gap:7px}.month-day:hover{background:#f6f1e6}.month-day.today{border:2px solid var(--green);padding:9px}.month-day.faded{opacity:.37}.month-day .day-number{font-size:14px;font-weight:900}.month-day .mini-event{background:#eff1e8;padding:5px 7px;border-radius:6px;font-size:10px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;max-width:100%}.month-day .mini-event span{font-weight:900}.month-day .more{font-size:10px;color:var(--muted);font-weight:700}.shop-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}.shop-col{padding:18px;min-width:0}.shop-col h3{font-size:15px;margin-bottom:13px;font-weight:900}.menu-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px}.menu-day{padding:16px 12px;min-width:0;min-height:210px}.menu-day .big-num{font-size:31px;font-weight:900;letter-spacing:-.06em;margin:4px 0 13px}.menu-day .meal-line{font-size:13px;word-break:break-word;margin:8px 0 12px;min-height:36px}.menu-day .meal-line small{display:block;text-transform:uppercase;font-weight:900;font-size:10px;margin-bottom:4px}.photo-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.photo-tile{aspect-ratio:4/3;overflow:hidden;border-radius:12px;background:#e3dfd6;position:relative}.photo-tile img{width:100%;height:100%;object-fit:cover}.photo-tile button{position:absolute;top:9px;right:9px;background:#fffd;border:0;border-radius:9px;padding:9px;box-shadow:0 2px 8px #0003}.photo-tile .caption{position:absolute;bottom:0;left:0;right:0;color:white;background:linear-gradient(transparent,#000b);padding:27px 12px 9px;font-size:13px;font-weight:800}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.form-group{display:flex;flex-direction:column;gap:7px}.form-group label{font-size:12px;font-weight:900}.form-group input,.form-group select{width:100%}.hint{font-size:12px;line-height:1.5;color:var(--muted)}.note{font-size:13px;padding:12px;border-radius:10px;background:#f1efe7;color:#58665d;line-height:1.45}.notes{line-height:1.7;color:var(--muted);font-size:13px}.divider{border:0;border-top:1px solid var(--line);margin:19px 0}.label-row{display:flex;gap:8px;align-items:center;justify-content:space-between}.spinner{display:inline-block;width:15px;height:15px;border:2px solid #bbb;border-top-color:var(--green);border-radius:100%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}
/* Modal */
.modal-backdrop{position:fixed;inset:0;background:#13211bd0;z-index:50;display:flex;align-items:center;justify-content:center;padding:18px}.modal{width:min(530px,100%);background:var(--white);border-radius:18px;padding:24px;max-height:95vh;overflow:auto;box-shadow:0 20px 80px #0005}.modal h2{font-family:var(--serif);font-weight:500;font-size:32px;letter-spacing:-.05em;margin-bottom:17px}.modal .form-grid{gap:12px}.modal .footer{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}.toast{position:fixed;right:24px;bottom:24px;z-index:100;background:#213c32;color:white;border-radius:12px;padding:13px 18px;font-weight:700;box-shadow:0 5px 15px #0003;max-width:360px;font-size:13px}
@media(min-width:1600px){.workspace{padding:30px 42px}.home-top{grid-template-columns:1.15fr 1fr .8fr}.photo-card{height:340px}.hero{min-height:265px}.top-panel{min-height:225px}.month-day{min-height:145px}.home-bottom{grid-template-columns:1.43fr 1fr}}
@media(max-width:1150px){.workspace{padding:20px}.rail{width:78px;padding:12px 7px}.workspace{width:calc(100% - 78px)}.home-top{grid-template-columns:1fr 1fr}.home-top .top-panel:last-child{grid-column:span 2;min-height:88px}.family-list{display:flex;gap:19px;flex-wrap:wrap}.member small{display:none}.home-bottom{grid-template-columns:1fr 1fr}.hero{min-height:190px;padding:21px}.hero-big{display:none}.home-right .summary-row{grid-template-columns:1fr}.photo-card{height:240px}.menu-grid{grid-template-columns:repeat(4,1fr)}.shop-cols{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.shell{display:block;padding-bottom:76px}.rail{width:100%;height:70px;position:fixed;top:auto;bottom:0;padding:6px 4px;border-right:0;border-top:1px solid var(--line);flex-direction:row;justify-content:space-around;align-items:center;gap:1px}.rail-brand,.rail-bottom{display:none}.nav-item{min-height:60px;min-width:0;flex:1;padding:7px 0;font-size:9px;gap:3px}.nav-item svg{width:20px;height:20px}.workspace{padding:20px 14px 30px;width:100%}.page-head h1{font-size:35px}.page-head{align-items:flex-start}.home-top{grid-template-columns:1fr 1fr;gap:8px}.top-panel{min-height:155px;padding:10px 4px}.clock-digits{font-size:clamp(52px,11vw,85px)}.clock-date{font-size:15px}.top-weather-main{gap:7px}.weather-temp{font-size:clamp(42px,10vw,65px)}.weather-symbol{font-size:29px}.weather-message{font-size:17px}.home-top .top-panel:last-child{min-height:80px}.home-bottom{grid-template-columns:1fr}.hero{min-height:150px}.hero h2{font-size:44px}.summary-row{grid-template-columns:1fr 1fr!important}.photo-card{height:220px}.week-strip{gap:3px}.day-chip{padding:8px 2px}.day-chip b{font-size:20px}.day-chip span{font-size:9px}.card-pad,.section-card{padding:15px}.content-grid{grid-template-columns:1fr}.wide{grid-column:span 1}.form-grid{grid-template-columns:1fr}.month-grid{gap:3px}.month-day{padding:5px;min-height:77px;border-radius:7px;gap:2px}.month-day.today{padding:4px}.month-day .mini-event{padding:3px;font-size:9px}.month-label{font-size:9px}.shop-cols{grid-template-columns:1fr}.menu-grid{grid-template-columns:repeat(2,1fr)}.photo-grid{grid-template-columns:repeat(2,1fr)}.formbar .btn{flex:1}.page-head{flex-wrap:wrap}.head-actions{width:100%}.demo-alert{font-size:11px}.modal{padding:18px}}
@media(max-width:370px){.nav-item{font-size:8px}.nav-item svg{width:17px;height:17px}.clock-digits{font-size:44px}.month-day .mini-event span{display:none}}

/* v2 secure household connection */
.connection-overlay{position:fixed;inset:0;z-index:200;background:linear-gradient(120deg,#e8e5dc,#f3f0e9);justify-content:center;align-items:center;padding:22px;overflow:auto}
.connect-card{background:#fdfbf6;border:1px solid #ddd8cc;box-shadow:0 25px 65px #17251d16;border-radius:24px;width:min(460px,100%);padding:36px;display:flex;flex-direction:column;gap:14px}
.connect-logo{background:#26493b;color:white;width:54px;height:54px;display:grid;place-items:center;border-radius:18px;font-size:36px}
.connect-card h1{font-family:var(--serif);font-size:37px;font-weight:500;letter-spacing:-.06em}.connect-card p{color:var(--muted);line-height:1.5}
.connect-card form{display:grid;gap:15px}.connect-card form label{display:grid;gap:6px;font-size:13px;font-weight:700}
.connect-card input{width:100%;border:1px solid var(--line);border-radius:10px;padding:13px;font-size:15px;background:white}
.connect-card button{padding:14px;border:0;border-radius:10px;background:var(--green);color:white;font-weight:750}.connect-card small{font-size:12px;line-height:1.5}

/* Casa 2.1: password-session preference */
.remember-device{display:flex!important;flex-direction:row!important;align-items:center;gap:9px;cursor:pointer;line-height:1.5;font-size:14px}.remember-device input{width:17px;height:17px;accent-color:#365f50;flex:0 0 auto}
