/* =====================================================================
   KALLIGO — brass & dusk
   ---------------------------------------------------------------------
   Deep indigo for structure, warm brass for anything you act on.
   Brass because it is the material of the job: key fobs, lockboxes,
   door hardware, sign posts at dusk.

   Plus Jakarta Sans carries anything human. IBM Plex Mono carries
   anything measured — counts, days quiet, confidence. The numbers are
   the engine, so they get their own voice.

   Built mobile-first. An agent uses this one-handed, in a car, in
   daylight, with about four seconds of attention.
   ===================================================================== */

:root{
  /* ink */
  --ink:#132B54;
  --ink-80:#38445F;
  --slate:#5A6785;
  --muted:#8C97AE;

  /* surfaces */
  --mist:#EEF1F7;
  --paper:#FFFFFF;
  --line:#E1E6EF;
  --line-soft:#EDF0F6;

  /* accent — pulled straight off the logo. Action, focus, the thing
     you press. Nothing is cyan unless it is pressable. */
  --accent:#00B4EF;
  --accent-deep:#0086B8;
  --accent-soft:#E3F6FE;

  /* the logo's magenta. Used sparingly — live/now, never for errors. */
  --magenta:#EC008C;
  --magenta-soft:#FDE6F3;

  /* informational */
  --sky:#3E6BB8;
  --sky-soft:#E8EEFA;

  /* state */
  --coral:#D2553F;
  --coral-soft:#FCEAE6;
  --sage:#3E8F72;
  --sage-soft:#E6F3EE;
  --amber:#C98A1B;

  /* shape */
  --r-xs:8px; --r-sm:11px; --r:15px; --r-lg:20px; --r-xl:28px;
  --sh-1:0 1px 2px rgba(19,43,84,.06);
  --sh-2:0 1px 2px rgba(19,43,84,.05), 0 10px 24px -16px rgba(19,43,84,.35);
  --sh-3:0 2px 6px rgba(19,43,84,.07), 0 22px 44px -22px rgba(19,43,84,.42);

  --font:'Plus Jakarta Sans',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  --mono:'IBM Plex Mono',ui-monospace,SFMono-Regular,Menlo,monospace;

  --bar-h:60px;
  --tabs-h:66px;
}

*{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%}
body{
  background:var(--mist);color:var(--ink);font-family:var(--font);
  font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased;
  padding-bottom:calc(var(--tabs-h) + env(safe-area-inset-bottom) + 8px);
}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}

/* =====================================================================
   TOP BAR
   ===================================================================== */
.topnav{
  height:var(--bar-h);background:var(--ink);color:#fff;
  display:flex;align-items:center;gap:.3rem;padding:0 1rem;
  position:sticky;top:0;z-index:40;
}
/* The logo files ship on a white background with navy artwork, which
   would vanish against the navy bar. Rather than fight it, give it a
   white chip — reads as deliberate, and the mark keeps its own colours. */
