:root{
  box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);
  padding-bottom:env(safe-area-inset-bottom,0px);
  font-size:17px;

  --paper:#F7F2E8; --card:#FFFCF5; --ink:#2B2216; --ink2:#594F40;
  --line:#E0D3BC; --rule:#C0A165; --brand:#493922; --on-brand:#FFFCF5;
  --brand-soft:#EFE5D1; --gold:#7A5C1E; --danger:#8A3020;
  --bar:#C9AE79; --bar-key:#493922;
  --feature-bg:#3B2F1D; --feature-ink:#FFFCF5;
  --feature-btn-bg:rgba(255,252,245,.16); --feature-btn-line:rgba(255,252,245,.46);
  --feature-mute:rgba(255,252,245,.84);

  --r:6px; --nav-h:66px; --tap:48px;
}
:root[data-size="l"]{font-size:19px;}
:root[data-size="xl"]{font-size:21.5px;}

@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#17120D; --card:#211A12; --ink:#F1E8D9; --ink2:#B4A792;
    --line:#3B3023; --rule:#8A6E3E; --brand:#DCC08A; --on-brand:#1C1610;
    --brand-soft:#312718; --gold:#DCC08A; --danger:#E5917C;
    --bar:#6B5637; --bar-key:#DCC08A;
    --feature-bg:#DCC08A; --feature-ink:#1C1610;
    --feature-btn-bg:rgba(28,22,16,.14); --feature-btn-line:rgba(28,22,16,.42);
    --feature-mute:rgba(28,22,16,.78);
  }
}
:root[data-theme="wedding"]{
  --paper:#FBF7F2; --card:#FFFFFF; --ink:#2D2730; --ink2:#665E66;
  --line:#E7D9D3; --rule:#CFAE9D; --brand:#7F4F5A; --on-brand:#FFFFFF;
  --brand-soft:#F4E7E4; --gold:#9A6A4F; --danger:#9B3539;
  --bar:#BFA69D; --bar-key:#7E8D73;
  --feature-bg:#6E4F59; --feature-ink:#FFF9F5;
  --feature-btn-bg:rgba(255,249,245,.17); --feature-btn-line:rgba(255,249,245,.5);
  --feature-mute:rgba(255,249,245,.86);
}
html{scroll-padding-top:calc(env(safe-area-inset-top,0px) + 8px);height:100%;}
*,*::before,*::after{box-sizing:inherit;}
body{
  margin:0;min-height:100%;background:var(--paper);color:var(--ink);
  font-family:'Archivo',-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;
  font-size:1rem;line-height:1.5;-webkit-font-smoothing:antialiased;
  font-variant-numeric:tabular-nums;-webkit-text-size-adjust:100%;
}
h1,h2,h3,.serif{font-family:'Cormorant Garamond','Iowan Old Style',Georgia,'Times New Roman',serif;}
button,input,select,textarea{font:inherit;color:inherit;font-variant-numeric:inherit;}
button{cursor:pointer;background:none;border:none;padding:0;text-align:left;}
:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:3px;}
[hidden]{display:none !important;}

/* entrada */
.screen{display:none;}
.screen.on{display:block;}
.entry{
  min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;
  padding:22px 18px calc(22px + env(safe-area-inset-bottom,0px));background:var(--paper);
}
@media (min-width:720px){.entry{padding:40px;}.frame{max-width:520px;margin:0 auto;width:100%;}}
.frame{position:relative;border:1px solid var(--rule);padding:30px 22px;background:var(--card);}
.frame::before{content:"";position:absolute;inset:5px;border:1px solid var(--rule);opacity:.5;pointer-events:none;}
.entry-mark{font-size:.85rem;color:var(--gold);margin-bottom:16px;letter-spacing:.09em;}
.entry h1{font-size:2.7rem;line-height:1.04;font-weight:600;margin:0 0 14px;}
.entry .sub{color:var(--ink2);margin:0 0 26px;font-size:1rem;max-width:34ch;line-height:1.55;font-family:'Archivo',sans-serif;}
.field{display:block;margin:0 0 16px;}
.field > span{display:block;font-size:.95rem;color:var(--ink2);margin-bottom:7px;font-weight:600;}
.field small{display:block;font-size:.85rem;color:var(--ink2);margin-top:6px;line-height:1.4;}
.inp{
  width:100%;padding:14px;border-radius:var(--r);min-height:var(--tap);
  border:1.5px solid var(--line);background:var(--paper);color:var(--ink);font-size:1rem;
}
textarea.inp{min-height:auto;}
.inp::placeholder{color:var(--ink2);opacity:.62;}
.btn{
  display:flex;align-items:center;justify-content:center;gap:8px;width:100%;
  padding:14px 18px;border-radius:var(--r);min-height:var(--tap);
  font-weight:600;font-size:1rem;background:var(--brand);color:var(--on-brand);
  border:1.5px solid var(--brand);text-align:center;
}
.btn[disabled]{opacity:.55;cursor:progress;}
.btn.ghost{background:var(--card);color:var(--ink);border-color:var(--line);}
.btn.danger{background:var(--card);color:var(--danger);border-color:var(--line);}
.btn.auto{width:auto;}
.linkbtn{display:block;width:100%;text-align:center;margin-top:16px;color:var(--gold);font-size:.92rem;font-weight:600;padding:10px;}
.err{color:var(--danger);font-size:.95rem;min-height:22px;margin:2px 0 8px;font-weight:500;}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
@media (max-width:340px){.row2{grid-template-columns:1fr;}}

