@import url("https://fonts.googleapis.com/css2?family=Figtree:ital,wght@0,300;0,400;0,600;0,800;1,400&display=swap");
@import url("https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.min.css");

/* ---------------------------------------------------------------------------
   Able Desk design system — Brand Sheet 2026-08-25
   Paper #ECEDE7 ground · Ink #322928 type · Taupe #83725C surfaces & labels
   Gold is star-ratings only, so it never appears in this app.
   Functional colours (amber = urgent, sage = booked) are derived for the tool;
   they are not brand colours. See brand/DESIGN.md.
--------------------------------------------------------------------------- */

:root{
  /* colour — brand */
  --paper:#ECEDE7;
  --ink:#322928;
  --taupe:#83725C;
  --taupe-wash:rgba(131,114,92,.16);
  --taupe-soft:rgba(131,114,92,.10);

  /* colour — derived */
  --body:#453B39;
  --muted:#7C716C;
  --faint:#A29892;
  --label:#6B5A50;
  --card:#FCFCFA;
  --line:rgba(50,41,40,.15);
  --line-soft:rgba(50,41,40,.09);
  --amber-ink:#95530F;
  --amber-wash:#F4E3CB;
  --sage-ink:#48604C;
  --sage:#5E7A63;
  --sage-wash:#E4E9DF;
  --night:#322928;
  --night-raise:#443936;
  --night-line:rgba(236,237,231,.17);
  --night-text:#ECEDE7;
  --night-dim:#B7ABA0;

  /* type — Figtree everywhere, Pretendard for Hangul */
  --disp:"Figtree","Pretendard",system-ui,sans-serif;
  --text:"Figtree","Pretendard",system-ui,-apple-system,"Apple SD Gothic Neo",sans-serif;
  --mono:"Figtree","Pretendard",system-ui,sans-serif;

  /* shape */
  --r-card:16px;
  --r-row:14px;
  --r-btn:10px;
  --r-input:11px;

  /* elevation (ink-tinted, single light source above) */
  --shadow-1:0 1px 2px rgba(50,41,40,.05),0 4px 14px rgba(50,41,40,.05);
  --shadow-2:0 2px 4px rgba(50,41,40,.06),0 12px 30px rgba(50,41,40,.09);

  /* motion */
  --ease:cubic-bezier(.22,1,.36,1);
  --fast:150ms;
  --slow:280ms;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{height:100%}
body{
  font-family:var(--text);color:var(--body);font-size:15px;line-height:1.55;
  background:var(--paper);
  -webkit-font-smoothing:antialiased;
  word-break:keep-all;overflow-wrap:break-word;
  font-variant-numeric:tabular-nums;
}
body::before{
  content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;
  background:
    radial-gradient(80% 55% at 88% -10%, rgba(131,114,92,.14), transparent 60%),
    linear-gradient(180deg,#EFF0EA 0%,#ECEDE7 55%,#E4E3DA 100%);
}
body::after{
  content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.045;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
}
img{max-width:100%;display:block}
button,input,select,textarea{font:inherit;color:inherit}
a{color:inherit}
::selection{background:var(--ink);color:var(--paper)}
:focus{outline:none}
:focus-visible{outline:2px solid var(--ink);outline-offset:2px;border-radius:4px}

/* headline tier: 800 · +.04em · caps */
h1,h2,h3{
  font-family:var(--disp);color:var(--ink);font-weight:800;
  letter-spacing:.04em;text-transform:uppercase;text-wrap:balance;
}
p{text-wrap:pretty}

/* ---- gate ------------------------------------------------------------- */
body.locked .app{display:none}
.gate{display:none;min-height:100dvh;place-items:center;padding:24px}
.gate.show{display:grid}
.gate-card{
  width:min(400px,100%);
  background:var(--card);border:1px solid var(--line);border-radius:20px;
  box-shadow:var(--shadow-2);
  padding:40px 36px 32px;
  display:flex;flex-direction:column;gap:14px;
  animation:gate-in .5s var(--ease) backwards;
}
@keyframes gate-in{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.gate-card .wm{height:30px;width:auto;margin-bottom:10px}
.gate-card .mono{margin-bottom:-8px}
.gate-card h1{font-size:26px;line-height:1.1}
.gate-card .lede{font-size:14px;color:var(--muted)}
.gate-card input{
  min-height:54px;border:1px solid var(--line);border-radius:var(--r-input);
  padding:0 16px;background:var(--taupe-soft);
  font-size:22px;font-weight:600;letter-spacing:.35em;text-align:center;
  transition:border-color var(--fast),background var(--fast),box-shadow var(--fast);
}
.gate-card input:focus{border-color:var(--ink);background:var(--card);box-shadow:0 0 0 3px rgba(50,41,40,.1)}
.gate-card .btn{width:100%;justify-content:center;min-height:48px;font-size:14px}
.gate-card .note{color:var(--amber-ink)}
.gate-alt{display:flex;flex-direction:column;gap:14px;margin-top:4px}
.gate-div{display:flex;align-items:center;gap:12px;color:var(--faint)}
.gate-div::before,.gate-div::after{content:"";flex:1;height:1px;background:var(--line)}
.gate-div span{font-size:10.5px;font-weight:600;letter-spacing:.12em;text-transform:uppercase}
#gate-google{display:flex;justify-content:center;min-height:44px}

/* ---- shell ------------------------------------------------------------ */
.app{display:grid;grid-template-columns:236px minmax(0,1fr);min-height:100%}
.side{
  position:sticky;top:0;height:100dvh;padding:26px 16px 20px;
  border-right:1px solid var(--line-soft);
  background:rgba(238,239,233,.86);
  backdrop-filter:blur(12px);
  display:flex;flex-direction:column;gap:18px;
}
.side .wm{height:26px;width:auto;margin:2px 8px 0}
.side .tag{
  font-size:10px;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--label);padding:0 8px;
}
.nav{display:flex;flex-direction:column;gap:2px}
.nav a{
  display:flex;align-items:center;gap:11px;min-height:40px;
  padding:8px 12px;border-radius:var(--r-btn);text-decoration:none;
  font-weight:600;font-size:14px;color:var(--body);
  transition:background var(--fast),color var(--fast);
}
.nav a svg{width:17px;height:17px;flex:none;opacity:.6;transition:opacity var(--fast)}
.nav a:hover{background:rgba(50,41,40,.07);color:var(--ink)}
.nav a:hover svg{opacity:.9}
.nav a.on{background:var(--ink);color:var(--paper)}
.nav a.on svg{opacity:1}
.side-foot{
  margin-top:auto;padding:0 8px;
  font-size:9.5px;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--faint);
  display:flex;flex-direction:column;gap:7px;
}
/* shared-state status — quiet, and only loud when it stops saving */
.sync-line{color:var(--label);letter-spacing:.1em;line-height:1.5;text-wrap:pretty}
.sync-line.off{color:var(--amber-ink)}

.main{padding:30px 44px 72px;min-width:0}
.main > *{max-width:1060px}

/* ---- notices ---------------------------------------------------------- */
.banner{
  display:block;
  background:var(--night);color:var(--night-text);border-radius:12px;
  padding:11px 16px;margin-bottom:18px;font-size:13.5px;
  box-shadow:var(--shadow-1);
}
.banner a{color:var(--night-text);font-weight:600}
.banner .btn{background:var(--paper);color:var(--ink);border-color:transparent;min-height:30px;padding:0 12px;font-size:12.5px;margin-left:8px;vertical-align:middle}
.banner .btn.ghost{background:transparent;color:var(--night-text);border-color:var(--night-line)}
.banner.demo{
  background:var(--taupe-wash);color:var(--ink);border:1px solid rgba(131,114,92,.42);
  box-shadow:none;
}
/* fixed undo stays beside the sidebar and leaves the row actions clear */
body.has-undo-toast .main{padding-bottom:190px}
.undo-toast{
  position:fixed;z-index:30;left:260px;bottom:24px;
  width:min(430px,calc(100vw - 284px));margin:0;
  display:flex;flex-direction:column;gap:10px;padding:14px 16px 16px;
  box-shadow:var(--shadow-2);
  animation:undo-toast-in var(--slow) var(--ease) both;
}
@keyframes undo-toast-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
.undo-message{font-weight:600;line-height:1.35}
.undo-actions{display:flex;align-items:center;gap:6px}
.banner.undo-toast .btn{margin-left:0}
.note-input{
  width:100%;max-width:34em;min-height:36px;
  border:1px solid var(--night-line);border-radius:var(--r-btn);
  background:rgba(236,237,231,.07);color:var(--night-text);
  padding:0 12px;font-size:13.5px;
  transition:border-color var(--fast),background var(--fast);
}
.note-input::placeholder{color:var(--night-dim)}
.note-input:focus{border-color:rgba(236,237,231,.45);background:rgba(236,237,231,.13)}
.note-input.saved{border-color:var(--sage);background:rgba(94,122,99,.24)}
.banner.demo a{color:var(--ink);text-decoration-color:rgba(50,41,40,.4)}
.banner.demo::before{
  content:"";display:inline-block;width:7px;height:7px;border-radius:50%;
  background:var(--taupe);border:1px solid rgba(50,41,40,.35);margin-right:9px;transform:translateY(-1px);
}

/* ---- page head -------------------------------------------------------- */
.head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;margin-bottom:24px;flex-wrap:wrap}
.head h1{font-size:clamp(24px,3vw,34px);line-height:1.12}
.head h1 .count{color:var(--faint);font-weight:400}
.lede{color:var(--muted);max-width:44em;margin-top:8px;font-size:14.5px}