.logo{display:flex;align-items:center;gap:.55rem;flex:0 0 auto}
.logo:hover{opacity:.85}
.logo-chip{
  /* The mark is square with tight margins baked in, so the chip is
     square too. Constraining by height on a non-square file was what
     blew this out into a white slab with a cropped sliver inside. */
  width:34px;height:34px;flex:0 0 34px;border-radius:9px;background:#fff;
  display:grid;place-items:center;overflow:hidden;padding:2px;
  box-shadow:0 2px 8px -3px rgba(0,0,0,.4);
}
.logo-chip img{width:100%;height:100%;object-fit:contain;display:block}
.logo-type{
  font-weight:800;font-size:.95rem;letter-spacing:.16em;text-transform:uppercase;
  color:#fff;
}
@media(max-width:430px){ .logo-type{display:none} .logo-chip{width:30px;height:30px;flex:0 0 30px} }
.nav-item{
  display:none;align-items:center;gap:.45rem;padding:.45rem .75rem;
  border-radius:var(--r-sm);font-size:.88rem;font-weight:600;
  color:rgba(255,255,255,.66);white-space:nowrap;
}
.nav-item svg{width:18px;height:18px;flex:0 0 18px}
.nav-item:hover{background:rgba(255,255,255,.08);color:#fff}
.nav-item.on{background:rgba(255,255,255,.12);color:#fff}
.nav-spacer{flex:1}
.nav-search{
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.14);
  border-radius:99px;padding:.42rem .9rem;font-size:.85rem;font-family:inherit;
  width:min(300px,34vw);color:#fff;
}
.nav-search::placeholder{color:rgba(255,255,255,.55)}
.nav-search:focus{background:rgba(255,255,255,.16);outline:none;border-color:var(--accent)}
.nav-round{
  width:32px;height:32px;border-radius:50%;display:grid;place-items:center;
  background:var(--accent);color:var(--ink);font-size:.8rem;font-weight:800;
  margin-left:.5rem;flex:0 0 32px;
}
.nav-round.g,.nav-round.b{display:none}

/* =====================================================================
   BOTTOM TABS — the app shell. Capture lifts out in brass.
   ===================================================================== */
.tabs{
  position:fixed;left:0;right:0;bottom:0;z-index:50;
  height:calc(var(--tabs-h) + env(safe-area-inset-bottom));
  padding-bottom:env(safe-area-inset-bottom);
  background:rgba(255,255,255,.92);backdrop-filter:blur(14px);
  border-top:1px solid var(--line);
  display:grid;grid-template-columns:1fr 1fr 1fr;align-items:center;
}
.tab{
  display:flex;flex-direction:column;align-items:center;gap:.15rem;
  font-size:.66rem;font-weight:700;letter-spacing:.02em;color:var(--muted);
  padding-top:.35rem;
}
.tab svg{width:22px;height:22px}
.tab.on{color:var(--ink)}
.tab-fab{display:flex;justify-content:center}
.fab{
  width:56px;height:56px;border-radius:50%;margin-top:-24px;
  background:var(--accent);color:#fff;display:grid;place-items:center;
  box-shadow:0 6px 18px -4px rgba(0,180,239,.5), 0 0 0 5px var(--mist);
  border:0;
}
.fab svg{width:25px;height:25px}
.fab:active{transform:scale(.94)}
.fab.on{background:var(--ink);box-shadow:0 6px 18px -4px rgba(19,43,84,.5), 0 0 0 5px var(--mist)}

@media(min-width:900px){
  body{padding-bottom:0}
  .tabs{display:none}
  .nav-item{display:flex}
}

/* =====================================================================
   LAYOUT
   ===================================================================== */
.shell{display:grid;grid-template-columns:1fr;max-width:1360px;margin:0 auto}
@media(min-width:900px){ .shell{grid-template-columns:268px 1fr} }
.main{min-width:0;padding-bottom:2rem}
.person-wrap{max-width:1120px;margin:0 auto;padding:.9rem 1rem 2rem}

.page-head{display:flex;align-items:center;gap:.7rem;padding:1.2rem 1rem .3rem;flex-wrap:wrap}
.page-head h1{font-size:1.5rem;font-weight:800;letter-spacing:-.02em}
.page-head .grow{flex:1}
.hint{color:var(--slate);font-size:.88rem;padding:0 1rem;max-width:64ch}
.sec-h{
  font-family:var(--mono);font-size:.66rem;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);margin:1.5rem 0 .6rem;
}

/* =====================================================================
   SIDEBAR
   ===================================================================== */
.side{padding:.8rem .7rem 1.4rem}
@media(min-width:900px){ .side{border-right:1px solid var(--line);min-height:calc(100vh - var(--bar-h))} }
.side-head{display:flex;align-items:center;gap:.5rem;padding:.3rem .6rem .7rem;
  font-weight:800;font-size:.95rem}
.sec{font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.14em;
  text-transform:uppercase;color:var(--muted);padding:1rem .65rem .35rem}
