
:root{
  --paper:#EDEFEC; --card:#FFFFFF; --sunk:#E4E8E4; --ink:#16222A; --body:#2C3A42;
  --muted:#61727A; --line:#D5DBD6; --accent:#0F5C60; --accent-ink:#0F5C60;
  --accent-soft:#DBE8E5; --alert:#9C3626; --alert-soft:#F3E1DD; --road:#3B5162;
  --road-soft:#DEE5EA; --food:#7A5218; --food-soft:#F0E6D4;
  --rain:#1F5C86; --rain-soft:#D9E7F1;
  --shadow:0 1px 2px rgba(22,34,42,.05), 0 8px 24px -16px rgba(22,34,42,.28);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#0F161B; --card:#18222A; --sunk:#141D24; --ink:#EEF2F0; --body:#C2CDD2;
    --muted:#8A9AA1; --line:#26333B; --accent:#5FC5C0; --accent-ink:#7FD4CF;
    --accent-soft:#12383A; --alert:#E38B7C; --alert-soft:#38201B; --road:#93B2C6;
    --road-soft:#1A2831; --food:#D9B77A; --food-soft:#2E2618;
  --rain:#7FC0EA; --rain-soft:#122735;
    --rain:#7FC0EA; --rain-soft:#122735;
    --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px -18px rgba(0,0,0,.8);
  }
}
:root[data-theme="dark"]{
  --paper:#0F161B; --card:#18222A; --sunk:#141D24; --ink:#EEF2F0; --body:#C2CDD2;
  --muted:#8A9AA1; --line:#26333B; --accent:#5FC5C0; --accent-ink:#7FD4CF;
  --accent-soft:#12383A; --alert:#E38B7C; --alert-soft:#38201B; --road:#93B2C6;
  --road-soft:#1A2831; --food:#D9B77A; --food-soft:#2E2618;
  --shadow:0 1px 2px rgba(0,0,0,.4), 0 10px 28px -18px rgba(0,0,0,.8);
}

*{box-sizing:border-box;margin:0;padding:0}
html{overflow-x:hidden}
body{overflow-x:hidden;max-width:100%;
  background:var(--paper); color:var(--body);
  font-family:"Source Serif 4",Georgia,serif; font-size:16.5px; line-height:1.55;
  -webkit-font-smoothing:antialiased; -webkit-text-size-adjust:100%;
  padding-bottom:40px;
}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:none}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}
.mono{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-variant-numeric:tabular-nums}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* ---------- chrome ---------- */
#top{
  position:sticky;top:0;z-index:50;background:var(--card);
  box-shadow:0 6px 14px -12px rgba(0,0,0,.5);
}
#bar{background:var(--card);border-bottom:1px solid var(--line)}
.barrow{
  max-width:760px;margin:0 auto;padding:10px 12px;
  display:flex;align-items:center;gap:8px;min-width:0;
}
.brand{
  font-family:Archivo,sans-serif;font-variation-settings:"wdth" 118,"wght" 700;
  text-transform:uppercase;letter-spacing:.09em;font-size:13px;color:var(--ink);
  flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.tabs{flex:0 0 auto}
@media (max-width:430px){ .brand{display:none} }
.tabs{display:flex;gap:2px;background:var(--sunk);border-radius:999px;padding:3px}
.tabs button{
  font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted);
  padding:8px 13px;border-radius:999px;touch-action:manipulation;
}
.tabs button[aria-selected="true"]{background:var(--card);color:var(--ink);box-shadow:var(--shadow)}
.lock{
  flex:0 0 auto;font-size:15px;line-height:1;
  border:1px solid var(--line);border-radius:999px;
  padding:7px 10px;color:var(--muted);
  touch-action:manipulation;
}
.lock.on{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft)}
.pend{
  flex:0 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-family:"IBM Plex Mono",monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.04em;color:var(--alert);background:var(--alert-soft);
  border:1px solid var(--alert);border-radius:999px;padding:6px 10px;
  touch-action:manipulation;
}

#dayscroll{
  overflow-x:auto;background:var(--card);border-bottom:1px solid var(--line);
  scrollbar-width:none;overscroll-behavior-x:contain;
}
#dayscroll::-webkit-scrollbar{display:none}
.daystrip{display:flex;gap:6px;padding:9px 14px;max-width:760px;margin:0 auto;min-width:max-content}
.chip{
  font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600;
  border:1px solid var(--line);border-radius:3px;padding:9px 12px;color:var(--muted);
  text-align:center;line-height:1.3;white-space:nowrap;
  touch-action:manipulation;
}
.chip b{display:block;font-size:13px;color:var(--ink)}
.chip[aria-current="true"]{background:var(--accent);border-color:var(--accent)}
.chip[aria-current="true"], .chip[aria-current="true"] b{color:var(--card)}

main{max-width:760px;margin:0 auto;padding:18px 14px 0}

