/* Base común de las demos de apps de albydev. Cada app redefine --brand y añade sus
   pantallas en su propio app.css. Solo se animan opacidad y transformaciones. */
:root{
  --bg:#f5f6f8; --card:#fff; --card-2:#eef1f4; --ink:#0d141c; --ink-2:#526070; --ink-3:#626c7c;
  --line:rgba(13,20,28,.08); --brand:#0f766e; --brand-2:#0d5f58; --brand-ink:#fff; --brand-soft:rgba(15,118,110,.12);
  --ok:#166534; --ok-soft:rgba(21,128,61,.12); --warn:#92400e; --warn-soft:rgba(217,119,6,.14); --info:#1d4ed8; --info-soft:rgba(29,78,216,.1);
  --danger:#b91c1c; --danger-soft:rgba(220,38,38,.1); --muted-soft:rgba(82,96,112,.12);
  --shadow-1:0 1px 2px rgba(13,20,28,.06),0 4px 14px rgba(13,20,28,.06);
  --shadow-2:0 2px 6px rgba(13,20,28,.08),0 18px 40px rgba(13,20,28,.14);
  --glass:rgba(255,255,255,.8); --r-lg:24px; --r:18px; --r-sm:12px;
  --fh:'Plus Jakarta Sans',system-ui,sans-serif; --fb:'Inter',system-ui,sans-serif; --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --ease:cubic-bezier(.2,.8,.2,1); --safe-b:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0b1119; --card:#131c27; --card-2:#1a2532; --ink:#edf2f7; --ink-2:#a4afbd; --ink-3:#7c8797;
  --line:rgba(237,242,247,.08); --glass:rgba(19,28,39,.82); --muted-soft:rgba(164,175,189,.14);
  --shadow-1:0 1px 2px rgba(0,0,0,.3),0 4px 14px rgba(0,0,0,.25); --shadow-2:0 18px 40px rgba(0,0,0,.45);
}}
*{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%}
body{font-family:var(--fb);background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}
@media (min-width:560px){body{background:radial-gradient(900px 600px at 50% -10%,var(--brand-soft),transparent 60%),#e8ecf1}}
@media (min-width:560px) and (prefers-color-scheme:dark){body{background:radial-gradient(900px 600px at 50% -10%,var(--brand-soft),transparent 60%),#070b12}}
button,input,textarea,select{font:inherit;color:inherit}button{background:none;border:0;cursor:pointer}
a{color:inherit;text-decoration:none}
svg{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
img{display:block;max-width:100%}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:10px}

.app{position:relative;max-width:440px;min-height:100%;margin:0 auto;background:var(--bg);overflow-x:hidden}
@media (min-width:560px){.app{min-height:calc(100% - 48px);margin:24px auto;border-radius:36px;box-shadow:0 30px 90px rgba(13,20,28,.25);overflow:hidden;isolation:isolate}}
.view{padding-bottom:calc(104px + var(--safe-b));outline:none;animation:view-in .45s var(--ease) both}
@keyframes view-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.demo-note{display:flex;align-items:center;justify-content:center;gap:8px;padding:9px 16px;font-size:11.5px;color:var(--ink-2);background:var(--card);border-bottom:1px solid var(--line)}
.demo-note__dot{width:6px;height:6px;border-radius:50%;background:#f59e0b;box-shadow:0 0 0 3px rgba(245,158,11,.18)}

.page-title{padding:24px 20px 4px;font:800 28px/1.1 var(--fh);letter-spacing:-.8px}
.page-sub{padding:6px 20px 0;font-size:14px;color:var(--ink-2);line-height:1.5}
.sec{padding:24px 20px 0}
.sec__head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:12px}
.sec__title{font:800 18px var(--fh);letter-spacing:-.3px}
.sec__sub{font-size:13px;color:var(--ink-2);margin-top:3px}
.list{display:grid;gap:12px}

.chips{display:flex;gap:8px;padding:16px 20px 2px;overflow-x:auto;scrollbar-width:none}.chips::-webkit-scrollbar{display:none}
.chip{display:inline-flex;align-items:center;gap:7px;height:40px;padding:0 15px;border-radius:999px;background:var(--card);border:1px solid var(--line);font-size:13.5px;font-weight:600;color:var(--ink-2);white-space:nowrap;transition:background .2s,color .2s,transform .2s var(--ease)}
.chip b{font-weight:700;font-size:12px;min-width:20px;height:20px;padding:0 6px;border-radius:10px;background:var(--card-2);display:inline-grid;place-items:center;color:var(--ink-2)}
.chip.is-on{background:var(--ink);color:var(--bg);border-color:transparent}.chip.is-on b{background:rgba(255,255,255,.18);color:inherit}
.chip:active{transform:scale(.96)}

.card{border-radius:var(--r);background:var(--card);box-shadow:var(--shadow-1)}
.status{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}
.status::before{content:'';width:7px;height:7px;border-radius:50%;background:currentColor}
.s-muted{background:var(--muted-soft);color:var(--ink-2)}.s-warn{background:var(--warn-soft);color:var(--warn)}
.s-info{background:var(--info-soft);color:var(--info)}.s-ok{background:var(--ok-soft);color:var(--ok)}.s-danger{background:var(--danger-soft);color:var(--danger)}
@media (prefers-color-scheme:dark){.s-warn{color:#f59e0b}.s-info{color:#60a5fa}.s-ok{color:#4ade80}.s-danger{color:#f87171}}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:54px;padding:0 24px;border-radius:16px;background:var(--brand);color:var(--brand-ink);font:700 15.5px var(--fh);box-shadow:0 8px 22px color-mix(in srgb,var(--brand) 35%,transparent);transition:transform .2s var(--ease),opacity .2s}
.btn:active{transform:scale(.97)}
.btn:disabled{opacity:.45;box-shadow:none;cursor:default}
.btn--block{width:100%}
.btn--ghost{background:var(--card);color:var(--ink);box-shadow:var(--shadow-1)}
.btn--soft{background:var(--brand-soft);color:var(--brand-2);box-shadow:none}
@media (prefers-color-scheme:dark){.btn--soft{color:var(--brand)}}
.icon-btn{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;background:var(--glass);color:var(--ink);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow-1);transition:transform .2s var(--ease)}
.icon-btn:active{transform:scale(.92)}

.fields{display:grid;gap:10px}
.field{display:block;padding:11px 16px;border-radius:14px;background:var(--card);box-shadow:var(--shadow-1);border:1.5px solid transparent;transition:border-color .2s}
.field:focus-within{border-color:var(--brand)}
.field.has-error{border-color:var(--danger)}
.field > span{display:flex;justify-content:space-between;font-size:12px;color:var(--ink-3);font-weight:600}
.field > span em{font-style:normal;font-weight:500}
.field input,.field textarea{width:100%;border:0;outline:none;background:none;font-size:15.5px;padding-top:4px;resize:none;line-height:1.5}
.field textarea{min-height:88px}
.help{font-size:12.5px;color:var(--ink-3);margin:6px 4px 0;line-height:1.45}
.error{font-size:12.5px;color:var(--danger);font-weight:600;margin:6px 4px 0}

.tabbar{position:fixed;left:50%;bottom:calc(12px + var(--safe-b));transform:translateX(-50%);width:calc(100% - 32px);max-width:408px;height:66px;display:grid;grid-auto-flow:column;grid-auto-columns:1fr;padding:6px;border-radius:22px;background:var(--glass);backdrop-filter:blur(20px) saturate(1.5);-webkit-backdrop-filter:blur(20px) saturate(1.5);box-shadow:var(--shadow-2);border:1px solid var(--line);z-index:20;transition:transform .35s var(--ease),opacity .25s}
@media (min-width:560px){.tabbar{bottom:40px}}
.tabbar.is-hidden{transform:translate(-50%,120%);opacity:0;pointer-events:none}
.tabbar a{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border-radius:16px;font-size:11px;font-weight:600;color:var(--ink-3);transition:color .2s,background .25s}
.tabbar a.is-on{color:var(--brand-2);background:var(--brand-soft)}
@media (prefers-color-scheme:dark){.tabbar a.is-on{color:var(--brand)}}
.tabbar svg{width:22px;height:22px}
.tabbar__main{align-self:center;justify-self:center;width:54px;height:54px;border-radius:18px!important;background:var(--brand)!important;color:var(--brand-ink)!important;box-shadow:0 8px 20px color-mix(in srgb,var(--brand) 40%,transparent)}
.tabbar__main span{display:none}
.tabbar__badge{position:absolute;top:6px;left:calc(50% + 8px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--danger);color:#fff;font:700 10.5px/18px var(--fb);text-align:center}

.sheet{position:fixed;inset:0;z-index:50;pointer-events:none}
.sheet__scrim{position:absolute;inset:0;background:rgba(3,8,20,.45);opacity:0;transition:opacity .3s}
.sheet__panel{position:absolute;left:50%;bottom:0;width:100%;max-width:440px;max-height:92%;overflow-y:auto;transform:translate(-50%,100%);border-radius:28px 28px 0 0;background:var(--bg);padding:10px 20px calc(20px + var(--safe-b));transition:transform .45s var(--ease);overscroll-behavior:contain}
.sheet.is-open{pointer-events:auto}.sheet.is-open .sheet__scrim{opacity:1}.sheet.is-open .sheet__panel{transform:translate(-50%,0)}
.grab{width:40px;height:5px;border-radius:3px;margin:0 auto 14px;background:rgba(127,138,160,.35)}

.done{text-align:center;padding:14px 4px 4px}
.done__check{width:84px;height:84px;margin:6px auto 18px;border-radius:50%;display:grid;place-items:center;background:var(--ok);color:#fff;box-shadow:0 0 0 10px var(--ok-soft);animation:pop .6s var(--ease) both}
.done__check svg{width:40px;height:40px;stroke-width:2.6}.done__check svg path{stroke-dasharray:22;stroke-dashoffset:22;animation:draw .5s .35s var(--ease) forwards}
@keyframes pop{0%{transform:scale(.4);opacity:0}60%{transform:scale(1.08);opacity:1}100%{transform:none}}
@keyframes draw{to{stroke-dashoffset:0}}
.done h2{font:800 24px var(--fh);letter-spacing:-.4px}
.done p{font-size:14.5px;color:var(--ink-2);margin:8px 0 18px;line-height:1.5}
.code{font:700 16px var(--mono);letter-spacing:1.5px}

.empty{text-align:center;padding:56px 24px}
.empty__art{width:96px;height:96px;margin:0 auto 18px;border-radius:30px;display:grid;place-items:center;background:var(--brand-soft);color:var(--brand-2)}
.empty__art svg{width:42px;height:42px}
.empty h2{font:800 20px var(--fh)}.empty p{font-size:14.5px;color:var(--ink-2);margin:8px 0 22px;line-height:1.5}
.toast{position:fixed;left:50%;top:18px;transform:translate(-50%,-140%);padding:12px 18px;border-radius:14px;background:var(--ink);color:var(--bg);font-size:13.5px;font-weight:600;box-shadow:var(--shadow-2);z-index:60;transition:transform .4s var(--ease);max-width:calc(100% - 32px)}
.toast.is-on{transform:translate(-50%,0)}
.foot{padding:28px 20px 10px;text-align:center;font-size:12px;color:var(--ink-3);line-height:1.5}
.foot a,.foot button{text-decoration:underline;text-underline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
.credits{display:grid;gap:10px;list-style:none}
.credits li{display:flex;gap:12px;align-items:center;padding:12px;border-radius:14px;background:var(--card);box-shadow:var(--shadow-1);font-size:13px;line-height:1.45;color:var(--ink-2)}
.credits img{width:56px;height:56px;border-radius:10px;object-fit:cover;flex:none}
.credits b{display:block;color:var(--ink);font-weight:600}.credits a{text-decoration:underline;text-underline-offset:2px}