/* label tier: 600 · +.12em · caps */
.mono{
  font-size:10.5px;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);
}
.head .mono{color:var(--label);margin-bottom:10px}
.phone{
  font-size:14.5px;letter-spacing:.02em;color:var(--body);
  text-transform:none;font-weight:400;margin-top:2px;
}
/* caption tier: 300-adjacent, tracked out */
.facts{
  font-size:10.5px;font-weight:400;letter-spacing:.1em;
  text-transform:uppercase;color:var(--faint);margin-top:10px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
}

/* ---- cards & rows ------------------------------------------------------ */
.card{
  background:var(--card);border:1px solid var(--line-soft);border-radius:var(--r-card);
  box-shadow:var(--shadow-1);
  padding:20px;
}
.queue{margin-bottom:34px}
.queue-head{margin-bottom:12px}
.queue h2,.sect-h{font-size:15px;letter-spacing:.06em;display:flex;align-items:center;gap:10px}
.queue h2 .count,.sect-h .count{
  font-size:11px;font-weight:600;letter-spacing:.02em;color:var(--ink);
  background:var(--taupe-wash);border:1px solid rgba(131,114,92,.36);
  border-radius:999px;padding:1px 9px;
}
.sect-h{margin:30px 0 10px}
.queue .hint,.hint{font-size:13.5px;color:var(--muted);margin-top:4px;text-transform:none;letter-spacing:0;font-weight:400}

