/* Grundgerüst (ersetzt den Plattform-Reset) */
:root{color-scheme:light dark; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px)}
body{margin:0}
img{max-width:100%}
[hidden]{display:none!important}
  :root{
    --ground:#f3f5f8;
    --surface:#ffffff;
    --surface-2:#eceff4;
    --line:#d7dde5;
    --line-soft:#e6eaf0;
    --ink:#1a2430;
    --ink-soft:#3c4c5e;
    --muted:#74838f;
    --accent:#42658c;
    --accent-ink:#ffffff;
    --accent-soft:#e3eaf3;
    --danger:#8f4a44;
    --r-sm:8px; --r-md:12px; --r-lg:18px;
    --display:"Newsreader",Georgia,"Times New Roman",serif;
    --body:"Archivo",-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --ground:#111821;
      --surface:#182130;
      --surface-2:#1e2836;
      --line:#2c3848;
      --line-soft:#232e3c;
      --ink:#e8edf4;
      --ink-soft:#c3cedb;
      --muted:#8e9daf;
      --accent:#8fb2d8;
      --accent-ink:#0e1620;
      --accent-soft:#22303f;
      --danger:#d79a93;
    }
  }
  :root[data-theme="dark"]{
    --ground:#111821;
    --surface:#182130;
    --surface-2:#1e2836;
    --line:#2c3848;
    --line-soft:#232e3c;
    --ink:#e8edf4;
    --ink-soft:#c3cedb;
    --muted:#8e9daf;
    --accent:#8fb2d8;
    --accent-ink:#0e1620;
    --accent-soft:#22303f;
    --danger:#d79a93;
  }

  html,body{height:100%}
  body{
    margin:0; background:var(--ground); color:var(--ink);
    font-family:var(--body); font-size:15px; line-height:1.6;
    font-variant-numeric:tabular-nums;
    -webkit-font-smoothing:antialiased;
  }
  *{box-sizing:border-box}
  button,input,select,textarea{font:inherit;color:inherit}
  :focus-visible{outline:2px solid var(--accent); outline-offset:3px; border-radius:4px}
  h1,h2,h3{margin:0; font-family:var(--display); font-weight:400; text-wrap:balance; letter-spacing:-.005em}
  p{margin:0}
  .label{font-size:11px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}

  /* ---------- Kopfbereich ---------- */
  .topbar{
    position:sticky; top:env(safe-area-inset-top, 0px); z-index:30;
    background:var(--ground); border-bottom:1px solid var(--line-soft);
  }
  .topbar-inner{
    max-width:720px; margin:0 auto; padding:12px 18px;
    display:flex; align-items:center; gap:10px 18px; flex-wrap:wrap;
  }
  .brand{margin-right:auto}
  .brand h1{font-size:21px; line-height:1.15}
  .tabs{display:flex; gap:24px}
  .tabs button{
    border:0; background:transparent; color:var(--muted); cursor:pointer;
    padding:8px 0; font-size:15px; font-weight:500; border-bottom:1.5px solid transparent;
  }
  #btn-new{display:none}
  @media (min-width:620px){
    .topbar-inner{padding:14px 20px}
    .brand h1{font-size:23px}
    .tabs button{font-size:14px; padding:4px 0}
    #btn-new{display:inline-block}
  }
  .tabs button:hover{color:var(--ink-soft)}
  .tabs button[aria-selected="true"]{color:var(--ink); border-bottom-color:var(--accent)}

  .btn{
    border:1px solid var(--line); background:var(--surface); color:var(--ink);
    padding:11px 20px; border-radius:999px; font-size:15px; font-weight:500; cursor:pointer;
    min-height:44px;
  }
  .btn:hover{border-color:var(--accent); color:var(--accent)}
  .btn[disabled]{opacity:.45; cursor:not-allowed}
  .btn-primary{background:var(--accent); border-color:var(--accent); color:var(--accent-ink)}
  .btn-primary:hover{filter:brightness(1.08); color:var(--accent-ink)}
  .btn-quiet{background:transparent; border-color:transparent; color:var(--muted); padding:11px 6px}
  .btn-quiet:hover{color:var(--ink); border-color:transparent}
  .btn-small{padding:8px 16px; font-size:14px; min-height:40px}
  .btn-danger{color:var(--danger); border-color:var(--line); background:transparent}
  .btn-danger:hover{border-color:var(--danger); color:var(--danger)}
  .btn-block{width:100%}

  main{max-width:720px; margin:0 auto; padding:26px 18px 130px}
  @media (min-width:620px){ main{padding:30px 20px 80px} }

  .actionbar{
    position:fixed; left:0; right:0; bottom:0; z-index:40;
    background:var(--ground); border-top:1px solid var(--line-soft);
    padding:12px 18px calc(12px + env(safe-area-inset-bottom, 0px));
  }
  @media (min-width:620px){ .actionbar{display:none} }

  .site-foot{
    margin-top:52px; padding-top:22px; border-top:1px solid var(--line-soft);
    font-size:13px; color:var(--muted); line-height:1.6;
  }
  .site-foot a{color:var(--accent)}
  .site-foot .foot-hint{margin-top:8px}

  .notice{
    padding:14px 0 18px; border-bottom:1px solid var(--line-soft);
    font-size:13.5px; color:var(--muted); margin-bottom:26px;
  }

  /* ---------- Kennzahlen ---------- */
  .stats{
    display:flex; gap:38px; flex-wrap:wrap; margin:0 0 34px;
    padding-bottom:26px; border-bottom:1px solid var(--line-soft);
  }
  .stat dt{font-size:11px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}
  .stat dd{margin:6px 0 0; font-family:var(--display); font-size:30px; font-weight:300; line-height:1; letter-spacing:-.02em}
  .stat dd small{font-family:var(--body); font-size:12.5px; font-weight:400; color:var(--muted); letter-spacing:0}
  @media (max-width:430px){ .stats{gap:26px} .stat dd{font-size:25px} }

  /* ---------- Filterzeile ---------- */
  .toolbar{display:flex; gap:14px 20px; margin-bottom:6px; flex-wrap:wrap}
  .toolbar > *{flex:1 1 150px; min-width:0}
  .toolbar input, .toolbar select{
    width:100%; padding:11px 0; font-size:16px;
    border:0; border-bottom:1px solid var(--line); background:transparent; border-radius:0;
  }
  .toolbar input:focus, .toolbar select:focus{outline:none; border-bottom-color:var(--accent)}
  .toolbar input::placeholder{color:var(--muted)}
  .filter-info{font-size:13px; color:var(--muted); margin-top:14px; display:flex; gap:14px; align-items:baseline; flex-wrap:wrap}
  .filter-info button{border:0;background:transparent;color:var(--accent);cursor:pointer;padding:0;font-size:13px}

  /* ---------- Fangliste ---------- */
  .month{margin:34px 0 6px}
  .month:first-child{margin-top:16px}
  .log{list-style:none; margin:0; padding:0}
  .log li{border-top:1px solid var(--line-soft)}
  .entry{
    display:flex; gap:20px; align-items:center; width:100%; text-align:left; cursor:pointer;
    background:transparent; border:0; padding:18px 4px;
  }
  .entry:hover{background:var(--surface-2)}
  .thumb{
    width:58px; height:58px; flex:0 0 58px; border-radius:var(--r-sm); overflow:hidden;
    background:var(--surface-2); border:1px solid var(--line-soft);
  }
  .thumb img{width:100%; height:100%; object-fit:cover; display:block}
  .entry-body{flex:1; min-width:0}
  .entry-head{display:flex; align-items:baseline; gap:12px; flex-wrap:wrap}
  .entry-head .species{font-family:var(--display); font-size:19px; font-weight:400; line-height:1.25}
  .entry-head .measure{font-size:14.5px; color:var(--ink-soft)}
  .entry-meta{margin-top:5px; font-size:13px; color:var(--muted);
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap}

  .badge{font-size:11px; font-weight:500; letter-spacing:.1em; text-transform:uppercase; white-space:nowrap}
  .badge-pb{color:var(--accent)}
  .badge-demo{color:var(--muted)}

  .empty{padding:32px 0; color:var(--muted); font-size:14.5px; max-width:44ch}
  .empty h3{font-size:21px; color:var(--ink); margin-bottom:8px}
  .empty p{margin-bottom:18px}

  /* ---------- Bestmarken ---------- */
  .pb-head{display:flex; align-items:baseline; gap:20px; margin-bottom:6px; flex-wrap:wrap}
  .pb-head h2{font-size:22px; margin-right:auto}
  .seg{display:flex; gap:18px}
  .seg button{border:0;background:transparent;color:var(--muted);cursor:pointer;padding:4px 0;font-size:14px;font-weight:500;border-bottom:1.5px solid transparent}
  .seg button:hover{color:var(--ink-soft)}
  .seg button[aria-pressed="true"]{color:var(--ink); border-bottom-color:var(--accent)}

  .pb-list{list-style:none; margin:0; padding:0}
  .pb-list li{border-top:1px solid var(--line-soft)}
  .pb-card{display:flex; gap:20px; align-items:center; background:transparent; border:0;
    padding:18px 4px; cursor:pointer; width:100%; text-align:left}
  .pb-card:hover{background:var(--surface-2)}
  .pb-card .thumb{width:64px;height:64px;flex:0 0 64px}
  .pb-main{flex:1; min-width:0}
  .pb-main .species{font-family:var(--display); font-size:19px; font-weight:400; line-height:1.25}
  .pb-main .sub{font-size:13px; color:var(--muted); margin-top:4px;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
  .pb-value{text-align:right; flex:0 0 auto}
  .pb-value .v{font-family:var(--display); font-size:27px; font-weight:300; line-height:1; letter-spacing:-.02em; color:var(--accent)}
  .pb-value .u{font-size:12px; color:var(--muted); display:block; margin-top:5px}

  /* ---------- Verlaufsgraph ---------- */
  .chart-block{margin:26px 0 38px}
  .chart-scope{display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px}
  .chart-frame{position:relative}
  .chart-frame svg{display:block; width:100%; height:auto; overflow:visible; touch-action:pan-y}
  .c-grid{stroke:var(--line-soft); stroke-width:1; fill:none}
  .c-axis{fill:var(--muted); font-family:var(--body); font-size:11px; font-variant-numeric:tabular-nums}
  .c-dot{fill:var(--muted); opacity:.5}
  .c-step{fill:none; stroke:var(--accent); stroke-width:2; stroke-linejoin:round; stroke-linecap:round}
  .c-rec{fill:var(--accent); stroke:var(--surface); stroke-width:2}
  .c-endlabel{fill:var(--ink); font-family:var(--body); font-size:12.5px; font-weight:500}
  .c-cross{stroke:var(--line); stroke-width:1}
  .c-hot{fill:none; stroke:var(--accent); stroke-width:2}
  .chart-caption{font-size:12.5px; color:var(--muted); margin-top:14px;
    display:flex; gap:20px; flex-wrap:wrap; align-items:center}
  .chart-caption .key{display:inline-flex; align-items:center; gap:7px}
  .chart-caption .key i{display:inline-block; width:14px; height:2px; background:var(--accent); border-radius:1px}
  .chart-caption .key i.dot{width:8px; height:8px; border-radius:50%; background:var(--muted); opacity:.5}
  .chart-caption button{border:0;background:transparent;color:var(--accent);cursor:pointer;padding:0;font-size:12.5px}
  .tip{
    position:absolute; pointer-events:none; z-index:5; background:var(--surface);
    border:1px solid var(--line); border-radius:var(--r-sm); padding:8px 11px;
    font-size:12.5px; line-height:1.45; color:var(--ink); white-space:nowrap;
    box-shadow:0 6px 20px -12px rgba(20,30,42,.6); transform:translate(-50%,-100%);
  }
  .tip b{font-weight:500}
  .tip span{color:var(--muted)}
  .values-table{width:100%; border-collapse:collapse; margin-top:18px; font-size:13.5px}
  .values-table th{text-align:left; font-size:11px; font-weight:500; letter-spacing:.12em;
    text-transform:uppercase; color:var(--muted); padding:0 14px 8px 0; white-space:nowrap}
  .values-table td{padding:8px 14px 8px 0; border-top:1px solid var(--line-soft); vertical-align:top}
  .values-table td:last-child, .values-table th:last-child{padding-right:0}
  .table-wrap{overflow-x:auto}

  /* ---------- Sheet ---------- */
  .scrim{position:fixed; inset:0; z-index:60; background:rgba(20,30,42,.42);
    display:flex; align-items:flex-end; justify-content:center}
  @media (min-width:620px){ .scrim{align-items:center; padding:28px} }
  .sheet{
    background:var(--surface); width:100%; max-width:560px; max-height:92vh; overflow-y:auto;
    border-radius:var(--r-lg) var(--r-lg) 0 0;
    box-shadow:0 -6px 40px -18px rgba(20,30,42,.5);
    padding-bottom:calc(20px + env(safe-area-inset-bottom, 0px));
  }
  @media (min-width:620px){ .sheet{border-radius:var(--r-lg); max-height:86vh; box-shadow:0 20px 60px -24px rgba(20,30,42,.55)} }
  .sheet-head{position:sticky; top:0; background:var(--surface); z-index:2;
    display:flex; align-items:baseline; gap:14px; padding:22px 24px 14px}
  .sheet-head h2{font-size:22px; margin-right:auto}
  .sheet-body{padding:6px 24px 24px}
  .sheet-foot{position:sticky; bottom:0; background:var(--surface); border-top:1px solid var(--line-soft);
    padding:16px 24px; display:flex; gap:12px}

  .field{margin-bottom:26px}
  .field > label, .legend{display:block; margin-bottom:8px;
    font-size:11px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}
  .field input[type=text], .field input[type=number], .field input[type=datetime-local], .field textarea{
    width:100%; padding:8px 0; font-size:16px;
    border:0; border-bottom:1px solid var(--line); background:transparent; border-radius:0;
  }
  .field input:focus, .field textarea:focus{outline:none; border-bottom-color:var(--accent)}
  .field textarea{resize:vertical; min-height:58px; line-height:1.55}
  .row{display:flex; gap:24px}
  .row > *{flex:1; min-width:0}
  .hint{font-size:12.5px; color:var(--muted); margin-top:8px}
  .hint.err{color:var(--danger)}
  .sub-legend{font-size:11px; font-weight:500; letter-spacing:.16em; text-transform:uppercase;
    color:var(--muted); margin:16px 0 8px}

  .chips{display:flex; flex-wrap:wrap; gap:8px; margin-top:12px}
  .chip{border:1px solid var(--line); background:transparent; color:var(--muted);
    border-radius:999px; padding:5px 14px; font-size:13px; cursor:pointer}
  .chip:hover{color:var(--ink)}
  .chip[aria-pressed="true"]{background:var(--accent-soft); border-color:var(--accent-soft); color:var(--accent)}

  .photo-drop{display:flex; gap:18px; align-items:center}
  .photo-drop .preview{
    width:82px; height:82px; flex:0 0 82px; border-radius:var(--r-sm); overflow:hidden;
    background:var(--surface-2); border:1px solid var(--line-soft);
    display:grid; place-items:center; color:var(--muted); font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  }
  .photo-drop .preview img{width:100%;height:100%;object-fit:cover;display:block}
  .photo-actions{display:flex; flex-direction:column; gap:10px; align-items:flex-start; min-width:0}
  input[type=file]{display:none}

  .geo{display:flex; align-items:center; gap:16px; margin-top:16px; flex-wrap:wrap}
  .geo .val{flex:1; min-width:140px; font-size:14px; color:var(--ink-soft)}
  .geo .val em{font-style:normal; color:var(--muted)}

  /* ---------- Detail ---------- */
  .detail-photo{width:100%; aspect-ratio:4/3; max-width:100%; object-fit:cover; display:block;
    border-radius:var(--r-md); background:var(--surface-2)}
  .detail-photo-empty{width:100%; aspect-ratio:16/7; border-radius:var(--r-md); background:var(--surface-2);
    display:grid; place-items:center; color:var(--muted); font-size:11px;
    letter-spacing:.16em; text-transform:uppercase}
  .facts{margin:26px 0 0; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:22px 24px}
  .facts dt{font-size:11px; font-weight:500; letter-spacing:.16em; text-transform:uppercase; color:var(--muted)}
  .facts dd{margin:5px 0 0; font-size:15.5px; color:var(--ink); overflow-wrap:anywhere; line-height:1.5}
  .facts .wide{grid-column:1 / -1}
  .facts a{color:var(--accent)}
  .section-rule{margin:28px 0 0; padding-top:22px; border-top:1px solid var(--line-soft)}

  .toast{
    position:fixed; left:50%; transform:translateX(-50%);
    bottom:calc(88px + env(safe-area-inset-bottom, 0px)); z-index:90;
    background:var(--ink); color:var(--ground); padding:11px 20px; border-radius:999px;
    font-size:13.5px; max-width:calc(100% - 40px);
  }
  @media (min-width:620px){ .toast{bottom:calc(24px + env(safe-area-inset-bottom, 0px))} }
  /* ---------- Wasser-Effekt ---------- */
  :root{
    --water-core:rgba(66,101,140,.40);
    --water-edge:rgba(66,101,140,.10);
    --water-ring:rgba(66,101,140,.45);
    --water-drop:rgba(66,101,140,.55);
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --water-core:rgba(143,178,216,.38);
      --water-edge:rgba(143,178,216,.08);
      --water-ring:rgba(143,178,216,.42);
      --water-drop:rgba(143,178,216,.5);
    }
  }
  :root[data-theme="dark"]{
    --water-core:rgba(143,178,216,.38);
    --water-edge:rgba(143,178,216,.08);
    --water-ring:rgba(143,178,216,.42);
    --water-drop:rgba(143,178,216,.5);
  }
  .btn, .chip, .tabs button, .seg button{position:relative; overflow:hidden}
  .ripple{
    position:absolute; border-radius:50%; pointer-events:none; z-index:0;
    transform:translate(-50%,-50%) scale(0);
    background:radial-gradient(circle, var(--water-core) 0%, var(--water-edge) 58%, transparent 74%);
    animation:ripple .66s cubic-bezier(.22,.7,.3,1) forwards;
  }
  .ripple-ring{
    position:absolute; border-radius:50%; pointer-events:none; z-index:0;
    border:1.5px solid var(--water-ring);
    transform:translate(-50%,-50%) scale(.15); opacity:.9;
    animation:rippleRing .72s cubic-bezier(.22,.7,.3,1) forwards;
  }
  @keyframes ripple{
    0%{transform:translate(-50%,-50%) scale(0); opacity:.95}
    100%{transform:translate(-50%,-50%) scale(1); opacity:0}
  }
  @keyframes rippleRing{
    0%{transform:translate(-50%,-50%) scale(.15); opacity:.85}
    70%{opacity:.35}
    100%{transform:translate(-50%,-50%) scale(1.05); opacity:0}
  }
  .splash{position:fixed; z-index:95; pointer-events:none; width:0; height:0}
  .splash .halo{
    position:absolute; border-radius:999px; border:1.5px solid var(--water-ring);
    transform:translate(-50%,-50%) scale(.85); opacity:.75;
    animation:halo .76s cubic-bezier(.2,.65,.3,1) forwards;
  }
  .splash .drop{
    position:absolute; left:0; top:0; border-radius:50%; background:var(--water-drop);
    transform:translate(-50%,-50%);
    animation:drop .74s cubic-bezier(.16,.62,.36,1) forwards;
  }
  @keyframes halo{
    0%{transform:translate(-50%,-50%) scale(.85); opacity:.75}
    100%{transform:translate(-50%,-50%) scale(1.75); opacity:0}
  }
  @keyframes drop{
    0%{transform:translate(-50%,-50%) scale(1); opacity:.85}
    65%{opacity:.6}
    100%{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(.25); opacity:0}
  }

  /* ---------- Anmeldung ---------- */
  body.locked .topbar, body.locked main, body.locked .actionbar{display:none}
  .gate{
    position:fixed; inset:0; z-index:70; background:var(--ground);
    display:flex; align-items:flex-start; justify-content:center; overflow-y:auto;
    padding:calc(48px + env(safe-area-inset-top, 0px)) 20px calc(32px + env(safe-area-inset-bottom, 0px));
  }
  .gate-host{position:relative; z-index:1; width:100%; max-width:400px}
  .gate-card{width:100%}
  .gate-card h2{font-size:26px; margin-bottom:10px}
  .gate-lead{font-size:14.5px; color:var(--muted); margin-bottom:30px; line-height:1.6}
  .gate-brand{font-size:11px; font-weight:500; letter-spacing:.18em; text-transform:uppercase;
    color:var(--muted); margin-bottom:14px}
  .gate .field{margin-bottom:22px}
  .gate .field input{
    width:100%; padding:10px 0; font-size:16px;
    border:0; border-bottom:1px solid var(--line); background:transparent; border-radius:0;
  }
  .gate .field input:focus{outline:none; border-bottom-color:var(--accent)}
  .gate-actions{display:flex; flex-direction:column; gap:12px; margin-top:28px}
  .gate-switch{background:transparent;border:0;color:var(--accent);cursor:pointer;
    font-size:14px;padding:8px 0;text-align:left}
  .gate-msg{font-size:13.5px; margin-top:16px; color:var(--muted); line-height:1.6}
  .gate-msg.err{color:var(--danger)}
  .gate-code{
    font-family:var(--display); font-size:30px; letter-spacing:.24em; color:var(--ink);
    padding:14px 0 6px;
  }
  .gate-foot{margin-top:40px; padding-top:20px; border-top:1px solid var(--line-soft);
    font-size:12.5px; color:var(--muted); line-height:1.6}
  .gate-foot a{color:var(--accent)}

  /* ---------- Unterwasserszene der Anmeldung ---------- */
  :root{
    --deep-1:#dbe4ee; --deep-2:#c4d3e3; --deep-3:#aec2d8;
    --pike-a:#7d95ad; --pike-b:#5c7794; --ray:rgba(255,255,255,.55);
    --bub-line:rgba(255,255,255,.75); --bub-fill:rgba(255,255,255,.22);
    --glass:rgba(255,255,255,.72); --glass-edge:rgba(255,255,255,.85);
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --deep-1:#16202c; --deep-2:#101a26; --deep-3:#0a121c;
      --pike-a:#41576f; --pike-b:#2b3d52; --ray:rgba(160,196,232,.22);
      --bub-line:rgba(180,210,240,.6); --bub-fill:rgba(140,180,220,.14);
      --glass:rgba(24,33,48,.72); --glass-edge:rgba(120,155,195,.28);
    }
  }
  :root[data-theme="dark"]{
    --deep-1:#16202c; --deep-2:#101a26; --deep-3:#0a121c;
    --pike-a:#41576f; --pike-b:#2b3d52; --ray:rgba(160,196,232,.22);
    --bub-line:rgba(180,210,240,.6); --bub-fill:rgba(140,180,220,.14);
    --glass:rgba(24,33,48,.72); --glass-edge:rgba(120,155,195,.28);
  }

  .water-scene{
    position:absolute; inset:0; z-index:0; overflow:hidden; pointer-events:none;
    background:linear-gradient(180deg, var(--deep-1) 0%, var(--deep-2) 52%, var(--deep-3) 100%);
  }
  .caustic{
    position:absolute; inset:-20%;
    background:
      radial-gradient(38% 26% at 22% 18%, var(--ray), transparent 62%),
      radial-gradient(30% 22% at 74% 30%, var(--ray), transparent 66%),
      radial-gradient(44% 30% at 52% 76%, var(--ray), transparent 70%);
    opacity:.5; filter:blur(14px);
    animation:drift 26s ease-in-out infinite alternate;
  }
  @keyframes drift{
    0%{transform:translate3d(-2%,-1%,0) scale(1)}
    100%{transform:translate3d(3%,2%,0) scale(1.08)}
  }
  .ray{
    position:absolute; top:-30%; width:140px; height:170%;
    background:linear-gradient(180deg, var(--ray), transparent 72%);
    filter:blur(10px); opacity:.5; transform-origin:50% 0;
  }
  .ray.r1{left:12%; transform:rotate(11deg); animation:shine 11s ease-in-out infinite alternate}
  .ray.r2{left:46%; width:90px; transform:rotate(-7deg); animation:shine 15s ease-in-out infinite alternate-reverse}
  .ray.r3{left:78%; width:120px; transform:rotate(6deg); animation:shine 13s ease-in-out infinite alternate}
  @keyframes shine{0%{opacity:.22}100%{opacity:.62}}

  .pike{position:absolute; will-change:transform}
  .pike svg{display:block; width:100%; height:auto; overflow:visible}
  .pike .body{fill:url(#pikeGrad)}
  .pike .fin{fill:var(--pike-b); opacity:.9}
  .pike .eye{fill:var(--deep-1)}
  .pike .gill{stroke:var(--pike-b); stroke-width:1.6; fill:none; opacity:.7}
  .pike .spot{fill:var(--deep-1); opacity:.35}
  .stop-a{stop-color:var(--pike-a)}
  .stop-b{stop-color:var(--pike-b)}

  .pike-1{width:290px; top:26%; opacity:.82; animation:swimRight 38s linear infinite}
  .pike-2{width:170px; top:64%; opacity:.4; animation:swimLeft 54s linear infinite; animation-delay:-14s}
  .pike-3{width:110px; top:12%; opacity:.22; animation:swimRight 68s linear infinite; animation-delay:-30s}
  @keyframes swimRight{
    0%{transform:translateX(-38vw) translateY(0)}
    50%{transform:translateX(30vw) translateY(-16px)}
    100%{transform:translateX(112vw) translateY(6px)}
  }
  @keyframes swimLeft{
    0%{transform:translateX(112vw) scaleX(-1) translateY(0)}
    50%{transform:translateX(30vw) scaleX(-1) translateY(14px)}
    100%{transform:translateX(-38vw) scaleX(-1) translateY(-6px)}
  }
  .tail{transform-box:fill-box; transform-origin:100% 50%; animation:wag 1.7s ease-in-out infinite alternate}
  .fin-d{transform-box:fill-box; transform-origin:50% 100%; animation:wag 2.6s ease-in-out infinite alternate}
  @keyframes wag{0%{transform:rotate(-9deg)}100%{transform:rotate(9deg)}}

  .amb{position:absolute; bottom:-30px; border-radius:50%;
    background:var(--bub-fill); border:1px solid var(--bub-line); opacity:0;
    animation:rise linear infinite}
  @keyframes rise{
    0%{transform:translateY(0) translateX(0) scale(.7); opacity:0}
    12%{opacity:.75}
    88%{opacity:.5}
    100%{transform:translateY(-104vh) translateX(var(--sway,14px)) scale(1.05); opacity:0}
  }

  /* ---------- Glaskarte ---------- */
  .gate-card{
    position:relative; z-index:1; background:var(--glass);
    border:1px solid var(--glass-edge); border-radius:22px;
    padding:30px 26px 26px;
    box-shadow:0 26px 60px -34px rgba(12,24,38,.75), inset 0 1px 0 rgba(255,255,255,.4);
    backdrop-filter:blur(16px) saturate(1.1);
    -webkit-backdrop-filter:blur(16px) saturate(1.1);
  }
  .gate-wave{display:block; width:100%; height:14px; margin:-2px 0 20px; opacity:.6}
  .gate-wave path{fill:none; stroke:var(--accent); stroke-width:1.6;
    animation:waveShift 7s linear infinite}
  @keyframes waveShift{0%{transform:translateX(0)}100%{transform:translateX(-60px)}}
  .gate .field input{border-bottom-color:var(--line)}
  .gate .field input:focus{border-bottom-color:var(--accent)}

  /* ---------- Bläschen am Button ---------- */
  .bubble-wrap{position:relative}
  .bubbles{position:absolute; inset:-18px -14px -10px; pointer-events:none; overflow:hidden; border-radius:26px}
  .bub{
    position:absolute; bottom:-12px; border-radius:50%;
    background:var(--bub-fill); border:1px solid var(--bub-line);
    animation:bubUp ease-in forwards;
  }
  @keyframes bubUp{
    0%{transform:translate(0,0) scale(.5); opacity:0}
    18%{opacity:.9}
    100%{transform:translate(var(--bx,8px), -74px) scale(1.15); opacity:0}
  }
  .splash.big{z-index:96}
  .splash .crown{
    position:absolute; border-radius:50%; background:var(--bub-fill);
    border:1px solid var(--bub-line); transform:translate(-50%,-50%);
    animation:crown .8s cubic-bezier(.18,.7,.3,1) forwards;
  }
  @keyframes crown{
    0%{transform:translate(-50%,-50%) scale(.3); opacity:.9}
    55%{transform:translate(calc(-50% + var(--mx)), calc(-50% + var(--my))) scale(1); opacity:.8}
    100%{transform:translate(calc(-50% + var(--dx)), calc(-50% + var(--dy))) scale(.25); opacity:0}
  }

  @media (prefers-reduced-motion: reduce){
    .caustic,.ray,.pike,.tail,.fin-d,.amb,.gate-wave path{animation:none}
  }

  @media (prefers-reduced-motion: no-preference){
    .scrim,.toast{animation:fade .18s ease-out}
    .sheet{animation:rise .22s ease-out}
    @keyframes fade{from{opacity:0}to{opacity:1}}
    @keyframes rise{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
  }

  /* ===================================================================
     Maritime Glasschicht: überschreibt die Grundgestaltung
     =================================================================== */
  :root{
    --deep-1:#dfe9f2; --deep-2:#c3d5e5; --deep-3:#a4bdd3;
    --glass:rgba(255,255,255,.80); --glass-strong:rgba(255,255,255,.94);
    --glass-edge:rgba(255,255,255,.9); --glass-shadow:rgba(20,50,80,.35);
    --sheen:rgba(255,255,255,.4);
    --ink:#122130; --ink-soft:#33495f; --muted:#526478;
    --accent:#2f6190; --accent-soft:rgba(47,97,144,.14);
    --line:rgba(47,97,144,.28); --line-soft:rgba(47,97,144,.14);
    --surface-2:rgba(255,255,255,.35);
    --water-core:rgba(47,97,144,.42); --water-edge:rgba(47,97,144,.10);
    --water-ring:rgba(47,97,144,.5); --water-drop:rgba(47,97,144,.6);
    --pike-a:#8aa4bd; --pike-b:#5e7b98; --ray:rgba(255,255,255,.6);
    --bub-line:rgba(255,255,255,.85); --bub-fill:rgba(255,255,255,.28);
  }
  @media (prefers-color-scheme: dark){
    :root:not([data-theme="light"]){
      --deep-1:#15222f; --deep-2:#0d1926; --deep-3:#07111b;
      --glass:rgba(16,30,46,.80); --glass-strong:rgba(16,30,46,.94);
      --glass-edge:rgba(130,170,210,.3); --glass-shadow:rgba(0,0,0,.6);
      --sheen:rgba(160,200,240,.14);
      --ink:#e9f0f7; --ink-soft:#c2d0de; --muted:#8ea3b8;
      --accent:#8bb8e2; --accent-soft:rgba(139,184,226,.16);
      --line:rgba(139,184,226,.3); --line-soft:rgba(139,184,226,.14);
      --surface-2:rgba(139,184,226,.08);
      --water-core:rgba(139,184,226,.4); --water-edge:rgba(139,184,226,.08);
      --water-ring:rgba(139,184,226,.5); --water-drop:rgba(160,200,240,.6);
      --pike-a:#3f5670; --pike-b:#283b51; --ray:rgba(160,196,232,.22);
      --bub-line:rgba(180,210,240,.7); --bub-fill:rgba(140,180,220,.16);
    }
  }
  :root[data-theme="dark"]{
    --deep-1:#15222f; --deep-2:#0d1926; --deep-3:#07111b;
    --glass:rgba(16,30,46,.80); --glass-strong:rgba(16,30,46,.94);
    --glass-edge:rgba(130,170,210,.3); --glass-shadow:rgba(0,0,0,.6);
    --sheen:rgba(160,200,240,.14);
    --ink:#e9f0f7; --ink-soft:#c2d0de; --muted:#8ea3b8;
    --accent:#8bb8e2; --accent-soft:rgba(139,184,226,.16);
    --line:rgba(139,184,226,.3); --line-soft:rgba(139,184,226,.14);
    --surface-2:rgba(139,184,226,.08);
    --water-core:rgba(139,184,226,.4); --water-edge:rgba(139,184,226,.08);
    --water-ring:rgba(139,184,226,.5); --water-drop:rgba(160,200,240,.6);
    --pike-a:#3f5670; --pike-b:#283b51; --ray:rgba(160,196,232,.22);
    --bub-line:rgba(180,210,240,.7); --bub-fill:rgba(140,180,220,.16);
  }

  body{background:var(--deep-2)}
  .app-scene{position:fixed; inset:0; z-index:0}
  .app-scene .pike{opacity:.35}
  .app-scene .pike-2{opacity:.18}
  .app-scene .pike-3{opacity:.12}
  .app-scene .caustic{opacity:.42}
  main{position:relative; z-index:1; padding-top:38px}
  #status{position:relative; z-index:1}

  /* Glasflächen */
  .glassy, .topbar, .stats, .toolbar, .log, .pb-list, .chart-block, .empty,
  .sheet, .actionbar, .site-foot, .toast, .gate-card, .values-table{
    background:var(--glass);
    -webkit-backdrop-filter:blur(18px) saturate(1.15);
    backdrop-filter:blur(18px) saturate(1.15);
    border:1px solid var(--glass-edge);
    box-shadow:0 22px 50px -30px var(--glass-shadow), inset 0 1px 0 rgba(255,255,255,.45);
  }
  .stats, .toolbar, .log, .pb-list, .chart-block, .empty, .values-table{border-radius:22px}
  .stats{padding:22px 24px; margin-bottom:26px; gap:34px}
  .toolbar{padding:6px 22px 14px; margin-bottom:14px}
  .log, .pb-list{padding:4px 18px; overflow:hidden}
  .log li:first-child, .pb-list li:first-child{border-top:0}
  .entry, .pb-card{padding:18px 6px; border-radius:14px}
  .entry:hover, .pb-card:hover{background:var(--surface-2)}
  .month{margin:30px 6px 10px}
  .empty{padding:30px 26px}
  .chart-block{padding:22px 22px 18px}
  .chart-frame{margin-top:6px}
  .thumb{border:1px solid var(--glass-edge); background:var(--surface-2);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
  .filter-info{padding:0 8px}

  /* Kopfbereich mit Wasseroberfläche */
  .topbar{
    position:sticky; overflow:visible; background:var(--glass-strong);
    border:0; border-bottom:1px solid var(--glass-edge);
    box-shadow:0 16px 40px -28px var(--glass-shadow);
  }
  .surface-wave{
    position:absolute; left:0; right:0; bottom:-18px; height:22px; overflow:hidden; pointer-events:none;
  }
  .surface-wave svg{position:absolute; left:0; top:0; width:200%; height:100%}
  .surface-wave .w1{fill:var(--glass-strong); animation:waveRun 9s linear infinite}
  .surface-wave .w2{fill:var(--glass); animation:waveRun 14s linear infinite reverse; opacity:.85}
  @keyframes waveRun{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}

  /* Lichtschein über Glas */
  .topbar::after, .gate-card::after{
    content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none; overflow:hidden;
    background:linear-gradient(115deg, transparent 30%, var(--sheen) 47%, transparent 58%);
    background-size:260% 100%; mix-blend-mode:screen; opacity:.75;
    animation:sheenRun 11s ease-in-out infinite;
  }
  .gate-card{position:relative; overflow:hidden}
  .sheet, .toast, .notice, .tip, .values-table{background:var(--glass-strong)}
  .sheet-head, .sheet-foot{background:var(--glass-strong)}
  .tip{color:var(--ink); border-color:var(--glass-edge)}
  .chart-frame .tip{background:var(--glass-strong)}
  .topbar::after{border-radius:0}
  @keyframes sheenRun{0%{background-position:120% 0}100%{background-position:-40% 0}}

  /* Schaltflächen als Wasserlinsen */
  .btn{
    background:var(--glass-strong); border-color:var(--glass-edge);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.6), 0 8px 20px -14px var(--glass-shadow);
    -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  }
  .btn-primary{
    background:linear-gradient(180deg, color-mix(in srgb, var(--accent) 82%, white) 0%, var(--accent) 60%, color-mix(in srgb, var(--accent) 80%, black) 100%);
    border-color:color-mix(in srgb, var(--accent) 60%, white);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.55), inset 0 -6px 12px -8px rgba(0,0,0,.35), 0 14px 26px -16px var(--accent);
    text-shadow:0 1px 0 rgba(0,0,0,.18);
  }
  .btn-primary:hover{filter:brightness(1.05)}
  .btn-quiet, .btn-danger{background:transparent; backdrop-filter:none; -webkit-backdrop-filter:none; box-shadow:none}
  .chip{background:var(--glass); border-color:var(--glass-edge);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.4)}
  .chip[aria-pressed="true"]{background:var(--accent-soft); border-color:var(--accent); color:var(--accent)}
  .tabs button[aria-selected="true"]{border-bottom-color:var(--accent)}

  /* Felder mit Wasserlinie */
  .field input[type=text], .field input[type=number], .field input[type=datetime-local], .field textarea,
  .toolbar input, .toolbar select, .gate .field input{
    border-bottom:1px solid var(--line);
    background-image:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 40%, white), var(--accent));
    background-repeat:no-repeat; background-size:0% 2px; background-position:0 100%;
    transition:background-size .45s ease;
  }
  .field input:focus, .field textarea:focus, .toolbar input:focus, .toolbar select:focus, .gate .field input:focus{
    background-size:100% 2px; border-bottom-color:transparent;
  }

  /* Sheets, Aktionsleiste, Hinweise */
  .scrim{background:rgba(6,18,30,.45); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px)}
  .sheet{border-radius:26px 26px 0 0}
  @media (min-width:620px){ .sheet{border-radius:26px} }
  .sheet-head, .sheet-foot{background:transparent}
  .sheet-head{-webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); background:var(--glass)}
  .sheet-foot{-webkit-backdrop-filter:blur(14px); backdrop-filter:blur(14px); background:var(--glass); border-top-color:var(--glass-edge)}
  .actionbar{background:var(--glass-strong); border-top-color:var(--glass-edge); box-shadow:0 -16px 40px -28px var(--glass-shadow)}
  .site-foot{border-radius:22px; padding:22px 24px; border-top:1px solid var(--glass-edge)}
  .toast{background:var(--glass-strong); color:var(--ink); border-radius:999px}
  .notice{background:var(--glass); border:1px solid var(--glass-edge); border-radius:16px; padding:14px 18px;
    -webkit-backdrop-filter:blur(12px); backdrop-filter:blur(12px)}
  .facts, .values-table{border-radius:18px}

  /* Anmeldung: Karte auf offener See */
  .gate-card{border-radius:26px; background:var(--glass-strong)}
  .gate-brand{color:var(--accent)}
  .surface-line{
    position:absolute; left:-10%; right:-10%; top:0; height:160px; pointer-events:none;
    background:linear-gradient(180deg, var(--ray) 0%, transparent 100%); opacity:.55;
  }

  /* Bläschen als Fixebene */
  .bubbles-fixed{position:fixed; pointer-events:none; z-index:96; overflow:hidden; border-radius:30px}
  .bubbles-fixed .bub{box-shadow:inset -1px -1px 2px rgba(255,255,255,.45)}

  /* Splash-Leinwand */
  #fx{position:fixed; inset:0; z-index:97; pointer-events:none}

  @media (prefers-reduced-motion: reduce){
    .surface-wave .w1, .surface-wave .w2, .topbar::after, .stats::after, .gate-card::after{animation:none}
  }

  /* ---------- Visuelle Bausteine ---------- */
  .empty{
    max-width:none; display:flex; gap:16px; align-items:center;
    padding:18px 22px; font-size:14px; color:var(--ink-soft); margin-bottom:14px;
  }
  .empty .fish-ico{flex:0 0 46px; width:46px; height:30px; fill:var(--accent); opacity:.55}
  .empty h3{font-size:19px; margin-bottom:4px}
  .empty p{margin:0; color:var(--muted); font-size:13.5px}
  .empty .btn{margin-left:auto; white-space:nowrap}
  @media (max-width:520px){ .empty{flex-wrap:wrap} .empty .btn{margin-left:0; width:100%} }
  .demo-pill{
    display:inline-flex; align-items:center; gap:8px; font-size:12.5px; color:var(--muted);
    padding:6px 12px; border-radius:999px; background:var(--accent-soft); margin:0 0 14px;
  }

  .thumb{position:relative; display:grid; place-items:center;
    background:linear-gradient(180deg, var(--accent-soft), transparent)}
  .thumb .fish-ico{width:74%; height:auto; fill:var(--accent); opacity:.6}

  .tags{display:inline-flex; gap:6px; flex-wrap:wrap; vertical-align:middle}
  .tag{
    display:inline-flex; align-items:center; gap:5px; font-size:11.5px; font-weight:500;
    padding:3px 9px 3px 7px; border-radius:999px; background:var(--accent-soft); color:var(--accent);
    white-space:nowrap; line-height:1.4;
  }
  .tag svg, .wx svg, .stat .ico svg{width:12px; height:12px; fill:none; stroke:currentColor; stroke-width:1.9;
    stroke-linecap:round; stroke-linejoin:round; flex:0 0 auto}
  .entry-meta{display:flex; align-items:center; gap:8px 12px; flex-wrap:wrap; white-space:normal; overflow:visible}
  .entry-meta .when{white-space:nowrap}
  .wx{display:inline-flex; align-items:center; gap:5px; white-space:nowrap}
  .wx svg{width:14px; height:14px}

  .stats{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; padding:18px 20px}
  .stat{display:grid; grid-template-columns:auto minmax(0,1fr); gap:2px 12px; align-items:center; min-width:0}
  .stat .ico{grid-row:span 2; width:38px; height:38px; border-radius:13px; background:var(--accent-soft);
    color:var(--accent); display:grid; place-items:center}
  .stat .ico svg{width:19px; height:19px}
  .stat dt{white-space:nowrap}
  .stat dd{margin:0; font-size:28px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
  @media (max-width:560px){
    .stats{grid-template-columns:1fr 1fr; gap:14px 10px; padding:16px}
    .stat dd{font-size:24px}
    .stat .ico{width:34px;height:34px;border-radius:11px}
  }

  .pb-card{align-items:center}
  .pb-rank{
    width:26px; height:26px; border-radius:50%; flex:0 0 26px; display:grid; place-items:center;
    background:var(--accent); color:var(--accent-ink); font-size:12px; font-weight:600;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.45);
  }
  .pb-bar{height:6px; border-radius:3px; background:var(--accent-soft); margin-top:10px; overflow:hidden}
  .pb-bar i{display:block; height:100%; border-radius:3px;
    background:linear-gradient(90deg, var(--accent), color-mix(in srgb, var(--accent) 55%, white))}
  .pb-main .sub{display:flex; align-items:center; gap:8px; flex-wrap:wrap; white-space:normal; overflow:visible; margin-top:6px}

  .c-area{fill:url(#areaGrad)}
  .stop-c1{stop-color:var(--accent); stop-opacity:.3}
  .stop-c2{stop-color:var(--accent); stop-opacity:0}

  .detail-hero{
    width:100%; aspect-ratio:16/8; border-radius:18px; display:grid; place-items:center;
    background:linear-gradient(180deg, var(--accent-soft), transparent);
    border:1px solid var(--glass-edge);
  }
  .detail-hero .fish-ico{width:56%; height:auto; fill:var(--accent); opacity:.55}
  .detail-tags{display:flex; gap:8px; flex-wrap:wrap; margin-top:18px}
  .wx-grid{display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px; margin-top:16px}
  .wx-tile{display:grid; gap:4px; justify-items:center; text-align:center; padding:12px 6px;
    border-radius:14px; background:var(--accent-soft); color:var(--ink)}
  .wx-tile svg{width:22px; height:22px; fill:none; stroke:var(--accent); stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round}
  .wx-tile b{font-weight:500; font-size:15px}
  .wx-tile span{font-size:11px; color:var(--muted); letter-spacing:.08em; text-transform:uppercase}

  /* ---------- Schalter ---------- */
  .switch{display:inline-flex; align-items:center; gap:10px; cursor:pointer; user-select:none;
    padding:9px 0; font-size:15px; color:var(--ink-soft)}
  .switch input{position:absolute; opacity:0; width:0; height:0}
  .switch .track{position:relative; width:40px; height:22px; border-radius:999px; flex:0 0 40px;
    background:var(--surface-2); border:1px solid var(--line); transition:background .25s, border-color .25s}
  .switch .knob{position:absolute; top:2px; left:2px; width:16px; height:16px; border-radius:50%;
    background:var(--glass-strong); border:1px solid var(--line); transition:transform .25s}
  .switch input:checked + .track{background:var(--accent); border-color:var(--accent)}
  .switch input:checked + .track .knob{transform:translateX(18px); border-color:transparent}
  .switch input:focus-visible + .track{outline:2px solid var(--accent); outline-offset:3px}

/* ---------- Rechtstexte ---------- */
.legal{max-width:720px; margin:0 auto; padding:34px 18px 80px; position:relative; z-index:1}
.legal-card{background:var(--glass-strong); border:1px solid var(--glass-edge); border-radius:22px; padding:30px 26px;
  -webkit-backdrop-filter:blur(18px); backdrop-filter:blur(18px); box-shadow:0 22px 50px -30px var(--glass-shadow)}
.legal h1{font-size:30px; margin-bottom:6px}
.legal h2{font-size:20px; margin:30px 0 8px}
.legal p, .legal li{font-size:15px; line-height:1.65; color:var(--ink-soft); max-width:66ch}
.legal ul{padding-left:20px; margin:6px 0 0}
.legal a{color:var(--accent)}
.legal .back{display:inline-block; margin-bottom:22px; font-size:14px; color:var(--accent); text-decoration:none}
.legal .meta{color:var(--muted); font-size:13px; margin-top:26px}

/* ---------- Sheet auf dem Handy: vollflächig, tastaturfest ---------- */
body.sheet-open{overflow:hidden}
.sheet{scroll-padding-top:96px; scroll-padding-bottom:140px; -webkit-overflow-scrolling:touch; overscroll-behavior:contain}
@media (max-width:619px){
  .scrim{align-items:stretch; overflow:hidden}
  .sheet{max-height:none; height:100%; border-radius:0; padding-bottom:0; display:flex; flex-direction:column}
  .sheet-head{flex:0 0 auto; padding-top:calc(16px + env(safe-area-inset-top, 0px))}
  .sheet-body{flex:1 1 auto; padding-bottom:28px}
  .sheet-foot{flex:0 0 auto; padding-bottom:calc(14px + env(safe-area-inset-bottom, 0px))}
  .geo .btn{flex:0 0 auto}
}

/* ---------- Chip-Auswahl im Formular ---------- */
.chip-more{border-style:dashed; color:var(--accent)}

/* ---------- Beispiel-Hinweis: aquatisches Pulsieren mit umlaufender Wasserblase ---------- */
.demo-box{
  position:relative; z-index:0; overflow:hidden; background:transparent;
  border-color:color-mix(in srgb, var(--accent) 35%, transparent);
  animation:aquaPulse 2.8s ease-out infinite;
}
/* rotierender Lichtpunkt mit Schweif, läuft entlang der Kante */
.demo-box::before{
  content:""; position:absolute; z-index:-2; left:50%; top:50%;
  width:max(220%, 900px); aspect-ratio:1; translate:-50% -50%;
  background:conic-gradient(from 0deg,
    transparent 0deg 318deg,
    color-mix(in srgb, var(--accent) 18%, transparent) 340deg,
    color-mix(in srgb, var(--accent) 70%, white) 354deg,
    rgba(255,255,255,.95) 358deg,
    transparent 360deg);
  animation:orbit 5.5s linear infinite;
}
/* innere Abdeckung: lässt nur einen 2px-Rand des Lichtpunkts sichtbar */
.demo-box::after{
  content:""; position:absolute; z-index:-1; inset:2px; border-radius:inherit;
  background:var(--glass);
}
.demo-box.demo-pill::after{inset:1.5px}
@keyframes orbit{to{transform:rotate(360deg)}}
@keyframes aquaPulse{
  0%  {box-shadow:0 0 0 0 color-mix(in srgb, var(--accent) 45%, transparent), 0 0 0 0 color-mix(in srgb, var(--accent) 25%, transparent)}
  60% {box-shadow:0 0 0 10px color-mix(in srgb, var(--accent) 0%, transparent), 0 0 0 22px color-mix(in srgb, var(--accent) 0%, transparent)}
  100%{box-shadow:0 0 0 10px color-mix(in srgb, var(--accent) 0%, transparent), 0 0 0 22px color-mix(in srgb, var(--accent) 0%, transparent)}
}
@media (prefers-reduced-motion: reduce){
  .demo-box, .demo-box::before{animation:none}
  .demo-box{border-color:var(--accent)}
  .demo-box::before{display:none}
}

/* ===================================================================
   Glasige Palette: kühl, transluzent, zurückhaltendes Blau
   =================================================================== */
:root{
  --deep-1:#f0f5f8; --deep-2:#dde7ee; --deep-3:#c8d6e0;
  --glass:rgba(244,248,251,.82); --glass-strong:rgba(247,250,252,.94);
  --glass-edge:rgba(255,255,255,.95); --glass-shadow:rgba(40,70,95,.28);
  --sheen:rgba(255,255,255,.5);
  --ink:#1b2a36; --ink-soft:#3a4d5e; --muted:#5e7182;
  --accent:#4b7b97; --accent-ink:#0e2230;
  --accent-soft:rgba(75,123,151,.12);
  --line:rgba(75,123,151,.26); --line-soft:rgba(75,123,151,.13);
  --surface-2:rgba(255,255,255,.4);
  --water-core:rgba(120,170,195,.42); --water-edge:rgba(120,170,195,.10);
  --water-ring:rgba(140,185,210,.6); --water-drop:rgba(150,195,220,.7);
  --pike-a:#9fb4c4; --pike-b:#7d95a8; --ray:rgba(255,255,255,.7);
  --bub-line:rgba(255,255,255,.9); --bub-fill:rgba(255,255,255,.22);
  --bub-hi:rgba(255,255,255,.85);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --deep-1:#1a2a36; --deep-2:#13212c; --deep-3:#0d1821;
    --glass:rgba(22,36,48,.78); --glass-strong:rgba(22,36,48,.94);
    --glass-edge:rgba(160,200,225,.28); --glass-shadow:rgba(0,0,0,.55);
    --sheen:rgba(170,210,240,.14);
    --ink:#e9f1f6; --ink-soft:#c5d4df; --muted:#8fa4b4;
    --accent:#9cc3da; --accent-ink:#0b1a24;
    --accent-soft:rgba(156,195,218,.14);
    --line:rgba(156,195,218,.28); --line-soft:rgba(156,195,218,.13);
    --surface-2:rgba(156,195,218,.08);
    --water-core:rgba(156,195,218,.4); --water-edge:rgba(156,195,218,.08);
    --water-ring:rgba(170,210,235,.55); --water-drop:rgba(180,215,240,.65);
    --pike-a:#4a6377; --pike-b:#334858; --ray:rgba(170,205,235,.22);
    --bub-line:rgba(190,220,245,.7); --bub-fill:rgba(150,190,220,.14);
    --bub-hi:rgba(220,238,250,.75);
  }
}
:root[data-theme="dark"]{
  --deep-1:#1a2a36; --deep-2:#13212c; --deep-3:#0d1821;
  --glass:rgba(22,36,48,.78); --glass-strong:rgba(22,36,48,.94);
  --glass-edge:rgba(160,200,225,.28); --glass-shadow:rgba(0,0,0,.55);
  --sheen:rgba(170,210,240,.14);
  --ink:#e9f1f6; --ink-soft:#c5d4df; --muted:#8fa4b4;
  --accent:#9cc3da; --accent-ink:#0b1a24;
  --accent-soft:rgba(156,195,218,.14);
  --line:rgba(156,195,218,.28); --line-soft:rgba(156,195,218,.13);
  --surface-2:rgba(156,195,218,.08);
  --water-core:rgba(156,195,218,.4); --water-edge:rgba(156,195,218,.08);
  --water-ring:rgba(170,210,235,.55); --water-drop:rgba(180,215,240,.65);
  --pike-a:#4a6377; --pike-b:#334858; --ray:rgba(170,205,235,.22);
  --bub-line:rgba(190,220,245,.7); --bub-fill:rgba(150,190,220,.14);
  --bub-hi:rgba(220,238,250,.75);
}

/* Primärbutton als Glaslinse statt satter Farbfläche */
.btn-primary{
  color:var(--accent-ink);
  background:
    linear-gradient(180deg, rgba(255,255,255,.55) 0%, rgba(255,255,255,.12) 45%, rgba(255,255,255,0) 100%),
    color-mix(in srgb, var(--accent) 52%, white);
  border-color:color-mix(in srgb, var(--accent) 45%, white);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.85), inset 0 -8px 14px -10px color-mix(in srgb, var(--accent) 60%, transparent), 0 14px 28px -18px var(--accent);
  text-shadow:none;
}
.btn-primary:hover{filter:brightness(1.04) saturate(1.05)}
:root[data-theme="dark"] .btn-primary{background:linear-gradient(180deg, rgba(255,255,255,.28), rgba(255,255,255,.04) 60%), color-mix(in srgb, var(--accent) 72%, #0b1a24)}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]) .btn-primary{background:linear-gradient(180deg, rgba(255,255,255,.28), rgba(255,255,255,.04) 60%), color-mix(in srgb, var(--accent) 72%, #0b1a24)}
}
.pb-rank{background:color-mix(in srgb, var(--accent) 55%, white); color:var(--accent-ink)}
.tag{background:var(--accent-soft)}
.toast{background:var(--glass-strong); color:var(--ink); border:1px solid var(--glass-edge)}
.pb-bar i{background:linear-gradient(90deg, color-mix(in srgb, var(--accent) 70%, white), color-mix(in srgb, var(--accent) 35%, white))}

/* Szene: kräftigere Lichtführung, Hechte als Glasschatten */
.app-scene .pike{opacity:.28}
.app-scene .pike-2{opacity:.16}
.app-scene .pike-3{opacity:.1}
.app-scene .caustic{opacity:.55}
.ray{opacity:.65}

/* Blasen: gläsern mit Lichtreflex, leichtes Torkeln beim Aufstieg */
.amb{
  background:
    radial-gradient(circle at 32% 30%, var(--bub-hi) 0%, rgba(255,255,255,.25) 18%, var(--bub-fill) 40%, rgba(255,255,255,.02) 72%);
  border:1px solid var(--bub-line);
  box-shadow:inset -2px -3px 5px rgba(255,255,255,.28), 0 0 0 1px rgba(255,255,255,.06);
  animation-name:riseWobble; animation-timing-function:linear; animation-iteration-count:infinite;
}
.amb-stream{opacity:0}
@keyframes riseWobble{
  0%  {transform:translate3d(0,0,0) scale(.75); opacity:0}
  8%  {opacity:.9}
  25% {transform:translate3d(calc(var(--sway,14px) * .25 + var(--wob,8px)), -26vh, 0) scale(.85)}
  50% {transform:translate3d(calc(var(--sway,14px) * .5 - var(--wob,8px)), -52vh, 0) scale(.95)}
  75% {transform:translate3d(calc(var(--sway,14px) * .75 + var(--wob,8px)), -78vh, 0) scale(1.02)}
  92% {opacity:.55}
  100%{transform:translate3d(var(--sway,14px), -106vh, 0) scale(1.08); opacity:0}
}
@media (prefers-reduced-motion: reduce){ .amb{animation:none; opacity:.35; bottom:auto; top:calc(20% + var(--wob,8px) * 3)} }

/* ---------- Profil: Avatar im Kopf ---------- */
.avatar-btn{
  width:40px; height:40px; border-radius:50%; padding:0; border:1px solid var(--glass-edge); cursor:pointer;
  background:var(--glass-strong); overflow:hidden; display:grid; place-items:center; flex:0 0 40px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.8), 0 8px 18px -12px var(--glass-shadow);
}
.avatar-btn img{width:100%; height:100%; object-fit:cover; display:block}
.avatar-fallback{font-family:var(--display); font-size:16px; font-weight:500; color:var(--accent); letter-spacing:.02em}
.avatar-fallback svg{width:22px; height:22px; fill:var(--accent); opacity:.7}
@media (max-width:619px){
  .topbar-inner{align-items:center}
  .brand{flex:1 1 auto; margin-right:0}
  .avatar-btn{order:2}
  .tabs{order:3; flex:1 1 100%}
}

