:root{--dark:#173f35;--ink:#193630;--muted:#6f7d78;--line:#e3e7e2;--bg:#f8f8f5;--white:#fff;--red:#b64c45;--shadow:0 14px 42px rgba(23,63,53,.12)}*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;background:var(--bg);color:var(--ink)}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}.hidden{display:none!important}.button{border:0;background:var(--dark);color:#fff;border-radius:11px;padding:13px 18px;font-weight:700;text-decoration:none;display:inline-block}.logo{display:grid;place-items:center;width:58px;height:58px;border-radius:18px;background:#f4e6c7;color:var(--dark);font:italic 700 36px Georgia,serif;margin:auto}.login-wrap,.install-page{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at top,#dce9e3,transparent 46%),var(--bg)}.login-card,.install-card{width:min(500px,100%);background:#fff;border:1px solid var(--line);border-radius:22px;padding:34px;box-shadow:var(--shadow);text-align:center}.login-card h1,.install-card h1{font:32px Georgia,serif;margin:16px 0 6px}.login-card p,.install-card>p{color:var(--muted);font-size:13px}.login-card form,.install-card form{text-align:left;margin-top:24px}.login-card label,.install-card label,.field{display:flex;flex-direction:column;gap:7px;font-size:11px;font-weight:700;margin-bottom:15px}.login-card input,.install-card input,.field input,.field select,.field textarea{border:1px solid #d6ded9;border-radius:10px;padding:12px;background:#fff;outline:none}.login-card input:focus,.install-card input:focus,.field input:focus,.field select:focus,.field textarea:focus{border-color:#598176;box-shadow:0 0 0 3px #dfeae6}.login-card .button,.install-card .button{width:100%;text-align:center}.error{background:#fae7e4;color:#8d342e;padding:11px;border-radius:9px;font-size:11px;margin:12px 0}.success{background:#e4f0e9;padding:20px;border-radius:13px;margin-top:20px}.two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.install-card hr{border:0;border-top:1px solid var(--line);margin:22px 0}.app{min-height:100vh}.app aside{position:fixed;inset:0 auto 0 0;width:270px;background:var(--dark);color:#fff;padding:28px 20px 20px;display:flex;flex-direction:column;z-index:30}.brand{display:flex;align-items:center;gap:12px;padding:0 8px 27px;font:27px Georgia,serif}.brand i{display:grid;place-items:center;width:40px;height:40px;border-radius:13px;background:#f4e6c7;color:var(--dark);font-style:italic;font-weight:bold}.family-card,.user-card{display:flex;gap:10px;align-items:center;padding:11px;background:#ffffff12;border:1px solid #ffffff18;border-radius:14px}.family-card>b,.user-card>b{display:grid;place-items:center;width:35px;height:35px;border-radius:50%;background:#e2a87f;color:#623b29}.family-card span,.user-card span{display:flex;flex-direction:column}.family-card strong,.user-card strong{font-size:12px}.family-card small,.user-card small{font-size:9px;color:#b9ccc5;margin-top:3px}.app nav{display:flex;flex-direction:column;gap:5px;margin-top:24px}.app nav button,.aside-bottom>button{border:0;background:transparent;color:#c7d6d1;border-radius:11px;padding:12px 14px;text-align:left;font-size:14px}.app nav button:hover,.app nav button.active{background:#ffffff1d;color:#fff}.aside-bottom{margin-top:auto;border-top:1px solid #ffffff1c;padding-top:10px;display:flex;flex-direction:column}.user-card{margin-top:8px;border:0;background:transparent}.main{margin-left:270px;min-height:100vh}.main header{height:102px;background:#fff;border-bottom:1px solid var(--line);padding:21px 39px;display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:20}.main header small{color:var(--muted);text-transform:capitalize}.main header h1{font:25px Georgia,serif;margin:5px 0 0}.head-actions{display:flex;gap:10px}.soft,.round{border:1px solid var(--line);background:#fff;border-radius:10px;padding:10px 13px}.round{border-radius:50%;width:42px}.menu-btn{display:none}.content{max-width:1200px;padding:32px 38px 60px;margin:auto}.loading{text-align:center;padding:80px;color:var(--muted)}.hero{background:linear-gradient(120deg,#1c493d,#2e6251);color:#fff;border-radius:20px;padding:27px 30px;display:flex;justify-content:space-between;align-items:end}.hero em{color:#d8b57c;font-size:9px;letter-spacing:.15em}.hero h2{font:28px Georgia,serif;margin:8px 0}.hero p{font-size:12px;color:#d3dfdb}.hero button{border:1px solid #ffffff40;background:#ffffff12;color:#fff;border-radius:9px;padding:10px}.title{display:flex;align-items:end;justify-content:space-between;margin:28px 0 15px}.title h2{font:22px Georgia,serif;margin:0}.title p{font-size:11px;color:var(--muted);margin:4px 0 0}.title button{border:0;background:var(--dark);color:#fff;border-radius:9px;padding:10px 13px;font-size:11px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.stat,.panel,.place,.doc-card{background:#fff;border:1px solid var(--line);border-radius:16px}.stat{padding:17px;display:flex;align-items:center;gap:12px}.stat i{display:grid;place-items:center;width:42px;height:42px;border-radius:11px;background:#deede5;font-style:normal}.stat span{display:flex;flex-direction:column}.stat b{font:22px Georgia,serif}.stat small{font-size:9px;color:var(--muted)}.panel{padding:20px}.columns{display:grid;grid-template-columns:1.1fr .9fr;gap:16px;margin-top:17px}.quick{display:grid;grid-template-columns:1fr 1fr;gap:9px}.quick button{border:1px solid var(--line);background:#fafaf7;border-radius:10px;padding:12px;text-align:left}.list-form{display:flex;background:#fff;border:2px solid #d9e2dd;border-radius:13px;padding:6px;margin-bottom:15px}.list-form input{flex:1;border:0;outline:0;padding:9px}.list-form button{border:0;background:var(--dark);color:#fff;border-radius:9px;padding:0 16px}.list-row,.event-row,.doc-row,.vault-row{display:flex;align-items:center;gap:12px;border-top:1px solid var(--line);padding:13px 2px}.check{width:25px;height:25px;border:1px solid #aab6b1;background:#fff;border-radius:7px}.list-row.done{opacity:.5}.list-row.done .check{background:var(--dark);color:#fff}.list-row.done strong{text-decoration:line-through}.list-row>span,.event-row>span,.doc-row>span,.vault-row>span{display:flex;flex-direction:column;flex:1}.list-row small,.event-row small,.doc-row small,.vault-row small{font-size:9px;color:var(--muted);margin-top:4px}.danger{border:0;background:transparent;color:var(--red);font-size:18px}.places{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.place{padding:18px}.place h3{font:19px Georgia,serif;margin:0}.place p{font-size:10px;color:var(--muted)}.place a{display:block;border-top:1px solid var(--line);padding-top:12px;margin-top:14px;color:#356b5c;font-size:10px;font-weight:bold;text-decoration:none}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);background:#fff;border:1px solid var(--line);border-radius:15px;overflow:hidden}.cal-head{text-align:center;padding:10px;font-size:8px;color:var(--muted)}.cal-day{min-height:95px;border-top:1px solid var(--line);border-right:1px solid var(--line);padding:7px;font-size:9px}.cal-event{display:block;background:#deebf4;border-radius:5px;padding:5px;margin-top:5px;font-size:7px}.docs{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.doc-card{padding:17px;display:flex;flex-direction:column;gap:6px}.doc-card i{font-style:normal;font-size:25px}.doc-card small{font-size:9px;color:var(--muted)}.doc-row img{width:48px;height:48px;object-fit:cover;border-radius:8px}.file-badge{display:grid;place-items:center;width:45px;height:45px;border-radius:8px;background:#f2dfd9;color:#a4523b;font-size:8px;font-weight:bold}.doc-row a{color:inherit;text-decoration:none}.expiry{color:#a4523b!important}.vault-lock{text-align:center;padding:45px 20px}.vault-lock i{display:grid;place-items:center;width:72px;height:72px;margin:auto;background:#e4eee9;border-radius:22px;font-size:30px;font-style:normal}.vault-lock h2{font:28px Georgia,serif}.vault-lock p{font-size:11px;color:var(--muted)}.notice{background:#edf3ef;border:1px solid #d8e4de;border-radius:12px;padding:13px;font-size:10px;color:#587068;margin-top:14px}.modal-back{position:fixed;inset:0;background:#102c2499;z-index:70;display:grid;place-items:center;padding:15px}.modal{width:min(560px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:18px;box-shadow:var(--shadow)}.modal-head{display:flex;align-items:center;justify-content:space-between;padding:19px 21px;border-bottom:1px solid var(--line)}.modal-head h2{font:22px Georgia,serif;margin:0}.modal-head button{border:0;background:#edf2ef;border-radius:50%;width:32px;height:32px}.modal form,.modal-body{padding:20px}.field textarea{min-height:75px;resize:vertical}.upload{border:1px dashed #adbfB6;background:#f6faf8;border-radius:10px;padding:17px}.toast{position:fixed;right:25px;bottom:25px;background:var(--dark);color:#fff;padding:13px 17px;border-radius:11px;z-index:90;font-size:11px}.backdrop{display:none}
@media(max-width:980px){.stats{grid-template-columns:1fr 1fr}.places{grid-template-columns:1fr 1fr}.docs{grid-template-columns:1fr 1fr}}
@media(max-width:720px){.app aside{transform:translateX(-100%);transition:.25s;width:275px}.app aside.open{transform:none}.main{margin-left:0}.main header{height:82px;padding:14px 17px}.menu-btn{display:block;border:0;background:#edf2ef;border-radius:9px;width:39px;height:39px}.head-actions .soft{display:none}.content{padding:22px 15px 45px}.columns{grid-template-columns:1fr}.places{grid-template-columns:1fr}.calendar-grid{min-width:700px}.calendar-scroll{overflow:auto}.backdrop{display:block;position:fixed;inset:0;background:#102c246b;border:0;z-index:25}.two{grid-template-columns:1fr}.modal-back{align-items:end;padding:8px}.modal{border-radius:18px 18px 0 0;max-height:95vh}.toast{left:15px;right:15px;bottom:15px;text-align:center}}
@media(max-width:430px){.stats,.docs{grid-template-columns:1fr}.login-card,.install-card{padding:25px 20px}}
.admin-table{margin-top:15px}.admin-row{display:flex;align-items:center;gap:16px;border-top:1px solid var(--line);padding:14px 2px}.admin-row:first-child{border-top:0}.admin-row>span{display:flex;flex-direction:column;flex:1}.admin-row>span small,.admin-row>small{font-size:9px;color:var(--muted);margin-top:4px}.status{border:0;border-radius:18px;padding:7px 11px;font-size:9px;font-weight:700}.status.on{background:#dfeee6;color:#356c59}.status.off{background:#f5dfdc;color:#98453d}
.cal-toolbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}.cal-toolbar>div{display:flex;align-items:center;gap:7px}.cal-toolbar button{border:1px solid var(--line);background:#fff;border-radius:8px;padding:8px 11px;font-size:10px}.cal-toolbar b{font:18px Georgia,serif;margin-left:8px;text-transform:capitalize}.cal-modes{background:#e9eeeb;padding:3px;border-radius:10px}.cal-modes button{border:0;background:transparent}.cal-modes button.active{background:#fff;box-shadow:0 2px 6px #173f3518}.cal-day.outside{background:#fafaf8;color:#aab2ae}.cal-day>span{display:block}.cal-event.work{background:#dfeee6;color:#316957;border-left:3px solid #4e8a75}.work-row{background:#f4faf6;border-radius:9px;padding-left:9px;padding-right:9px}.work-row>b{color:#36715e}.day-view h3{font:22px Georgia,serif;text-transform:capitalize}.year-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.year-grid button{border:1px solid var(--line);background:#fff;border-radius:14px;padding:18px;text-align:left;display:flex;flex-direction:column;gap:7px}.year-grid b{font:18px Georgia,serif;text-transform:capitalize}.year-grid span,.year-grid small{font-size:9px;color:var(--muted)}
@media(max-width:720px){.cal-toolbar{align-items:flex-start;gap:12px;flex-direction:column}.cal-toolbar>div:first-child{flex-wrap:wrap}.year-grid{grid-template-columns:1fr 1fr}}
.cal-toolbar{background:#fff;border:1px solid var(--line);border-radius:14px;padding:13px 15px;gap:14px}.cal-toolbar>div:first-child{display:grid;grid-template-columns:38px auto 38px minmax(150px,1fr);align-items:center;width:100%}.cal-toolbar>div:first-child button{height:36px}.cal-toolbar b{white-space:nowrap;text-align:left}.cal-modes{flex-shrink:0}.cal-modes button{min-width:52px}.todo-form input:first-child{min-width:0}
@media(max-width:720px){.cal-toolbar{align-items:stretch}.cal-toolbar>div:first-child{display:grid;grid-template-columns:40px 1fr 40px;gap:7px}.cal-toolbar b{grid-column:1/-1;grid-row:1;margin:0 0 5px;text-align:center;font-size:20px}.cal-toolbar #calPrev{grid-column:1;grid-row:2}.cal-toolbar #calToday{grid-column:2;grid-row:2}.cal-toolbar #calNext{grid-column:3;grid-row:2}.cal-modes{display:grid!important;grid-template-columns:repeat(3,1fr);width:100%}.cal-modes button{width:100%;padding:9px}.todo-form{display:grid;grid-template-columns:1fr}.todo-form button{min-height:42px}}
.load-error{max-width:620px;margin:50px auto;text-align:center}.load-error h2{font:25px Georgia,serif}.load-error p{color:var(--red);font-size:11px;margin:12px 0 18px}

/* 1.4.0 — typography and calendar refresh */
html{font-size:17px}body{font-size:1rem;line-height:1.5}.app nav button,.aside-bottom>button{font-size:16px;padding:13px 14px}.family-card strong,.user-card strong{font-size:14px}.family-card small,.user-card small{font-size:12px}.main header small{font-size:14px}.main header h1{font-size:30px}.hero em{font-size:12px}.hero h2{font-size:34px}.hero p,.title p{font-size:14px}.title h2{font-size:28px}.title button,.button,.soft{font-size:15px}.stat small,.list-row small,.event-row small,.doc-row small,.vault-row small,.doc-card small,.admin-row>span small,.admin-row>small{font-size:13px}.place p,.place a,.notice,.vault-lock p,.error,.toast{font-size:14px}.field,.login-card label,.install-card label{font-size:14px}.field input,.field select,.field textarea,.login-card input,.install-card input{font-size:16px;min-height:48px}.status{font-size:12px}.panel{font-size:16px}
.cal-toolbar{padding:16px 18px;margin-bottom:18px;border-radius:18px;box-shadow:0 8px 26px rgba(23,63,53,.07);flex-wrap:wrap}.cal-toolbar>div:first-child{grid-template-columns:44px auto 44px minmax(180px,1fr)}.cal-toolbar>div:first-child button{height:44px}.cal-toolbar button{font-size:14px;font-weight:700;border-radius:11px;padding:10px 14px;transition:.18s ease}.cal-toolbar button:hover{border-color:#9aafa7;background:#f2f7f4}.cal-toolbar b{font-size:25px;margin-left:12px}.cal-modes{padding:5px;border-radius:13px;background:#e8efeb}.cal-modes button{min-width:66px;border-radius:9px}.cal-modes button.active{background:var(--dark);color:#fff;box-shadow:0 4px 12px rgba(23,63,53,.22)}
.calendar-scroll{border-radius:19px;box-shadow:0 10px 32px rgba(23,63,53,.08);background:#dfe5e1;overflow:auto}.calendar-grid{min-width:900px;gap:1px;border:0;border-radius:19px;background:#dfe5e1}.cal-head{padding:14px 8px;background:#f0f5f2;font-size:12px;font-weight:800;letter-spacing:.07em;color:#60736c}.cal-day{min-height:132px;border:0;padding:10px;background:#fff;font-size:14px}.cal-day.outside{background:#f6f7f5;color:#99a49f}.cal-day.weekend-cell:not(.outside){background:#fbfcfa}.cal-day>span{display:grid;place-items:center;width:30px;height:30px;border-radius:50%;font-weight:700}.cal-day.today-cell>span{background:var(--dark);color:#fff;box-shadow:0 4px 10px rgba(23,63,53,.28)}.cal-event{padding:7px 8px;margin-top:6px;border-radius:7px;font-size:12px;line-height:1.25;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.cal-event.work{border-left-width:4px}.day-view{background:#fff;border:1px solid var(--line);border-radius:18px;padding:22px;box-shadow:0 8px 26px rgba(23,63,53,.06)}.day-view h3{font-size:27px;margin-top:0}
.year-grid{grid-template-columns:repeat(3,1fr);gap:16px}.year-grid button{min-height:145px;padding:22px;border-radius:18px;justify-content:center;box-shadow:0 7px 22px rgba(23,63,53,.06);transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.year-grid button:hover{transform:translateY(-3px);border-color:#9db4aa;box-shadow:0 13px 30px rgba(23,63,53,.12)}.year-grid b{font-size:23px}.year-grid span,.year-grid small{font-size:14px}.year-grid small{color:#3d7663;font-weight:700}
@media(max-width:720px){html{font-size:16px}.main header h1{font-size:26px}.content{padding-left:16px;padding-right:16px}.cal-toolbar{padding:14px}.cal-toolbar>div:first-child{grid-template-columns:44px 1fr 44px}.cal-toolbar b{font-size:23px}.cal-modes button{font-size:14px}.calendar-grid{min-width:780px}.cal-day{min-height:115px}.year-grid{grid-template-columns:1fr 1fr;gap:12px}.year-grid button{min-height:125px;padding:16px}.year-grid b{font-size:20px}}
@media(max-width:430px){.year-grid{grid-template-columns:1fr}.year-grid button{min-height:105px}.hero h2{font-size:29px}.title h2{font-size:25px}}

/* 1.5.0 — separate quantity controls and saved addresses */
.shop-form{display:grid;grid-template-columns:minmax(260px,1fr) 190px auto;gap:14px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:17px;padding:16px;margin-bottom:17px;box-shadow:0 7px 22px rgba(23,63,53,.05)}.shop-form label{display:flex;flex-direction:column;gap:7px;font-size:14px;font-weight:750}.shop-form label>input{height:48px;border:1px solid #ccd8d2;border-radius:11px;padding:0 14px;outline:none}.shop-form label>input:focus{border-color:#598176;box-shadow:0 0 0 3px #dfeae6}.shop-submit{height:48px;border:0;background:var(--dark);color:#fff;border-radius:11px;padding:0 20px;font-size:15px;font-weight:750}.qty-picker{height:48px;display:grid;grid-template-columns:46px 1fr 46px;align-items:center;border:1px solid #ccd8d2;border-radius:11px;overflow:hidden;background:#fff}.qty-picker button{height:100%;border:0;background:#edf3ef;font-size:22px;font-weight:700;color:var(--dark)}.qty-picker button:hover{background:#dce9e3}.qty-picker button:disabled{opacity:.45}.qty-picker input{width:100%;height:100%;border:0;text-align:center;font-weight:800;font-size:17px;appearance:textfield}.qty-picker input::-webkit-inner-spin-button{appearance:none}.shop-row .row-qty{width:132px;height:40px;grid-template-columns:40px 1fr 40px;flex-shrink:0}.row-qty b{text-align:center;font-size:15px}.shop-row>span small{display:none}.todo-form{grid-template-columns:1fr auto}.todo-form input{font-size:16px}
.address-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.address-card{position:relative;display:grid;grid-template-columns:50px 1fr;gap:14px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;box-shadow:0 8px 24px rgba(23,63,53,.06)}.address-icon{display:grid;place-items:center;width:50px;height:50px;border-radius:14px;background:#e3eee8;color:var(--dark);font-size:22px}.address-card h3{font:23px Georgia,serif;margin:2px 32px 5px 0}.address-card p{margin:0 0 5px;font-size:15px}.address-card small{display:block;color:var(--muted);font-size:13px}.address-card a{grid-column:1/-1;border-top:1px solid var(--line);padding-top:13px;color:#356b5c;font-size:14px;font-weight:750;text-decoration:none}.address-card .danger{position:absolute;right:14px;top:12px}
@media(max-width:820px){.shop-form{grid-template-columns:1fr 180px}.shop-submit{grid-column:1/-1}.address-grid{grid-template-columns:1fr}}
@media(max-width:520px){.shop-form{grid-template-columns:1fr}.shop-submit{grid-column:auto}.shop-row{gap:8px}.shop-row .row-qty{width:118px;grid-template-columns:36px 1fr 36px}.shop-row .danger{padding:3px}.address-card{grid-template-columns:44px 1fr;padding:17px}.address-icon{width:44px;height:44px}}
.address-autocomplete,.place-autocomplete{position:relative}.address-autocomplete>small,.place-autocomplete>small{font-weight:500;color:var(--muted);font-size:13px}.address-suggestions{position:absolute;left:0;right:0;top:78px;z-index:12;background:#fff;border:1px solid #cad7d1;border-radius:13px;box-shadow:0 16px 36px rgba(23,63,53,.18);overflow:hidden}.address-suggestions button{width:100%;display:flex;flex-direction:column;gap:3px;border:0;border-bottom:1px solid var(--line);background:#fff;padding:12px 14px;text-align:left}.address-suggestions button:last-child{border-bottom:0}.address-suggestions button:hover{background:#edf4f0}.address-suggestions b{font-size:14px}.address-suggestions small{font-size:12px;color:var(--muted);font-weight:500}.suggestion-loading{padding:14px;color:var(--muted);font-size:13px;font-weight:500}