.row{
  border:1px solid var(--line-soft);border-radius:var(--r-row);background:var(--card);
  padding:16px 18px;margin-bottom:10px;
  box-shadow:var(--shadow-1);
  transition:box-shadow var(--slow) var(--ease),transform var(--slow) var(--ease),border-color var(--fast);
}
.row:hover{box-shadow:var(--shadow-2);transform:translateY(-1px);border-color:var(--line)}
.row-top{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:14px 20px;align-items:start}
.who{
  font-family:var(--disp);font-weight:600;font-size:17.5px;color:var(--ink);
  letter-spacing:.01em;line-height:1.3;
}
.chips{display:flex;flex-wrap:wrap;gap:5px;margin-top:8px;align-items:center}
.chips:empty{display:none}
.chip{
  display:inline-flex;align-items:center;
  font-size:10px;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;
  background:var(--taupe-soft);border:1px solid rgba(131,114,92,.32);border-radius:999px;
  padding:3px 9px;color:var(--label);white-space:nowrap;
}
.chip.urgent{border-color:rgba(149,83,15,.4);color:var(--amber-ink);background:var(--amber-wash)}
.chip.ok{border-color:rgba(72,96,76,.35);color:var(--sage-ink);background:var(--sage-wash)}
.chip.soft{border-color:var(--line-soft);color:var(--muted);background:transparent}
.note{font-size:13.5px;color:var(--body);margin-top:7px;max-width:56em}
.note:empty{display:none}
.note.bad{color:var(--amber-ink)}
.note.good{color:var(--sage-ink)}