/* ---------- Profil-Sheet ---------- */
.profile-head{display:flex; gap:18px; align-items:center; margin-bottom:26px}
.profile-avatar{
  width:76px; height:76px; border-radius:50%; flex:0 0 76px; overflow:hidden; display:grid; place-items:center;
  background:var(--accent-soft); border:1px solid var(--glass-edge); color:var(--accent);
  font-family:var(--display); font-size:26px;
}
.profile-avatar img{width:100%; height:100%; object-fit:cover; display:block}
.profile-actions{display:flex; flex-direction:column; gap:8px; align-items:flex-start; min-width:0}
.profile-actions .hint{margin-top:0}
.field select{
  width:100%; padding:8px 0; font-size:16px; border:0; border-bottom:1px solid var(--line);
  background:transparent; border-radius:0; color:var(--ink);
}
.field select:focus{outline:none; border-bottom-color:var(--accent)}
.field input[type=date]{min-height:40px}
.section-title{font-family:var(--display); font-size:20px; margin:34px 0 14px; padding-top:24px; border-top:1px solid var(--line-soft)}
.doc-list{list-style:none; margin:0 0 20px; padding:0; display:flex; flex-direction:column; gap:10px}
.doc-item{
  display:flex; gap:14px; align-items:center; padding:12px 14px; border-radius:16px;
  background:var(--surface-2); border:1px solid var(--line-soft);
}
.doc-item .doc-ico{width:40px; height:40px; border-radius:12px; flex:0 0 40px; display:grid; place-items:center;
  background:var(--accent-soft); color:var(--accent)}
.doc-item .doc-ico svg{width:20px; height:20px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round}
.doc-main{flex:1; min-width:0}
.doc-main .t{font-weight:500; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.doc-main .s{font-size:12.5px; color:var(--muted); display:flex; gap:8px; flex-wrap:wrap; margin-top:2px}
.badge-ok{color:var(--accent)}
.badge-warn{color:#8a5a12}
.badge-expired{color:var(--danger)}
.doc-actions{display:flex; gap:6px; flex:0 0 auto}
.doc-actions a, .doc-actions button{font-size:13px}
.doc-add{padding:16px; border-radius:16px; border:1px dashed var(--line); background:transparent}
.doc-add .row{gap:16px}
.file-pick{display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:6px}
.file-pick .name{font-size:13px; color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:220px}
.badge-warn{color:#8a5a12}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]) .badge-warn{color:#e0b46a} }
:root[data-theme="dark"] .badge-warn{color:#e0b46a}
