:root {
  --pulse-bg:#0a1120; --pulse-bg-elevated:#0f1a30; --pulse-surface:#131f38; --pulse-surface-alt:#182645;
  --pulse-border:#253458; --pulse-text:#eef1f8; --pulse-text-muted:#93a0c2;
  --pulse-accent:#3aa0ff; --pulse-accent-strong:#6cc0ff;
  --pulse-status-connected:#34d399; --pulse-status-warning:#f2b84b; --pulse-status-error:#ff6b6b;
  color-scheme: dark;
}
* { box-sizing: border-box; }
body { margin:0; background:var(--pulse-bg); color:var(--pulse-text); font:16px/1.4 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; }
main { max-width: 760px; margin: 0 auto; padding: 12px 16px 40px; }
a { color:var(--pulse-accent-strong); }
nav { display:flex; flex-wrap:wrap; gap:0 4px; padding:6px 12px; background:var(--pulse-bg-elevated); border-bottom:1px solid var(--pulse-border); position:sticky; top:0; z-index:5; }
nav a { padding:10px 12px; text-decoration:none; color:var(--pulse-accent-strong); border-radius:8px; min-height:44px; }
nav a.right { margin-left:auto; color:var(--pulse-text-muted); }
h1 { font-size:1.4rem; margin:14px 0; } h2 { font-size:1.15rem; margin-top:24px; }
h3 { font-size:1rem; margin:14px 0 4px; color:var(--pulse-text-muted); }
.card { background:var(--pulse-surface); border:1px solid var(--pulse-border); border-radius:14px; padding:14px; margin:12px 0; }
.big { text-align:center; } .num { font-size:2.8rem; font-weight:700; } .num small { font-size:1rem; font-weight:400; color:var(--pulse-text-muted); }
.muted { color:var(--pulse-text-muted); } .err { color:var(--pulse-status-error); }
.flash { background:var(--pulse-surface-alt); border:1px solid var(--pulse-accent); padding:10px 14px; border-radius:10px; }
.row { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.row b { width:70px; }
input, select, button { font:inherit; min-height:44px; padding:10px 12px; border:1px solid var(--pulse-border); border-radius:10px; background:var(--pulse-bg-elevated); color:var(--pulse-text); }
input:focus, select:focus { outline:2px solid var(--pulse-accent); outline-offset:0; }
.row input:not([type=checkbox]), .row select { flex:1 1 120px; min-width:0; }
button { background:var(--pulse-accent); color:#fff; border:0; cursor:pointer; font-weight:600; padding:10px 18px; }
button:hover { background:var(--pulse-accent-strong); }
button.del { background:transparent; color:var(--pulse-status-error); border:1px solid var(--pulse-border); min-height:36px; padding:4px 10px; font-weight:400; }
.chk { display:flex; align-items:center; gap:6px; min-height:44px; } .chk input { min-height:0; width:20px; height:20px; padding:0; accent-color:var(--pulse-accent); }
textarea { font:inherit; width:100%; padding:10px 12px; border:1px solid var(--pulse-border); border-radius:10px; background:var(--pulse-bg-elevated); color:var(--pulse-text); }
label { display:block; margin:8px 0; }
input[type=number] { width:96px; flex:0 0 96px; }
input[type=search] { flex:1 1 200px; }
button { cursor:pointer; }
button.wide { width:100%; margin-top:12px; min-height:52px; font-size:1.05rem; }
button:disabled { opacity:.6; cursor:default; }
button.del { background:transparent; color:var(--pulse-status-error); border:1px solid var(--pulse-border); min-height:44px; font-weight:400; }
form.inline { margin:18px 0; }
.fine { font-size:.8rem; }
.filein { position:absolute; width:1px; height:1px; opacity:0; overflow:hidden; }
.photobtn, .sidebtn, .morebtn { display:block; text-align:center; border-radius:14px; cursor:pointer; margin:0; }
.photobtn { background:var(--pulse-accent); color:#fff; font-weight:700; font-size:1.25rem; padding:34px 12px; }
.sidebtn, .morebtn { border:1px dashed var(--pulse-border); color:var(--pulse-accent-strong); padding:14px 12px; }
.fname { margin:6px 0 10px; min-height:1.2em; text-align:center; }
.photos { display:flex; gap:8px; flex-wrap:wrap; margin:8px 0; }
.photos img { display:block; max-width:100%; max-height:300px; border-radius:12px; border:1px solid var(--pulse-border); }
.comps { list-style:none; margin:12px 0; padding:0; background:var(--pulse-surface); border:1px solid var(--pulse-border); border-radius:14px; }
.comp { padding:12px 14px; border-bottom:1px solid var(--pulse-border); }
.comp:last-child { border-bottom:0; }
.comp.gone { opacity:.4; }
.cname { flex:2 1 160px; }
.nut { font-size:.88rem; margin-top:4px; }
.totals { line-height:1.8; }
.stats { display:flex; flex-wrap:wrap; gap:10px 18px; }
.stats div { display:flex; flex-direction:column; min-width:70px; }
.stats b { font-size:1.4rem; }
.lbl { font-size:.72rem; text-transform:uppercase; color:var(--pulse-text-muted); }
.rchart { width:100%; height:auto; margin-top:8px; }
.rchart text { fill:var(--pulse-text-muted); font-size:10px; }
.rchart .grid { stroke:var(--pulse-border); stroke-width:1; }
.rchart .mealline { stroke:var(--pulse-status-warning); stroke-width:1.5; stroke-dasharray:4 3; }
.rchart .gline { stroke:var(--pulse-accent); stroke-width:2; }
.rchart .gdot { fill:var(--pulse-accent); }
.rchart .gpeak { fill:var(--pulse-status-error); }
.rchart .mk-meal line { stroke:var(--pulse-status-connected); stroke-width:1.5; }
.rchart .mk-meal text { fill:var(--pulse-status-connected); }
.rchart .mk-insulin line { stroke:#c58bff; stroke-width:1.5; }
.rchart .mk-insulin text { fill:#c58bff; }
details.edit summary { cursor:pointer; min-height:44px; display:flex; align-items:center; color:var(--pulse-accent-strong); }
details.edit label { display:block; margin:10px 0; }
.hist { list-style:none; margin:12px 0; padding:0; }
.hist li a { display:flex; gap:12px; align-items:center; padding:10px; margin-bottom:8px; background:var(--pulse-surface); border:1px solid var(--pulse-border); border-radius:14px; text-decoration:none; color:var(--pulse-text); }
.hthumbs { display:flex; flex-wrap:wrap; gap:2px; width:64px; height:64px; flex:0 0 64px; border-radius:10px; overflow:hidden; }
.hist .hthumbs img { flex:1 1 calc(50% - 1px); width:calc(50% - 1px); height:calc(50% - 1px); }
.hist .hthumbs.n1 img { flex-basis:100%; width:100%; height:100%; }
.hist img { width:64px; height:64px; object-fit:cover; border-radius:10px; flex:0 0 64px; background:var(--pulse-bg-elevated); }
.hb { display:flex; flex-direction:column; min-width:0; overflow-wrap:anywhere; }
.row input[type=number] { flex:0 0 96px; }
.comp .row b { width:auto; flex:1 1 140px; }

.slot { position:relative; margin:8px 0 0; }
.slot .thumb { display:block; width:100%; max-height:260px; object-fit:cover; border-radius:14px; border:1px solid var(--pulse-border); }
.slot .rm { position:absolute; top:8px; right:8px; width:44px; height:44px; border-radius:50%; border:0; background:rgba(0,0,0,.65); color:#fff; font-size:1.5rem; line-height:1; cursor:pointer; padding:0; }
[hidden] { display:none !important; }

.tag { font-size:.72rem; padding:2px 8px; border-radius:999px; background:var(--pulse-surface-alt); color:var(--pulse-status-connected); border:1px solid var(--pulse-border); vertical-align:middle; }
.tag.warn { color:var(--pulse-status-warning); }