/* actions */
.btns{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;align-items:center}
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:7px;
  min-height:36px;padding:0 14px;
  border:1px solid var(--line);border-radius:var(--r-btn);
  background:var(--card);cursor:pointer;font-weight:600;font-size:12.5px;
  color:var(--ink);text-decoration:none;white-space:nowrap;
  transition:background var(--fast),color var(--fast),border-color var(--fast),transform 90ms;
}
.btn:hover{background:var(--taupe-soft);border-color:rgba(50,41,40,.26)}
.btn:active{transform:translateY(1px) scale(.99)}
.btn.ink{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.btn.ink:hover{background:#463B38;border-color:#463B38}
.btn.ok{background:var(--card);color:var(--sage-ink);border-color:rgba(72,96,76,.42)}
.btn.ok:hover{background:var(--sage-wash);border-color:var(--sage)}
.btn.ghost{background:transparent;border-color:transparent;color:var(--muted)}
.btn.ghost:hover{background:rgba(50,41,40,.07);color:var(--ink);border-color:transparent}
.btn:disabled{opacity:.55;cursor:default}

/* joined outcome cluster: Called / No answer / Booked / Skip */
.btn-group{display:inline-flex;border-radius:var(--r-btn);box-shadow:0 1px 2px rgba(50,41,40,.04)}
.btn-group .btn{border-radius:0;margin-left:-1px;position:relative}
.btn-group .btn:hover,.btn-group .btn:focus-visible{z-index:1}
.btn-group .btn:first-child{border-radius:var(--r-btn) 0 0 var(--r-btn);margin-left:0}
.btn-group .btn:last-child{border-radius:0 var(--r-btn) var(--r-btn) 0}

/* follow-up: once it's on the list, the button says so and stops */
.fu-btn.on,.fu-btn.on:disabled{color:var(--sage-ink);opacity:1;cursor:default}
.btn.ghost.fu-btn.on:hover{background:transparent;color:var(--sage-ink)}

.expand{margin-top:14px;padding-top:14px;border-top:1px solid var(--line-soft);font-size:13.5px}
.expand strong{color:var(--ink)}
.expand pre{
  font-family:var(--text);white-space:pre-wrap;margin:8px 0;
  background:var(--taupe-soft);border-left:2px solid var(--taupe);
  border-radius:0 8px 8px 0;padding:8px 12px;font-size:13px;color:var(--body);
}
.expand ul{padding-left:1.2em}
.expand li{margin:3px 0;color:var(--muted)}

.empty{
  padding:34px 24px;color:var(--muted);text-align:center;
  border:1px dashed var(--line);border-radius:var(--r-row);
  font-size:14px;background:rgba(252,252,250,.5);
}
.card.empty{border-style:solid;background:var(--card)}

/* dark retry strip */
.strip{
  background:var(--night);color:var(--night-text);border-radius:var(--r-card);
  padding:20px;margin-bottom:30px;box-shadow:var(--shadow-2);
  background-image:radial-gradient(90% 90% at 100% 0%,rgba(131,114,92,.20),transparent 55%);
}
.strip h2{color:var(--night-text);font-size:15px;letter-spacing:.06em;margin-bottom:12px}
.strip .row{background:var(--night-raise);border-color:var(--night-line);box-shadow:none}
.strip .row:hover{transform:none;box-shadow:none;border-color:rgba(236,237,231,.32)}
.strip .who,.strip .phone,.strip .note{color:var(--night-text)}
.strip .facts{color:var(--night-dim)}
.strip .chip{background:rgba(236,237,231,.08);color:var(--night-dim);border-color:var(--night-line)}
.strip .chip.urgent{background:rgba(149,83,15,.28);color:var(--paper);border-color:rgba(244,227,203,.45)}
.strip .btn{background:transparent;color:var(--night-text);border-color:var(--night-line)}
.strip .btn:hover{background:rgba(236,237,231,.1);border-color:rgba(236,237,231,.35)}
.strip .btn.ink{background:var(--paper);color:var(--ink);border-color:var(--paper)}
.strip .btn.ink:hover{background:#fff;border-color:#fff}
.strip .btn.ok{color:#BCD3BE;border-color:rgba(188,211,190,.4)}
.strip .btn.ok:hover{background:rgba(94,122,99,.25)}
.strip .btn.ghost{border-color:transparent;color:var(--night-dim)}
.strip .btn.ghost:hover{background:rgba(236,237,231,.1);color:var(--night-text)}
.strip .expand{border-top-color:var(--night-line)}
.strip .expand pre{background:rgba(236,237,231,.07);color:var(--night-text);border-left-color:rgba(131,114,92,.70)}
.strip .empty{border-color:var(--night-line);color:var(--night-dim);background:transparent}

/* memo */
.memo{margin-bottom:26px;background:var(--taupe-soft);border-color:rgba(131,114,92,.32);padding:14px 18px 16px}
.memo .mono{color:var(--label)}
.memo textarea{
  width:100%;min-height:58px;border:none;border-radius:8px;
  background:transparent;padding:6px 0 0;resize:vertical;
  font-size:14px;line-height:1.55;color:var(--body);
}
.memo textarea:focus-visible{outline:none}

/* toolbar: search + filters */
.toolbar{display:flex;gap:10px;margin-bottom:16px;align-items:center}
.searchwrap{position:relative;flex:1}
.searchwrap svg{
  position:absolute;left:16px;top:50%;transform:translateY(-50%);
  width:15px;height:15px;color:var(--faint);pointer-events:none;
}
.search{
  width:100%;min-height:46px;border:1px solid var(--line);border-radius:12px;
  padding:0 16px 0 42px;background:var(--card);
  font-size:14px;box-shadow:var(--shadow-1);
  transition:border-color var(--fast),box-shadow var(--fast);
}
.search::placeholder{color:var(--faint)}
.search:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(50,41,40,.09)}

.filters{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 12px}
.filters .btn{min-height:32px;padding:0 12px;font-size:12px;border-color:var(--line-soft);background:rgba(252,252,250,.7)}
.filters .btn:hover{background:var(--taupe-soft)}
.filters button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.filters + .filters{margin-top:-4px}

/* ---- table (ICBC) ------------------------------------------------------ */
.table-card{padding:6px 14px;overflow:hidden}
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;min-width:940px}
thead th{
  font-size:10px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;
  color:var(--faint);text-align:left;padding:12px 10px 10px;
  border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--card);z-index:1;
}
td{
  padding:13px 10px;vertical-align:middle;
  border-bottom:1px solid var(--line-soft);
}
tbody tr{transition:background var(--fast)}
tbody tr:hover{background:var(--taupe-soft)}
tbody tr:last-child td{border-bottom:none}
td .who{font-size:15px}
td.phone{font-size:13px}
td.acts{white-space:nowrap;text-align:right}
td.acts .btn{min-height:30px;padding:0 9px;font-size:11.5px;gap:5px}
td.acts .btn + .btn{margin-left:2px}

select,.form-row select{
  appearance:none;-webkit-appearance:none;
  min-height:36px;padding:0 30px 0 12px;
  border:1px solid var(--line);border-radius:var(--r-btn);background:var(--card);
  font-size:13px;cursor:pointer;color:var(--ink);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%237C716C' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 11px center;
  transition:border-color var(--fast),background-color var(--fast);
}
select:hover{border-color:rgba(50,41,40,.3)}
select:focus{border-color:var(--ink)}
td input,[data-icbc-memo]{
  min-height:36px;width:100%;min-width:120px;
  border:1px solid transparent;border-radius:var(--r-btn);
  background:transparent;padding:0 10px;font-size:13px;
  transition:border-color var(--fast),background var(--fast);
}
td input:hover{border-color:var(--line-soft);background:var(--taupe-soft)}
td input:focus{border-color:var(--ink);background:var(--card)}
td input::placeholder{color:var(--faint)}

/* ---- call log ---------------------------------------------------------- */
.stat-card{margin-bottom:26px}
.stat-card .mono{color:var(--label)}
.stat-row{display:flex;flex-wrap:wrap;gap:30px;margin:14px 0 12px}
.stat{display:flex;flex-direction:column;gap:3px}
.stat b{
  font-family:var(--disp);font-size:30px;font-weight:800;
  color:var(--ink);line-height:1.05;letter-spacing:.01em;
}
.stat span{
  font-size:10.5px;font-weight:600;letter-spacing:.12em;
  text-transform:uppercase;color:var(--muted);
}
.log-day{margin-bottom:22px}
.log-row{
  display:grid;grid-template-columns:82px minmax(0,1fr);
  gap:14px;align-items:start;padding:13px 16px;
}
.log-row:hover{transform:none;box-shadow:var(--shadow-1);border-color:var(--line-soft)}
.log-time{
  font-size:11px;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--faint);padding-top:3px;
}
.log-row .who{font-size:15.5px}

