:root{--ink:#2b2622;--muted:#6f665e;--paper:#faf7f2;--panel:#fffdf9;--band:#f1ebe1;--rule:#e4dacb;--gold:#9a7744;--sage:#5f6f52;--sage-d:#4e5c43;--red:#a8432f;--serif:"Cormorant Garamond",Georgia,serif;--sans:Inter,system-ui,-apple-system,sans-serif}
*{box-sizing:border-box}
body{margin:0;font:14.5px/1.5 var(--sans);color:var(--ink);background:var(--paper);-webkit-font-smoothing:antialiased}
a{color:var(--sage)}
h1,h2{font-family:var(--serif);font-weight:500;margin:0;line-height:1.1}
h1{font-size:2.6rem}h2{font-size:1.65rem}
h3{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--gold);margin:1.5rem 0 .5rem}
.muted{color:var(--muted)}.warn{color:var(--red)}
.eyebrow{margin:0 0 .25rem;font-size:.72rem;letter-spacing:.25em;text-transform:uppercase;color:var(--gold);font-weight:600}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
/* top bar */
.topbar{position:sticky;top:0;z-index:10;display:flex;align-items:center;gap:1rem;padding:.6rem 1.25rem;background:rgba(250,247,242,.95);backdrop-filter:blur(6px);border-bottom:1px solid var(--rule);flex-wrap:wrap}
.brand{font-family:var(--serif);font-size:1.35rem;color:var(--ink);text-decoration:none;letter-spacing:.08em}.brand span{color:var(--gold);font-style:italic}
.tabs{display:flex;gap:.25rem;flex:1;overflow-x:auto}
.tabs a{color:var(--muted);text-decoration:none;padding:.45rem .8rem;border-radius:2rem;white-space:nowrap;font-weight:500}
.tabs a[aria-current]{background:var(--ink);color:var(--paper)}
.tabs a:hover:not([aria-current]){background:var(--band);color:var(--ink)}
.me{display:flex;align-items:center;gap:.5rem;font-size:.85rem}.me img{border-radius:50%}.me a{color:var(--muted)}
@media(max-width:640px){.tabs{order:3;flex-basis:100%}.me span{display:none}}
/* layout */
.page{max-width:76rem;margin:0 auto;padding:1.5rem 1.25rem 4rem}
.page-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;margin:.5rem 0 1.25rem;flex-wrap:wrap}
.count{margin:0;color:var(--muted)}.count b{font-family:var(--serif);font-size:2.4rem;color:var(--ink);font-weight:500}
.subnav{display:flex;gap:1.25rem;border-bottom:1px solid var(--rule);margin-bottom:1.5rem;overflow-x:auto;position:sticky;top:3.05rem;background:var(--paper);z-index:5}
.subnav a{color:var(--muted);text-decoration:none;padding:.6rem 0;white-space:nowrap;font-weight:500;border-bottom:2px solid transparent}
.subnav a:hover{color:var(--ink);border-color:var(--gold)}
.pill{display:inline-block;background:var(--band);border-radius:1rem;padding:0 .45rem;font-size:.72rem;color:var(--ink)}
section{scroll-margin-top:6.5rem}
.panel{background:var(--panel);border:1px solid var(--rule);border-radius:.75rem;padding:1.25rem 1.25rem 1.5rem;margin-bottom:1.25rem}
.panel-head{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;margin-bottom:.75rem}
.panel>h2{margin-bottom:.75rem}
.grid-2{display:grid;gap:1.25rem;margin-bottom:1.25rem}.grid-2 .panel{margin:0}
@media(min-width:900px){.grid-2{grid-template-columns:1fr 1fr}.span-2{grid-column:span 2}}
.grid-3{display:grid;gap:1rem}@media(min-width:800px){.grid-3{grid-template-columns:repeat(3,1fr)}}
/* stats */
.stats{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1rem;margin:0}
.stats div{border-top:1px solid var(--rule);padding-top:.5rem}.stats dt{font-size:.75rem;color:var(--muted)}.stats dd{margin:0;font-weight:500}
.next{list-style:none;padding:0;margin:0}.next li{display:flex;justify-content:space-between;gap:1rem;padding:.45rem 0;border-bottom:1px dashed var(--rule)}
.next time{color:var(--muted);white-space:nowrap}.next .late time{color:var(--red);font-weight:600}
/* forms */
.form{display:grid;grid-template-columns:1fr 1fr;gap:.75rem 1rem}
.form label{display:flex;flex-direction:column;gap:.25rem;font-size:.8rem;font-weight:500;color:var(--muted)}
.form .span{grid-column:1/-1}
.form small{font-weight:400}
input,select,textarea{font:inherit;color:var(--ink);background:#fff;border:1px solid var(--rule);border-radius:.4rem;padding:.5rem .6rem;min-height:2.3rem;width:100%}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--gold);box-shadow:0 0 0 3px rgba(154,119,68,.15)}
input[type=checkbox]{width:1.15rem;height:1.15rem;min-height:0;accent-color:var(--sage)}
.btn{display:inline-flex;align-items:center;gap:.4rem;font:500 .88rem var(--sans);background:var(--sage);color:#fbf8f2;border:1px solid var(--sage);border-radius:2rem;padding:.55rem 1.1rem;cursor:pointer;text-decoration:none}
.btn:hover{background:var(--sage-d)}.btn[disabled]{opacity:.55;cursor:default}
.btn.ghost{background:transparent;color:var(--ink);border-color:var(--rule)}.btn.ghost:hover{background:var(--band)}
.btn.danger{color:var(--red)}
.link-btn{background:none;border:0;color:var(--red);cursor:pointer;font:inherit;font-size:.82rem;padding:0 .25rem}
.actions{display:flex;gap:.5rem;flex-wrap:wrap}
.toggle{display:flex;align-items:center;gap:.4rem;font-size:.85rem;color:var(--muted)}
/* timing */
.timing{display:grid;gap:1.25rem;margin-top:1rem}@media(min-width:800px){.timing{grid-template-columns:1fr 1.3fr}}
.form.compact{grid-template-columns:1fr 1fr;align-content:start}
.plan{background:var(--band);border-radius:.6rem;padding:1rem 1.25rem}.plan p{margin:.25rem 0}
.rec{font-size:1.05rem}.rec b{font-family:var(--serif);font-size:1.6rem;color:var(--sage-d)}
.timeline{list-style:none;padding:0;margin:.75rem 0 1rem;border-left:2px solid var(--gold)}
.timeline li{padding:.25rem 0 .25rem .9rem;position:relative}.timeline li::before{content:"";position:absolute;left:-.38rem;top:.7rem;width:.6rem;height:.6rem;border-radius:50%;background:var(--paper);border:2px solid var(--gold)}
.timeline time{display:inline-block;min-width:4.6rem;font-weight:600}.timeline .late{color:var(--red)}
/* grids */
.grid-wrap{overflow-x:auto;border:1px solid var(--rule);border-radius:.5rem;margin:.5rem 0 .75rem;background:#fff}
table.grid{border-collapse:collapse;width:100%;min-width:44rem}
.grid th{position:sticky;top:0;background:var(--band);text-align:left;font-size:.72rem;font-weight:600;color:var(--muted);padding:.5rem .4rem;white-space:nowrap}
.grid td{border-top:1px solid var(--rule);padding:.25rem;vertical-align:top}
.grid input,.grid select,.grid textarea{border-color:transparent;background:transparent;min-height:2rem;padding:.35rem .4rem}
.grid input:hover,.grid select:hover,.grid textarea:hover{border-color:var(--rule)}
.grid td.t-bool{text-align:center;vertical-align:middle;width:2.5rem}
.grid .t-date{width:9.5rem}.grid .t-money{width:7.5rem}.grid .t-int{width:4.5rem}.grid .t-select{width:8rem}
.grid .c-title,.grid .c-household,.grid .c-name{min-width:18rem}.grid textarea{resize:none;overflow:hidden}.grid .t-long{min-width:16rem}
.grid .c-personal_note{min-width:22rem}
.grid td.c-del{width:2rem;vertical-align:middle}
.del{background:none;border:0;color:var(--muted);font-size:1.25rem;cursor:pointer;line-height:1;padding:.2rem .4rem;border-radius:.3rem}.del:hover{color:var(--red);background:#f6e7e2}
tr.is-done input:not([type=checkbox]),tr.is-done textarea{text-decoration:line-through;color:var(--muted)}
.hide-done tr.is-done{display:none}
tr.saving{opacity:.6}tr.error td{background:#fbeeea}
.totals{margin:0;color:var(--muted);font-size:.88rem}
.import{background:var(--band);border-radius:.6rem;padding:1rem;margin:.75rem 0;display:grid;gap:.75rem}
.import label{display:grid;gap:.4rem;font-size:.85rem}
/* media */
.badge{font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;padding:.25rem .65rem;border-radius:1rem;background:var(--band);color:var(--muted)}
.s-approved{background:#e5ecdf;color:var(--sage-d)}.s-ordered{background:#f3e8d6;color:#7a5a2c}.s-received,.s-sent{background:var(--sage);color:#fff}
.previews{display:grid;grid-template-columns:repeat(auto-fill,minmax(14rem,1fr));gap:1rem;margin:1rem 0}
.previews figure{margin:0}.previews img{width:100%;height:auto;border-radius:.3rem;box-shadow:0 12px 30px -16px rgba(43,38,34,.5);background:#fff}
.previews figcaption{font-size:.8rem;color:var(--muted);margin-top:.4rem;text-align:center}
.files{list-style:none;padding:0;margin:0}.files li{padding:.35rem 0;border-bottom:1px dashed var(--rule)}
.upload{margin-top:.75rem}.upload.busy{opacity:.5;pointer-events:none}
.edit{margin-top:1rem;border-top:1px solid var(--rule);padding-top:.75rem}.edit summary{cursor:pointer;font-weight:500;color:var(--sage-d);margin-bottom:.75rem}
.order-line{margin:.75rem 0 0}
.printer .line{background:var(--band);border-radius:.6rem;padding:1rem}.printer .line h3{margin-top:0}.printer .line p{margin:.3rem 0}
.price-line{font-weight:600}.lede-sm{font-size:1rem}
.alts{margin-top:.75rem}.alts summary{cursor:pointer;color:var(--muted)}
/* toast */
.toast{position:fixed;bottom:1.25rem;left:50%;transform:translateX(-50%);background:var(--ink);color:var(--paper);padding:.6rem 1.1rem;border-radius:2rem;font-size:.88rem;z-index:50;box-shadow:0 10px 30px -10px rgba(0,0,0,.4)}
.toast.bad{background:var(--red)}
.alert{background:#fbeeea;color:var(--red);border-radius:.5rem;padding:.6rem .8rem}
/* login */
body.login{min-height:100vh;display:grid;place-items:center;padding:1.25rem;background:var(--band)}
.login-card{display:grid;background:var(--panel);border-radius:1rem;overflow:hidden;max-width:46rem;width:100%;box-shadow:0 40px 80px -40px rgba(43,38,34,.5)}
@media(min-width:680px){.login-card{grid-template-columns:1fr 1.2fr}}
.login-photo{width:100%;height:100%;object-fit:cover;max-height:22rem}@media(min-width:680px){.login-photo{max-height:none}}
.login-body{padding:2.25rem 2rem;display:flex;flex-direction:column;justify-content:center;gap:.5rem}
.login-body h1{font-size:3rem}.login-body h1 span{color:var(--gold);font-style:italic}
.google-btn{display:inline-flex;align-items:center;justify-content:center;gap:.7rem;margin-top:1rem;background:#fff;border:1px solid #dadce0;border-radius:2rem;padding:.75rem 1.25rem;color:#3c4043;font-weight:500;text-decoration:none}
.google-btn:hover{background:#f8f9fa;box-shadow:0 1px 3px rgba(60,64,67,.2)}
.fine{font-size:.82rem;margin-top:1rem}
/* photos */
.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(9rem,1fr));gap:.6rem;margin-top:.5rem}
.photo-grid figure{position:relative;margin:0;aspect-ratio:1;border-radius:.4rem;overflow:hidden;background:var(--band)}
.photo-grid img{width:100%;height:100%;object-fit:cover;display:block}
.photo-del{position:absolute;top:.35rem;right:.35rem;width:2rem;height:2rem;border-radius:50%;border:0;background:rgba(43,38,34,.75);color:#fff;font-size:1.2rem;line-height:1;cursor:pointer}
.photo-del:hover{background:var(--red)}
.photo-new{position:absolute;left:.35rem;bottom:.35rem;background:var(--sage);color:#fff;font-size:.68rem;font-weight:600;padding:.1rem .45rem;border-radius:1rem}
.panel-head h2 .pill{font-family:var(--sans);font-size:.75rem;vertical-align:middle}
