@font-face{font-family:Josefin Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/josefin-sans-vietnamese-wght-normal-PFa5PiBn.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Josefin Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/josefin-sans-latin-ext-wght-normal-D7uTKLaj.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Josefin Sans Variable;font-style:normal;font-display:swap;font-weight:100 700;src:url(/assets/josefin-sans-latin-wght-normal-Y7p7x_b-.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--font-main:"Josefin Sans Variable", "Josefin Sans", system-ui, -apple-system, "Segoe UI", Arial, sans-serif;--brand:#3f9b14;--brand-dark:#2c7409;--brand-deep:#1f5a08;--brand-light:#8fd14f;--brand-soft:#e6f4d8;--accent:#f5a800;--bg:#f3f7ee;--surface:#fff;--surface-alt:#f8fbf4;--text:#1c2b14;--muted:#5d6f52;--border:#dde8d3;--danger:#d64545;--radius-sm:12px;--radius:18px;--radius-lg:24px;--shadow-sm:0 1px 2px #1f5a080f, 0 2px 8px #1f5a080f;--shadow-md:0 4px 12px #1f5a0814, 0 14px 32px #1f5a081a;--ring:0 0 0 3px #3f9b144d;--page-width:1100px}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%}body{min-height:100vh;font-family:var(--font-main);color:var(--text);background:radial-gradient(900px 420px at 50% -80px, #dff1cc 0%, #dff1cc00 70%), var(--bg);-webkit-font-smoothing:antialiased;background-repeat:no-repeat;margin:0;font-size:17px;line-height:1.5}#root{min-height:100vh}h1,h2,h3{letter-spacing:-.01em;line-height:1.2}a{color:var(--brand-dark)}img{max-width:100%}a,button{-webkit-tap-highlight-color:transparent;touch-action:manipulation}::selection{background:#cdeab0}:focus-visible{outline-offset:2px;outline:3px solid #3f9b1473}.btn{color:#fff;background:linear-gradient(180deg, #52b122 0%, var(--brand) 100%);border:1px solid var(--brand-dark);cursor:pointer;border-radius:14px;justify-content:center;align-items:center;gap:8px;padding:12px 22px;font-family:inherit;font-size:17px;font-weight:700;line-height:1.2;text-decoration:none;transition:transform .12s,box-shadow .12s,filter .12s;display:inline-flex;box-shadow:inset 0 1px #ffffff59,0 4px 12px #3f9b144d}.btn:hover{filter:brightness(1.06)}.btn:active{transform:translateY(1px)}.btn:disabled{opacity:.6;cursor:default}.btnGhost{color:var(--brand-dark);background:var(--surface);border-color:var(--border);box-shadow:none}.btnGhost:hover{background:var(--brand-soft);filter:none}.btnDanger{color:var(--danger);background:var(--surface);box-shadow:none;border-color:#efc2c2}.btnDanger:hover{filter:none;background:#fdeeee}.smallBtn{border-radius:var(--radius-sm);padding:8px 14px;font-size:15px}.addBtn{margin-bottom:20px}.backBtn{width:fit-content;margin:28px auto 0;display:flex}.iconBtn{width:44px;height:44px;color:var(--brand-dark);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;justify-content:center;align-items:center;font-size:20px;text-decoration:none;transition:background .12s,color .12s;display:inline-flex}.iconBtn:hover{color:var(--brand-deep);background:var(--brand-soft)}.iconBtn:disabled{opacity:.5;cursor:default}.iconBtn.small{width:36px;height:36px;font-size:15px}input[type=text],input[type=email],input[type=password],input[type=number],input[type=date]{width:100%;min-height:48px;color:var(--text);background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:10px 14px;font-family:inherit;font-size:17px;transition:border-color .12s,box-shadow .12s}input::placeholder{color:#8a9a80}input:focus{border-color:var(--brand);box-shadow:var(--ring);outline:none}input[type=checkbox]{width:20px;height:20px;accent-color:var(--brand);flex:none}.formError,.loginForm [role=alert]{color:var(--danger);margin:4px 0;font-size:15px;font-weight:700}.emptyInfo{text-align:center;color:var(--muted);padding:28px 16px}.appContainer{flex-direction:column;min-height:100vh;display:flex}.appHeader{z-index:30;width:min(var(--page-width), calc(100% - 24px));-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border:1px solid var(--border);box-shadow:var(--shadow-sm);background:#ffffffe0;border-radius:20px;justify-content:space-between;align-items:center;gap:12px;margin:12px auto 0;padding:10px 14px;display:flex;position:sticky;top:12px}.logo{align-items:center;line-height:0;display:flex}.logo img{width:auto;height:40px;display:block}.headerIcons{gap:2px;display:flex}.appMain{width:100%;max-width:calc(var(--page-width) + 24px);flex:1;margin:0 auto;padding:28px 12px 36px}.appMain>*{animation:.3s both fadeUp}.appFooter{width:min(var(--page-width), calc(100% - 24px));padding:20px 0 calc(24px + env(safe-area-inset-bottom,0px));text-align:center;border-top:1px solid var(--border);margin:0 auto}.appFooter a{color:var(--muted);font-size:16px;font-weight:700;text-decoration:none}.appFooter a:hover{color:var(--brand-dark);text-decoration:underline}.homeHeader{color:var(--brand-deep);margin:0 0 24px;font-size:clamp(28px,5vw,40px);font-weight:700}@keyframes fadeUp{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (width>=600px){.logo img{height:46px}}.loginContainer{justify-content:center;align-items:center;min-height:100vh;padding:24px 16px;display:flex}.loginCard{background:var(--surface);border:1px solid var(--border);width:100%;max-width:440px;box-shadow:var(--shadow-md);border-radius:28px;flex-direction:column;align-items:center;padding:32px 28px 24px;animation:.35s both fadeUp;display:flex}.loginLogo{width:min(300px,100%);height:auto;margin-bottom:20px;display:block}.loginFormHeader{text-align:center;color:var(--brand-deep);margin:0 0 20px;font-size:26px}.loginForm{flex-direction:column;gap:14px;width:100%;display:flex}.loginFormCheckbox{color:var(--muted);cursor:pointer;align-items:center;gap:10px;font-size:16px;display:flex}.loginForm .btn{width:100%;margin-top:4px}.loginFormLinks{flex-wrap:wrap;justify-content:space-between;gap:8px 16px;width:100%;margin-top:18px;display:flex}.loginFormLinks p{margin:0}.loginFormLinks a{color:var(--muted);font-size:16px;font-weight:700;text-decoration:none}.loginFormLinks a:hover{color:var(--brand-dark);text-decoration:underline}.tiles{grid-template-columns:repeat(2,1fr);gap:14px;display:grid}.tile{aspect-ratio:1;text-align:center;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-sm);flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:16px;font-size:18px;font-weight:700;text-decoration:none;transition:transform .15s,box-shadow .15s,border-color .15s;display:flex}.tile:hover{border-color:var(--brand-light);box-shadow:var(--shadow-md);transform:translateY(-3px)}.tile:active{transform:translateY(-1px)}.tileBadge{color:#fff;background:var(--badge,linear-gradient(135deg, #5cbd2a, #2c7409));border-radius:20px;place-items:center;width:64px;height:64px;font-size:28px;display:grid;box-shadow:0 6px 14px #2c740947}.tile:nth-child(4n+1){--badge:linear-gradient(135deg, #5cbd2a, #2c7409)}.tile:nth-child(4n+2){--badge:linear-gradient(135deg, #a6e04a, #5fae12)}.tile:nth-child(4n+3){--badge:linear-gradient(135deg, #3f9b14, #1f5a08)}.tile:nth-child(4n+4){--badge:linear-gradient(135deg, #ffc233, #ee8a00)}@media (width>=700px){.tiles{grid-template-columns:repeat(4,1fr);gap:20px}.tiles--3{grid-template-columns:repeat(3,1fr)}.tile{aspect-ratio:4/3;font-size:20px}}.accordion{flex-direction:column;gap:12px;display:flex}.accItem{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);transition:box-shadow .15s,border-color .15s}.accItem--open{border-color:var(--brand-light);box-shadow:var(--shadow-md)}.accHeader{text-align:left;width:100%;color:var(--text);border-radius:var(--radius);cursor:pointer;background:0 0;border:0;align-items:center;gap:12px;padding:16px 18px;font-family:inherit;font-size:19px;display:flex}.accName{overflow-wrap:anywhere;flex:1;min-width:0;font-weight:700}.accQty{white-space:nowrap;color:var(--brand-dark);background:var(--brand-soft);border-radius:999px;padding:4px 12px;font-size:14px;font-weight:700}.accHeader .accChevron{color:var(--brand);transition:transform .2s}.accItem--open .accHeader .accChevron{transform:rotate(180deg)}.accBody{border-top:1px solid var(--border);margin:0 18px;padding:20px 0 22px}.itemPanel{grid-template-columns:1fr;gap:20px;display:grid}.itemPhoto{width:100%;max-width:260px;margin:0 auto}.itemPhoto img,.photoPlaceholder{aspect-ratio:1;object-fit:cover;border-radius:var(--radius);width:100%;box-shadow:var(--shadow-sm);display:block}.photoPlaceholder{color:var(--brand-light);background:var(--brand-soft);place-items:center;font-size:40px;display:grid}.itemActions{gap:8px;margin-top:12px;display:flex}.itemActions .btn{white-space:nowrap;flex:1}.itemTasks{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius);padding:16px}.itemTasks h3{color:var(--brand-deep);margin:0 0 12px;font-size:18px}.itemTasks .emptyInfo{padding:8px 0 16px}@media (width>=800px){.itemPanel{grid-template-columns:180px 330px 1fr;align-items:start}.itemPanel--two{grid-template-columns:330px 1fr}.itemPhoto{max-width:none;margin:0}}.cal{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--radius);width:100%;max-width:360px;margin:0 auto;padding:14px}.calHead{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.calTitle{text-transform:capitalize;color:var(--brand-deep);font-size:18px;font-weight:700}.calGrid{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.calWd{text-align:center;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:4px 0;font-size:13px;font-weight:700}.calDay{aspect-ratio:1;color:var(--text);background:var(--surface);border:1px solid var(--border);cursor:pointer;border-radius:12px;padding:0;font-family:inherit;font-size:15px;font-weight:700;transition:background .12s,transform .12s;position:relative}.calDay:hover{background:var(--brand-soft)}.calDay--out{opacity:.5}.calDay--today{color:var(--brand-dark);border-color:var(--brand);border-width:2px}.calDay--has{color:#fff;background:var(--brand);border-color:var(--brand-dark)}.calDay--has:hover{background:#4aa818}.calDay--done{color:var(--brand-dark);background:var(--brand-soft);border-color:var(--brand-light)}.calDay--selected{box-shadow:0 0 0 3px #f5a800a6}.calBadge{color:#2a1c00;background:var(--accent);border:2px solid var(--surface);border-radius:10px;justify-content:center;align-items:center;min-width:20px;height:20px;padding:0 5px;font-size:11px;font-weight:800;line-height:1;display:flex;position:absolute;top:-7px;right:-7px}.taskList{flex-direction:column;gap:8px;margin:0 0 12px;padding:0;list-style:none;display:flex}.task{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);align-items:center;gap:8px;padding:4px 6px 4px 12px;display:flex}.task label{cursor:pointer;flex:1;align-items:center;gap:10px;min-height:40px;font-size:16px;display:flex}.task input[type=checkbox]{width:22px;height:22px}.task label strong{color:var(--brand-dark)}.task label strong:after{content:"·";color:var(--muted);margin-left:8px}.task--done{background:var(--surface-alt)}.task--done span{color:var(--muted);text-decoration:line-through}.lawnInfo{grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:12px;margin:0 0 24px;display:grid}.lawnInfo>div{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:16px 18px}.lawnInfo dt{letter-spacing:.05em;text-transform:uppercase;color:var(--muted);font-size:13px;font-weight:700}.lawnInfo dd{color:var(--brand-deep);margin:4px 0 0;font-size:22px;font-weight:700}.modal{width:min(440px,100vw - 24px);max-height:calc(100vh - 24px);color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:0;overflow:auto;box-shadow:0 24px 64px #0f280559}.modal[open]{animation:.18s both popIn}.modal::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#14280a73}.modalBody{padding:24px}.modalBody h2{color:var(--brand-deep);margin:0 0 16px;font-size:22px}.modalForm{flex-direction:column;gap:14px;display:flex}.modalForm label{flex-direction:column;gap:6px;font-size:16px;font-weight:700;display:flex}.modalActions{justify-content:flex-end;gap:12px;margin-top:6px;display:flex}@keyframes popIn{0%{opacity:0;transform:translateY(10px)scale(.98)}to{opacity:1;transform:none}}@keyframes sheetUp{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:none}}@media (width<=600px){.modal{border-radius:var(--radius-lg) var(--radius-lg) 0 0;width:100%;max-width:none;margin:auto 0 0}.modal[open]{animation-name:sheetUp}.modalBody{padding-bottom:calc(24px + env(safe-area-inset-bottom,0px))}.modalActions .btn{flex:1}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
