:root{--bg:#f7f5f1;--surface:#fff;--surface-raised:#fff;--surface-sunken:#f0ede6;--text:#211f1c;--text-soft:#706a5d;--text-inverse:#fff;--border:#e4dfd3;--border-strong:#211f1c;--accent:#3f7d6b;--accent-hover:#2f5f51;--accent-soft:#e6f1ec;--accent-ink:#fff;--warning:#9a6b16;--warning-soft:#fdf1d9;--warning-border:#f0d48a;--danger:#b3413a;--danger-soft:#fbeae8;--font-body:"Inter", system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-display:"Manrope", var(--font-body);--radius:12px;--radius-sm:8px;--radius-pill:999px;--border-width:1px;--shadow-sm:0 1px 2px #211f1c0f;--shadow-md:0 6px 20px #211f1c1a;--gap:12px}*{box-sizing:border-box}body{font-family:var(--font-body);color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;margin:0;font-size:16px;line-height:1.5}img,svg{max-width:100%}.masthead{background:var(--surface);border-bottom:var(--border-width) solid var(--border);z-index:10;align-items:center;gap:10px;height:56px;padding:0 16px;display:flex;position:sticky;top:0}.masthead a{font-family:var(--font-display);color:var(--text);white-space:nowrap;font-size:1rem;font-weight:800;text-decoration:none}.masthead__spacer{flex:1}.masthead__toggle{border:var(--border-width) solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:36px;height:36px;color:var(--text);flex:none;justify-content:center;align-items:center;padding:0;font-size:18px;line-height:1;display:inline-flex}.masthead__toggle:hover{border-color:var(--accent);color:var(--accent)}.masthead__menu{display:none}.masthead__menu--open{padding:14px 16px calc(14px + env(safe-area-inset-bottom));background:var(--surface);border-bottom:var(--border-width) solid var(--border);box-shadow:var(--shadow-md);z-index:20;flex-direction:column;align-items:stretch;gap:10px;display:flex;position:absolute;top:100%;left:0;right:0}.masthead__menu--open .masthead__iconbtn{align-self:flex-start}.masthead__menu--open>.btn-small{width:100%}.masthead__scrim{z-index:5;background:0 0;position:fixed;inset:0}@media (width>=600px){.masthead__toggle{display:none}.masthead__menu,.masthead__menu--open{box-shadow:none;background:0 0;border-bottom:none;flex-direction:row;align-items:center;gap:10px;padding:0;display:flex;position:static}.masthead__menu--open>.btn-small{width:auto}}.household-switcher{font-family:var(--font-body);border:var(--border-width) solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;color:var(--text);padding:7px 10px;font-size:14px}@media (width>=600px){.household-switcher{width:auto;max-width:40vw}}.masthead__iconbtn{border-radius:var(--radius-pill);border:var(--border-width) solid var(--border);background:var(--surface);width:32px;height:32px;color:var(--text);flex:none;justify-content:center;align-items:center;padding:0;font-size:16px;line-height:1;text-decoration:none;display:inline-flex}.masthead__iconbtn:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}.page{max-width:720px;margin:0 auto;padding:20px 16px 64px}.back-link-row{max-width:720px;margin:0 auto;padding:16px 16px 0}.back-link{color:var(--text-soft);font-size:.85rem;font-weight:600;text-decoration:none}.back-link:hover{color:var(--accent)}.gate{text-align:center;padding:15vh 16px 48px}.gate h1{max-width:22rem;margin-left:auto;margin-right:auto}.notice{text-align:center;color:var(--text-soft);padding:16px;font-size:.9rem}.empty{text-align:center;color:var(--text-soft);border:var(--border-width) dashed var(--border);border-radius:var(--radius);background:var(--surface);padding:28px 16px;font-size:.9rem}h1{font-family:var(--font-display);letter-spacing:-.01em;overflow-wrap:break-word;margin:0 0 16px;font-size:1.5rem;font-weight:800}h2{font-family:var(--font-display);margin:24px 0 10px;font-size:1.05rem;font-weight:700}.board-toolbar{justify-content:flex-end;margin:16px 0;display:flex}.household-header{justify-content:space-between;align-items:center;gap:12px;margin:4px 0 16px;display:flex}.household-header h1{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;overflow:hidden}.household-header__actions{flex:none;align-items:center;gap:8px;display:flex}.household-header__settings{align-self:stretch;width:auto;height:auto;padding:0 12px}.cardgrid{grid-template-columns:1fr;gap:12px;display:grid}@media (width>=600px){.cardgrid{grid-template-columns:repeat(2,1fr)}}.card{background:var(--surface-raised);border:var(--border-width) solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-sm);color:var(--text);padding:16px;text-decoration:none;transition:box-shadow .15s,border-color .15s;display:block}.card:hover{border-color:var(--accent);box-shadow:var(--shadow-md)}.card strong{font-family:var(--font-display);margin-bottom:4px;font-weight:700;display:block}.card p{color:var(--text-soft);margin:0;font-size:.875rem}.card-drag-wrapper{position:relative}.card-drag-wrapper--dragging{opacity:.6;box-shadow:var(--shadow-md);z-index:1}.card-draghandle{border-radius:var(--radius-pill);border:var(--border-width) solid var(--border);background:var(--surface);cursor:grab;touch-action:none;width:28px;height:28px;position:absolute;top:8px;right:8px}.card--unknown{color:var(--text-soft);border-style:dashed}.board-menu__trigger{border-radius:var(--radius-pill);border:var(--border-width) solid var(--border);background:var(--surface);width:28px;height:28px;color:var(--text-soft);cursor:pointer;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:8px;right:8px}.board-menu__trigger:hover{border-color:var(--accent);color:var(--accent)}.link-card{position:relative}.link-card__link{text-align:center;cursor:pointer;flex-direction:column;justify-content:center;align-items:center;gap:6px;width:100%;min-height:96px;font-family:inherit;display:flex}.link-card__icon{color:var(--accent)}.link-card__hint{color:var(--text-soft);font-size:.75rem}.link-card__edit{border-radius:var(--radius-pill);border:var(--border-width) solid var(--border);background:var(--surface);width:28px;height:28px;color:var(--text-soft);cursor:pointer;justify-content:center;align-items:center;display:inline-flex;position:absolute;top:8px;right:8px}.link-card__edit:hover{border-color:var(--accent);color:var(--accent)}.link-preview{flex-direction:column;align-items:center;gap:16px;padding:40px 16px;display:flex}.link-preview__icon{color:var(--accent)}.link-icon-picker{grid-template-columns:repeat(4,1fr);gap:8px;margin:4px 0 12px;display:grid}.link-icon-picker__option{border-radius:var(--radius-sm);border:var(--border-width) solid var(--border);background:var(--surface);height:44px;color:var(--text-soft);cursor:pointer;justify-content:center;align-items:center;display:flex}.link-icon-picker__option:hover{border-color:var(--accent);color:var(--accent)}.link-icon-picker__option--selected{border-color:var(--accent);background:var(--accent);color:var(--accent-ink)}.create-household{text-align:center;flex-direction:column;gap:12px;max-width:360px;margin:0 auto;padding:40px 16px;display:flex}.create-household input{text-align:center}.modal-backdrop{z-index:100;background:#211f1c66;justify-content:center;align-items:flex-end;padding:0;display:flex;position:fixed;inset:0}.modal{background:var(--surface);border-radius:var(--radius) var(--radius) 0 0;width:100%;max-width:420px;padding:20px 16px calc(20px + env(safe-area-inset-bottom));box-shadow:var(--shadow-md)}@media (width>=600px){.modal-backdrop{align-items:center}.modal{border-radius:var(--radius);padding:24px}}.modal h2{margin-top:0}.modal .form-actions{margin-top:4px}.btn-primary,.btn-small,.btn-secondary,.btn-danger{font-family:var(--font-body);border:var(--border-width) solid transparent;border-radius:var(--radius-pill);cursor:pointer;white-space:nowrap;padding:11px 18px;font-size:.9rem;font-weight:600;transition:background .15s,border-color .15s,color .15s,opacity .15s}.btn-primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.btn-primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn-secondary{background:var(--surface);border-color:var(--border);color:var(--text)}.btn-secondary:hover:not(:disabled){border-color:var(--border-strong)}.btn-small{background:var(--surface);border-color:var(--border);color:var(--text);padding:7px 13px;font-size:.8rem}.btn-small:hover:not(:disabled){border-color:var(--border-strong)}.btn-danger{background:var(--surface);border-color:var(--border);color:var(--danger);padding:7px 13px;font-size:.8rem}.btn-danger:hover:not(:disabled){background:var(--danger-soft);border-color:var(--danger)}button:disabled{opacity:.5;cursor:not-allowed}button:focus-visible,input:focus-visible,select:focus-visible,a:focus-visible,[contenteditable]:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.alert-banner{flex-direction:column;gap:8px;margin-bottom:20px;display:flex}.alert-row{background:var(--warning-soft);border:var(--border-width) solid var(--warning-border);border-radius:var(--radius);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.alert-row span{color:var(--warning);font-size:.9rem;font-weight:500}.alert-row__actions{flex-shrink:0;gap:8px;display:flex}.task-form,.add-board,.invite-form,.item-form{background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:10px;margin:12px 0;padding:14px;display:flex}.task-form input,.task-form select,.add-board input,.add-board select,.invite-form input,.item-form input,.link-edit-form input{font-family:var(--font-body);border:var(--border-width) solid var(--border);border-radius:var(--radius-sm);background:var(--bg);color:var(--text);padding:9px 11px;font-size:16px}.task-form input:focus,.task-form select:focus,.add-board input:focus,.add-board select:focus,.invite-form input:focus,.item-form input:focus,.link-edit-form input:focus{border-color:var(--accent);background:var(--surface);outline:none}.link-edit-form,.board-menu-form{flex-direction:column;gap:4px;display:flex}.board-menu-form input{font-family:var(--font-body);border:var(--border-width) solid var(--border);border-radius:var(--radius-sm);background:var(--bg);padding:9px 11px;font-size:16px}.board-menu-form input:focus{border-color:var(--accent);background:var(--surface);outline:none}.task-form label{color:var(--text-soft);align-items:center;gap:6px;font-size:.85rem;display:inline-flex}.task-form__recur{flex-wrap:wrap;align-items:center;gap:6px;width:100%;display:flex}.task-form__recur input[type=number]{width:4.5rem}.task-form__recur select{max-width:100%}.form-actions{gap:8px;width:100%;display:flex}.task-list{flex-direction:column;gap:8px;display:flex}.task-row{background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px;display:flex}.task-row__desc,.task-row__due,.task-row__recur{color:var(--text-soft);font-size:.8rem}.task-row--completed{opacity:.6}.task-row--completed strong{text-decoration:line-through}.task-row__actions{flex-wrap:wrap;flex-shrink:0;justify-content:flex-end;gap:6px;display:flex}.checklist{flex-direction:column;gap:6px;display:flex}.checklist-item{background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius);align-items:center;gap:12px;padding:12px 14px;display:flex}.checklist-item input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent);cursor:pointer;flex:none}.checklist-item__text{overflow-wrap:break-word;flex:1;min-width:0;font-size:.95rem}.checklist-item--checked .checklist-item__text{color:var(--text-soft);text-decoration:line-through}.checklist-item__delete{flex:none}.checklist-card__header{color:inherit;cursor:pointer;text-decoration:none;display:block}.checklist-card__preview{border-top:var(--border-width) solid var(--border);flex-direction:column;gap:6px;margin-top:12px;padding-top:12px;display:flex}.checklist-card__preview-item{cursor:pointer;align-items:center;gap:8px;font-size:.85rem;display:flex}.checklist-card__preview-item input[type=checkbox]{width:16px;height:16px;accent-color:var(--accent);cursor:pointer;flex:none}.checklist-card__preview-item span{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.checklist-card__more{color:var(--text-soft);padding-left:24px;font-size:.85rem}.task-card__header{color:inherit;cursor:pointer;text-decoration:none;display:block}.task-card__preview{border-top:var(--border-width) solid var(--border);flex-direction:column;gap:6px;margin-top:12px;padding-top:12px;display:flex}.task-card__preview-item{text-overflow:ellipsis;white-space:nowrap;font-size:.85rem;overflow:hidden}.task-card__preview-due{color:var(--text-soft)}.texteditor{background:var(--surface);border:var(--border-width) solid var(--border);border-radius:var(--radius);overflow:hidden}.texteditor__toolbar{background:var(--surface-sunken);border-bottom:var(--border-width) solid var(--border);flex-wrap:wrap;gap:4px;padding:8px;display:flex}.texteditor__toolbar button{border:var(--border-width) solid transparent;border-radius:var(--radius-sm);min-width:32px;height:32px;color:var(--text);cursor:pointer;background:0 0;padding:0 8px;font-size:.85rem;font-weight:600}.texteditor__toolbar button:hover{background:var(--surface);border-color:var(--border)}.texteditor__toolbar button[aria-pressed=true]{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.texteditor__toolbar .texteditor__divider{width:var(--border-width);background:var(--border);margin:4px}.texteditor__content,.textview{min-height:220px;padding:16px;font-size:.95rem;line-height:1.6}.texteditor__content:focus{outline:none}.texteditor__content h1,.texteditor__content h2,.texteditor__content h3,.textview h1,.textview h2,.textview h3{font-family:var(--font-display);margin:0 0 8px}.texteditor__content p,.textview p{margin:0 0 8px}.texteditor__content ul,.texteditor__content ol,.textview ul,.textview ol{margin:0 0 8px;padding-left:1.4em}.texteditor__saved{color:var(--text-soft);padding:6px 16px 0;font-size:.75rem}.textdoc-preview{color:var(--text-soft);-webkit-line-clamp:2;-webkit-box-orient:vertical;font-size:.875rem;display:-webkit-box;overflow:hidden}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