.li{
  display:flex;align-items:center;gap:.55rem;padding:.5rem .65rem;
  border-radius:var(--r-sm);font-size:.87rem;font-weight:500;color:var(--ink-80);
  margin-bottom:2px;
}
.li:hover{background:#fff}
.li.on{background:var(--ink);color:#fff;font-weight:600;box-shadow:var(--sh-1)}
.li .lbl{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.li .ic{width:16px;text-align:center;flex:0 0 16px;font-size:.85rem}
.pill{
  font-family:var(--mono);font-size:.7rem;font-weight:600;color:var(--slate);
  background:#fff;border:1px solid var(--line);border-radius:99px;
  padding:.02rem .45rem;min-width:24px;text-align:center;
}
.li.on .pill{background:rgba(255,255,255,.16);border-color:transparent;color:#fff}
.pill.zero{background:transparent;border-color:transparent;color:var(--muted)}
.pill.urgent{background:var(--coral-soft);border-color:transparent;color:var(--coral)}
details.coll>summary{list-style:none;cursor:pointer}
details.coll>summary::-webkit-details-marker{display:none}
details.coll>summary .chev{color:var(--muted);font-size:.55rem;transition:transform .18s ease}
details.coll[open]>summary .chev{transform:rotate(90deg)}
details.coll .li.sub{padding-left:1.75rem;font-size:.85rem}
.side-foot{border-top:1px solid var(--line);margin-top:1rem;padding-top:.6rem}

/* =====================================================================
   CONTROLS
   ===================================================================== */
.mini,.chip,.btn-new{
  display:inline-flex;align-items:center;justify-content:center;gap:.35rem;
  font-size:.83rem;font-weight:600;padding:.5rem .9rem;border-radius:var(--r-sm);
  border:1px solid var(--line);background:#fff;color:var(--ink-80);cursor:pointer;
  white-space:nowrap;transition:border-color .15s,background .15s,transform .1s;
}
.mini:hover,.chip:hover,.btn-new:hover{border-color:var(--ink);color:var(--ink)}
.mini:active{transform:translateY(1px)}
.mini.go{background:var(--ink);border-color:var(--ink);color:#fff}
.mini.go:hover{background:#0D1F3E}
.mini.dim{color:var(--muted)}
.chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.chip.link{border-color:transparent;background:transparent;color:var(--sky)}
.btn-new{color:var(--accent-deep);border-color:var(--accent);background:var(--accent-soft)}
.btn-new:hover{background:#F7E8CB;border-color:var(--accent-deep);color:var(--accent-deep)}
.linkbtn{background:none;border:0;color:var(--muted);font-size:.72rem;cursor:pointer;padding:0}
.linkbtn:hover{color:var(--coral);text-decoration:underline}

.toolbar{
  display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;
  border-bottom:1px solid var(--line);flex-wrap:wrap;margin-top:.7rem;
}
.showing{font-family:var(--mono);font-size:.76rem;color:var(--slate);
  font-weight:500;white-space:nowrap}
.tool-sep{width:1px;height:20px;background:var(--line)}

/* =====================================================================
   TABLE
   ===================================================================== */
.tablewrap{overflow-x:auto;background:var(--paper)}
table{width:100%;border-collapse:collapse}
th{
  font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);text-align:left;
  padding:.7rem .9rem;border-bottom:1px solid var(--line);white-space:nowrap;
}
td{padding:.7rem .9rem;border-bottom:1px solid var(--line-soft);vertical-align:middle}
tbody tr:hover{background:#FAFBFD}
.av{
  width:34px;height:34px;border-radius:50%;display:grid;place-items:center;
  color:#fff;font-size:.74rem;font-weight:800;flex:0 0 34px;letter-spacing:.01em;
}
.namecell{display:flex;align-items:center;gap:.65rem}
.nm{font-weight:700;font-size:.9rem;color:var(--ink);display:block}
a.nm:hover{color:var(--sky)}
.sub{font-size:.75rem;color:var(--muted)}
.stage{
  display:inline-block;font-size:.71rem;font-weight:700;color:var(--slate);
  background:var(--mist);border-radius:99px;padding:.16rem .6rem;
  white-space:nowrap;text-transform:capitalize;
}
.stage.hot{background:var(--coral-soft);color:#A93E2B}
.stage.new{background:var(--sky-soft);color:#2F559B}
.stage.under-contract{background:var(--sage-soft);color:#2C7358}
.when{font-family:var(--mono);font-size:.76rem;color:var(--slate);white-space:nowrap}
.quiet{font-family:var(--mono);font-size:.82rem;font-weight:600;white-space:nowrap}
.quiet.hot{color:var(--coral)} .quiet.warm{color:var(--amber)} .quiet.cool{color:var(--sage)}
.acts{display:flex;gap:.3rem;justify-content:flex-end}

/* =====================================================================
   CARDS / PANELS
   ===================================================================== */
.card,.panel,.logbox,.uploadbox{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--r);
  box-shadow:var(--sh-1);
}
.panel{margin:.9rem 1rem;padding:.95rem 1.05rem;font-size:.86rem;color:var(--slate)}
.panel code,.panel pre{font-family:var(--mono);font-size:.76rem;
  background:var(--mist);border-radius:var(--r-xs);padding:.1rem .35rem;color:var(--ink)}
.panel pre{padding:.75rem;overflow-x:auto;margin-top:.5rem;line-height:1.55}
.empty{
  margin:1.6rem 1rem;border:1.5px dashed var(--line);border-radius:var(--r-lg);
  padding:2.4rem 1.2rem;text-align:center;color:var(--slate);background:var(--paper);
}
.empty strong{display:block;font-size:1.08rem;font-weight:700;color:var(--ink);margin-bottom:.3rem}
.undobar{
  display:flex;align-items:center;gap:.8rem;margin:.9rem 1rem 0;
  background:var(--sage-soft);border:1px solid #C5E4D8;border-radius:var(--r);
  padding:.7rem 1rem;font-size:.86rem;color:#2C7358;
}
.undobar strong{font-weight:700}
.undobar .mini{background:#fff;border-color:#C5E4D8;color:#2C7358}
.kbd{font-family:var(--mono);font-size:.71rem;color:var(--muted);margin-top:.55rem;line-height:1.5}
.fieldlab{display:block;font-family:var(--mono);font-size:.65rem;font-weight:600;
  letter-spacing:.1em;text-transform:uppercase;color:var(--slate);margin-bottom:.35rem}
.fieldlab span{font-family:var(--font);font-weight:400;text-transform:none;
  letter-spacing:0;color:var(--muted)}

/* =====================================================================
   FOCUS MODE
   ===================================================================== */
.focus{margin:1.2rem 1rem;background:var(--paper);border:1px solid var(--line);
  border-radius:var(--r-lg);padding:1.5rem 1.3rem;box-shadow:var(--sh-2);max-width:640px}
.focus .pos{font-family:var(--mono);font-size:.68rem;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted)}
.focus .idrow{display:flex;align-items:center;gap:.9rem;margin:.6rem 0 .2rem}
.focus .av{width:54px;height:54px;flex:0 0 54px;font-size:1.15rem}
.focus h2{font-size:1.6rem;font-weight:800;letter-spacing:-.025em}
.focus .tel{font-family:var(--mono);color:var(--sky);font-weight:600;font-size:1rem}
.facts{margin:1.1rem 0;border-top:1px solid var(--line-soft);
  border-bottom:1px solid var(--line-soft);padding:.8rem 0}
.fact{display:flex;gap:1rem;padding:.22rem 0;font-size:.88rem}
.fact b{font-family:var(--mono);font-size:.64rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);min-width:8.5rem;padding-top:.25rem}
.focus textarea,.logbox textarea{
  width:100%;border:1px solid var(--line);border-radius:var(--r-sm);padding:.7rem;
  font-family:inherit;font-size:16px;resize:vertical;min-height:70px;margin-bottom:.65rem;
  background:#FCFDFE;
}
.focus textarea:focus,.logbox textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}
.bigacts{display:flex;gap:.45rem;flex-wrap:wrap}
.bigacts .mini{font-size:.88rem;padding:.62rem 1rem}

/* history strip inside focus */
.hist{margin:1rem 0 1.1rem;border-top:1px solid var(--line-soft);padding-top:.75rem}
.hist-h{font-family:var(--mono);font-size:.64rem;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin-bottom:.5rem}
.hist-row{display:flex;gap:.7rem;align-items:baseline;padding:.3rem 0;
  border-bottom:1px solid var(--line-soft);font-size:.85rem}
.hist-row:last-child{border-bottom:0}
.hist-when{font-family:var(--mono);color:var(--muted);font-size:.73rem;
  min-width:6.5rem;flex:0 0 6.5rem}
.hist-ch{font-family:var(--mono);font-size:.66rem;font-weight:600;text-transform:uppercase;
  letter-spacing:.06em;color:var(--sage);min-width:5rem;flex:0 0 5rem}
.hist-ch.miss{color:var(--muted)}
.hist-body{color:var(--slate);flex:1}

/* =====================================================================
   PERSON
   ===================================================================== */
.backlink{font-size:.83rem;color:var(--sky);font-weight:600}
.phead{display:flex;align-items:center;gap:1rem;padding:.9rem 0 1.1rem;
  border-bottom:1px solid var(--line);flex-wrap:wrap}
.av.xl{width:60px;height:60px;flex:0 0 60px;font-size:1.3rem}
.phead-id{flex:1;min-width:190px}
.phead-id h1{font-size:1.75rem;font-weight:800;letter-spacing:-.028em}
.phead-contact{display:flex;gap:.9rem;flex-wrap:wrap;font-size:.86rem;
  color:var(--slate);margin-top:.15rem}
.phead-contact a{color:var(--sky);font-weight:600}
.phead-clock{text-align:right}
.phead-clock .big{font-family:var(--mono);font-size:1.3rem;font-weight:600}
.phead-clock .big.over{color:var(--coral)}
.phead-clock .big.ok{color:var(--sage)}
.phead-clock .big.never{color:var(--amber)}
.pcols{display:grid;grid-template-columns:1fr;gap:1.5rem;padding-top:1.2rem}
@media(min-width:960px){.pcols{grid-template-columns:1.5fr .95fr;gap:2rem}}
.logbox{padding:1.05rem}

.tl{list-style:none;position:relative;padding-left:1.2rem}
.tl:before{content:'';position:absolute;left:4px;top:.5rem;bottom:.5rem;
  width:2px;background:var(--line);border-radius:2px}
.tl-day{font-family:var(--mono);font-size:.66rem;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);margin:1.1rem 0 .45rem}
.tl-day:first-child{margin-top:0}
.tl-item{position:relative;padding:.45rem 0 .6rem}
.tl-dot{position:absolute;left:-1.2rem;top:.78rem;width:10px;height:10px;border-radius:50%;
  background:var(--sage);border:2px solid var(--mist)}
.tl-dot.hollow{background:var(--mist);border:2px solid var(--line)}
.tl-top{display:flex;align-items:baseline;gap:.5rem;font-size:.86rem}
.tl-top strong{font-weight:700}
.tl-when{font-family:var(--mono);color:var(--muted);font-size:.73rem}
.tag{font-family:var(--mono);font-size:.62rem;font-weight:600;text-transform:uppercase;
  letter-spacing:.06em;background:var(--mist);color:var(--muted);
  border-radius:99px;padding:.06rem .45rem}
.tl-note{font-size:.89rem;color:var(--slate);margin-top:.18rem}
.tl-item.muted .tl-top strong{color:var(--muted);font-weight:500}
.tl-del{margin-left:auto}

.prail .card{padding:1rem 1.05rem;margin-bottom:.8rem}
.card-h{font-family:var(--mono);font-size:.64rem;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin-bottom:.6rem}
.card-body{font-size:.88rem;color:var(--slate)}
.card-note{font-size:.77rem;color:var(--muted);margin-top:.55rem;line-height:1.55}
.kv{display:flex;justify-content:space-between;gap:.8rem;font-size:.86rem;
  padding:.3rem 0;border-bottom:1px solid var(--line-soft)}
.kv:last-of-type{border-bottom:0}
.kv span{color:var(--slate)}
.kv b{font-weight:700;text-align:right}
.stageform{display:flex;gap:.4rem}
.bar{height:6px;background:var(--line-soft);border-radius:99px;overflow:hidden;margin-top:.5rem}
.bar i{display:block;height:100%;background:var(--accent);border-radius:99px}
.editcard>summary{cursor:pointer;list-style:none;display:flex;align-items:center}
.editcard>summary::-webkit-details-marker{display:none}
.editcard>summary:after{content:'›';color:var(--accent);margin-left:auto;font-size:1.2rem;
  line-height:1;transform:rotate(90deg)}
.editcard[open]>summary:after{transform:rotate(-90deg)}

/* =====================================================================
   WEEK
   ===================================================================== */
.wk-cols{display:grid;grid-template-columns:1fr;gap:1.5rem;padding:1.1rem 1rem 2rem}
@media(min-width:1080px){.wk-cols{grid-template-columns:1.45fr .95fr;gap:2.2rem}}
.wk-group{margin-bottom:1.4rem}
.wk-group h2{font-family:var(--mono);font-size:.64rem;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);margin-bottom:.5rem}
.task{display:flex;align-items:flex-start;gap:.7rem;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r);padding:.7rem .85rem;
  margin-bottom:.4rem;box-shadow:var(--sh-1)}
.task.is-done{background:transparent;border-style:dashed;box-shadow:none;opacity:.6}
.task.is-done .t-title{text-decoration:line-through;color:var(--muted)}
.tick{width:28px;height:28px;flex:0 0 28px;border:1.5px solid var(--line);border-radius:50%;
  background:#fff;cursor:pointer;font-size:14px;line-height:1;color:var(--sage);padding:0;
  transition:border-color .15s,transform .1s}
.tick:hover{border-color:var(--sage);transform:scale(1.07)}
.t-title{font-weight:600;font-size:.9rem}
.t-note{font-size:.81rem;color:var(--slate);margin-top:.1rem}
.t-meta{font-family:var(--mono);font-size:.71rem;color:var(--muted);margin-top:.25rem}
.t-meta .carry{color:var(--amber);font-weight:600}
.spines{display:grid;grid-template-columns:repeat(6,1fr);gap:.4rem;margin-top:1.3rem;
  border-top:1px solid var(--line);padding-top:1.1rem}
.spine{background:var(--paper);border:1px solid var(--line);border-radius:var(--r-sm);
  padding:.6rem .3rem;text-align:center}
.spine .d{font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted)}
.spine .n{font-family:var(--mono);font-weight:600;font-size:1.35rem;margin-top:.12rem}
.spine .n.zero{color:var(--line)}
.rail h2{font-size:1rem;font-weight:800;border-bottom:1px solid var(--line);
  padding-bottom:.45rem;margin-bottom:.7rem}
.prow{display:flex;gap:.65rem;align-items:center;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r);padding:.55rem .7rem;
  margin-bottom:.4rem;box-shadow:var(--sh-1)}
.prow:hover{border-color:var(--sky)}
.therm{width:5px;flex:0 0 5px;height:36px;border-radius:99px;background:var(--line-soft);
  position:relative;overflow:hidden}
.therm i{position:absolute;bottom:0;left:0;right:0;display:block;border-radius:99px}
.therm.hot i{background:var(--coral)}
.therm.warm i{background:var(--amber)}
.therm.cool i{background:var(--sage)}
.prow .grow{flex:1;min-width:0}
.capture{
  position:fixed;left:0;right:0;z-index:30;background:rgba(255,255,255,.94);
  backdrop-filter:blur(12px);border-top:1px solid var(--line);padding:.7rem 1rem;
  bottom:calc(var(--tabs-h) + env(safe-area-inset-bottom));
}
@media(min-width:900px){ .capture{bottom:0;padding-bottom:.7rem} }
.capture form{display:flex;gap:.5rem;max-width:1360px;margin:0 auto}
.capture input[type=text]{flex:1;border:1px solid var(--line);border-radius:var(--r-sm);
  padding:.65rem .8rem;font-family:inherit;font-size:16px;background:#FCFDFE}
.capture input:focus{outline:2px solid var(--accent);outline-offset:-1px}
.capture button{border:0;background:var(--ink);color:#fff;border-radius:var(--r-sm);
  padding:.65rem 1.15rem;font-weight:700;font-size:.88rem;cursor:pointer}

/* =====================================================================
   CAPTURE PAGE — the signature. Brass aperture ring.
   ===================================================================== */
.snap{
  max-width:520px;margin:1.2rem auto 0;padding:0 1rem;
}
.snap-card{
  background:var(--paper);border-radius:var(--r-xl);box-shadow:var(--sh-3);
  padding:2rem 1.3rem 1.5rem;text-align:center;position:relative;overflow:hidden;
}
.snap-card:before{
  content:'';position:absolute;inset:0 0 auto;height:120px;
  background:radial-gradient(120% 100% at 50% 0%, var(--accent-soft) 0%, transparent 70%);
  pointer-events:none;
}
/* The shutter. Indigo where the bottom-bar FAB is brass, so the page's
   own primary action reads as a different, bigger thing than navigation. */
.hidden-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}
.shutter{display:block;text-align:center;cursor:pointer;margin:0 0 1.2rem}
.shutter-ring{
  display:grid;place-items:center;width:150px;height:150px;margin:0 auto;
  border-radius:50%;background:var(--accent-soft);
  transition:transform .16s ease, box-shadow .16s ease;
}
.shutter-face{
  width:118px;height:118px;border-radius:50%;display:grid;place-items:center;
  background:linear-gradient(160deg,#1D3F73 0%,#132B54 62%);color:#fff;
  position:relative;overflow:hidden;
  box-shadow:0 14px 30px -12px rgba(19,43,84,.75), inset 0 1px 0 rgba(255,255,255,.14);
}
.shutter:hover .shutter-ring{transform:scale(1.03)}
.shutter:active .shutter-ring{transform:scale(.97)}
.shutter-ring:focus-within{box-shadow:0 0 0 4px var(--accent)}
.shutter-icon{display:grid;place-items:center}
.shutter-preview{display:none;position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover}
.shutter.has-shot .shutter-preview{display:block}
.shutter.has-shot .shutter-icon{display:none}
.shutter.has-shot .shutter-ring{background:var(--sage-soft)}
.shutter-label{
  display:inline-block;margin-top:.85rem;font-size:.88rem;font-weight:700;
  color:var(--ink);border-bottom:2px solid var(--accent);padding-bottom:2px;
}
.snap h1{font-size:1.45rem;font-weight:800;letter-spacing:-.025em;margin-bottom:.3rem}
.snap p.lede{color:var(--slate);font-size:.92rem;max-width:34ch;margin:0 auto 1.3rem}
.snap-go{
  width:100%;border:0;background:var(--ink);color:#fff;border-radius:99px;
  padding:1rem;font-size:1rem;font-weight:700;cursor:pointer;
  box-shadow:0 10px 22px -12px rgba(19,43,84,.7);
}
.snap-go:disabled{background:var(--slate);cursor:progress}
.snap-note{font-family:var(--mono);font-size:.72rem;color:var(--muted);margin-top:.7rem}

/* the cute centered toggle */
.past-toggle{margin:1.4rem auto 0;text-align:center}
.past-toggle>summary{
  list-style:none;cursor:pointer;display:inline-flex;align-items:center;gap:.5rem;
  font-size:.85rem;font-weight:700;color:var(--accent-deep);
  background:var(--paper);border:1px solid var(--accent);border-radius:99px;
  padding:.6rem 1.2rem;box-shadow:var(--sh-1);transition:background .15s;
}
.past-toggle>summary::-webkit-details-marker{display:none}
.past-toggle>summary:hover{background:var(--accent-soft)}
.past-toggle>summary .n{font-family:var(--mono);font-size:.78rem;
  background:var(--accent-soft);border-radius:99px;padding:.02rem .45rem}
.past-toggle>summary .caret{transition:transform .2s ease;font-size:.7rem}
.past-toggle[open]>summary .caret{transform:rotate(180deg)}
.past-body{margin-top:1rem;text-align:left}

.capgrid{display:grid;grid-template-columns:repeat(2,1fr);gap:.7rem}
@media(min-width:700px){.capgrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}
.capcard{border:1px solid var(--line);border-radius:var(--r);overflow:hidden;
  background:var(--paper);display:block;box-shadow:var(--sh-1)}
.capcard:hover{border-color:var(--accent)}
.capcard img{width:100%;height:112px;object-fit:cover;display:block;background:var(--mist)}
.capmeta{padding:.5rem .65rem;display:flex;flex-direction:column;gap:.05rem}
.capstatus{font-family:var(--mono);font-size:.62rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.08em}
.capstatus.done{color:var(--sage)} .capstatus.review{color:var(--amber)}
.capstatus.failed{color:var(--coral)}
.capstatus.queued,.capstatus.processing{color:var(--muted)}

/* review */
.reviewgrid{display:grid;grid-template-columns:1fr;gap:1rem;padding:0 1rem}
@media(min-width:860px){.reviewgrid{grid-template-columns:.8fr 1.2fr;padding:0}}
.shot{width:100%;border:1px solid var(--line);border-radius:var(--r-lg);display:block;
  box-shadow:var(--sh-2)}
.xitem{display:flex;align-items:flex-start;gap:.7rem;background:var(--paper);
  border:1px solid var(--line);border-radius:var(--r);padding:.85rem .95rem;
  margin-bottom:.5rem;box-shadow:var(--sh-1)}
.xitem.shaky{border-color:var(--accent);background:#FFFDF8}
.xitem>input[type="checkbox"]{margin-top:.25rem;width:21px;height:21px;
  flex:0 0 21px;accent-color:var(--accent)}
.xbody{flex:1;min-width:0}
.xhead{display:flex;align-items:center;gap:.45rem;margin-bottom:.45rem}
.xtype{font-family:var(--mono);font-size:.6rem;font-weight:600;text-transform:uppercase;
  letter-spacing:.1em;background:var(--mist);color:var(--slate);
  border-radius:99px;padding:.1rem .5rem}
.conf{font-family:var(--mono);font-size:.74rem;font-weight:600;margin-left:auto}
.conf.ok{color:var(--sage)} .conf.mid{color:var(--amber)} .conf.low{color:var(--coral)}
.xread{display:grid;grid-template-columns:auto 1fr;gap:.2rem .9rem}
.xread dt{font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--muted);padding-top:.22rem}
.xread dd{font-size:.93rem;color:var(--ink);font-weight:600;margin:0}
.xread dd.none{color:var(--muted);font-weight:400;font-style:italic}
.xfix{margin-top:.6rem}
.xfix>summary{list-style:none;cursor:pointer;font-size:.78rem;color:var(--sky);
  font-weight:700;display:inline-block}
.xfix>summary::-webkit-details-marker{display:none}
.xfix>summary:hover{text-decoration:underline}
.xitem.shaky .xfix>summary{color:var(--accent-deep)}
.xfields,.editform{display:grid;grid-template-columns:1fr 1fr;gap:.6rem;margin-top:.6rem}
.xfields label,.editform label{display:flex;flex-direction:column;gap:.2rem;
  font-family:var(--mono);font-size:.62rem;font-weight:600;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted)}
.xfields label.wide,.editform label.wide,.editform button{grid-column:1/-1}
.xfields input,.xfields select,.xfields textarea,
.editform input,.editform select,.editform textarea{
  border:1px solid var(--line);border-radius:var(--r-xs);padding:.5rem .6rem;
  font-family:var(--font);font-size:16px;font-weight:500;letter-spacing:0;
  text-transform:none;color:var(--ink);background:#fff;width:100%;
}
.xfields input:focus,.editform input:focus,.xfields textarea:focus,
.editform textarea:focus,.xfields select:focus,.editform select:focus{
  outline:2px solid var(--accent);outline-offset:-1px}

/* =====================================================================
   MOBILE
   ===================================================================== */
@media(max-width:720px){
  input,select,textarea,.nav-search{font-size:16px !important}
  .mini,.chip,.btn-new{min-height:42px}
  .page-head{padding:1rem .9rem .25rem}
  .page-head h1{font-size:1.3rem}
  .hint,.toolbar{padding-left:.9rem;padding-right:.9rem}
  .panel,.empty,.undobar,.focus{margin-left:.9rem;margin-right:.9rem}
  .person-wrap{padding:.7rem .9rem 2rem}
  .wk-cols{padding:.9rem .9rem 5rem;gap:1.2rem}
  .side{padding:.5rem .6rem .8rem}
  .side-head{display:none}
  th.opt,td.opt{display:none}
  th,td{padding:.6rem .55rem}
  .acts{flex-direction:column;align-items:stretch;gap:.3rem}
  .acts .mini{width:100%}
  .toolbar .chip.link{display:none}
  .focus{padding:1.2rem 1rem}
  .focus h2{font-size:1.35rem}
  .fact{flex-direction:column;gap:.05rem}
  .fact b{min-width:0;padding-top:0}
  .bigacts .mini{flex:1 1 46%}
  .phead-clock{text-align:left;flex:1 1 100%}
  .phead-id h1{font-size:1.4rem}
  .av.xl{width:50px;height:50px;flex:0 0 50px;font-size:1.1rem}
  .prail{order:-1}
  .hist-when,.hist-ch{min-width:0;flex:0 0 auto}
  .hist-row,.tl-top,.kv{flex-wrap:wrap}
  .spines{grid-template-columns:repeat(3,1fr)}
  .xfields,.editform{grid-template-columns:1fr}
  .xread{grid-template-columns:1fr;gap:0}
  .xread dt{padding-top:.4rem}
  .shot{max-height:44vh;object-fit:contain;background:var(--mist)}
}
@media(max-width:400px){
  th.opt2,td.opt2{display:none}
  .capgrid{grid-template-columns:1fr}
}
@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
