:root{
  --lacre:#9E3A2F; --lacre-dark:#7E2D24; --gold:#D4AE72; --champ:#E8C99A;
  --ink:#2B2320; --soft:#5A4F48; --ivory:#FBF7F1; --linen:#F3ECE3; --line:#E6DACC;
  --ok:#4E7A5A; --wait:#C4943F; --no:#A39890;
  --serif:'Cormorant Garamond', Georgia, serif; --sans:'Jost', system-ui, sans-serif;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;overflow-x:clip}
body{margin:0;background:var(--linen);color:var(--ink);font:400 16px/1.55 var(--sans);overflow-x:clip}
h1,h2,h3{margin:0;font-weight:500}
p{margin:0}
button{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--champ);outline-offset:2px}
[hidden]{display:none!important}
.ico{width:20px;height:20px;flex:none;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

.ribbon{display:block;padding:9px 16px;background:var(--ink);color:#EFE6DC;text-align:center;font-size:13px;text-decoration:none}
.ribbon strong{color:var(--champ);font-weight:500}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 22px;border:0;border-radius:999px;background:var(--lacre);color:#fff;font:500 15px var(--sans);cursor:pointer;text-decoration:none;transition:background .2s,color .2s,box-shadow .2s}
.btn:hover{background:var(--lacre-dark)}
.btn[disabled]{background:#CDBFB2;cursor:default}
.btn--small{min-height:40px;padding:0 16px;font-size:14px}
.btn--ghost{background:#fff;color:var(--lacre);box-shadow:0 0 0 1px #D8CCBF inset}
.btn--ghost:hover{background:#fff;box-shadow:0 0 0 1px var(--lacre) inset}
.btn--ghost[disabled]{background:#fff;color:var(--soft)}
.link{border:0;background:none;padding:6px 2px;color:var(--lacre);font:500 14px var(--sans);cursor:pointer;text-decoration:underline;text-underline-offset:3px}

/* Cabecera */
.pn-top{display:flex;align-items:center;gap:14px;padding:14px 24px;background:var(--ivory);border-bottom:1px solid var(--line)}
.pn-logo img{display:block;width:34px;height:34px}
.pn-event{display:flex;flex-direction:column;min-width:0}
.pn-event b{font:500 22px/1.15 var(--serif)}
.pn-event span{font-size:13px;color:var(--soft);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pn-preview{margin-left:auto;display:inline-flex;align-items:center;gap:8px;min-height:40px;padding:0 14px;border-radius:999px;color:var(--lacre);text-decoration:none;font-weight:500;font-size:14px;box-shadow:0 0 0 1px #D8CCBF inset;white-space:nowrap}

/* Estructura */
.pn-layout{display:grid;grid-template-columns:220px minmax(0,1fr);max-width:1280px;margin:0 auto}
.pn-nav{position:sticky;top:0;align-self:start;display:flex;flex-direction:column;gap:4px;padding:24px 14px;height:100vh}
.pn-nav button{display:flex;align-items:center;gap:12px;min-height:46px;padding:0 14px;border:0;border-radius:12px;background:none;color:var(--soft);font-weight:500;cursor:pointer;text-align:left;transition:background .2s,color .2s}
.pn-nav button:hover{background:rgba(255,255,255,.5)}
.pn-nav button[aria-selected="true"]{background:#fff;color:var(--lacre);box-shadow:0 6px 16px -12px rgba(43,35,32,.5)}
.pn-main{min-width:0;padding:28px 28px 80px}
.pn-tab{animation:tab .35s ease}
@keyframes tab{from{opacity:0;transform:translateY(6px)}}

.pn-hello{margin-bottom:22px}
.pn-days{font-size:14px;color:var(--soft)}
.pn-days strong{font:600 18px var(--serif);color:var(--lacre)}
.pn-hello h1,.pn-title h1{font:500 clamp(34px,4.6vw,48px)/1.08 var(--serif);margin:4px 0 8px}
.pn-lead{color:var(--soft);max-width:640px}
.pn-title{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:6px}

.pn-block{background:var(--ivory);border-radius:22px;padding:22px;box-shadow:0 0 0 1px var(--line) inset;margin-bottom:16px;min-width:0}
.pn-head{display:flex;align-items:center;gap:10px;margin-bottom:14px}
.pn-head h2{font:600 24px/1.15 var(--serif)}
.pn-badge{display:inline-flex;align-items:center;justify-content:center;min-width:26px;height:26px;padding:0 8px;border-radius:999px;background:var(--lacre);color:#fff;font-size:13px;font-weight:500}
.pn-empty{display:flex;align-items:center;gap:10px;color:var(--soft);padding:6px 0}
.pn-empty .ico{color:var(--ok)}

/* Visto bueno */
.approvals{display:grid;gap:12px}
.appr{display:grid;grid-template-columns:auto minmax(0,1fr);gap:14px;padding:18px;border-radius:16px;background:#fff;box-shadow:0 0 0 1px var(--line) inset;transition:opacity .35s ease,transform .35s ease}
.appr.is-done{opacity:0;transform:translateX(24px)}
.appr__ico{display:flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:12px;background:#FBEDEA;color:var(--lacre)}
.appr h3{font-size:17px;font-weight:500;line-height:1.35}
.appr p{color:var(--soft);font-size:15px;margin-top:4px}
.appr blockquote{margin:12px 0 0;padding:12px 14px;border-left:3px solid var(--gold);border-radius:4px 12px 12px 4px;background:var(--ivory);font-size:15px;line-height:1.5;color:var(--ink);outline:none}
.appr blockquote[contenteditable="true"]{background:#fff;box-shadow:0 0 0 2px var(--champ)}
.appr__actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px}

/* Cifras */
.pn-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;margin-bottom:16px}
.stat{grid-column:span 2;background:var(--ivory);border-radius:22px;padding:20px;box-shadow:0 0 0 1px var(--line) inset;min-width:0}
.stat--rsvp{grid-row:span 2;display:flex;flex-direction:column}
.stat h3{font-size:14px;font-weight:500;color:var(--soft);margin-bottom:12px}
.ring{position:relative;width:min(190px,100%);aspect-ratio:1;margin:6px auto 16px}
.ring svg{width:100%;height:100%;transform:rotate(-90deg)}
.ring circle{fill:none;stroke-width:11}
.ring__bg{stroke:#EADFD2}
.ring__fg{stroke:var(--ok);stroke-linecap:round;transition:stroke-dashoffset 1.4s cubic-bezier(.2,.8,.2,1)}
.ring > div{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center}
.ring strong{font:600 46px/1 var(--serif);font-variant-numeric:lining-nums}
.ring span{font-size:13px;color:var(--soft)}
.legend{list-style:none;margin:auto 0 0;padding:0;display:grid;gap:8px}
.legend li{display:flex;align-items:center;gap:10px;font-size:15px}
.legend b{margin-left:auto;font-weight:500}
.legend i{width:10px;height:10px;border-radius:50%}
.c-yes{background:var(--ok)}.c-wait{background:var(--wait)}.c-no{background:var(--no)}
.bars{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.bars li{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"t n" "b b";gap:4px 10px;font-size:15px}
.bars span{grid-area:t;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bars b{grid-area:n;font-weight:500}
.bars i{grid-area:b;display:block;height:6px;border-radius:9px;background:#EADFD2;position:relative;overflow:hidden}
.bars i::after{content:"";position:absolute;inset:0 auto 0 0;width:var(--w);border-radius:inherit;background:linear-gradient(90deg,var(--lacre),#C0594B);animation:grow 1.2s cubic-bezier(.2,.8,.2,1) both}
.bars--plain i::after{background:var(--gold)}
@keyframes grow{from{width:0}}
.tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px}
.tags li{padding:6px 12px;border-radius:999px;background:#fff;box-shadow:0 0 0 1px var(--line) inset;font-size:14px}
.tags b{color:var(--lacre);font-weight:500;margin-left:2px}
.stat__foot{display:flex;align-items:center;gap:8px;margin-top:14px;font-size:13px;color:var(--soft)}
.stat__foot .ico{width:16px;height:16px;color:var(--ok)}
.big{font:600 42px/1 var(--serif);color:var(--lacre);font-variant-numeric:lining-nums}
.stat__sub{font-size:14px;color:var(--soft);margin:6px 0 8px}

/* Actividad */
.pn-cols{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:16px}
.feed,.next{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.feed li,.next li{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:12px;padding:10px 4px;border-bottom:1px solid var(--line)}
.feed li:last-child,.next li:last-child{border-bottom:0}
.feed p,.next p{font-size:15px;line-height:1.45}
.feed b{font-weight:500}
.feed time{font-size:13px;color:var(--soft);white-space:nowrap}
.feed li.is-new{animation:flash 1.6s ease}
@keyframes flash{0%{background:#FBEDEA}100%{background:transparent}}
.feed__ico{display:flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:10px;background:#fff;color:var(--lacre);box-shadow:0 0 0 1px var(--line) inset}
.feed__ico .ico{width:17px;height:17px}
.next small{display:block;font-size:13px;color:var(--soft);margin-top:2px}
.next li.is-paused p,.next li.is-paused small{opacity:.45;text-decoration:line-through}

/* Invitados */
.g-tools{display:grid;gap:12px;margin:18px 0 14px}
.g-tools input{width:100%;min-height:48px;padding:10px 16px;border:1px solid #D8CCBF;border-radius:999px;background:#fff;font:400 16px var(--sans);color:var(--ink)}
.g-tools input:focus{outline:none;border-color:var(--lacre);box-shadow:0 0 0 3px rgba(158,58,47,.12)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chips button{min-height:38px;padding:0 14px;border:1px solid #D8CCBF;border-radius:999px;background:#fff;font-size:14px;cursor:pointer;transition:all .2s}
.chips button[aria-pressed="true"]{background:var(--ink);border-color:var(--ink);color:#fff}
.g-list{display:grid;gap:8px}
.guest{background:#fff;border-radius:14px;box-shadow:0 0 0 1px var(--line) inset}
.guest summary{display:flex;align-items:center;gap:12px;padding:14px 16px;cursor:pointer;list-style:none}
.guest summary::-webkit-details-marker{display:none}
.guest__name{display:flex;flex-direction:column;min-width:0;flex:1}
.guest__name b{font-weight:500}
.guest__name small{font-size:13px;color:var(--soft)}
.guest dl{display:flex;flex-wrap:wrap;gap:10px 24px;margin:0;padding:0 16px 4px}
.guest dt{font-size:12px;color:var(--soft)}
.guest dd{margin:0;font-size:15px}
.guest__note{display:flex;gap:8px;margin:10px 16px 0;padding:10px 12px;border-radius:10px;background:var(--ivory);font-size:14px;color:var(--soft)}
.guest__note .ico{width:16px;height:16px;color:var(--gold);margin-top:2px}
.guest .btn{margin:12px 16px 0}
.guest[open]{padding-bottom:14px}
.pill{flex:none;padding:4px 10px;border-radius:999px;font-size:13px;font-weight:500;white-space:nowrap}
.pill--si{background:#E5EFE6;color:var(--ok)}
.pill--pend{background:#F7ECD8;color:#8A6420}
.pill--no{background:#EEEAE6;color:#6E6660}

/* Mesas */
.proposal{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;padding:18px;border-radius:18px;background:#fff;box-shadow:0 0 0 1px var(--line) inset;margin:16px 0 18px}
.proposal > .ico{color:var(--gold);width:26px;height:26px}
.proposal b{font-weight:500}
.proposal p{font-size:14px;color:var(--soft);margin-top:2px}
.proposal.is-ok{box-shadow:0 0 0 1px var(--ok) inset}
.tables{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:14px}
.tbl{background:var(--ivory);border-radius:18px;padding:18px 14px;text-align:center;box-shadow:0 0 0 1px var(--line) inset}
.tbl__round{position:relative;width:96px;aspect-ratio:1;margin:0 auto 10px;border-radius:50%;background:#fff;box-shadow:0 0 0 1px var(--line) inset}
.tbl__round i{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--gold)}
.tbl__round b{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font:600 24px var(--serif);color:var(--lacre)}
.tbl h3{font-size:15px;font-weight:500}
.tbl p{font-size:13px;color:var(--soft);line-height:1.35;margin-top:2px}

/* Regalos */
.gift-sum{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0 14px}
.gift-sum div{background:var(--ivory);border-radius:18px;padding:16px;box-shadow:0 0 0 1px var(--line) inset}
.gift-sum span{display:block;font-size:13px;color:var(--soft)}
.gift-sum strong{font:600 30px/1.1 var(--serif);color:var(--lacre)}
.gifts{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:8px}
.gifts li{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:#fff;box-shadow:0 0 0 1px var(--line) inset}
.gifts b{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gifts small{font-size:13px;color:var(--soft)}
.gifts strong{font:600 20px var(--serif)}

/* Asistente */
.chat{display:flex;flex-direction:column;gap:8px;max-height:340px;overflow-y:auto;padding:4px 2px 10px}
.msg{max-width:85%;padding:10px 14px;border-radius:16px;font-size:15px;line-height:1.45}
.msg--ai{align-self:flex-start;background:#fff;box-shadow:0 0 0 1px var(--line) inset;border-bottom-left-radius:4px}
.msg--ai b{color:var(--lacre);font-weight:500}
.msg--me{align-self:flex-end;background:var(--lacre);color:#fff;border-bottom-right-radius:4px}
.is-typing{display:flex;gap:4px}
.is-typing i{width:7px;height:7px;border-radius:50%;background:#CDBFB2;animation:dot 1s infinite}
.is-typing i:nth-child(2){animation-delay:.15s}.is-typing i:nth-child(3){animation-delay:.3s}
@keyframes dot{50%{transform:translateY(-4px);background:var(--lacre)}}
.ask{display:flex;gap:8px;margin-top:6px}
.ask input{flex:1;min-width:0;min-height:46px;padding:10px 16px;border:1px solid #D8CCBF;border-radius:999px;background:#fff;font:400 16px var(--sans)}
.ask input:focus{outline:none;border-color:var(--lacre);box-shadow:0 0 0 3px rgba(158,58,47,.12)}
.chips--sug{margin-top:10px}
.chips--sug button{font-size:13px;min-height:34px}
.rules{display:grid;gap:8px}
.rule{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px 14px;border-radius:14px;background:#fff;box-shadow:0 0 0 1px var(--line) inset}
.rule__t b{display:block;font-weight:500;font-size:15px}
.rule__t small{font-size:13px;color:var(--soft)}
.seg{display:flex;gap:2px;padding:3px;border-radius:12px;background:var(--linen)}
.seg label{cursor:pointer}
.seg input{position:absolute;opacity:0;pointer-events:none}
.seg span{display:block;padding:7px 10px;border-radius:9px;font-size:13px;font-weight:500;color:var(--soft);white-space:nowrap;transition:all .2s}
.seg input:checked + span{background:#fff;color:var(--lacre);box-shadow:0 4px 12px -8px rgba(43,35,32,.5)}
.seg input[value="off"]:checked + span{color:var(--ink)}
.seg input:focus-visible + span{outline:3px solid var(--champ)}
.style-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}
.opt{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500;min-width:0}
.opt select,.opt input{width:100%;min-height:46px;padding:8px 12px;border:1px solid #D8CCBF;border-radius:10px;background:#fff;font:400 15px var(--sans);color:var(--ink)}
.note{display:flex;gap:10px;margin-top:14px;font-size:14px;color:var(--soft)}
.note .ico{width:18px;height:18px;margin-top:2px}

.toast{position:fixed;left:50%;bottom:24px;z-index:80;max-width:min(92vw,460px);padding:12px 18px;border-radius:14px;background:var(--ink);color:#fff;font-size:14px;box-shadow:0 16px 30px -14px rgba(0,0,0,.5);transform:translate(-50%,140%);opacity:0;transition:transform .35s cubic-bezier(.2,.8,.2,1),opacity .35s}
.toast.is-on{transform:translate(-50%,0);opacity:1}

@media (max-width:1100px){
  .pn-stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat,.stat--rsvp{grid-column:span 1;grid-row:auto}
  .pn-cols{grid-template-columns:1fr}
}
@media (max-width:860px){
  .pn-layout{grid-template-columns:1fr}
  .pn-nav{position:fixed;top:auto;bottom:0;left:0;right:0;z-index:60;height:auto;flex-direction:row;justify-content:space-around;gap:0;padding:6px 6px calc(6px + env(safe-area-inset-bottom));background:rgba(251,247,241,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 -1px 0 var(--line)}
  .pn-nav button{flex:1;flex-direction:column;gap:2px;min-height:54px;padding:4px;font-size:11px;justify-content:center;border-radius:12px}
  .pn-nav button[aria-selected="true"]{box-shadow:none;background:#fff}
  .pn-main{padding:20px 16px 110px}
  .toast{bottom:84px}
  .style-grid{grid-template-columns:1fr}
  .rule{grid-template-columns:auto minmax(0,1fr)}
  .rule .seg{grid-column:1 / -1}
  .seg{width:100%}
  .seg label{flex:1}
  .seg span{text-align:center;padding:8px 4px;white-space:normal}
}
@media (max-width:620px){
  .pn-top{padding:12px 16px}
  .pn-event b{font-size:19px}
  .pn-preview span{display:none}
  .pn-preview{padding:0 11px}
  .pn-block{padding:18px 16px;border-radius:18px}
  .pn-stats{grid-template-columns:1fr}
  .appr{grid-template-columns:1fr;padding:16px}
  .appr__ico{width:36px;height:36px}
  .proposal{grid-template-columns:auto minmax(0,1fr)}
  .proposal .btn{grid-column:1 / -1}
  .gift-sum{grid-template-columns:1fr 1fr}
  .gift-sum div:last-child{grid-column:1 / -1}
  .gifts li{grid-template-columns:auto minmax(0,1fr) auto}
  .gifts .pill{grid-column:2 / -1;justify-self:start}
  .tables{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (prefers-reduced-motion:reduce){
  *{animation:none!important;transition-duration:.01ms!important}
}
