@font-face{font-family:Jost;src:url('/gift-os/assets/jost.ttf') format('truetype');font-display:swap}
:root{--paper:#fafbf7;--white:#fff;--ink:#263321;--muted:#64735c;--line:#dfe5d8;--green:#eaf0e2;--wine:#704c48;--alert:#854b30;color-scheme:light;font-family:Jost,system-ui,sans-serif;color:var(--ink);background:var(--paper);font-synthesis:none}
*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}a{color:inherit;text-decoration:none}button,a,input,select,textarea{touch-action:manipulation}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}a:hover{text-decoration:underline;text-underline-offset:4px}button:hover{filter:brightness(.96)}:focus-visible{outline:2px solid #79634b;outline-offset:4px}h1,h2,h3,p{margin:0}h1,h2,h3{text-wrap:balance;font-weight:450}h1{font-size:clamp(32px,4vw,50px);line-height:1.12;letter-spacing:-1.4px}h2{font-size:24px;line-height:1.3}h3{font-size:18px}p{line-height:1.65}small,.muted{color:var(--muted)}small{font-size:12px}.eyebrow{font-size:11px;text-transform:uppercase;letter-spacing:2px;color:var(--muted)}.skip{position:fixed;top:-100px;left:16px;z-index:20;background:white;padding:12px}.skip:focus{top:12px}
.office-shell{display:grid;grid-template-columns:226px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100dvh;background:#eef2e8;border-right:1px solid var(--line);padding:30px 20px;display:flex;flex-direction:column;gap:28px;overflow:auto}.brand{font-size:26px;letter-spacing:5px;font-weight:450}.brand small{display:block;font-size:10px;letter-spacing:2px;margin-top:7px}.sidebar nav{display:grid;gap:3px}.sidebar nav a{padding:9px 12px;font-size:14px;border-radius:5px}.sidebar nav a[aria-current=page]{background:#dce6d1;color:#253d1f}.sidebar nav .nav-group{font-size:10px;text-transform:uppercase;letter-spacing:1.7px;margin:18px 12px 6px;color:var(--muted)}.sidebar footer{margin-top:auto;font-size:12px;line-height:1.8}.office-body{min-width:0}.topbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:20px 42px;border-bottom:1px solid var(--line);font-size:12px}.topbar strong{font-weight:450}.topbar .save-state{color:var(--muted)}main{max-width:1600px;margin:auto;padding:42px clamp(20px,4vw,64px) 80px;min-height:80vh;scroll-margin-top:20px}.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:32px}.page-head p{margin-top:12px;max-width:700px;color:var(--muted)}.actions{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.btn{display:inline-flex;justify-content:center;align-items:center;gap:8px;border:1px solid var(--line);border-radius:5px;padding:10px 17px;background:white;min-height:42px;font-size:13px;white-space:normal}.btn.primary{background:var(--ink);color:#fff;border-color:var(--ink)}.btn.wine{background:var(--wine);color:white;border-color:var(--wine)}.btn.danger{color:#8b4235}.text-btn{border:0;background:none;text-decoration:underline;text-underline-offset:4px;padding:7px 0;font-size:13px}.pill{display:inline-block;padding:3px 8px;background:var(--green);border-radius:4px;font-size:11px;letter-spacing:.2px}.pill.warn{background:#f5e8d7;color:#785126}.pill.dark{background:var(--wine);color:white}.stack{display:grid;gap:22px}.columns{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(260px,1fr);gap:30px}.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:20px}.card,.panel{background:var(--white);border:1px solid var(--line);border-radius:7px;padding:23px;min-width:0}.card{display:flex;flex-direction:column;gap:13px;content-visibility:auto;contain-intrinsic-size:auto 230px}.card>.actions:last-child{margin-top:auto}.card h2{font-size:22px}.card p{font-size:14px;color:var(--muted)}.section-title{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:20px}.section-title h2{font-size:21px}.hero{background:#e8efdf;display:grid;grid-template-columns:minmax(0,1fr) 210px;gap:25px;padding:38px;border-radius:8px;min-height:265px;align-items:center}.hero h2{font-size:35px;margin:12px 0}.hero p{max-width:600px;color:#506249}.hero img{width:100%;height:185px;object-fit:contain;mix-blend-mode:multiply}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:18px;margin:25px 0}.metric{padding:20px 22px;border-bottom:1px solid var(--line)}.metric strong{font-weight:400;font-size:30px;display:block;font-variant-numeric:tabular-nums}.metric small{display:block;margin-bottom:7px}.empty{text-align:center;padding:58px 25px;border:1px dashed #cad5c0;border-radius:7px}.empty p{max-width:500px;margin:12px auto 20px;color:var(--muted)}.row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:16px 0;border-bottom:1px solid var(--line);content-visibility:auto;contain-intrinsic-size:auto 80px}.row:last-child{border-bottom:0}.row>div{min-width:0}.row p{font-size:14px}.row small{display:block;margin-top:5px}.date-tile{background:var(--green);padding:9px 11px;min-width:74px;text-align:center;font-size:13px;border-radius:4px;font-variant-numeric:tabular-nums}.avatar{display:grid;place-items:center;width:44px;height:44px;background:#e6eddc;color:#526542;border-radius:50%;font-size:19px;flex-shrink:0}.person-head{display:flex;gap:16px;align-items:center}.person-head .avatar{height:70px;width:70px;font-size:28px}.note{background:#f1f4eb;padding:18px;border-radius:5px;font-size:14px;line-height:1.65}.notice{border-left:3px solid #b99363;background:#fbf3e7;padding:15px 18px;color:#775128;font-size:14px;line-height:1.7}.notice p+p{margin-top:8px}.error{color:#8e362e;background:#fff0eb;padding:14px;border-radius:4px;font-size:14px}.error:empty{display:none}.fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.field{display:grid;gap:6px;min-width:0;font-size:13px}.field.full{grid-column:1/-1}.field input,.field select,.field textarea,.search-input{width:100%;border:1px solid #cdd7c5;border-radius:4px;padding:10px 12px;background:#fff;min-height:44px;font-size:15px}.field textarea{min-height:95px;resize:vertical}.field input[type=checkbox]{width:20px;min-height:20px}.form-section{grid-column:1/-1;border-bottom:1px solid var(--line);padding:12px 0 8px;font-size:17px}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.filterbar{display:flex;gap:14px;align-items:flex-end;flex-wrap:wrap;margin-bottom:25px}.filterbar .field{flex:1;min-width:145px}.filterbar .search{flex:2}.filterbar details{flex-basis:100%}.filterbar summary{cursor:pointer;font-size:13px;padding:10px 0}.filterbar details>.fields{margin-top:10px}.tabs{display:flex;gap:9px;flex-wrap:wrap;margin:0 0 24px}.tabs a{padding:8px 13px;border:1px solid var(--line);border-radius:4px;font-size:13px}.tabs a[aria-current=page]{background:var(--green);border-color:#b4c7a0}.record-data{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:22px;margin:0}.record-data div{min-width:0}.record-data dt{color:var(--muted);font-size:12px;margin-bottom:6px}.record-data dd{font-size:15px;margin:0;white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.7}.record-data .full{grid-column:1/-1}.prose{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.8;font-size:16px}.catalogue-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:30px 22px}.object-card{min-width:0;content-visibility:auto;contain-intrinsic-size:auto 380px}.object-image{position:relative;display:grid;place-items:center;aspect-ratio:1.15;background:#eef0e9;border-radius:5px;overflow:hidden;margin-bottom:15px;color:#74836b}.object-image img{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:contain;object-position:center;padding:15px}.object-image span{font-size:13px}.object-card h2{font-size:20px;margin:8px 0;line-height:1.4}.object-card .price{font-size:15px;font-variant-numeric:tabular-nums;margin:10px 0}.object-card .actions{margin-top:12px}.pager{display:flex;justify-content:space-between;align-items:center;gap:15px;margin:32px 0;font-size:13px}.source-link{font-size:13px;text-decoration:underline;text-underline-offset:3px}.catalogue-detail{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr);gap:25px}.catalogue-detail img{display:block;width:100%;height:300px;object-fit:contain;object-position:center;padding:12px;background:#f1f3ed}.catalogue-detail p{margin:12px 0}.checks{margin:0;padding:0;list-style:none;display:grid;gap:13px}.checks li{padding:14px 16px;background:#fbf3e7;border-radius:4px;font-size:14px}.checks small{display:block;margin-top:7px}.steps{display:flex;gap:6px;flex-wrap:wrap;margin:15px 0 25px}.step{padding:7px 12px;background:#edf0e8;font-size:12px;border-radius:4px}.step.current{background:var(--ink);color:white}.task{display:flex;gap:10px;align-items:center;font-size:14px;padding:12px 0;border-bottom:1px solid var(--line)}.task button{background:white;border:1px solid #9bac8f;border-radius:3px;width:25px;height:25px;flex-shrink:0}.task.done span{text-decoration:line-through;color:var(--muted)}.login-panel{max-width:500px;margin:12vh auto;background:white;border:1px solid var(--line);padding:35px;border-radius:8px}.login-panel h1{font-size:36px}.login-panel p{margin:15px 0 25px;color:var(--muted)}
dialog{border:1px solid var(--line);border-radius:9px;padding:0;width:min(780px,calc(100vw - 28px));max-height:90dvh;background:var(--paper);color:var(--ink);box-shadow:0 20px 80px #27302330;overscroll-behavior:contain}dialog.wide{width:min(1050px,calc(100vw - 28px))}dialog::backdrop{background:#25301f77}.dialog-head{position:sticky;top:0;display:flex;justify-content:space-between;align-items:center;gap:15px;padding:20px 26px;border-bottom:1px solid var(--line);background:var(--paper);z-index:2}.dialog-head h2{font-size:23px}.dialog-head button{border:0;background:transparent;font-size:24px;min-width:40px;min-height:40px}.dialog-body{padding:25px 28px}.dialog-body>p{margin-bottom:20px}.toast{position:fixed;bottom:22px;left:50%;transform:translateX(-50%);padding:11px 19px;border-radius:5px;background:var(--ink);color:white;font-size:14px;z-index:25;max-width:calc(100vw - 28px)}.toast:empty{display:none}.print-only{display:none}img{max-width:100%}button,a,p,h1,h2,h3{overflow-wrap:anywhere}
@media(min-width:1600px){.catalogue-grid{grid-template-columns:repeat(4,minmax(0,1fr))}}
@media(max-width:1050px){.office-shell{grid-template-columns:185px minmax(0,1fr)}.sidebar{padding:25px 12px}.brand{font-size:22px;letter-spacing:3px}.columns{grid-template-columns:1fr}.hero{grid-template-columns:1fr 130px;padding:26px}.hero h2{font-size:29px}.catalogue-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.metrics{gap:8px}.metric{padding:16px 8px}}
@media(max-width:700px){.office-shell{display:block}.sidebar{height:auto;position:relative;padding:20px 16px 12px;gap:15px;border-right:0;border-bottom:1px solid var(--line)}.brand{font-size:22px}.brand small{display:inline;font-size:9px;margin-left:14px}.sidebar nav{display:flex;overflow-x:auto;gap:4px;padding-bottom:7px}.sidebar nav a{white-space:nowrap;font-size:12px;padding:8px 10px}.sidebar .nav-group,.sidebar footer{display:none}.topbar{padding:13px 20px;font-size:11px}.topbar .save-state{max-width:140px;text-align:right}main{padding:27px 20px 60px}.page-head{display:block;margin-bottom:25px}.page-head>.actions{margin-top:18px}h1{font-size:34px}.hero{grid-template-columns:1fr;padding:24px}.hero img{display:none}.hero h2{font-size:29px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metric{padding:15px}.cards{grid-template-columns:1fr}.panel,.card{padding:19px}.fields{grid-template-columns:1fr}.record-data{grid-template-columns:1fr}.catalogue-grid{gap:24px 14px}.object-card h2{font-size:16px}.object-card .actions{display:grid;gap:7px}.object-card .btn{padding:8px;font-size:12px}.object-card .price{font-size:13px}.catalogue-detail{grid-template-columns:1fr}.catalogue-detail img{height:200px}.dialog-body{padding:20px}.dialog-head{padding:15px 20px}.dialog-head h2{font-size:21px}.row{gap:12px}.row .actions{gap:5px}.filterbar{gap:10px}.filterbar .field{min-width:110px}.login-panel{margin:35px 16px;padding:25px}.page-head p{font-size:14px}.record-data dd{font-size:14px}}
@media(max-width:360px){.catalogue-grid{grid-template-columns:1fr}.brand small{display:block;margin-left:0}.row{flex-wrap:wrap}.object-card h2{font-size:21px}.object-card .actions{display:flex}.metrics{gap:4px}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
@media print{.sidebar,.topbar,.actions,.filterbar,.tabs,.toast,.page-head>.actions,.dialog-head button{display:none!important}.office-shell{display:block}main{padding:0}.panel,.card{break-inside:avoid;box-shadow:none}.record-data{display:block}.record-data div{margin-bottom:12px}.print-only{display:block}body:has(dialog[open]) #app{display:none}dialog[open]{position:static;display:block;max-height:none;width:100%;border:0;box-shadow:none}.dialog-body{padding:0}.dialog-head{position:static;padding:0 0 20px}.dialog-body .btn{display:none}}

.family-columns{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:22px;margin-top:25px}.family-map{min-width:0}.family-viewport{overflow:auto;max-height:65vh;min-height:300px;border:1px solid var(--line);border-radius:7px;background:#f6f8f1}.family-viewport svg{display:block;max-width:none}.family-person rect{fill:#fff;stroke:#b2c4a2;stroke-width:1.5}.family-person text{font-size:15px;fill:var(--ink)}.family-person .family-circle{font-size:11px;fill:var(--muted)}.family-person.selected rect,.family-person:focus-visible rect{stroke:#3c6133;stroke-width:3;fill:#e9f0df}.family-person:focus-visible{outline:none}.family-edge path{fill:none;stroke:#97ac89;stroke-width:1.5}.family-edge text{font-size:10px;fill:#526549;paint-order:stroke;stroke:#f6f8f1;stroke-width:4px;stroke-linejoin:round}.family-detail{display:flex;flex-direction:column;gap:16px;align-self:start}.family-detail h3{font-size:15px;margin-top:10px}.family-detail .row{content-visibility:visible}.record-photo{display:block;width:100%;height:300px;object-fit:contain;object-position:center;margin-bottom:25px;background:#f1f3ed}.image-caption{font-size:11px!important;line-height:1.5}.family-map .section-title{flex-wrap:wrap}
@media(max-width:1100px){.family-columns{grid-template-columns:1fr}.family-viewport{max-height:55vh}.family-detail{max-width:650px}}

.occasion-month{margin-bottom:22px}.occasion-month>h2{font-size:25px;padding-bottom:15px;border-bottom:1px solid var(--line)}.occasion-entry{display:grid;grid-template-columns:165px minmax(0,1fr);gap:25px;padding:23px 0;border-bottom:1px solid var(--line)}.occasion-entry:last-child{border-bottom:0}.occasion-entry h3{font-size:20px;margin-bottom:7px}.occasion-entry p{font-size:14px;line-height:1.7;margin:12px 0}.occasion-entry small{color:var(--muted);font-size:12px;line-height:1.6}.occasion-date time{display:block;font-size:18px;font-variant-numeric:tabular-nums}.occasion-date small{display:block;margin-top:8px}.occasion-entry details{font-size:12px}.source-evidence{overflow-wrap:anywhere}.occasion-entry .actions{margin-top:15px}.card .price,.object-card .price{color:var(--ink);font-variant-numeric:tabular-nums}.card .price strong,.object-card .price span{font-size:22px;font-weight:550}.card .price small{font-size:11px;letter-spacing:.06em;text-transform:uppercase}.pantry-card .object-image{margin-bottom:0}.pantry-card .price{margin:0}.pantry-card .image-caption{font-size:11px}
@media(max-width:700px){.occasion-entry{grid-template-columns:1fr;gap:12px}.occasion-date{display:flex;align-items:baseline;justify-content:space-between;gap:15px}.card .price strong{font-size:23px}.object-card .price span{font-size:18px}}