/* cabecera */
.top{
  position:sticky;top:env(safe-area-inset-top,0px);z-index:20;
  background:var(--paper);border-bottom:1px solid var(--rule);padding:12px 16px;
}
.top-main{display:flex;align-items:center;justify-content:space-between;gap:12px;}
.top h1{margin:0;font-size:1.6rem;font-weight:600;line-height:1.1;}
.top .when{margin:2px 0 0;font-size:.9rem;color:var(--ink2);}
.theme-toggle{
  flex:0 0 auto;min-height:38px;padding:0 12px;border:1.5px solid var(--line);
  border-radius:var(--r);background:var(--card);color:var(--gold);
  font-size:.82rem;font-weight:700;text-align:center;white-space:nowrap;
}

main{padding:0 0 calc(var(--nav-h) + 92px + env(safe-area-inset-bottom,0px));}
@media (min-width:860px){
  main,.top{max-width:840px;margin-inline:auto;}
  .addbar{max-width:840px;margin-inline:auto;}
  .nav{max-width:840px;margin-inline:auto;border-left:1px solid var(--line);border-right:1px solid var(--line);}
}
.view{display:none;}
.view.on{display:block;}

/* ayuda */
.help{background:var(--brand-soft);margin:14px 16px 4px;padding:18px;border-radius:var(--r);border:1px solid var(--rule);}
.help h2{margin:0 0 10px;font-size:1.2rem;font-weight:600;}
.help ol{margin:0 0 14px;padding-left:1.25em;}
.help li{margin-bottom:9px;line-height:1.45;}
.help p{margin:0 0 14px;font-size:.92rem;color:var(--ink2);line-height:1.45;}

/* modo */
.modebar{display:flex;gap:8px;padding:14px 16px 6px;}
.modebar button{
  flex:1 1 0;min-height:var(--tap);border:1.5px solid var(--line);border-radius:var(--r);
  display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.95rem;
  color:var(--ink2);background:var(--card);
}
.modebar button.on{background:var(--brand);border-color:var(--brand);color:var(--on-brand);}

/* lista */
.daysec{border-bottom:1px solid var(--line);}
.dayhead{padding:18px 16px 10px;}
.dayhead .dnum{font-size:1.35rem;font-weight:600;font-family:'Cormorant Garamond',Georgia,serif;line-height:1.15;}
.dayhead .dnum .wd{font-weight:500;color:var(--ink2);}
.dayhead .pres{font-size:.9rem;color:var(--ink2);margin-top:2px;}
.dayhead.key .dnum{color:var(--gold);}

.ev{
  background:var(--card);border:1px solid var(--line);border-left:5px solid var(--rule);
  border-radius:var(--r);margin:0 16px 10px;padding:14px;
}
.ev:last-child{margin-bottom:18px;}
.ev.official{border-left-color:var(--gold);}
.ev.wedding{background:var(--feature-bg);border-color:var(--feature-bg);border-left-color:var(--rule);color:var(--feature-ink);}
.ev.wedding .meta,.ev.wedding .desc{color:var(--feature-mute);}
.ev-time{font-size:1rem;font-weight:700;margin-bottom:3px;}
.ev-time.none{color:var(--ink2);font-weight:600;font-size:.9rem;}
.ev.wedding .ev-time.none{color:var(--feature-mute);}
.ev-title{font-size:1.15rem;font-weight:600;line-height:1.28;}
.ev.wedding .ev-title{font-size:1.5rem;font-family:'Cormorant Garamond',Georgia,serif;line-height:1.15;}
.meta{font-size:.92rem;color:var(--ink2);margin-top:4px;line-height:1.4;}
.desc{font-size:.95rem;color:var(--ink2);margin-top:8px;max-width:58ch;line-height:1.5;}
.tag{
  display:inline-block;font-size:.75rem;font-weight:700;padding:3px 9px;border-radius:4px;
  background:var(--brand-soft);color:var(--gold);margin-bottom:7px;border:1px solid var(--rule);
  font-family:'Archivo',sans-serif;
}
.ev.wedding .tag{background:var(--feature-btn-bg);color:var(--feature-ink);border-color:var(--feature-btn-line);}
.ev-foot{margin-top:14px;display:flex;flex-direction:column;gap:9px;}
.goers{font-size:.92rem;color:var(--ink2);}
.goers b{color:var(--ink);font-weight:700;}
.ev.wedding .goers{color:var(--feature-mute);}
.ev.wedding .goers b{color:var(--feature-ink);}
.btnrow{display:flex;gap:9px;}
.btnrow .btn{flex:1 1 0;font-size:.95rem;padding:12px 10px;}
.ev .btn.in{background:var(--brand-soft);border-color:var(--rule);color:var(--gold);}
.ev.wedding .btn{background:var(--feature-btn-bg);border-color:var(--feature-btn-line);color:var(--feature-ink);}
.ev.wedding .btn.in{background:var(--feature-ink);border-color:var(--feature-ink);color:var(--feature-bg);}

