/* EM Fotografie · Stammkunden-App
   Layout: Handy zuerst – Kopf mit Logo, eine Ansicht zur Zeit, feste Leiste unten.
   Schriften: Systemschriften (keine Google Fonts → datenschutzfreundlich, schnell) */
:root{
  --bg:#f6f1e9; --surface:#fffdf9; --ink:#1c1a17; --muted:#6e655a;
  --tan:#b0875a; --tan-deep:#8a6640; --brown:#7a5442; --line:#e3d8c8; --chip:#efe4d4;
  --ok:#3f7a52; --warn:#a8642a; --err:#a33b2b;
  --display:"Iowan Old Style","Palatino Linotype",Palatino,"Book Antiqua",Georgia,serif;
  --body:-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;
  color-scheme:light;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#15130f; --surface:#1f1c17; --ink:#f1ebe2; --muted:#a99d8e;
  --tan:#d1a877; --tan-deep:#e2bf93; --brown:#d9b39a; --line:#36302a; --chip:#2b261f;
  --ok:#7fbf8f; --warn:#e0a46b; --err:#ef8f80; color-scheme:dark}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:15px/1.55 var(--body);
  padding:env(safe-area-inset-top,0px) max(16px,env(safe-area-inset-right,0px)) calc(96px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
img{max-width:100%}
[hidden]{display:none!important}
.wrap{max-width:560px;margin:0 auto}
header.top{padding-block:22px 16px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.logo{width:140px;aspect-ratio:720/410;max-width:100%;background:var(--ink);-webkit-mask:url(logo-mask.png) left center/contain no-repeat;mask:url(logo-mask.png) left center/contain no-repeat}
.brand small{display:block;margin-top:6px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--tan-deep);font-weight:700}
.acct{appearance:none;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:8px 14px;font:600 13px var(--body);cursor:pointer;display:flex;gap:6px;align-items:center;max-width:55%}
.acct span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
h2{font:600 27px/1.15 var(--display);margin:6px 0 4px;text-wrap:balance}
h3{font:600 20px/1.2 var(--display);margin:0;text-wrap:balance}
.lede{color:var(--muted);margin:0 0 18px}
.eyebrow{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--tan-deep);font-weight:700}
.stack{display:flex;flex-direction:column;gap:12px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px}
.dark{background:var(--ink);color:var(--bg);border:0;padding:20px}
.dark .eyebrow{color:var(--tan)} .dark .meta{color:color-mix(in srgb,var(--bg) 75%,transparent)}
.dark .btn{background:var(--tan);color:#1c1a17}
p{margin:6px 0 0}
.meta{font-size:13px;color:var(--muted)}
.btn{appearance:none;border:0;border-radius:999px;background:var(--ink);color:var(--bg);font:600 14px var(--body);padding:11px 18px;cursor:pointer;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:42px}
.btn.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
.btn.small{padding:7px 12px;font-size:13px;min-height:34px}
.btn.wide{width:100%}
.btn:disabled{opacity:.45;cursor:default}
.btn:focus-visible,.tab:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,a:focus-visible,button:focus-visible{outline:2px solid var(--tan);outline-offset:2px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:center}
.spread{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}
.spread>div{min-width:0}
.chip{display:inline-block;font-size:12px;font-weight:700;padding:3px 10px;border-radius:999px;background:var(--chip);color:var(--tan-deep);white-space:nowrap}
.chip.ok{color:var(--ok)} .chip.warn{color:var(--warn)} .chip.err{color:var(--err)}
label{display:block;font-size:13px;font-weight:600;margin-bottom:4px}
input,textarea,select{width:100%;font:16px var(--body);color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:10px 12px}
textarea{min-height:80px;resize:vertical}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media (max-width:420px){.grid2{grid-template-columns:1fr}}
.check{display:flex;gap:10px;align-items:flex-start;font-weight:500;background:var(--chip);border-radius:10px;padding:10px 12px}
.check input{width:auto;margin-top:4px;flex:none}
.note{font-size:13px;color:var(--muted);background:var(--chip);border-radius:10px;padding:10px 12px}
.err-box{font-size:14px;color:var(--err);background:color-mix(in srgb,var(--err) 10%,transparent);border-radius:10px;padding:10px 12px}
.empty{text-align:center;color:var(--muted);padding:26px 12px;border:1px dashed var(--line);border-radius:14px}
hr{border:0;border-top:1px solid var(--line);margin:18px 0}
/* Pakete */
.prow{display:flex;justify-content:space-between;gap:12px;padding:12px 0;border-bottom:1px solid var(--line);align-items:center}
.prow:last-child{border-bottom:0}
.prow>div{min-width:0}
.prow b{display:block;font:600 19px var(--display)}
.prow span{font-size:13px;color:var(--muted)}
.prow em{font:600 22px var(--display);font-style:normal;white-space:nowrap;font-variant-numeric:tabular-nums}
button.prow{appearance:none;width:100%;background:none;border:0;border-bottom:1px solid var(--line);color:inherit;text-align:left;cursor:pointer;font:inherit}
.cat:last-child button.prow:last-child{border-bottom:0}
/* Termine */
.day{display:grid;grid-template-columns:60px 1fr;gap:14px;align-items:start}
.date{border:1px solid var(--line);border-radius:12px;text-align:center;padding:8px 4px;background:var(--surface)}
.date b{display:block;font:600 28px/1 var(--display)}
.date span{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.times{display:flex;flex-wrap:wrap;gap:8px}
.time{border:1px solid var(--tan);color:var(--ink);background:transparent;border-radius:10px;padding:8px 12px;font:600 15px var(--body);font-variant-numeric:tabular-nums;cursor:pointer;min-width:68px}
/* Punkte */
.big{font:600 52px/1 var(--display);font-variant-numeric:tabular-nums;margin-top:8px}
.bar{height:8px;border-radius:99px;background:color-mix(in srgb,var(--bg) 22%,transparent);overflow:hidden;margin-top:14px}
.bar i{display:block;height:100%;background:var(--tan);border-radius:99px}
.rule{display:grid;grid-template-columns:78px 1fr;gap:12px;align-items:baseline;padding:6px 0}
.rule b{font:600 21px var(--display);color:var(--tan-deep);font-variant-numeric:tabular-nums}
.hist{display:flex;justify-content:space-between;gap:10px;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px}
.hist:last-child{border-bottom:0}
.hist>span:last-child{font-weight:700;font-variant-numeric:tabular-nums;white-space:nowrap}
.plus{color:var(--ok)} .minus{color:var(--warn)}
.code{font:700 17px ui-monospace,Menlo,monospace;letter-spacing:.06em;background:var(--chip);padding:6px 10px;border-radius:8px;word-break:break-all}
/* Weihnachten */
.xmas{padding:0;overflow:hidden}
.xmas img{display:block;width:100%;aspect-ratio:720/489;object-fit:cover}
.xmas .in{padding:16px}
.xprice{display:flex;gap:14px;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}
.xprice b{font:600 34px/1 var(--display);font-variant-numeric:tabular-nums}
.xprice span{font-size:13px;color:var(--muted)}
/* Betragsauswahl */
.amounts{display:grid;grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:8px}
.amounts button{appearance:none;border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:10px;padding:12px 6px;font:600 18px var(--display);cursor:pointer}
.amounts button[aria-pressed="true"]{border-color:var(--tan);background:var(--tan);color:#1c1a17}
/* Leiste unten */
nav.tabs{position:fixed;left:0;right:0;bottom:0;background:var(--surface);border-top:1px solid var(--line);z-index:5;
  padding:6px max(8px,env(safe-area-inset-right,0px)) calc(6px + env(safe-area-inset-bottom,0px)) max(8px,env(safe-area-inset-left,0px))}
nav.tabs .in{max-width:560px;margin:0 auto;display:flex;justify-content:space-around}
.tab{appearance:none;background:none;border:0;color:var(--muted);font:600 11px var(--body);display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 2px;cursor:pointer;flex:1;min-width:0}
.tab svg{width:22px;height:22px;stroke:currentColor;fill:none;stroke-width:1.6}
.tab[aria-current="page"]{color:var(--ink)}
.tab[aria-current="page"] svg{stroke:var(--tan-deep)}
/* Hinweis & Blatt */
.toast{position:fixed;left:50%;bottom:calc(84px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);background:var(--ink);color:var(--bg);padding:10px 16px;border-radius:12px;font-size:14px;max-width:calc(100% - 32px);z-index:30;box-shadow:0 6px 24px rgb(0 0 0/.18)}
.sheet{position:fixed;inset:0;background:rgb(0 0 0/.45);display:flex;align-items:flex-end;justify-content:center;z-index:20}
.sheet>.card{width:100%;max-width:560px;border-radius:18px 18px 0 0;padding:20px max(16px,env(safe-area-inset-right,0px)) calc(24px + env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px));max-height:92vh;overflow:auto}
.sheet .close{float:right;appearance:none;border:0;background:var(--chip);color:var(--ink);width:34px;height:34px;border-radius:50%;font-size:18px;cursor:pointer}
.brief h4{font:600 19px var(--display);margin:18px 0 4px}
.brief ul{margin:8px 0 0;padding-left:20px}
.brief li{margin:3px 0}
table.t{width:100%;border-collapse:collapse;font-size:14px}
table.t td,table.t th{text-align:left;padding:8px 6px;border-bottom:1px solid var(--line);vertical-align:top}
table.t th{font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.tablewrap{overflow-x:auto}
@media (prefers-reduced-motion:no-preference){.view{animation:in .22s ease}@keyframes in{from{opacity:.5;transform:translateY(4px)}to{opacity:1;transform:none}}}
