:root{
  /* Apple Modern palette: Light Gray / Deep Gray / Neutral Gray / Apple Blue */
  --bg:#F5F5F7; --card:#fff; --ink:#1D1D1F; --muted:#6E6E73; --line:#d2d2d7; --neutral:#AAAAAA;
  --brand:#007AFF; --btn:#0071E3; --brand-ink:#fff; --link:#0066CC; --accent:#007AFF; --ok:#1d7a3a; --warn:#8a5a00; --bad:#d70015;
  --warn-bg:#fff4d6; --ok-bg:#e3f3e8; --bad-bg:#fde8e6;
  --radius:14px; --radius-sm:10px; --shadow:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.06);
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Inter","Segoe UI",Roboto,system-ui,sans-serif;
}
@media (prefers-color-scheme:dark){
  :root{--bg:#1D1D1F; --card:#2a2a2d; --ink:#F5F5F7; --muted:#AAAAAA; --line:#3d3d41;
    --brand:#0A84FF; --btn:#0071E3; --brand-ink:#fff; --link:#5eb0ff; --accent:#0A84FF; --ok:#7fd1a0; --warn:#f2c25b; --bad:#ff8f86;
    --warn-bg:#3a2f12; --ok-bg:#15352a; --bad-bg:#3b1b19; --shadow:0 8px 24px rgba(0,0,0,.35);}
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.5 var(--font);-webkit-font-smoothing:antialiased}
.boot{padding:2rem;color:var(--muted)}
.top{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 16px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--card) 80%,transparent);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);position:sticky;top:0;z-index:5}
.brand{font:700 1.05rem var(--font);color:var(--ink);text-decoration:none;letter-spacing:-.01em}
nav{display:flex;gap:1rem;align-items:center}
nav a,.link{color:var(--link);background:none;border:0;padding:0;font:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
main{max-width:760px;margin:0 auto;padding:20px 16px 64px}
h1{font:700 1.9rem/1.15 var(--font);letter-spacing:-.02em;margin:.4rem 0 1rem}
h2{font-size:1rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:2rem 0 .7rem}
.lede{color:var(--muted);margin-top:-.4rem}
.form{display:grid;gap:1rem}
.form.narrow{max-width:380px}
.field label{display:block;font-weight:600;margin-bottom:.25rem}
.field.check label{font-weight:500;display:flex;gap:.5rem;align-items:flex-start}
.field.check input{margin-top:.3rem;width:1.1rem;height:1.1rem}
.req{color:var(--brand)}
input,select,textarea{width:100%;font:inherit;color:var(--ink);background:var(--card);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.6rem .8rem;min-height:44px}
input[type=checkbox]{width:auto;min-height:0}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible{outline:3px solid color-mix(in srgb,var(--brand) 45%,transparent);outline-offset:1px}
[aria-invalid=true]{border-color:var(--bad)}
.hint{font-size:.85rem;color:var(--muted);margin-top:.2rem}
.count{text-align:right}
.err{color:var(--bad);font-size:.9rem;min-height:0}
.err:empty{display:none}
.actions{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:1.4rem;align-items:center}

button,.btn{font:inherit;border-radius:999px;padding:.65rem 1.1rem;min-height:44px;cursor:pointer;border:1px solid var(--line);background:var(--card);color:var(--ink);text-decoration:none;display:inline-flex;align-items:center}
button.primary,.btn.primary{background:var(--btn);color:var(--brand-ink);border-color:var(--btn);font-weight:600}
button.secondary{border-color:var(--brand);color:var(--link)}
button:disabled{opacity:.6;cursor:wait}
button.link{min-height:0;border:0;background:none;padding:0;display:inline}
.danger{color:var(--bad)}
.flash{padding:.75rem 1rem;border-radius:var(--radius-sm);margin:0 0 1rem;border:1px solid transparent}
.flash.ok{background:var(--ok-bg);color:var(--ok)}
.flash.warn{background:var(--warn-bg);color:var(--warn)}
.flash.error{background:var(--bad-bg);color:var(--bad)}
.flash a{color:inherit;font-weight:600}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:.8rem}
.tile{display:flex;flex-direction:column;gap:.2rem;padding:1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);color:var(--ink);text-decoration:none;min-height:88px;box-shadow:var(--shadow);transition:border-color .15s,transform .15s}
a.tile:hover{border-color:var(--brand);transform:translateY(-1px)}
.tile span{color:var(--muted);font-size:.88rem}
.tile.soon{opacity:.55}
.tile.ghost{background:transparent}
.rows{list-style:none;margin:0;padding:0;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);box-shadow:var(--shadow)}
.row{padding:.85rem 1rem;border-bottom:1px solid var(--line);display:grid;gap:.4rem}
.row:last-child{border-bottom:0}
.row-actions{display:flex;gap:1.2rem;font-size:.92rem}
.row-actions a{color:var(--link)}
.tag{margin-left:.5rem;font-size:.75rem;padding:.1rem .45rem;border-radius:999px;background:var(--warn-bg);color:var(--warn);white-space:nowrap}
.empty{color:var(--muted)}
@media (min-width:640px){.row{grid-template-columns:1fr auto;align-items:start}}
.toolbar{margin:0 0 1rem}
[hidden]{display:none!important}
.multi{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--card);padding:.4rem .6rem;max-height:260px;overflow:auto;display:grid;gap:.1rem}
.multi-item{display:flex;gap:.5rem;align-items:center;padding:.35rem 0;min-height:36px;font-weight:400}
.multi-item input{width:1.1rem;height:1.1rem;min-height:0}
.multi-filter{margin-bottom:.4rem;position:sticky;top:0}
.count.over{color:var(--bad);font-weight:600}
.tile .n{margin-top:auto;padding-top:.4rem;font-size:.8rem;font-weight:600;color:var(--link)}
input[type=search]{margin-bottom:.7rem}
.filters{border:1px solid var(--line);border-radius:var(--radius);background:var(--card);padding:.2rem .9rem .8rem;margin-bottom:.8rem}
.filters summary{cursor:pointer;padding:.6rem 0;font-weight:600;color:var(--link)}
.fl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.7rem;margin-bottom:.6rem}
.fl-dates{display:contents}
.fl{display:grid;gap:.2rem;font-size:.85rem;color:var(--muted)}
.fl select,.fl input{font-size:1rem}
.status{color:var(--muted);font-size:.9rem;margin:.2rem 0 .6rem}
.sub{color:var(--muted);font-size:.85rem}
.tag.ok{background:var(--ok-bg);color:var(--ok)}
.tag.muted{background:transparent;border:1px solid var(--line);color:var(--muted)}
.row-main .tag{margin-left:0;display:inline-block;margin-top:.3rem}
.preview{color:var(--muted);font-size:.9rem}
.editor-box{display:grid;gap:.3rem}
/* Quill, matched to the app's light and dark themes (selectors are doubled up so they beat Quill's own stylesheet, which loads later) */
.editor-box .ql-toolbar.ql-snow{border:1px solid var(--line);border-radius:var(--radius-sm) var(--radius-sm) 0 0;background:var(--card);position:sticky;top:49px;z-index:4}
.editor-box .ql-container.ql-snow{border:1px solid var(--line);border-top:0;border-radius:0 0 var(--radius-sm) var(--radius-sm);background:var(--card);font-family:inherit}
.editor-box .ql-editor{min-height:360px;font-size:1rem;line-height:1.55;color:var(--ink)}
.editor-box .ql-editor.ql-blank::before{color:var(--muted);font-style:normal}
.editor-box .ql-toolbar.ql-snow .ql-stroke{stroke:var(--ink)}
.editor-box .ql-toolbar.ql-snow .ql-fill,.editor-box .ql-toolbar.ql-snow .ql-stroke.ql-fill{fill:var(--ink)}
.editor-box .ql-toolbar.ql-snow .ql-picker,.editor-box .ql-toolbar.ql-snow .ql-picker-label{color:var(--ink)}
.editor-box .ql-toolbar.ql-snow .ql-picker-options{background:var(--card);border-color:var(--line)}
.editor-box .ql-toolbar.ql-snow button:hover .ql-stroke,.editor-box .ql-toolbar.ql-snow button.ql-active .ql-stroke,
.editor-box .ql-toolbar.ql-snow .ql-picker-label:hover .ql-stroke,.editor-box .ql-toolbar.ql-snow .ql-picker-item:hover .ql-stroke{stroke:var(--brand)}
.editor-box .ql-toolbar.ql-snow button.ql-active .ql-fill,.editor-box .ql-toolbar.ql-snow button:hover .ql-fill{fill:var(--brand)}
.editor-box .ql-toolbar.ql-snow .ql-picker-label.ql-active,.editor-box .ql-toolbar.ql-snow .ql-picker-item:hover{color:var(--brand)}
.ql-snow .ql-tooltip{background:var(--card);color:var(--ink);border-color:var(--line);box-shadow:none;z-index:6}
.ql-snow .ql-tooltip input[type=text]{min-height:0;width:auto}
.ql-snow .ql-tooltip a.ql-action::after,.ql-snow .ql-tooltip a.ql-remove::before{color:var(--link)}
.editor-box .ql-toolbar button{min-height:0;display:inline-block;padding:3px 5px}