/* ---- data page --------------------------------------------------------- */
.publish{margin:16px 0 6px;background:var(--taupe-soft);border-color:rgba(131,114,92,.32)}
.publish .mono{color:var(--label)}
.publish .btns.start{margin:12px 0 0}
.publish .note{margin-top:8px}
.drop{
  border:1.5px dashed rgba(131,114,92,.62);border-radius:var(--r-card);
  padding:40px 24px;background:rgba(252,252,250,.7);
  text-align:center;margin:14px 0 18px;color:var(--muted);font-size:14px;
  transition:background var(--fast),border-color var(--fast);
}
.drop:hover{background:var(--card)}
.drop.over{background:var(--taupe-wash);border-color:var(--taupe)}
.drop input[type=file]{margin-top:14px;font-size:13px;color:var(--muted)}

/* ---- tabs & forms ------------------------------------------------------ */
.tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:18px}
.tabs .btn{min-height:34px;font-size:12.5px;border-color:var(--line-soft);background:rgba(252,252,250,.7)}
.tabs button.on{background:var(--ink);color:var(--paper);border-color:var(--ink)}

.guide-block{margin-bottom:16px}
.guide-block h2{font-size:15px;letter-spacing:.06em;margin:0 0 10px}
.guide-block ul{padding-left:1.15em}
.guide-block li{margin:9px 0;max-width:62em}
.guide-block li b{color:var(--ink);font-weight:600}
.guide-block a{color:var(--ink);font-weight:600;text-decoration-color:rgba(131,114,92,.82)}
.script{
  font-size:19px;font-family:var(--disp);font-weight:600;
  color:var(--ink);line-height:1.45;margin:12px 0 4px;
  padding-left:14px;border-left:2px solid var(--taupe);
}

