:root{--ink:#253a33;--muted:#66766e;--green:#24684c;--line:#e3e8e1;--paper:#fff;--canvas:#f5f6f0;--radius:18px;font-family:system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--ink);background:var(--canvas)}
*{box-sizing:border-box}body{margin:0}a{color:var(--green)}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button,summary{cursor:pointer}button{min-height:44px;border:0;border-radius:10px;padding:10px 16px;font-weight:650}button:hover,a:hover{filter:brightness(.94)}button:focus-visible,a:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,.calendar-scroll:focus-visible{outline:3px solid #c09634;outline-offset:3px}input,select{width:100%;min-height:46px;padding:10px 12px;border:1px solid #cbd5cc;border-radius:9px;background:white;color:var(--ink)}label{display:block;font-size:.85rem;font-weight:650;margin-bottom:6px}form p{margin:0 0 14px}h1,h2,p{margin-top:0}h1{font-size:clamp(1.9rem,3vw,2.7rem);letter-spacing:-.055em;margin-bottom:8px;font-weight:700}h2{font-size:1.25rem;letter-spacing:-.035em;margin:0}.muted{color:var(--muted);line-height:1.5}.eyebrow{display:block;text-transform:uppercase;letter-spacing:.13em;font-size:.67rem;font-weight:750;color:var(--muted);margin-bottom:10px}.primary{background:var(--green);color:white}.secondary{background:#e7ede4;color:var(--ink)}.full-width{width:100%}.brand-dot{color:#ce9b44}.skip-link{position:absolute;top:-60px;left:12px;background:white;padding:12px;z-index:20}.skip-link:focus{top:12px}.topbar{display:flex;justify-content:space-between;align-items:center;min-height:78px;padding:12px clamp(18px,3vw,48px);background:#fff;border-bottom:1px solid var(--line)}.brand{text-decoration:none;color:var(--ink);font-size:1.3rem;font-weight:750;letter-spacing:-.06em}.topbar-right{display:flex;gap:18px;align-items:center}.signed-in{font-size:.9rem}.text-button{background:transparent;color:var(--muted);font-size:.85rem;padding:10px 4px}.workspace{max-width:1760px;margin:0 auto;padding:32px clamp(18px,3vw,48px) 50px}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:4px 0 26px}.page-heading p{margin-bottom:0}.card{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;box-shadow:0 5px 20px #223a3104}.planner-layout{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:24px;align-items:start}.calendar-toolbar{padding:24px 24px 16px;display:flex;align-items:center;justify-content:space-between;gap:12px}.calendar-toolbar h2{font-size:1.5rem}.calendar-navigation{display:flex;align-items:center;gap:12px}.icon-button{display:grid;place-items:center;width:44px;height:44px;border:1px solid var(--line);border-radius:10px;text-decoration:none;font-size:1.6rem;color:var(--ink)}.small-link{font-size:.8rem;text-decoration:none;white-space:nowrap}.family-key{display:flex;gap:8px 18px;flex-wrap:wrap;padding:0 24px 22px}.member-pill{display:flex;gap:7px;align-items:center;font-size:.78rem;color:var(--muted)}.dot{width:8px;height:8px;border-radius:50%}.dot.colour-green{background:#438367}.dot.colour-blue{background:#5a7fa9}.dot.colour-amber{background:#bd934a}.dot.colour-purple{background:#9472ad}.calendar-scroll{overflow-x:auto}.month-calendar{width:100%;table-layout:fixed;border-collapse:collapse;min-width:630px}.month-calendar th{padding:12px 8px;border-top:1px solid var(--line);background:#fafbf8;font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;text-align:left;font-weight:650}.month-calendar td{vertical-align:top;border:1px solid var(--line);width:14.28%;height:122px;padding:9px 7px}.month-calendar td:first-child{border-left:0}.month-calendar td:last-child{border-right:0}.day-number{display:inline-grid;place-items:center;min-width:29px;height:29px;border-radius:50%;font-size:.8rem;margin-bottom:6px}.today .day-number{background:var(--green);color:white;font-weight:700}.outside-month{background:#fbfcf8}.outside-month>.day-number{color:#a7b0a7}.calendar-event{position:relative;font-size:.7rem;border-radius:6px;border-left:3px solid transparent;padding:7px 20px 7px 7px;margin-bottom:5px;overflow-wrap:anywhere}.calendar-event.colour-green{background:#e7f1e9;border-color:#438367}.calendar-event.colour-blue{background:#e9eff7;border-color:#5a7fa9}.calendar-event.colour-amber{background:#faf0df;border-color:#bd934a}.calendar-event.colour-purple{background:#f0eafa;border-color:#9472ad}.event-time,.event-person{display:block;color:#59655d;font-size:.65rem}.event-title{display:block;font-weight:650;line-height:1.4}.event-person{margin-top:3px}.remove-event{position:absolute;top:0;right:0;background:transparent;padding:0;min-width:24px;min-height:30px;font-size:1rem;color:#56635a}.event-details{padding:20px 24px}.event-details summary{font-size:.9rem;font-weight:650;padding:8px 0;min-height:40px;color:var(--green)}.event-form{display:grid;grid-template-columns:2fr 1fr 1fr;gap:14px;margin-top:14px}.event-form p:first-of-type{grid-column:1/-1}.event-form button{grid-column:1/-1;justify-self:start}.shopping-panel{padding:24px}.section-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:24px;gap:12px}.section-heading .eyebrow{margin-bottom:8px}.count-badge{display:grid;place-items:center;min-width:34px;height:34px;background:#eef2e8;border-radius:10px;font-weight:700}.shopping-form{padding-bottom:24px;border-bottom:1px solid var(--line)}.shopping-list{list-style:none;padding:0;margin:10px 0}.shopping-row{display:flex;align-items:center;gap:8px;padding:10px 0;border-bottom:1px solid #eef1ea}.shopping-label{min-width:0;flex:1;overflow-wrap:anywhere}.item-name{display:block;font-size:.9rem;font-weight:550;line-height:1.5}.item-quantity{display:block;font-size:.75rem;color:var(--muted);margin-top:1px}.completed .item-name{text-decoration:line-through;color:#8a958c}.check-button{min-width:44px;min-height:44px;padding:5px;background:transparent;color:#7d9485;font-size:1.5rem}.check-button.checked{color:var(--green);font-size:1.1rem}.delete-button{background:transparent;color:#8b958c;min-width:44px;min-height:44px;padding:0;font-size:1.3rem}.empty-list{text-align:center;padding:32px 8px}.empty-list p{font-size:.9rem;margin:12px 0 8px}.empty-list .muted{font-size:.8rem}.empty-icon{display:inline-grid;place-items:center;width:42px;height:42px;border:1px dashed #c8d6c9;border-radius:50%;color:#8aa08e;font-size:1.5rem}.sync-note{font-size:.73rem;margin:20px 0 0}.notice{border:1px solid #cce0cd;background:#eff7ed;border-radius:10px;padding:12px 16px;font-size:.85rem}.notice.error,.errorlist{color:#a43730}.errorlist{font-size:.8rem;padding-left:18px}.login-page{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:100%;max-width:440px;background:white;padding:40px;border:1px solid var(--line);border-radius:22px}.login-card h1{font-size:2rem}.login-card .muted{font-size:.9rem;margin-bottom:30px}.login-card label{margin-top:18px}.login-card button{margin-top:24px}.calendar-hint{display:none;font-size:.75rem;padding:0 24px;margin-bottom:12px}
@media(min-width:1550px){.month-calendar td{height:145px}}
@media(max-width:1100px){.planner-layout{grid-template-columns:minmax(0,1fr)}.shopping-panel{max-width:none}.shopping-form{display:grid;grid-template-columns:2fr 1fr auto;gap:14px;align-items:end}.shopping-form p{margin-bottom:0}.shopping-form button{margin-bottom:0}.shopping-list{display:grid;grid-template-columns:1fr 1fr;gap:0 24px}.empty-list{grid-column:1/-1}.sync-note{margin-top:18px}}
@media(max-width:700px){.topbar{min-height:66px}.brand{font-size:1.1rem}.topbar-right{gap:10px}.workspace{padding-top:24px}.page-heading{align-items:flex-start}.page-heading .eyebrow{max-width:200px;line-height:1.5}.page-heading .secondary{font-size:.72rem;padding:9px;max-width:105px}.calendar-toolbar{padding:20px 18px 14px;flex-wrap:wrap}.calendar-toolbar h2{font-size:1.3rem}.calendar-navigation{gap:10px}.family-key{padding:0 18px 16px;gap:8px 12px}.calendar-hint{display:block;padding-left:18px}.event-details{padding:14px 18px}.event-form{grid-template-columns:1fr}.event-form p:first-of-type{grid-column:auto}.event-form button{grid-column:auto;width:100%}.shopping-panel{padding:20px 18px}.shopping-form{display:block}.shopping-form p{margin-bottom:14px}.shopping-list{display:block}.login-card{padding:30px 24px}.signed-in{max-width:100px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
/* Flask R2: shared updates, larger touch targets and compact month layout. */
[hidden]{display:none!important}.sync-controls{display:flex;align-items:center;gap:14px}.sync-controls>span{font-size:.75rem}.feedback{display:flex;align-items:center;justify-content:space-between;gap:12px}.feedback .text-button{padding:6px 12px;color:var(--green)}button:disabled{opacity:.65;cursor:wait}.day-button{background:transparent;min-width:40px;min-height:40px;padding:0;font-weight:500}.today .day-button{background:var(--green);color:#fff}.month-calendar td{height:106px}.calendar-event{padding-right:40px}.remove-event{min-width:40px;min-height:40px}.field-error{display:block;color:#a43730;font-size:.8rem;margin-top:6px}.calendar-toolbar{padding-top:20px;padding-bottom:12px}.family-key{padding-bottom:16px}.page-heading{margin-bottom:22px}.event-form input[type=date],.event-form input[type=time]{min-width:0}.shopping-form label{white-space:normal}
@media(min-width:1550px){.month-calendar td{height:120px}}@media(max-width:700px){.sync-controls{align-items:flex-end;flex-direction:column;gap:7px}.sync-controls>span{font-size:.65rem;max-width:120px;text-align:right}.page-heading .secondary{max-width:none;min-width:84px}.calendar-event{padding-right:36px}.calendar-navigation .small-link{font-size:.75rem}.month-calendar td{height:108px}}
@media(max-width:700px){.shopping-panel{order:-1}}
.workspace{padding-top:24px}.page-heading h1{font-size:1.85rem;margin-bottom:0}.page-heading .eyebrow{margin-bottom:6px}.calendar-event{padding-right:7px}.calendar-event summary{list-style:none;cursor:pointer}.calendar-event summary::-webkit-details-marker{display:none}.calendar-event summary:focus-visible{outline-offset:1px}.event-delete-button{min-height:40px;padding:6px 8px;background:transparent;color:#8b3d36;font-size:.72rem;margin-top:5px;width:100%;text-align:left}
/* Estonian date/time fields keep their format independently of browser locale. */
.month-calendar abbr[title]{text-decoration:none}.field-hint{display:block;color:var(--muted);font-size:.73rem;line-height:1.5;margin-top:6px}.date-time-control{display:flex;gap:6px;position:relative}.date-time-control>input[type=text]{min-width:0;flex:1}.event-form .picker-button{padding:8px;min-width:44px;flex:0 0 auto;font-size:.75rem}.date-time-control .picker-native{position:absolute;left:0;top:100%;width:1px;min-height:0;height:1px;padding:0;border:0;opacity:0;pointer-events:none}.event-form p{min-width:0}
/* Dashboard R1: independently collapsible sidebars and an app-owned 24-hour clock. */
.workspace{max-width:1920px}.main-navigation{display:flex;gap:6px;align-items:center}.main-navigation a{padding:10px 14px;border-radius:8px;text-decoration:none;font-size:.85rem;color:var(--muted)}.main-navigation a[aria-current=page]{background:#eaf0e6;color:var(--green);font-weight:650}.dashboard-controls{display:flex;gap:18px;justify-content:space-between;align-items:center;margin:-4px 0 20px}.panel-controls{display:flex;gap:8px;flex-wrap:wrap}.panel-toggle{display:inline-flex;gap:12px;align-items:center;min-height:42px;border:1px solid #d6e1d4;background:#fff;color:var(--green);font-size:.8rem;padding:8px 12px}.panel-toggle span{min-width:22px;font-size:.72rem;border-radius:5px;background:#eef3e9;padding:2px 5px}.panel-toggle[aria-expanded=false]{background:transparent;color:var(--muted);border-style:dashed}.dashboard-summary{margin:0;font-size:.8rem;color:var(--muted)}.dashboard-layout{grid-template-columns:var(--dashboard-columns,240px minmax(0,1fr) 280px);gap:20px}.workspace[data-tasks-hidden=true]{--dashboard-columns:minmax(0,1fr) 280px}.workspace[data-shopping-hidden=true]{--dashboard-columns:240px minmax(0,1fr)}.workspace[data-tasks-hidden=true][data-shopping-hidden=true]{--dashboard-columns:minmax(0,1fr)}.tasks-panel{padding:20px}.dashboard-layout .shopping-panel{padding:20px;order:initial}.tasks-panel h2,.dashboard-layout .shopping-panel h2{font-size:1.2rem}.tasks-panel .eyebrow,.dashboard-layout .shopping-panel .eyebrow{font-size:.6rem;line-height:1.6}.tasks-panel .section-heading,.dashboard-layout .shopping-panel .section-heading{margin-bottom:20px}.todo-form{padding-bottom:24px;border-bottom:1px solid var(--line)}.dashboard-layout .shopping-form{display:block}.dashboard-layout .shopping-form p{margin-bottom:14px}.dashboard-layout .shopping-list{display:block}.dashboard-layout .empty-list{padding:26px 4px}.tasks-panel .item-name{font-size:.85rem}.event-colour-options{grid-column:1/-1;display:flex;flex-wrap:wrap;gap:8px;border:0;padding:0;margin:0 0 4px;min-width:0}.event-colour-options legend{font-size:.85rem;font-weight:650;margin-bottom:8px}.colour-option{display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:7px 9px;background:#fafbf8;border:1px solid var(--line);border-radius:8px;margin:0;font-size:.75rem;cursor:pointer}.event-colour-options input[type=radio]{width:16px;height:16px;min-height:16px;padding:0;margin:0;accent-color:var(--green)}.colour-swatch{width:12px;height:12px;border-radius:50%;background:var(--swatch,#438367)}.colour-green{--swatch:#438367}.colour-blue{--swatch:#5a7fa9}.colour-amber{--swatch:#bd934a}.colour-purple{--swatch:#9472ad}.colour-rose{--swatch:#b7657c}.colour-slate{--swatch:#75818d}.calendar-event.colour-rose{background:#f7eaf0;border-color:#b7657c}.calendar-event.colour-slate{background:#edf0f3;border-color:#75818d}.event-colour-change{margin-top:8px}.event-colour-change label{font-size:.65rem;margin-bottom:3px}.event-colour-change select{font-size:.7rem;min-height:36px;padding:4px}.event-colour-save{font-size:.66rem;min-height:36px;padding:5px 3px;background:transparent;color:var(--green);text-align:left;width:100%}.clock-panel{position:absolute;z-index:30;bottom:calc(100% + 9px);right:0;width:240px;max-width:calc(100vw - 70px);display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:16px;border:1px solid #d9e1d7;border-radius:14px;background:#fff;box-shadow:0 8px 34px #17352824}.clock-heading{grid-column:1/-1;font-size:.8rem;font-weight:650}.clock-panel label{font-size:.75rem}.clock-panel select{min-height:44px}.clock-actions{grid-column:1/-1;display:flex;justify-content:space-between;gap:8px}.event-form .clock-actions button{padding:9px 12px;font-size:.8rem;width:auto}.budget-workspace{max-width:1150px}.budget-empty{padding:44px;max-width:860px}.budget-empty h2{margin:20px 0 14px}.budget-empty p{line-height:1.7;max-width:640px}.privacy-note{border-top:1px solid var(--line);padding-top:18px;margin:26px 0 0;color:var(--muted);font-size:.82rem}
@media(max-width:1180px){.dashboard-layout{display:flex;flex-wrap:wrap}.dashboard-layout>.calendar-panel{order:1;flex:0 0 100%;width:100%}.dashboard-layout>.tasks-panel{order:2;flex:1 1 280px;min-width:0}.dashboard-layout>.shopping-panel{order:3;flex:1 1 280px;min-width:0}}
@media(max-width:700px){.event-colour-options{gap:6px}.colour-option{flex:1 0 110px}.budget-empty{padding:26px}.clock-panel{right:0}.calendar-toolbar h2{font-size:1.22rem}}
/* Event intervals and detail dialogs. Native dialog supplies focus containment and Escape. */
a.calendar-event{display:block;text-decoration:none;color:var(--ink)}a.calendar-event:hover{filter:brightness(.97)}.event-time time{display:inline}.task-link{text-decoration:none;color:var(--ink)}.task-link:hover{text-decoration:underline}.assignment-list{display:flex;flex-wrap:wrap;gap:4px;margin-top:5px}.assignment-chip{display:inline-block;font-size:.67rem;line-height:1.5;padding:3px 6px;border-radius:5px;background:#edf1e9;color:#4d6557}.task-linked-time{display:block;font-size:.65rem;color:var(--muted);line-height:1.5;margin-top:5px}.task-options{margin:0 0 16px}.task-options>summary{font-size:.78rem;font-weight:650;color:var(--green);padding:10px 0;cursor:pointer}.task-options>p{margin-top:12px}.member-options{border:0;padding:0;margin:6px 0 12px}.member-options legend{font-size:.78rem;font-weight:650;margin-bottom:8px}.checkbox-label{display:flex;align-items:center;gap:8px;min-height:36px;font-size:.8rem;font-weight:500;margin:0 0 4px}.checkbox-label input[type=checkbox]{width:18px;min-height:18px;height:18px;padding:0;margin:0;accent-color:var(--green)}.event-form .wide-field,.event-form .event-interval-grid{grid-column:1/-1}.event-interval-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:12px 16px}.event-form .event-interval-grid>p{grid-column:auto;margin-bottom:0}.event-interval-grid .interval-hint{grid-column:1/-1!important;font-size:.75rem;line-height:1.6}.event-form textarea{font:inherit;width:100%;min-height:96px;padding:10px 12px;border:1px solid #cbd5cc;border-radius:9px;color:var(--ink);resize:vertical}.event-form textarea:focus-visible{outline:3px solid #c09634;outline-offset:3px}dialog:not([open]){display:none}.detail-modal{border:0;padding:0;border-radius:18px;width:min(890px,calc(100vw - 28px));max-height:90vh;color:var(--ink);background:#fff;box-shadow:0 20px 90px #102b3540}.detail-modal::backdrop{background:#18342b80;backdrop-filter:blur(3px)}.modal-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:18px 24px;border-bottom:1px solid var(--line)}.modal-header h2{font-size:1rem;font-weight:650}.modal-close{font-size:1.5rem;background:#eef2eb;min-width:44px;padding:4px 10px;color:var(--ink)}.modal-content{padding:24px;overflow-y:auto;max-height:calc(90vh - 80px);overscroll-behavior:contain}.modal-feedback{margin:16px 24px 0}.detail-view>h2{font-size:1.65rem;margin:0 0 16px;overflow-wrap:anywhere}.detail-period{font-weight:650;font-size:1rem;line-height:1.6;margin-bottom:8px}.detail-view>p{line-height:1.6}.detail-notes{padding:16px;background:#f7f9f3;border-radius:10px;margin:18px 0}.detail-notes p{white-space:pre-wrap;margin:9px 0 0;overflow-wrap:anywhere;line-height:1.6}.detail-editor{margin:20px 0}.detail-edit-button{display:inline-block;padding:12px 15px;min-height:44px;list-style:none;background:#eaf1e6;border-radius:9px;color:var(--green);font-size:.85rem;font-weight:650;cursor:pointer}.detail-edit-button::-webkit-details-marker{display:none}.related-tasks{border-top:1px solid var(--line);margin-top:24px;padding-top:20px}.related-tasks h3{font-size:1rem;margin:0 0 16px}.related-task{padding:12px 0;border-bottom:1px solid var(--line)}.related-task>a{font-size:.9rem;font-weight:650;text-decoration:none}.related-task.completed>a{text-decoration:line-through;color:var(--muted)}.linked-task-form{margin-top:18px;border-bottom:0}.linked-event-note{display:flex;flex-direction:column;gap:6px;padding:12px;background:#f3f6ee;border-radius:9px;font-size:.8rem;line-height:1.5;margin:14px 0}.linked-event-note .checkbox-label{margin-top:8px}.detail-remove-form{border-top:1px solid var(--line);margin-top:24px;padding-top:16px}.danger-button{background:#f9edea;color:#9c4037;font-size:.8rem}.standalone-detail{max-width:980px}.detail-page-card{padding:28px}.modal-content .clock-panel{bottom:auto;top:calc(100% + 8px)}
@media(max-width:700px){.event-interval-grid{grid-template-columns:minmax(0,1fr)}.modal-header{padding:14px 18px}.modal-content{padding:18px}.detail-view>h2{font-size:1.35rem}.detail-page-card{padding:20px}.modal-content .clock-panel{right:0}.assignment-chip{font-size:.7rem}}
/* Household member administration. */
.member-admin-workspace{max-width:1320px}.member-admin-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,420px);gap:24px;align-items:start}.member-admin-card{padding:28px}.member-admin-card>h2{font-size:1.25rem;margin:14px 0 24px}.member-help{font-size:.82rem;line-height:1.65;margin:18px 0}.member-list{list-style:none;padding:0;margin:24px 0}.member-row{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 0;border-bottom:1px solid var(--line)}.member-row:first-child{border-top:1px solid var(--line)}.member-row-main{display:flex;align-items:flex-start;gap:12px;min-width:0}.member-row-main>div{min-width:0}.member-swatch{width:14px;height:14px;flex:0 0 14px;border-radius:50%;background:var(--swatch,#438367);margin-top:5px}.member-name{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:1rem;margin:0;overflow-wrap:anywhere}.member-account-name{font-size:.8rem;overflow-wrap:anywhere;margin:6px 0;color:var(--muted)}.member-role-label{font-size:.78rem;margin:6px 0 0;color:var(--muted)}.member-self-label{font-size:.65rem;padding:3px 7px;border-radius:6px;background:#edf2e8;color:var(--green);font-weight:600}.member-edit-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 16px;border-radius:9px;text-decoration:none;font-size:.85rem;font-weight:650;white-space:nowrap}.member-admin-form>p{margin:0 0 20px}.member-admin-form .field-hint{display:block;font-size:.72rem;line-height:1.6;margin-top:7px;color:var(--muted)}.member-form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:18px}.member-form-grid>p{margin:0 0 20px}.member-editor-workspace{max-width:850px}.member-editor-identity{display:flex;gap:12px;align-items:flex-start;margin-bottom:26px}.member-editor-identity h2{font-size:1.3rem;margin:0;overflow-wrap:anywhere}.member-form-actions{display:flex;align-items:center;gap:20px;flex-wrap:wrap;margin-top:24px}
@media(max-width:950px){.member-admin-layout{grid-template-columns:minmax(0,1fr)}}
@media(max-width:600px){.member-admin-card{padding:22px}.member-form-grid{grid-template-columns:minmax(0,1fr);gap:0}.member-row{gap:10px}.member-edit-link{padding:10px 12px}.member-editor-workspace .page-heading{align-items:flex-start;flex-direction:column;gap:16px}}
.member-readonly-label{display:block;font-size:.85rem;font-weight:650;margin-bottom:8px}.member-readonly-value{display:flex;align-items:center;min-height:46px;padding:10px 12px;border:1px solid var(--line);border-radius:9px;background:#f6f8f2;color:var(--muted)}
/* Parent-only monthly budget and exact-cent expense entry. */
.budget-workspace{max-width:1440px}.budget-month-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:26px 0 20px}.budget-month-heading h2{font-size:1.5rem;margin:0}.budget-summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.budget-metric{padding:22px;display:flex;flex-direction:column;gap:10px;min-width:0}.budget-metric>span{font-size:.8rem;font-weight:650;color:var(--muted)}.budget-metric>strong{font-size:clamp(1.4rem,2vw,1.9rem);font-variant-numeric:tabular-nums;overflow-wrap:anywhere;letter-spacing:-.04em}.budget-metric>small{font-size:.72rem;line-height:1.6;color:var(--muted)}.budget-over{border-color:#dba79c;background:#fff8f5}.budget-over>strong{color:#a43730}.budget-explanation{font-size:.75rem;line-height:1.7;color:var(--muted);margin:16px 0 24px;max-width:1000px}.budget-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(310px,370px);gap:24px;align-items:start}.budget-main,.budget-sidebar{display:grid;gap:24px;min-width:0}.budget-card{padding:26px;min-width:0}.budget-card h2{font-size:1.18rem;margin:0}.budget-card>.eyebrow{margin-bottom:12px}.budget-card>.budget-form{margin-top:24px}.budget-categories{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 24px}.budget-categories li{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);font-size:.84rem}.budget-categories a{overflow-wrap:anywhere;text-decoration:none}.budget-categories strong{white-space:nowrap;font-variant-numeric:tabular-nums}.budget-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;padding-bottom:18px;border-bottom:1px solid var(--line)}.budget-filters>p{flex:1 1 160px;margin:0}.budget-filters label{font-size:.75rem}.budget-filters select{font-size:.8rem}.budget-filters>button{font-size:.8rem}.expense-list{list-style:none;padding:0;margin:0}.expense-row{display:flex;justify-content:space-between;gap:18px;padding:20px 0;border-bottom:1px solid var(--line)}.expense-info{min-width:0;flex:1}.expense-date{font-size:.73rem;color:var(--muted)}.expense-info h3{font-size:.95rem;overflow-wrap:anywhere;margin:8px 0}.expense-merchant{font-size:.8rem;color:var(--muted);overflow-wrap:anywhere;margin:0}.expense-amount{font-size:1rem;font-variant-numeric:tabular-nums;white-space:nowrap}.expense-row-actions{display:flex;align-items:flex-end;flex-direction:column;justify-content:center;gap:10px}.expense-row-actions .member-edit-link,.expense-row-actions button{font-size:.75rem;padding:8px 12px;min-height:40px}.expense-notes{margin-top:10px;max-width:100%;font-size:.78rem}.expense-notes summary{min-height:36px;padding:8px 0;color:var(--green)}.expense-notes p{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6;margin:6px 0 0}.budget-pagination{display:flex;justify-content:center;gap:22px;align-items:center;margin-top:22px;font-size:.85rem}.budget-pagination a{padding:10px 0}.budget-form>p{margin:0 0 18px}.budget-field-pair{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:12px}.budget-form input,.budget-form select{font-size:.85rem;min-width:0}.budget-form textarea{font:inherit;width:100%;min-height:90px;padding:10px 12px;border:1px solid #cbd5cc;border-radius:9px;color:var(--ink);resize:vertical}.budget-form textarea:focus-visible{outline:3px solid #c09634;outline-offset:3px}.budget-extra{margin:0 0 20px}.budget-extra summary,.expense-remove>summary{min-height:44px;padding:12px 0;font-size:.8rem;font-weight:650;color:var(--green)}.budget-extra[open]>summary{margin-bottom:10px}.budget-next-note{font-size:.76rem;color:var(--muted);line-height:1.7;margin:0 6px}.expense-editor-workspace{max-width:800px}.expense-editor-workspace .budget-field-pair{grid-template-columns:1fr 1fr}.expense-remove{margin-top:30px;padding-top:16px;border-top:1px solid var(--line)}.expense-remove>summary{color:#9c4037}
@media(max-width:1100px){.budget-summary{grid-template-columns:repeat(2,minmax(0,1fr))}.budget-layout{grid-template-columns:minmax(0,1fr) minmax(280px,330px)}.budget-categories{grid-template-columns:minmax(0,1fr)}}
@media(max-width:800px){.budget-layout{display:flex;flex-direction:column}.budget-main,.budget-sidebar{width:100%}.budget-sidebar{order:-1}.budget-categories{grid-template-columns:repeat(2,minmax(0,1fr))}.budget-sidebar .budget-card{width:100%}.budget-field-pair{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.budget-summary{gap:10px}.budget-metric{padding:15px;gap:8px}.budget-metric>strong{font-size:1.35rem}.budget-metric>span{font-size:.74rem}.budget-card{padding:20px}.budget-month-heading{gap:12px}.budget-month-heading h2{font-size:1.2rem}.budget-categories{grid-template-columns:minmax(0,1fr)}.budget-field-pair,.expense-editor-workspace .budget-field-pair{grid-template-columns:minmax(0,1fr);gap:0}.budget-workspace>.page-heading{flex-direction:column;gap:14px}.expense-row{gap:10px}.expense-info h3{font-size:.87rem}.expense-date{font-size:.68rem}.expense-amount{font-size:.9rem}}

/* Budget category chart: shared zero-based EUR scale and native filter links. */
.budget-category-chart{margin:0}.budget-chart-total{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding-bottom:18px;margin:0 0 6px;border-bottom:1px solid var(--line);font-size:.82rem;color:var(--muted)}.budget-chart-total strong{font-size:1.25rem;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}.budget-chart-rows{list-style:none;padding:0;margin:0}.budget-category-bar{display:block;min-height:62px;padding:12px 10px;border-radius:8px;text-decoration:none;color:var(--ink)}.budget-category-bar:hover{background:#f6f8f2;filter:none}.budget-category-bar[aria-current=true]{background:#edf4eb;box-shadow:inset 0 0 0 1px #b8ceba}.budget-bar-label{display:flex;justify-content:space-between;align-items:baseline;gap:14px;font-size:.84rem;line-height:1.5;margin-bottom:8px}.budget-bar-label>span{overflow-wrap:anywhere;min-width:0}.budget-bar-label strong{white-space:nowrap;font-variant-numeric:tabular-nums}.budget-bar{display:block;width:100%;height:12px;overflow:hidden;border-radius:6px}.budget-bar-track{fill:#edf1e9}.budget-bar-fill{fill:var(--green)}.budget-chart-scale{display:flex;justify-content:space-between;gap:14px;margin:8px 10px 14px;color:var(--muted);font-size:.72rem;font-variant-numeric:tabular-nums}.budget-chart-empty{font-size:.84rem;color:var(--muted);line-height:1.6;margin:16px 10px 6px}.budget-category-chart figcaption{margin:16px 0 0}.budget-chart-reset{display:inline-flex;align-items:center;min-height:44px;margin-top:8px;font-size:.8rem;line-height:1.5}
@media(max-width:480px){.budget-category-bar{padding-left:6px;padding-right:6px}.budget-bar-label{font-size:.8rem;gap:10px}.budget-chart-scale{margin-left:6px;margin-right:6px}}

/* Budget fuel gauge: current remaining allowance and a separate calendar marker. */
.budget-fuel-gauge{min-width:0;width:100%}.budget-gauge-scale{display:block;width:100%;height:32px;overflow:hidden}.budget-gauge-zone-low{fill:#b44d43}.budget-gauge-zone-middle{fill:#bf963c}.budget-gauge-zone-high{fill:#438367}.budget-gauge-needle{stroke:var(--ink);stroke-width:2.5}.budget-gauge-needle-tip{fill:var(--ink)}.budget-gauge-time-line{stroke:#344a40;stroke-width:1.5;stroke-dasharray:3 2}.budget-gauge-time-tip{fill:#fff;stroke:#344a40;stroke-width:1.2;stroke-linejoin:round}.budget-gauge-readout{display:flex;justify-content:space-between;align-items:baseline;gap:4px;margin-top:3px;color:var(--muted);font-size:.65rem;font-variant-numeric:tabular-nums}.budget-gauge-readout strong{font-size:.85rem;white-space:nowrap}.budget-gauge-low .budget-gauge-readout strong{color:#a43730}.budget-gauge-middle .budget-gauge-readout strong{color:#805c19}.budget-gauge-high .budget-gauge-readout strong{color:var(--green)}.budget-metric>.budget-gauge-calendar{display:flex;align-items:baseline;gap:5px;font-size:.65rem;line-height:1.5}.budget-gauge-dash{display:inline-block;flex:0 0 12px;border-top:2px dashed #344a40;align-self:center}.budget-gauge-setup{display:inline-flex;align-items:center;min-height:44px;font-size:.76rem;line-height:1.5;font-weight:650;overflow-wrap:anywhere}
@media(max-width:480px){.budget-gauge-readout{font-size:.6rem}.budget-gauge-readout strong{font-size:.76rem}.budget-metric>.budget-gauge-calendar{font-size:.6rem}}

/* Private receipt upload, review and confirmation. */
.receipt-layout{display:grid;grid-template-columns:minmax(270px,.8fr) minmax(0,1.2fr);gap:24px;align-items:start}.receipt-layout h2{margin-bottom:20px}.receipt-detail-layout{grid-template-columns:minmax(240px,.65fr) minmax(0,1.35fr)}.receipt-photo-panel{position:sticky;top:20px}.receipt-photo{display:block;width:100%;max-height:70vh;object-fit:contain;border:1px solid var(--line);border-radius:10px;background:#f6f7f3}.receipt-history{list-style:none;margin:0;padding:0}.receipt-history li{border-bottom:1px solid var(--line)}.receipt-history a{display:grid;gap:8px;padding:18px 0;text-decoration:none;overflow-wrap:anywhere}.receipt-history span,.receipt-history small,.receipt-state{color:var(--muted);font-size:.85rem}.receipt-actions{display:flex;gap:12px;flex-wrap:wrap;margin:24px 0}.receipt-header-fields{display:grid;grid-template-columns:1.4fr .8fr 1.2fr;gap:12px}.receipt-line{border:1px solid var(--line);border-radius:12px;padding:16px;margin:0 0 16px;min-width:0}.receipt-line legend{padding:0 8px;font-size:.8rem;color:var(--muted)}.receipt-line p{margin:0 0 12px}.receipt-line-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.receipt-check{display:flex;align-items:flex-start;flex-wrap:wrap;gap:10px;margin-top:24px!important}.receipt-check input[type=checkbox]{width:22px;height:22px;min-height:22px;flex:0 0 22px;margin-top:2px}.receipt-check label{flex:1;line-height:1.6}.receipt-check .field-error{width:100%}.receipt-totals{list-style:none;padding:0;margin:20px 0}.receipt-totals li{display:flex;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--line)}.receipt-totals strong{white-space:nowrap;font-variant-numeric:tabular-nums}.receipt-total{font-weight:750}.receipt-cancel{margin-top:28px;border-top:1px solid var(--line);padding-top:16px}.receipt-cancel summary{color:#9c4037;min-height:44px;padding:10px 0}.receipt-layout .notice{margin:16px 0}.receipt-layout input[type=file]{max-width:100%;padding:14px 8px;border:1px solid var(--line);border-radius:8px}.receipt-layout .small-link{min-height:44px;padding:10px 0}
@media(max-width:980px){.receipt-layout,.receipt-detail-layout{grid-template-columns:minmax(0,1fr)}.receipt-photo-panel{position:static}.receipt-photo{max-height:42vh}.receipt-header-fields{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.receipt-header-fields,.receipt-line-fields{grid-template-columns:minmax(0,1fr);gap:0}.receipt-actions{flex-direction:column}.receipt-line{padding:12px}.receipt-actions button{width:100%}}

/* Receipt submission and analysis feedback. The analysis bar is indeterminate. */
.receipt-progress{border:1px solid #ccdecc;background:#f0f6ed;border-radius:var(--radius);padding:20px;margin:0 0 22px;min-width:0}.receipt-progress .eyebrow{margin-bottom:8px}.receipt-progress h2{font-size:1.1rem;margin:0 0 10px}.receipt-progress>p{font-size:.85rem;line-height:1.6;margin:0 0 14px}.receipt-progress-track{height:10px;overflow:hidden;border-radius:99px;background:#dbe7d6;margin:16px 0}.receipt-progress-track>span{display:block;width:30%;height:100%;border-radius:99px;background:var(--green);animation:receipt-progress-slide 1.8s ease-in-out infinite}.receipt-progress-steps{display:flex;flex-wrap:wrap;gap:8px;list-style:none;margin:16px 0 12px;padding:0}.receipt-progress-steps li{padding:8px 10px;border:1px solid #d9e3d5;border-radius:8px;color:var(--muted);background:#fafcf8;font-size:.75rem;line-height:1.4}.receipt-progress-steps .is-current{background:#fff;border-color:#438367;color:var(--green);font-weight:700}.receipt-progress-steps .is-done{color:var(--green);background:#e2eee0}.receipt-progress>.field-hint{font-size:.75rem;margin:8px 0 0}.receipt-progress>button{margin-top:14px}.receipt-progress.is-paused{border-color:#dbc89e;background:#faf5e9}.receipt-progress.is-complete .receipt-progress-track>span{animation:none;transform:none;width:100%}
@keyframes receipt-progress-slide{from{transform:translateX(-100%)}to{transform:translateX(385%)}}
@media(prefers-reduced-motion:reduce){.receipt-progress-track>span{animation:none;transform:translateX(115%)}}
@media(max-width:480px){.receipt-progress{padding:16px}.receipt-progress-steps{gap:6px}.receipt-progress-steps li{flex:1 1 120px;padding:7px 8px}}

.mobile-navigation, .mobile-dashboard-heading, .main-navigation .mobile-receipts-link, #today-content {
  display: none;
}

@media (max-width: 700px) {
  .topbar {
    flex-wrap: wrap;
    gap: 0 10px;
    min-height: 54px;
    padding: 5px 16px;
  }
  .topbar-right .signed-in {
    max-width: min(85px, 20vw);
  }
  .main-navigation {
    display: none;
    order: 3;
    flex: 0 0 100%;
    gap: 4px;
  }
  .main-navigation.has-management {
    display: flex;
  }
  .main-navigation a, .main-navigation .mobile-receipts-link {
    display: inline-flex;
    align-items: center;
    min-height: 44px;
    padding: 6px 10px;
  }
  .main-navigation .desktop-dashboard-link {
    display: none;
  }
  .mobile-navigation {
    position: fixed;
    z-index: 12;
    inset: auto 0 0;
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 3px;
    padding: 5px max(6px, env(safe-area-inset-right, 0px))
      calc(5px + env(safe-area-inset-bottom, 0px)) max(6px, env(safe-area-inset-left, 0px));
    border-top: 1px solid var(--line);
    background: var(--paper);
    box-shadow: 0 -4px 18px #223a310d;
  }
  .mobile-navigation a {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 4px;
    min-height: 52px;
    padding: 4px 1px;
    border-radius: 10px;
    color: var(--muted);
    font-size: clamp(.65rem, 2.8vw, .8rem);
    line-height: 1.15;
    text-align: center;
    text-decoration: none;
    overflow-wrap: anywhere;
  }
  .mobile-navigation a[aria-current="page"] {
    background: #e7efe7;
    color: var(--green);
    font-weight: 700;
  }
  .mobile-navigation svg {
    width: 22px;
    height: 22px;
    fill: none;
    stroke: currentColor;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round;
  }
  .mobile-navigation ~ .workspace {
    padding-bottom: calc(86px + env(safe-area-inset-bottom, 0px));
  }
  .workspace[data-mobile-view] {
    padding: 14px 16px calc(86px + env(safe-area-inset-bottom, 0px));
  }
  .dashboard-heading {
    gap: 8px;
    margin: 0 0 12px;
    align-items: center;
  }
  .desktop-dashboard-heading, .dashboard-controls {
    display: none;
  }
  .mobile-dashboard-heading {
    display: block;
    min-width: 0;
    overflow-wrap: anywhere;
  }
  .mobile-dashboard-heading h1 {
    font-size: clamp(1.5rem, 6.4vw, 1.95rem);
  }
  .dashboard-layout {
    display: block;
  }
  .dashboard-layout > [data-phone-panel] {
    display: none;
  }
  [data-mobile-view="calendar"] #calendar-panel,
  [data-mobile-view="tasks"] #tasks-panel,
  [data-mobile-view="shopping"] #shopping-panel {
    display: block;
    width: 100%;
  }
  [data-mobile-view="today"] #today-content {
    display: grid;
    gap: 14px;
    min-width: 0;
  }
  .today-card {
    min-width: 0;
    padding: 14px;
  }
  .today-card-heading {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    align-items: center;
    gap: 6px 12px;
    margin-bottom: 10px;
  }
  .today-card-heading h2 {
    font-size: 1.15rem;
  }
  .today-card-heading time, .agenda-caption, .agenda-empty {
    color: var(--muted);
    font-size: .8rem;
  }
  .agenda-caption {
    margin: 0 0 7px;
  }
  .agenda-empty {
    margin: 0;
    padding: 8px 0 2px;
  }
  .agenda-list {
    display: grid;
    gap: 7px;
    list-style: none;
    padding: 0;
    margin: 0;
  }
  .agenda-event {
    display: grid;
    grid-template-columns: minmax(4.25rem, auto) minmax(0, 1fr) auto;
    align-items: start;
    gap: 9px;
    min-height: 48px;
    padding: 10px 9px;
    border-inline-start: 3px solid var(--swatch, var(--green));
    border-radius: 9px;
    background: #f2f6f1;
    color: var(--ink);
    text-decoration: none;
  }
  .agenda-time {
    font-size: .76rem;
    font-weight: 650;
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
  }
  .agenda-date {
    display: block;
    margin-bottom: 2px;
    font-size: .7rem;
  }
  .agenda-event-info {
    display: grid;
    gap: 3px;
    font-size: .9rem;
    overflow-wrap: anywhere;
  }
  .agenda-person, .agenda-transport {
    color: var(--muted);
    font-size: .75rem;
    line-height: 1.35;
  }
  .agenda-transport {
    display: flex;
    flex-wrap: wrap;
    gap: 3px 9px;
  }
  .agenda-chevron {
    color: var(--green);
    line-height: 1;
    font-size: 1.2rem;
  }
  .agenda-earlier {
    margin-top: 4px;
  }
  .agenda-earlier summary {
    min-height: 44px;
    padding: 12px 0 8px;
    color: var(--green);
    font-size: .8rem;
  }
  .today-card .shopping-list {
    margin: 0;
  }
  .today-card .shopping-row:last-child {
    border-bottom: 0;
  }
  .today-card .empty-list {
    padding: 10px 4px;
  }
}