.freeday{padding:0 16px 18px;font-size:.95rem;color:var(--ink2);}
.empty{padding:44px 24px;text-align:center;color:var(--ink2);}
.empty p{margin:0 auto 18px;max-width:32ch;line-height:1.5;}
.moreday{padding:18px 16px 26px;}

/* calendario */
.cal{padding:6px 12px 20px;}
.cal h2{margin:20px 0 10px;font-size:1.35rem;font-weight:600;padding-left:4px;}
.cal-wd{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-bottom:5px;}
.cal-wd div{text-align:center;font-size:.78rem;color:var(--ink2);font-weight:700;padding:2px 0;}
.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;}
.cal-cell{
  aspect-ratio:1/1.08;min-height:46px;border:1px solid var(--line);border-radius:var(--r);
  background:var(--card);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:2px;
}
.cal-cell.void{border:none;background:none;}
.cal-cell.out{opacity:.3;}
.cal-cell .n{font-size:1.05rem;font-weight:600;line-height:1;}
.cal-cell .dots{display:flex;gap:2.5px;height:6px;align-items:center;}
.cal-cell .dots i{width:5px;height:5px;border-radius:50%;background:var(--gold);display:block;}
.cal-cell.key{background:var(--brand-soft);border-color:var(--rule);}
.cal-cell.key .n{color:var(--gold);font-weight:700;}
.cal-cell.today{outline:3px solid var(--brand);outline-offset:-3px;}
.cal-legend{display:flex;flex-wrap:wrap;gap:14px;padding:16px 4px 0;font-size:.85rem;color:var(--ink2);}
.cal-legend span{display:flex;align-items:center;gap:6px;}
.cal-legend i{width:11px;height:11px;border-radius:3px;display:block;}

/* paneles */
.pane{padding:16px;}
.pane h2{margin:24px 0 10px;font-size:1.25rem;font-weight:600;}
.pane h2:first-child{margin-top:4px;}
.pane p.lead{margin:0 0 4px;font-size:.98rem;color:var(--ink2);line-height:1.5;max-width:46ch;}
.box{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:16px;}
.kv{display:flex;justify-content:space-between;gap:14px;padding:11px 0;border-bottom:1px solid var(--line);font-size:.98rem;}
.kv:last-child{border-bottom:none;}
.kv span{color:var(--ink2);}
.kv b{text-align:right;}

.chart{overflow-x:auto;-webkit-overflow-scrolling:touch;padding:6px 0 4px;scrollbar-width:none;}
.chart::-webkit-scrollbar{display:none;}
.chart-inner{display:flex;gap:4px;align-items:flex-end;min-width:min-content;}
.ccol{flex:0 0 auto;width:26px;display:flex;flex-direction:column;align-items:center;gap:5px;}
.ccol .bar{width:100%;height:56px;display:flex;align-items:flex-end;background:var(--line);border-radius:3px;overflow:hidden;}
.ccol .fill{width:100%;background:var(--bar);border-radius:3px;}
.ccol.key .fill{background:var(--bar-key);}
.ccol .n{font-size:.72rem;color:var(--ink2);}
.ccol.key .n{color:var(--gold);font-weight:700;}
.cap{font-size:.85rem;color:var(--ink2);margin:6px 0 0;line-height:1.45;}

.tl{overflow-x:auto;-webkit-overflow-scrolling:touch;padding:4px 0 8px;scrollbar-width:none;}
.tl::-webkit-scrollbar{display:none;}
.tl-inner{min-width:min-content;}
.tl-row{display:flex;align-items:center;margin-bottom:6px;}
.tl-name{flex:0 0 118px;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;padding-right:10px;}
.tl-name.me{font-weight:700;}
.tl-track{display:flex;gap:2px;}
.tl-cell{flex:0 0 auto;width:18px;height:18px;border-radius:3px;background:var(--line);}
.tl-cell.in{background:var(--bar);}
.tl-cell.key{background:var(--bar-key);}