/* ---------- day ---------- */
.dayhead{display:flex;flex-wrap:wrap;align-items:baseline;gap:5px 12px;margin-bottom:6px}
.dayhead h1{
  font-family:Archivo,sans-serif;font-variation-settings:"wdth" 112,"wght" 800;
  font-size:clamp(24px,6vw,34px);line-height:1.05;letter-spacing:-.01em;color:var(--ink);
  text-wrap:balance;
}
.daymeta{
  font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--muted);
  letter-spacing:.04em;margin-bottom:14px;
}
.intro{margin-bottom:18px;max-width:62ch;color:var(--body)}

.blocks{display:flex;flex-direction:column;gap:8px}
.blk{
  background:var(--card);border:1px solid var(--line);border-left:3px solid var(--accent);
  border-radius:3px;padding:12px 14px;box-shadow:var(--shadow);
}
.blk.k-drive{border-left-color:var(--road);background:var(--road-soft)}
.blk.k-food{border-left-color:var(--food)}
.blk.k-warn{border-left-color:var(--alert);background:var(--alert-soft)}
.blk.k-alt{border-left-color:var(--road);background:var(--sunk)}
.blk.k-note{border-left-color:var(--line);background:var(--sunk)}
.blk.k-stay{border-left-color:var(--accent);background:var(--accent-soft)}
.blk.k-rain{border-left-color:var(--rain);background:var(--rain-soft)}

.blktop{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.t{
  font-family:"IBM Plex Mono",monospace;font-size:12.5px;font-weight:600;
  color:var(--accent-ink);white-space:nowrap;flex:none;min-width:44px;
}
.blk.k-drive .t{color:var(--road)}
.blk.k-warn .t{color:var(--alert)}
.blk.k-note .t,.blk.k-alt .t{color:var(--muted)}
.blk.k-rain .t{color:var(--rain)}
.h{
  font-family:Archivo,sans-serif;font-variation-settings:"wdth" 105,"wght" 700;
  font-size:16px;color:var(--ink);flex:1 1 60%;text-wrap:balance;
}
.blk p{margin-top:5px;font-size:15.5px;white-space:pre-wrap}
.acts{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.act{
  display:inline-flex;align-items:center;gap:5px;text-decoration:none;
  font-family:"IBM Plex Mono",monospace;font-size:11px;font-weight:600;letter-spacing:.05em;
  border:1px solid var(--line);border-radius:999px;padding:6px 11px;
  color:var(--accent-ink);background:var(--card);
}
.act:active{background:var(--accent-soft)}
.act.ed{color:var(--muted)}
.act.del{color:var(--alert)}

.bigbtn{
  width:100%;background:var(--accent);color:var(--card);border-radius:3px;padding:16px;
  font-family:"IBM Plex Mono",monospace;font-size:14px;font-weight:600;letter-spacing:.06em;
  box-shadow:var(--shadow);margin-bottom:16px;
}
.bigbtn:active{opacity:.85}
.bigbtn[disabled]{opacity:.6}
.bigbtn.ok{background:var(--rain)}
.logrow.frisch{outline:2px solid var(--rain);outline-offset:1px}
.logday{
  font-family:"IBM Plex Mono",monospace;font-size:10.5px;font-weight:600;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);margin:18px 0 8px;
  padding-bottom:5px;border-bottom:1px solid var(--line);
}
.logrow{
  background:var(--card);border:1px solid var(--line);border-left:3px solid var(--rain);
  border-radius:3px;padding:11px 13px;margin-bottom:7px;box-shadow:var(--shadow);
}
.logrow .zeit{
  font-family:"IBM Plex Mono",monospace;font-size:12.5px;font-weight:600;color:var(--rain);
}
.logrow .was{font-size:15.5px;color:var(--ink);margin-top:2px}
.logrow .koord{font-family:"IBM Plex Mono",monospace;font-size:11px;color:var(--muted);margin-top:3px}
.tech{background:var(--sunk);border:1px solid var(--line);border-radius:3px;padding:4px 13px}
.techrow{
  display:flex;justify-content:space-between;gap:12px;padding:7px 0;
  border-bottom:1px solid var(--line);font-family:"IBM Plex Mono",monospace;font-size:11.5px;
  color:var(--muted);
}
.techrow:last-child{border-bottom:none}
.techrow b{color:var(--ink);font-weight:600;text-align:right;word-break:break-word}

.addrow{margin-top:12px}
.addbtn{
  width:100%;border:1px dashed var(--line);border-radius:3px;padding:12px;
  font-family:"IBM Plex Mono",monospace;font-size:12px;font-weight:600;
  letter-spacing:.08em;text-transform:uppercase;color:var(--muted);
}

/* ---------- hotels ---------- */
.hcard{
  background:var(--card);border:1px solid var(--line);border-radius:3px;
  padding:16px 16px;box-shadow:var(--shadow);margin-bottom:10px;
}
.hcard h2{
  font-family:Archivo,sans-serif;font-variation-settings:"wdth" 110,"wght" 700;
  font-size:17px;color:var(--ink);
}
.hcard .sub{font-family:"IBM Plex Mono",monospace;font-size:11.5px;color:var(--muted);margin-bottom:12px}
.hcard dl{display:grid;grid-template-columns:1fr;gap:2px}
.hcard dt{
  font-family:"IBM Plex Mono",monospace;font-size:9.5px;font-weight:600;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);margin-top:11px;
}
.hcard dd{font-size:15.5px;white-space:pre-wrap}

