@import"https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap";:root{font-family:DM Sans,sans-serif;color:#273b37;background:#f7f8f5;font-synthesis:none;text-rendering:optimizeLegibility;--ink:#273b37;--muted:#77847f;--line:#e7ebe7;--green:#315f4d;--pale:#e8f0e9;--white:#fff;--shadow:0 8px 28px #213f3010}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select,textarea{font:inherit}button{cursor:pointer}h1,h2,h3,p{margin-top:0}h1,h2,h3,.brand{font-family:Manrope,sans-serif;letter-spacing:-.035em}.app-shell{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr)}.sidebar{background:#fff;border-right:1px solid var(--line);padding:27px 18px;display:flex;flex-direction:column;gap:26px;position:sticky;top:0;height:100vh}.brand{font-size:24px;font-weight:800;color:var(--green);display:flex;align-items:center;gap:10px;padding:0 12px}.brand-icon{height:35px;width:35px;display:grid;place-items:center;background:var(--pale);border-radius:12px}.family-badge{margin:0 10px;padding:15px;background:#f7f8f5;border-radius:15px}.family-badge b,.family-badge span{display:block}.family-badge span{font-size:12px;color:var(--muted);margin-top:4px}.nav-list{display:grid;gap:5px}.nav-button{display:flex;align-items:center;gap:12px;border:0;background:transparent;color:#687871;text-align:left;padding:11px 13px;border-radius:11px}.nav-button.active,.nav-button:hover{background:#edf3ee;color:var(--green);font-weight:700}.sidebar-bottom{margin-top:auto}.user-row{display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding:18px 8px 0}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#f0dfe1;color:#805d68;font-weight:700}.user-copy{min-width:0;flex:1}.user-copy b,.user-copy small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-copy small{color:var(--muted)}.content{max-width:1450px;width:100%;padding:32px clamp(18px,4vw,58px) 60px;margin:auto}.topline{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:30px}.eyebrow,.kicker{color:#8a9690;text-transform:uppercase;letter-spacing:.12em;font-weight:700;font-size:11px}.topline h1{font-size:30px;margin:0}.top-actions{display:flex;align-items:center;gap:10px}.welcome{margin:0 0 26px}.welcome h2{font-size:clamp(27px,3vw,38px);margin:0 0 6px}.welcome p{color:var(--muted);margin:0}.section-head{display:flex;align-items:center;justify-content:space-between;gap:16px;margin:28px 0 15px}.section-head h2{font-size:20px;margin:0}.section-head p,.card-head p{font-size:13px;color:var(--muted);margin:5px 0 0}.stats-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px}.stat-card,.card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:20px;box-shadow:var(--shadow)}.stat-title{font-size:12px;color:var(--muted);font-weight:700;letter-spacing:.08em}.stat-number{font:800 34px Manrope,sans-serif;margin:9px 0 12px;color:var(--green)}.event-stack{display:grid;gap:9px}.event-row{display:flex;align-items:center;gap:11px;min-width:0}.event-date{width:47px;min-width:47px;height:47px;border-radius:13px;display:grid;place-content:center;text-align:center;background:#f0f4ef;color:var(--green);font-size:11px;font-weight:700}.event-date b{font-size:17px}.event-info{min-width:0;flex:1}.event-info b,.event-info small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-info small{font-size:12px;color:var(--muted);margin-top:3px}.empty{padding:22px;text-align:center;color:var(--muted);font-size:14px}.dash-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:17px}.card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.birthday-row,.member-row,.shopping-row,.place-row,.flight-row{display:flex;align-items:center;gap:12px;padding:11px 0;border-top:1px solid #f0f2ef}.birthday-date{background:#f7e9ed;color:#895e6b;border-radius:11px;padding:8px 10px;font-size:12px;white-space:nowrap}.birthday-row>div:nth-child(2),.place-row>div,.flight-row>div{flex:1;min-width:0}.birthday-row small,.place-row small,.flight-row small{display:block;color:var(--muted);font-size:12px;margin-top:3px}.button{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:10px 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:700;font-size:13px}.button:hover{background:#f6f8f5}.button.primary{background:var(--green);color:#fff;border-color:var(--green)}.button.primary:hover{background:#254a3b}.button:disabled{opacity:.55;cursor:wait}.button.wide{width:100%;margin-top:6px}.icon-button{border:0;background:transparent;color:#6c7b74;padding:8px;border-radius:9px}.icon-button:hover{background:#f2f5f2}.tabs{display:flex;gap:7px;overflow:auto;border-bottom:1px solid var(--line);margin-bottom:20px}.tab{white-space:nowrap;background:transparent;border:0;padding:12px 14px;color:var(--muted);font-weight:700;border-bottom:2px solid transparent}.tab.active{color:var(--green);border-color:var(--green)}.calendar-list{display:grid;gap:10px}.calendar-item{display:grid;grid-template-columns:95px minmax(0,1fr) auto;gap:15px;align-items:center;padding:14px;border:1px solid var(--line);border-radius:13px}.calendar-item time{font-size:13px;color:var(--green);font-weight:700}.calendar-item h3{font-size:16px;margin:0 0 4px}.calendar-item p{font-size:12px;color:var(--muted);margin:0}.tag{font-size:11px;padding:6px 9px;background:#edf3ee;border-radius:999px;color:var(--green);white-space:nowrap}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.form-grid label,.auth-card>label{font-size:12px;font-weight:700;color:#52635b;display:grid;gap:7px}.form-grid input,.form-grid select,.form-grid textarea,.auth-card input,.inline-form input{width:100%;border:1px solid #dfe5df;border-radius:9px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}.form-grid input:focus,.form-grid select:focus,.form-grid textarea:focus,.auth-card input:focus,.inline-form input:focus{border-color:#6d987f;box-shadow:0 0 0 3px #6d987f20}.span-2{grid-column:span 2}.label{font-size:12px;font-weight:700;color:#52635b}.check-grid{display:flex;flex-wrap:wrap;gap:10px}.check-grid label,.check-stack label{display:flex;align-items:center;gap:8px;font-size:13px;color:#52635b;font-weight:500}.check-grid input,.check-stack input{accent-color:var(--green)}.check-stack{display:flex;align-items:center;gap:15px;align-self:end;min-height:42px}.form-actions{display:flex;justify-content:flex-end;padding-top:4px}.inline-form{display:flex;gap:9px;margin-bottom:12px}.address-control{position:relative}.address-control>input{width:100%;border:1px solid #dfe5df;border-radius:9px;padding:11px 12px}.address-menu{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:5;display:grid;background:#fff;box-shadow:0 12px 30px #172c201f;border:1px solid var(--line);border-radius:11px;overflow:hidden;max-height:245px;overflow-y:auto}.address-menu:empty{display:none}.address-menu>button,.address-menu>span{border:0;background:#fff;text-align:left;padding:11px 13px;color:var(--ink)}.address-menu>button:hover{background:#f4f7f3}.address-menu small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.attribution{display:block;color:var(--muted);font-size:10px;margin-top:5px}.auth-page{min-height:100vh;display:grid;place-items:center;padding:20px;background:radial-gradient(circle at 20% 10%,#e9f1e8,transparent 38%),#f7f8f5}.auth-card{width:min(100%,420px);display:grid;gap:14px;background:#fff;padding:35px;border-radius:21px;border:1px solid var(--line);box-shadow:var(--shadow)}.auth-card .brand{padding:0;margin-bottom:4px}.auth-card .muted{color:var(--muted);margin:-7px 0 4px;font-size:14px}.alert{padding:11px 13px;background:#fff0ed;color:#944c43;border:1px solid #f3d5ce;border-radius:10px;font-size:13px}.toast{position:fixed;right:22px;bottom:22px;background:#244c3b;color:#fff;border-radius:11px;padding:13px 17px;box-shadow:var(--shadow);z-index:30}.provider-note{padding:12px;background:#f7f8f5;border-radius:9px;color:var(--muted);font-size:12px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#14221e75;z-index:20;display:grid;place-items:center;padding:16px}.modal{background:#fff;border-radius:18px;padding:23px;width:min(100%,620px);max-height:90vh;overflow:auto;box-shadow:0 25px 60px #0b171144}.modal-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.loading-page{min-height:100vh;display:grid;place-items:center;color:var(--green)}.spin{animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.mobile-menu-button{display:none}@media(max-width:900px){.app-shell{grid-template-columns:210px minmax(0,1fr)}.sidebar{padding:22px 12px}.content{padding:25px 20px 45px}.stats-grid{gap:10px}.stat-card{padding:15px}.stat-number{font-size:30px}}@media(max-width:680px){.app-shell{display:block}.sidebar{position:fixed;z-index:15;left:0;top:0;width:260px;transform:translate(-105%);transition:transform .2s;box-shadow:10px 0 35px #15251e18}.sidebar.open{transform:translate(0)}.mobile-menu-button{display:inline-flex}.content{padding:18px 14px 40px}.topline{margin-bottom:22px}.topline h1{font-size:23px}.topline .eyebrow{display:none}.welcome h2{font-size:27px}.stats-grid{grid-template-columns:1fr}.stat-card{padding:18px}.stat-number{margin:4px 0 8px}.dash-grid{grid-template-columns:1fr}.calendar-item{grid-template-columns:54px minmax(0,1fr);gap:10px}.calendar-item .tag{grid-column:2;justify-self:start}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.check-stack{align-self:auto}.auth-card{padding:26px 22px}.section-head{align-items:flex-start}.button{padding:9px 11px}}.shell{min-height:100vh;display:flex}.sidebar{width:254px;min-width:254px;position:fixed;inset:0 auto 0 0;z-index:15;padding:24px 17px;background:#fff;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:16px;transition:transform .2s}.sidebar nav{display:grid;gap:5px}.sidebar nav button{display:flex;align-items:center;gap:12px;border:0;background:transparent;color:#687871;text-align:left;padding:11px 13px;border-radius:11px}.sidebar nav button.active,.sidebar nav button:hover{background:#edf3ee;color:var(--green);font-weight:700}.family-tag{margin:4px 7px 12px;padding:13px;background:#f7f8f5;border-radius:13px}.family-tag b,.family-tag span{display:block}.family-tag span{font-size:12px;color:var(--muted);margin-top:3px}.nav-label{padding:0 12px;font-size:10px;color:#98a29d;text-transform:uppercase;letter-spacing:.12em}.sidebar-foot{margin-top:auto;border-top:1px solid var(--line);padding:16px 4px 0;display:flex;align-items:center;gap:10px}.sidebar-foot>span{flex:1;min-width:0}.sidebar-foot b,.sidebar-foot small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-foot small{font-size:11px;color:var(--muted);margin-top:3px}.sidebar-foot>button,.mobile-close{border:0;background:transparent;color:#718078;padding:7px}.workspace{width:calc(100% - 254px);margin-left:254px}.topbar{height:67px;background:#ffffffd9;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,4vw,56px);position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.topbar>div{display:flex;align-items:center;gap:10px;font-size:13px}.breadcrumb{color:var(--muted)}.slash{color:#c2cbc4}.top-avatar,.mobile-menu{width:34px;height:34px;border:0;border-radius:50%;background:#e8f0e9;color:var(--green);font-weight:700}.mobile-menu,.mobile-close{display:none}.main{max-width:1450px;margin:auto;padding:31px clamp(20px,4vw,56px) 60px}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:25px}.page-heading h1{font-size:clamp(27px,3vw,37px);margin:0 0 6px}.page-heading .muted{color:var(--muted);margin:0}.page-heading .kicker{margin-bottom:9px}.period-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.period-card,.card{background:#fff;border:1px solid var(--line);border-radius:17px;padding:19px;box-shadow:var(--shadow)}.period-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.period-head h2{font:800 22px Manrope,sans-serif;text-transform:uppercase;letter-spacing:.01em;margin:0;color:var(--green)}.period-head>b{font:800 24px Manrope,sans-serif;color:var(--green)}.mini-event{display:flex;gap:10px;padding:8px 0;border-top:1px solid #f0f2ef;font-size:13px}.mini-event time{color:var(--muted);white-space:nowrap}.mini-event span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-inline{color:var(--muted);font-size:13px;margin:0;padding:6px 0}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:17px}.card-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px}.card-head h2{font-size:18px;margin:0}.card-head p{font-size:12px;color:var(--muted);margin:4px 0 0}.text-button{display:inline-flex;align-items:center;gap:5px;background:transparent;border:0;color:var(--green);font-size:12px;font-weight:700}.list{display:grid}.event-row,.birthday-row,.flight-row,.place-row,.shopping-row,.member-row{display:flex;align-items:center;gap:11px;padding:12px 0;border-top:1px solid #f0f2ef}.event-date{width:54px;min-width:54px;height:48px;display:grid;place-items:center;border-radius:12px;background:#eef3ee;color:var(--green);font-size:12px;text-align:center}.event-mark{width:3px;align-self:stretch;background:#b7d1bf;border-radius:2px}.event-detail,.birthday-row>div:nth-child(2),.flight-row>div,.place-row>div,.member-row>div:nth-child(2){flex:1;min-width:0}.event-detail b,.event-detail small,.birthday-row small,.flight-row small,.place-row small,.member-row small{display:block}.event-detail small{display:flex;align-items:center;gap:5px;color:var(--muted);font-size:11px;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.birthday-icon,.flight-icon{width:35px;height:35px;display:grid;place-items:center;border-radius:11px;background:#f8edf0;color:#956b77}.flight-icon{background:#edf3ee;color:var(--green)}.birthday-row small,.flight-row small,.place-row small,.member-row small{font-size:11px;color:var(--muted);margin-top:4px}.right-date{font-size:12px;color:var(--green);font-weight:700;white-space:nowrap}.provider-note{margin:12px 0 0;background:#f6f8f5;padding:11px;border-radius:9px;color:var(--muted);font-size:11px;line-height:1.5}.empty-state{padding:23px 12px;text-align:center;color:var(--muted);font-size:13px}.icon-button.subtle{padding:7px;color:#89948e}.inline-form{display:flex;gap:9px;margin:0 0 12px}.shopping-row span{flex:1}.shopping-row.done span{text-decoration:line-through;color:#9aa39e}.check-button{width:21px;height:21px;border:1px solid #cad4cd;background:#fff;border-radius:7px;color:#fff;padding:2px;display:grid;place-items:center}.shopping-row.done .check-button{background:var(--green);border-color:var(--green)}.role-pill{font-size:11px;padding:6px 9px;background:#edf3ee;border-radius:999px;color:var(--green)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:25;background:#14221e75;display:grid;place-items:center;padding:16px}.modal{width:min(100%,620px);max-height:90vh;overflow:auto;background:#fff;border-radius:18px;padding:23px;box-shadow:0 25px 60px #0b171144}.modal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:19px}.modal-head h2{font-size:21px;margin:0}.external{display:inline-flex;align-items:center;gap:5px;color:var(--green);font-weight:700;font-size:12px;margin-top:13px}.alert{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px}.alert button{border:0;background:transparent;color:inherit}.setup{min-height:100vh;display:grid;place-items:center;padding:20px;background:#f7f8f5}.setup-card{max-width:460px;background:#fff;border:1px solid var(--line);border-radius:20px;padding:30px;box-shadow:var(--shadow)}.setup-card h1{font-size:24px;margin:23px 0 10px}.setup-card p{color:var(--muted);line-height:1.55}.setup-card code{display:block;background:#f1f4f1;padding:12px;border-radius:9px;line-height:1.8;color:var(--green)}.loading-screen{min-height:100vh;display:flex;align-items:center;justify-content:center;gap:10px;color:var(--green)}.auth-page{min-height:100vh;display:grid;place-items:center;padding:18px;background:#f6f8f4}.auth-card{width:min(100%,430px);display:grid;gap:13px;background:#fff;padding:34px;border-radius:20px;border:1px solid var(--line);box-shadow:var(--shadow)}.auth-card h1{font-size:27px;margin:0}.auth-card>label{display:grid;gap:7px;font-size:12px;color:#53635b;font-weight:700}.auth-card .muted{color:var(--muted);font-size:14px}.link-button{border:0;background:transparent;color:var(--green);font-weight:700;padding:9px}.toast{position:fixed;z-index:30;right:20px;bottom:20px;background:#244c3b;color:#fff;border-radius:11px;padding:13px 17px;box-shadow:var(--shadow)}@media(max-width:850px){.sidebar{width:225px;min-width:225px}.workspace{width:calc(100% - 225px);margin-left:225px}.period-grid{gap:9px}.period-card{padding:14px}.period-head h2{font-size:18px}.dashboard-grid{gap:11px}}@media(max-width:680px){.sidebar{width:270px;min-width:270px;transform:translate(-105%);box-shadow:10px 0 35px #15251e18}.sidebar.show{transform:translate(0)}.mobile-menu,.mobile-close{display:inline-grid;place-items:center}.sidebar .brand{justify-content:space-between}.workspace{width:100%;margin:0}.topbar{height:58px;padding:0 14px}.topbar>div{font-size:12px}.main{padding:22px 14px 42px}.page-heading{align-items:flex-start}.page-heading h1{font-size:25px}.page-heading>.button{font-size:11px;padding:9px}.period-grid{grid-template-columns:1fr;gap:10px}.period-card{padding:15px}.period-head h2{font-size:20px}.period-head>b{font-size:22px}.dashboard-grid,.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.check-stack{align-self:auto}.modal{padding:19px}.auth-card{padding:27px 22px}}