/* la boda */
.info h2{margin:24px 0 8px;font-size:1.3rem;font-weight:600;}
.info h2:first-child{margin-top:2px;}
.info p{margin:0 0 9px;font-size:1rem;line-height:1.55;max-width:56ch;}
.info .q{color:var(--ink2);font-size:.95rem;}
.orn{display:flex;align-items:center;gap:10px;margin:22px 0 0;color:var(--rule);}
.orn::before,.orn::after{content:"";flex:1 1 0;height:1px;background:var(--rule);}
.orn span{font-size:.8rem;}

/* ajustes */
.sizepick{display:flex;gap:9px;margin-top:4px;}
.sizepick button,.themepick button{
  flex:1 1 0;min-height:var(--tap);border:1.5px solid var(--line);border-radius:var(--r);
  background:var(--card);color:var(--ink2);font-weight:600;display:flex;align-items:center;justify-content:center;
}
.sizepick button.on,.themepick button.on{border-color:var(--brand);background:var(--brand-soft);color:var(--gold);}
.sizepick .s1{font-size:.88rem;} .sizepick .s2{font-size:1.05rem;} .sizepick .s3{font-size:1.28rem;}
.themepick{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:4px;}
.theme-dot{width:16px;height:16px;border-radius:50%;margin-right:8px;border:1px solid var(--line);box-shadow:inset 0 0 0 4px var(--card);}
.theme-dot.roma{background:#7A5C1E;}
.theme-dot.wedding{background:#7F4F5A;}
.stack{display:flex;flex-direction:column;gap:10px;margin-top:14px;}

/* navegación */
.nav{
  position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;
  background:var(--card);border-top:1px solid var(--rule);
  padding-bottom:env(safe-area-inset-bottom,0px);
}
.nav button{
  flex:1 1 0;height:var(--nav-h);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
  color:var(--ink2);font-size:.72rem;font-weight:600;text-align:center;
}
.nav button.on{color:var(--gold);}
.nav .ico{width:23px;height:23px;display:block;}
.addbar{
  position:fixed;left:0;right:0;z-index:29;
  bottom:calc(var(--nav-h) + env(safe-area-inset-bottom,0px));
  padding:10px 16px 12px;background:linear-gradient(to top,var(--paper) 62%,transparent);
}
.addbar .btn{box-shadow:0 4px 16px rgba(43,34,22,.2);}
.install-pill{
  display:flex;align-items:center;justify-content:center;width:100%;min-height:38px;
  margin:0 0 8px;padding:8px 12px;border-radius:var(--r);
  background:var(--brand-soft);color:var(--gold);border:1.5px solid var(--rule);
  font-size:.9rem;font-weight:700;text-align:center;
}
.install-pill[hidden]{display:none;}

/* hoja */
.veil{position:fixed;inset:0;background:rgba(30,23,14,.5);z-index:40;display:none;}
.veil.on{display:block;}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:41;background:var(--paper);
  border-radius:16px 16px 0 0;max-height:90vh;max-height:90dvh;overflow-y:auto;
  padding:4px 16px calc(26px + env(safe-area-inset-bottom,0px));
  transform:translateY(100%);transition:transform .22s cubic-bezier(.2,.8,.2,1);display:none;
  border-top:1px solid var(--rule);
}
@media (min-width:860px){.sheet{max-width:600px;margin-inline:auto;border-radius:16px 16px 0 0;}}
.sheet.on{display:block;transform:translateY(0);}
@media (prefers-reduced-motion: reduce){.sheet{transition:none;}}
.grab{width:44px;height:5px;border-radius:99px;background:var(--line);margin:9px auto 16px;}
.sheet h3{margin:0 0 6px;font-size:1.55rem;font-weight:600;line-height:1.15;}
.sheet .note{font-size:.92rem;color:var(--ink2);margin:0 0 18px;line-height:1.45;}
.att{padding:12px 0;border-bottom:1px solid var(--line);font-size:1rem;}
.att small{color:var(--ink2);font-size:.82rem;}
.warn{background:var(--brand-soft);color:var(--gold);padding:12px 14px;border-radius:var(--r);font-size:.92rem;margin-bottom:16px;line-height:1.45;border:1px solid var(--rule);}

.toast{
  position:fixed;left:50%;transform:translateX(-50%) translateY(16px);
  bottom:calc(var(--nav-h) + 86px + env(safe-area-inset-bottom,0px));z-index:50;
  background:var(--ink);color:var(--paper);padding:12px 20px;border-radius:999px;font-size:.95rem;font-weight:500;
  opacity:0;pointer-events:none;transition:opacity .2s,transform .2s;max-width:90vw;text-align:center;
}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0);}