/* ---------- kasse ---------- */
.money{background:var(--card);border:1px solid var(--line);border-radius:3px;
  padding:16px;box-shadow:var(--shadow);margin-bottom:12px}
.bignum{font-family:"IBM Plex Mono",monospace;font-size:30px;font-weight:600;
  color:var(--ink);font-variant-numeric:tabular-nums;line-height:1.15}
.sublbl{font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted)}
.meter{height:8px;background:var(--sunk);border-radius:99px;overflow:hidden;margin:12px 0 6px}
.meter i{display:block;height:100%;background:var(--accent);border-radius:99px}
.meter i.over{background:var(--alert)}
.exprow{display:flex;align-items:baseline;gap:10px;padding:9px 0;border-bottom:1px solid var(--line)}
.exprow:last-child{border-bottom:none}
.exprow .lbl{flex:1}
.exprow .amt{font-family:"IBM Plex Mono",monospace;font-weight:600;color:var(--ink);
  font-variant-numeric:tabular-nums}
.expform{display:flex;gap:8px;margin-top:12px}
.expform input{
  border:1px solid var(--line);border-radius:3px;background:var(--paper);
  padding:10px 11px;font-size:16px;min-width:0;
}
.expform input[type="text"]{flex:1}
.expform input[type="number"]{width:88px;font-family:"IBM Plex Mono",monospace;text-align:right}
.expform button{
  background:var(--accent);color:var(--card);border-radius:3px;padding:10px 15px;
  font-family:"IBM Plex Mono",monospace;font-size:12px;font-weight:600;letter-spacing:.06em;
}
.daysum{display:flex;justify-content:space-between;gap:10px;padding:10px 0;
  border-bottom:1px solid var(--line);align-items:baseline}
.daysum:last-child{border-bottom:none}
.daysum .d{font-family:"IBM Plex Mono",monospace;font-size:12px;color:var(--muted)}
.daysum .n{font-family:"IBM Plex Mono",monospace;font-weight:600;font-variant-numeric:tabular-nums}
.daysum .n.over{color:var(--alert)}

/* ---------- sheet ---------- */
#veil{position:fixed;inset:0;background:rgba(10,16,20,.55);z-index:80;display:none}
#veil.open{display:block}
#sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:90;background:var(--card);
  border-top:1px solid var(--line);border-radius:14px 14px 0 0;
  max-height:88vh;overflow-y:auto;padding:16px 16px 28px;display:none;
  box-shadow:0 -10px 40px -18px rgba(0,0,0,.5);
}
#sheet.open{display:block}
#sheet .inner{max-width:640px;margin:0 auto}
#sheet h2{
  font-family:Archivo,sans-serif;font-variation-settings:"wdth" 110,"wght" 700;
  font-size:17px;color:var(--ink);margin-bottom:14px;
}
.f{display:flex;flex-direction:column;gap:4px;margin-bottom:12px}
.f label{
  font-family:"IBM Plex Mono",monospace;font-size:9.5px;font-weight:600;letter-spacing:.13em;
  text-transform:uppercase;color:var(--muted);
}
.f input,.f textarea,.f select{
  border:1px solid var(--line);border-radius:3px;background:var(--paper);
  padding:10px 11px;font-size:16px;width:100%;
}
.f textarea{min-height:110px;resize:vertical;line-height:1.5}
.f .hint{font-size:13px;color:var(--muted)}
.btns{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}
.btns button{
  border-radius:3px;padding:12px 16px;font-family:"IBM Plex Mono",monospace;
  font-size:12.5px;font-weight:600;letter-spacing:.06em;
}
.primary{background:var(--accent);color:var(--card);flex:1}
.ghost{border:1px solid var(--line);color:var(--body)}
.danger{border:1px solid var(--alert);color:var(--alert);margin-left:auto}

/* ---------- toast ---------- */
#toast{
  position:fixed;left:50%;transform:translateX(-50%);bottom:20px;z-index:100;
  background:var(--ink);color:var(--paper);border-radius:999px;padding:10px 18px;
  font-family:"IBM Plex Mono",monospace;font-size:12px;font-weight:600;
  opacity:0;pointer-events:none;transition:opacity .18s;max-width:90vw;text-align:center;
}
#toast.show{opacity:1}
#toast.bad{background:var(--alert);color:#fff}
@media (prefers-reduced-motion:reduce){#toast{transition:none}}

.readonly{
  background:var(--sunk);border:1px solid var(--line);border-radius:3px;
  padding:11px 14px;font-size:14.5px;color:var(--muted);margin-bottom:16px;
}

/* ---------- PWA-Ergaenzungen ---------- */
.sync{
  font-family:"IBM Plex Mono",monospace;font-size:10px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--muted);white-space:nowrap;
}
.sync.bad{color:var(--alert)}
body{padding-bottom:max(40px, env(safe-area-inset-bottom))}
#top{padding-top:env(safe-area-inset-top)}