.list-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.form-row{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 4px}
.form-row input,.form-row select{flex:1 1 150px;min-width:0}
.form-row .btn{flex:0 0 auto}
.form-row input,.list-item input,.text-input{
  min-height:40px;border:1px solid var(--line);border-radius:var(--r-btn);
  padding:0 12px;background:var(--card);font-size:13.5px;
  transition:border-color var(--fast),box-shadow var(--fast);
}
.form-row input:focus,.text-input:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(50,41,40,.08)}
.form-row input::placeholder,.text-input::placeholder{color:var(--faint)}
.form-row .btn{min-height:40px}
label{font-size:13.5px}
input[type=checkbox]{accent-color:var(--ink);width:15px;height:15px}

.form-card{margin-bottom:30px}
.form-card .form-row{margin-top:12px}
.check-line{display:flex;gap:8px;align-items:center;margin-top:10px;color:var(--muted)}
.text-input.wide{margin-top:10px;width:100%}
.btns.start{justify-content:flex-start;margin:14px 0}

/* ---- responsive -------------------------------------------------------- */
@media(max-width:900px){
  .app{grid-template-columns:1fr}
  .side{position:relative;height:auto;flex-direction:row;flex-wrap:wrap;align-items:center;padding:12px 14px;gap:12px}
  .side .tag,.side-foot .foot-name{display:none}
  .side-foot{margin:0 0 0 auto;max-width:190px;text-align:right}
  .log-row{grid-template-columns:1fr;gap:4px}
  .nav{flex-direction:row;flex-wrap:wrap;gap:2px}
  .nav a{min-height:36px;padding:6px 10px;font-size:13px}
  .nav a svg{display:none}
  .main{padding:20px 16px 56px}
  .head h1{font-size:22px}
  .form-row input,.form-row select{flex-basis:100%}
  .form-row .btn{flex:1 1 auto}
  .row-top{grid-template-columns:1fr}
  .btns{justify-content:flex-start}
  .toolbar{flex-wrap:wrap}
  body.has-undo-toast .main{padding-bottom:220px}
  .undo-toast{left:12px;right:12px;bottom:max(12px,env(safe-area-inset-bottom));width:auto}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
  html{scroll-behavior:auto}
}

/* ---- print ------------------------------------------------------------- */
@media print{
  .side,.banner,.btns,.memo,#print-list,.form-row,.toolbar{display:none !important}
  .app{display:block}
  .main,body.has-undo-toast .main{padding:0}
  body,body::before,body::after{background:#fff;content:none}
  .row{box-shadow:none;break-inside:avoid}
}
