:root{
  --bg:#faf8f5;--card:#fff;--ink:#1d1a17;--ink2:#4a443d;--muted:#8d857a;--line:#ece6dc;--line2:#ddd4c6;
  --taupe:#cdbfa9;--taupe-d:#9a8668;--taupe-bg:#f4efe6;
  --ok:#5d7f64;--ok-bg:#e8efe8;--warn:#a9782e;--warn-bg:#f6ecd8;--bad:#a2514d;--bad-bg:#f5e6e4;--blue:#5b6f8c;--blue-bg:#e6ebf2;
  --serif:"Jost","Helvetica Neue",-apple-system,"Segoe UI",sans-serif;--sans:"Jost","Helvetica Neue",-apple-system,"Segoe UI",sans-serif;
  --r:10px;--shadow:0 1px 2px rgba(60,45,25,.04),0 8px 28px -12px rgba(60,45,25,.14)
}
*{box-sizing:border-box}
html{-webkit-font-smoothing:antialiased}
body{margin:0;font:400 14.5px/1.5 var(--sans);background:var(--bg);color:var(--ink);display:flex;min-height:100vh;letter-spacing:.005em}
h1,h2,h3{font-family:var(--serif);font-weight:300;margin:0;letter-spacing:.01em}
h1{font-size:40px;line-height:1.1;font-weight:300;letter-spacing:.02em}
h2{font-size:20px;font-weight:400;letter-spacing:.02em}h3{font-size:16px;font-weight:400}
a{color:var(--taupe-d);text-decoration:none}a:hover{color:var(--ink)}
.eyebrow{font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--taupe-d);margin-bottom:8px;font-weight:500}

/* sidebar */
#side{width:248px;background:#fff;border-right:1px solid var(--line);padding:30px 18px 22px;position:sticky;top:0;height:100vh;flex-shrink:0;display:flex;flex-direction:column}
.brand{display:block;padding:0 8px 26px;margin-bottom:18px;border-bottom:1px solid var(--line)}
.brand img{width:100%;display:block}
#nav a{display:flex;gap:13px;align-items:center;padding:10px 14px;border-radius:8px;color:var(--ink2);margin-bottom:2px;cursor:pointer;font-weight:400;letter-spacing:.03em;transition:.15s}
#nav a .i{width:18px;height:18px;color:var(--taupe-d)}
#nav a:hover{background:var(--taupe-bg);color:var(--ink)}
#nav a.on{background:var(--ink);color:#fff}#nav a.on .i{color:var(--taupe)}
.saved{margin-top:auto;font-size:12px;color:var(--muted);padding:0 10px;min-height:18px}
.side-foot{font-size:10.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--taupe);padding:10px 10px 0;border-top:1px solid var(--line);margin-top:10px}

main{flex:1;padding:44px 52px 80px;max-width:1280px;min-width:0}
.head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:30px;flex-wrap:wrap}

/* cards */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:26px;margin-bottom:20px}
.card>h2,.card>.ch{margin-bottom:16px}
.card.click{cursor:pointer;transition:.18s}.card.click:hover{box-shadow:var(--shadow);border-color:var(--line2);transform:translateY(-1px)}
.ch{display:flex;justify-content:space-between;align-items:center;gap:10px}
.ch h2{margin:0}
.grid{display:grid;gap:18px}.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}

/* forms */
label{display:block;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe-d);margin-bottom:6px;font-weight:500}
input,select,textarea{width:100%;padding:10px 12px;border:1px solid var(--line2);border-radius:7px;font:inherit;background:#fff;color:var(--ink);transition:.15s}
input:hover,select:hover,textarea:hover{border-color:var(--taupe)}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--taupe-d);box-shadow:0 0 0 3px rgba(205,191,169,.35)}
input[type=checkbox]{width:16px;height:16px;padding:0;accent-color:var(--ink);vertical-align:-3px;margin-right:6px}
label:has(input[type=checkbox]){text-transform:none;letter-spacing:.01em;font-size:13.5px;color:var(--ink2);font-weight:400}
textarea{min-height:80px;resize:vertical}
select{appearance:none;background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%239a8668' stroke-width='1.4'/%3E%3C/svg%3E") no-repeat right 12px center;padding-right:32px}

/* buttons */
.btn{display:inline-flex;gap:8px;align-items:center;justify-content:center;border:1px solid var(--line2);background:#fff;padding:9px 16px;border-radius:7px;cursor:pointer;font:inherit;font-weight:400;letter-spacing:.03em;color:var(--ink);white-space:nowrap;transition:.15s}
.btn:hover{border-color:var(--ink);color:var(--ink)}
.btn.pri{background:var(--ink);border-color:var(--ink);color:#fff}.btn.pri:hover{background:var(--taupe-d);border-color:var(--taupe-d);color:#fff}
.btn.sm{padding:5px 11px;font-size:12.5px}.btn.del{color:var(--bad)}.btn.del:hover{border-color:var(--bad);color:var(--bad)}
.btn.ghost{border-color:transparent;background:transparent;color:var(--muted)}.btn.ghost:hover{background:var(--taupe-bg);border-color:transparent;color:var(--ink)}
.btn.ghost.del{color:var(--bad)}
.btn:disabled{opacity:.5;pointer-events:none}

/* badges */
.badge{display:inline-block;padding:3px 10px;border-radius:99px;font-size:10.5px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;background:var(--taupe-bg);color:var(--taupe-d);white-space:nowrap}
.b-consulta{background:#efece6;color:#7b746a}.b-presupuesto{background:var(--warn-bg);color:var(--warn)}.b-confirmada{background:var(--ok-bg);color:var(--ok)}.b-realizada{background:var(--blue-bg);color:var(--blue)}.b-cancelada{background:var(--bad-bg);color:var(--bad)}
.s-pendiente{background:#efece6;color:#7b746a}.s-disponible{background:var(--ok-bg);color:var(--ok)}.s-no{background:var(--bad-bg);color:var(--bad)}.s-confirmado{background:var(--ok);color:#fff}
select.s-pendiente,select.s-disponible,select.s-no,select.s-confirmado{border-color:transparent;font-weight:500}

/* tables */
table{width:100%;border-collapse:collapse}
th{text-align:left;font-size:10.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe-d);font-weight:500;padding:0 12px 12px;border-bottom:1px solid var(--line2)}
td{padding:14px 12px;border-bottom:1px solid var(--line);vertical-align:middle}
tr:last-child td{border-bottom:none}
tr.click{cursor:pointer;transition:.12s}tr.click:hover{background:#fcfaf6}
td b{font-weight:500}

/* stats */
.stat{padding:24px;background:var(--card);border:1px solid var(--line);border-radius:var(--r);position:relative;overflow:hidden}
.stat::before{content:"";position:absolute;left:0;top:22px;bottom:22px;width:2px;background:var(--taupe)}
.stat b{display:block;font:300 42px/1 var(--serif);margin-bottom:8px}.stat span{color:var(--muted);font-size:11px;letter-spacing:.16em;text-transform:uppercase}
.muted{color:var(--muted)}.small{font-size:12.5px}.right{text-align:right}
.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.sp{flex:1}
.chips{display:flex;gap:5px;flex-wrap:wrap}
.alert{background:var(--warn-bg);border-radius:8px;padding:11px 14px;margin-bottom:8px;display:flex;gap:10px;align-items:center;color:var(--ink2)}
.alert .i{color:var(--warn);flex-shrink:0}
.alert.bad{background:var(--bad-bg)}.alert.bad .i{color:var(--bad)}
.alert a{font-weight:500;color:var(--ink);border-bottom:1px solid var(--taupe)}

/* tabs */
.tabs{display:flex;gap:30px;border-bottom:1px solid var(--line2);margin-bottom:26px;overflow:auto}
.tabs a{padding:12px 2px;cursor:pointer;color:var(--muted);border-bottom:2px solid transparent;white-space:nowrap;letter-spacing:.04em;margin-bottom:-1px}
.tabs a:hover{color:var(--ink)}.tabs a.on{color:var(--ink);border-color:var(--ink);font-weight:500}

/* wedding hero */
.hero{display:flex;gap:26px;align-items:center;margin-bottom:28px;flex-wrap:wrap}
.datebox{width:92px;height:104px;border:1px solid var(--line2);border-radius:var(--r);background:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;flex-shrink:0}
.datebox b{font:300 44px/1 var(--serif)}.datebox span{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--taupe-d);margin-top:4px}
.back{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted);display:inline-block;margin-bottom:10px}

/* modal */
.modal{position:fixed;inset:0;background:rgba(29,26,23,.4);backdrop-filter:blur(4px);display:flex;align-items:flex-start;justify-content:center;padding:7vh 16px;overflow:auto;z-index:20}
.modal.hidden,.toast.hidden{display:none}
.modal>div{background:#fff;border-radius:14px;padding:30px;width:min(680px,100%);box-shadow:0 30px 80px -20px rgba(29,26,23,.4)}
.toast{position:fixed;bottom:28px;left:50%;transform:translateX(-50%);background:var(--ink);color:#fff;padding:12px 22px;border-radius:99px;z-index:30;letter-spacing:.02em;box-shadow:var(--shadow)}

/* calendar */
.cal{display:grid;grid-template-columns:repeat(7,1fr);border:1px solid var(--line);border-radius:var(--r);overflow:hidden;background:#fff}
.cal>div{min-height:112px;padding:8px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.cal>div:nth-child(7n){border-right:none}
.cal .dh{min-height:0;padding:12px;font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--taupe-d);text-align:center;background:var(--bg)}
.cal .dn{font-size:13px;color:var(--ink2)}.cal .today .dn{color:#fff;background:var(--ink);border-radius:99px;display:inline-block;min-width:22px;text-align:center}
.cal .out{background:#fcfbf9}.cal .out .dn{color:var(--line2)}
.ev{display:block;font-size:11.5px;padding:3px 7px;border-radius:4px;margin-top:4px;cursor:pointer;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-left:2px solid currentColor}
.calnav{font:300 24px var(--serif);letter-spacing:.04em;min-width:190px;text-align:center}

/* files */
.part{display:inline-flex;gap:6px;align-items:center;background:var(--taupe-bg);border-radius:6px;padding:4px 6px 4px 10px;font-size:12.5px;margin:3px 6px 3px 0}
.part select{width:auto;padding:1px 22px 1px 4px;font-size:12px;border:none;background-color:transparent;box-shadow:none;background-position:right 6px center}
.part a{color:var(--ink)}.part button{border:none;background:none;cursor:pointer;color:var(--bad);font-size:14px}
.drop{border:1.5px dashed var(--taupe);border-radius:var(--r);padding:26px;text-align:center;color:var(--muted);cursor:pointer;transition:.15s;background:#fdfcfa}
.drop:hover,.drop.over{border-color:var(--taupe-d);background:var(--taupe-bg)}
.pick{max-height:320px;overflow:auto;border:1px solid var(--line);border-radius:8px;margin-top:12px}
.pick div{padding:11px 14px;border-bottom:1px solid var(--line);display:flex;gap:10px;align-items:center;cursor:pointer}.pick div:last-child{border:none}.pick div:hover{background:var(--taupe-bg)}
.warn{color:var(--warn)}.ok{color:var(--ok)}.bad{color:var(--bad)}
.task{display:flex;gap:10px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.task:last-of-type{border:none}
.task.done span{text-decoration:line-through;color:var(--muted)}
.member-card{display:flex;gap:16px;align-items:flex-start}
.avatar{width:50px;height:50px;border-radius:50%;background:var(--taupe-bg);color:var(--taupe-d);display:flex;align-items:center;justify-content:center;font:300 22px var(--serif);flex-shrink:0;border:1px solid var(--line2)}
.empty{text-align:center;padding:36px 10px;color:var(--muted)}
.empty img{width:150px;opacity:.55;margin-bottom:12px}

/* icons (mask) */
.i{display:inline-block;width:1.1em;height:1.1em;background:currentColor;-webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat;vertical-align:-.2em;flex-shrink:0}

}

.i-warn{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%203%202.5%2020h19L12%203z%27%2F%3E%3Cpath%20d%3D%27M12%2010v4M12%2017.2v.1%27%2F%3E%3C%2Fsvg%3E")}
.i-cal{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%273.5%27%20y%3D%275%27%20width%3D%2717%27%20height%3D%2715%27%20rx%3D%272%27%2F%3E%3Cpath%20d%3D%27M3.5%2010h17M8%203v4M16%203v4%27%2F%3E%3C%2Fsvg%3E")}
.i-ring{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2714.5%27%20r%3D%276%27%2F%3E%3Cpath%20d%3D%27M9%204.5%2012%208l3-3.5-1.5-1.5h-3z%27%2F%3E%3C%2Fsvg%3E")}
.i-music{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M9%2018V5l11-2v13%27%2F%3E%3Ccircle%20cx%3D%276.5%27%20cy%3D%2718%27%20r%3D%272.5%27%2F%3E%3Ccircle%20cx%3D%2717.5%27%20cy%3D%2716%27%20r%3D%272.5%27%2F%3E%3C%2Fsvg%3E")}
.i-users{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%279%27%20cy%3D%278%27%20r%3D%273.5%27%2F%3E%3Cpath%20d%3D%27M2.5%2020c.5-4%203-6%206.5-6s6%202%206.5%206%27%2F%3E%3Cpath%20d%3D%27M16%204.7a3.5%203.5%200%200%201%200%206.6M18%2014.3c2%20.8%203.2%202.6%203.5%205.7%27%2F%3E%3C%2Fsvg%3E")}
.i-gear{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%2712%27%20r%3D%273%27%2F%3E%3Cpath%20d%3D%27M12%202.5v3M12%2018.5v3M2.5%2012h3M18.5%2012h3M5.3%205.3l2.1%202.1M16.6%2016.6l2.1%202.1M5.3%2018.7l2.1-2.1M16.6%207.4l2.1-2.1%27%2F%3E%3C%2Fsvg%3E")}
.i-grid{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%273.5%27%20y%3D%273.5%27%20width%3D%277%27%20height%3D%277%27%20rx%3D%271.5%27%2F%3E%3Crect%20x%3D%2713.5%27%20y%3D%273.5%27%20width%3D%277%27%20height%3D%277%27%20rx%3D%271.5%27%2F%3E%3Crect%20x%3D%273.5%27%20y%3D%2713.5%27%20width%3D%277%27%20height%3D%277%27%20rx%3D%271.5%27%2F%3E%3Crect%20x%3D%2713.5%27%20y%3D%2713.5%27%20width%3D%277%27%20height%3D%277%27%20rx%3D%271.5%27%2F%3E%3C%2Fsvg%3E")}
.i-plus{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%205v14M5%2012h14%27%2F%3E%3C%2Fsvg%3E")}
.i-down{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%204v11M7%2010.5l5%205%205-5M5%2020h14%27%2F%3E%3C%2Fsvg%3E")}
.i-up{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2016V5M7%209.5l5-5%205%205M5%2020h14%27%2F%3E%3C%2Fsvg%3E")}
.i-folder{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M3%207a2%202%200%200%201%202-2h4l2%202.5h8a2%202%200%200%201%202%202V18a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2V7z%27%2F%3E%3C%2Fsvg%3E")}
.i-mail{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%273%27%20y%3D%275.5%27%20width%3D%2718%27%20height%3D%2713%27%20rx%3D%272%27%2F%3E%3Cpath%20d%3D%27m3.5%207%208.5%206.5L20.5%207%27%2F%3E%3C%2Fsvg%3E")}
.i-chat{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M4%205h16v11H9l-5%204V5z%27%2F%3E%3C%2Fsvg%3E")}
.i-pin{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M12%2021s7-6.1%207-11.5A7%207%200%200%200%205%209.5C5%2014.9%2012%2021%2012%2021z%27%2F%3E%3Ccircle%20cx%3D%2712%27%20cy%3D%279.5%27%20r%3D%272.5%27%2F%3E%3C%2Fsvg%3E")}
.i-file{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M6%203h8l5%205v13H6V3z%27%2F%3E%3Cpath%20d%3D%27M14%203v5h5%27%2F%3E%3C%2Fsvg%3E")}
.i-euro{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%27M17%206.5A6.5%206.5%200%201%200%2017%2017.5M4%2010.5h9M4%2013.5h9%27%2F%3E%3C%2Fsvg%3E")}
.stat b,.datebox b,.calnav,h1,h2{font-variant-numeric:lining-nums}
.tabs{overflow-x:auto;overflow-y:hidden;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.card .chips+table{margin-top:18px}

.i-globe{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22M3%2012h18M12%203c2.8%202.5%204%205.5%204%209s-1.2%206.5-4%209c-2.8-2.5-4-5.5-4-9s1.2-6.5%204-9z%22%2F%3E%3C%2Fsvg%3E")}
.i-play{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22%2F%3E%3Cpath%20d%3D%22m10%208.5%205.5%203.5-5.5%203.5z%22%2F%3E%3C%2Fsvg%3E")}
.i-link{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%22M10%2014a4%204%200%200%200%205.6%200l3-3a4%204%200%200%200-5.6-5.6l-1%201M14%2010a4%204%200%200%200-5.6%200l-3%203a4%204%200%200%200%205.6%205.6l1-1%22%2F%3E%3C%2Fsvg%3E")}
.i-image{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%223.5%22%20y%3D%224.5%22%20width%3D%2217%22%20height%3D%2215%22%20rx%3D%222%22%2F%3E%3Ccircle%20cx%3D%229%22%20cy%3D%2210%22%20r%3D%221.5%22%2F%3E%3Cpath%20d%3D%22m4%2018%205-5%204%204%203-3%204%204%22%2F%3E%3C%2Fsvg%3E")}
.i-copy{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Crect%20x%3D%228.5%22%20y%3D%228.5%22%20width%3D%2211%22%20height%3D%2211%22%20rx%3D%222%22%2F%3E%3Cpath%20d%3D%22M15.5%208.5V6a2%202%200%200%200-2-2H6a2%202%200%200%200-2%202v7.5a2%202%200%200%200%202%202h2.5%22%2F%3E%3C%2Fsvg%3E")}
.i-trash{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%22M4%207h16M9%207V4.5h6V7M6.5%207l1%2013h9l1-13%22%2F%3E%3C%2Fsvg%3E")}

/* portal admin */
.pgrid{display:grid;grid-template-columns:minmax(0,1fr) 440px;gap:26px;align-items:start}
.pprev{position:sticky;top:20px}
.pprev .frame{border:1px solid var(--line2);border-radius:14px;overflow:hidden;background:#fff;height:calc(100vh - 150px);min-height:480px}
.pprev iframe{width:100%;height:100%;border:0;display:block}
.pprev.mobile .frame{width:390px;max-width:100%;margin:0 auto}
.seg{display:inline-flex;border:1px solid var(--line2);border-radius:7px;overflow:hidden}.seg a{padding:5px 12px;cursor:pointer;font-size:12.5px;color:var(--muted)}.seg a.on{background:var(--ink);color:#fff}
.litem{border:1px solid var(--line);border-radius:8px;padding:14px;margin-bottom:12px;background:#fdfcfa}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px}
.gal .g{position:relative;border:1px solid var(--line);border-radius:8px;overflow:hidden;background:#fff}
.gal .g .th{aspect-ratio:1;background:var(--taupe-bg) center/cover;display:flex;align-items:center;justify-content:center;color:var(--taupe-d)}
.gal .g .bar{display:flex;justify-content:space-between;padding:4px 6px}
.nbadge{background:var(--taupe-d);color:#fff;border-radius:99px;font-size:10px;padding:1px 7px;margin-left:auto}
#nav a .nbadge{letter-spacing:0}
@media(max-width:1180px){.pgrid{grid-template-columns:1fr}.pprev{position:static}}

.hidden{display:none!important}
.me{padding:12px 10px 0;margin-top:8px;border-top:1px solid var(--line);font-size:13px}.me b{display:block;font-weight:500;color:var(--ink)}.me span{font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe-d)}
.login{position:fixed;inset:0;background:var(--bg);display:flex;align-items:center;justify-content:center;z-index:100;text-align:center;padding:24px}
.login img{width:min(320px,80vw);margin:0 auto 10px}.login p{color:var(--taupe-d);letter-spacing:.22em;text-transform:uppercase;font-size:11px;margin:0 0 34px}.login small{display:block;margin-top:22px;color:var(--muted);max-width:300px;margin-inline:auto}

.i-more{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Ccircle%20cx%3D%225%22%20cy%3D%2212%22%20r%3D%221.6%22%2F%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%221.6%22%2F%3E%3Ccircle%20cx%3D%2219%22%20cy%3D%2212%22%20r%3D%221.6%22%2F%3E%3C%2Fsvg%3E")}
.i-back{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%22M15%205l-7%207%207%207%22%2F%3E%3C%2Fsvg%3E")}
.i-chevron{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%22M9%205l7%207-7%207%22%2F%3E%3C%2Fsvg%3E")}
.i-logout{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20viewBox%3D%270%200%2024%2024%27%20fill%3D%27none%27%20stroke%3D%27black%27%20stroke-width%3D%271.5%27%20stroke-linecap%3D%27round%27%20stroke-linejoin%3D%27round%27%3E%3Cpath%20d%3D%22M10%204H5v16h5M15%208l4%204-4%204M19%2012H9%22%2F%3E%3C%2Fsvg%3E")}

/* ============================================================
   MÓVIL
   ============================================================ */
#topbar,.sheet-link,.agenda{display:none}
@media(max-width:900px){
  :root{--tb:calc(54px + env(safe-area-inset-top));--nav:calc(64px + env(safe-area-inset-bottom))}
  html{-webkit-text-size-adjust:100%}
  body{display:block;font-size:15px;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}
  a,button,select,input,[data-go]{touch-action:manipulation}

  /* barra superior */
  #topbar{display:flex;position:fixed;top:0;left:0;right:0;z-index:30;height:var(--tb);padding:env(safe-area-inset-top) 12px 0;align-items:center;gap:10px;background:rgba(250,248,245,.92);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);border-bottom:1px solid var(--line)}
  #topbar .tb-back{width:40px;height:40px;border-radius:50%;border:0;background:transparent;color:var(--ink);display:none;align-items:center;justify-content:center;margin-left:-6px}
  #topbar .tb-back .i{width:24px;height:24px}
  #topbar.has-back .tb-back{display:flex}#topbar.has-back .tb-logo{display:none}
  #topbar .tb-logo{width:30px;height:30px;border-radius:8px}
  #topbar .tb-title{font:300 21px var(--serif);letter-spacing:.03em;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  #topbar .tb-state{font-size:11px;color:var(--muted);letter-spacing:.04em}

  /* barra inferior */
  #side{position:fixed;top:auto;bottom:0;left:0;right:0;width:100%;height:auto;flex-direction:row;padding:0;border:0;border-top:1px solid var(--line);background:rgba(255,255,255,.94);backdrop-filter:saturate(1.4) blur(14px);-webkit-backdrop-filter:saturate(1.4) blur(14px);z-index:30}
  .brand,.side-foot,.saved,.me{display:none}
  #nav{display:flex;width:100%;padding:6px 6px calc(6px + env(safe-area-inset-bottom))}
  #nav a{flex:1;position:relative;flex-direction:column;justify-content:center;gap:3px;min-height:52px;padding:6px 2px;margin:0;border-radius:12px;font-size:10.5px;letter-spacing:.02em;background:none!important;color:var(--muted);text-align:center;line-height:1.1}
  #nav a .i{width:23px;height:23px;color:var(--muted)}
  #nav a.on{color:var(--ink);font-weight:500}#nav a.on .i{color:var(--ink)}
  #nav a.on::before{content:"";position:absolute;top:-7px;left:30%;right:30%;height:2px;border-radius:2px;background:var(--ink)}
  #nav .nbadge{position:absolute;top:2px;left:calc(50% + 6px);margin:0;min-width:16px;height:16px;padding:0 4px;display:flex;align-items:center;justify-content:center;font-size:10px}

  main{padding:calc(var(--tb) + 16px) 16px calc(var(--nav) + 28px);max-width:none}
  h1{font-size:30px}h2{font-size:19px}
  .eyebrow{font-size:10px;letter-spacing:.24em;margin-bottom:4px}
  .head{margin-bottom:18px;gap:10px}
  .head h1{font-size:28px}
  .head .row{width:100%}
  /* botón principal flotante */
  .head>.btn.pri{position:fixed;right:16px;bottom:calc(var(--nav) + 14px);z-index:25;border-radius:99px;padding:0 22px;min-height:52px;box-shadow:0 10px 28px -8px rgba(29,26,23,.55);font-size:14.5px}

  /* tarjetas y rejillas */
  .card{padding:18px 16px;border-radius:14px;margin-bottom:14px}
  .card>h2,.card>.ch{margin-bottom:12px}
  .grid{gap:14px}.g2,.g3{grid-template-columns:1fr}.g4{grid-template-columns:1fr 1fr;gap:10px}
  .stat{padding:16px 14px}.stat b{font-size:32px}.stat span{font-size:10px;letter-spacing:.12em;line-height:1.3;display:block}
  .stat::before{top:16px;bottom:16px}
  .alert{display:block;padding:12px 14px;font-size:14px;line-height:1.5}
  .alert .i{float:left;margin:3px 10px 0 0}
  [data-filter]{max-width:none!important}

  /* formularios táctiles */
  input,select,textarea{font-size:16px;min-height:48px;padding:12px 14px;border-radius:10px}
  textarea{min-height:110px}
  input[type=checkbox]{width:22px;height:22px;min-height:0;margin-right:10px;vertical-align:-6px}
  label:has(input[type=checkbox]){font-size:15px;padding:6px 0;line-height:1.4}
  select{background-position:right 14px center;padding-right:36px}
  .btn{min-height:46px;padding:0 18px;border-radius:10px;font-size:15px}
  .btn.sm{min-height:38px;padding:0 13px;font-size:13.5px}
  .btn.ghost.sm{min-width:38px;padding:0 8px}
  .row{gap:8px}
  .row input,.row select{min-width:0}
  .ch{flex-wrap:wrap}

  /* listas en tarjetas (sustituyen a las tablas) */
  table,tbody{display:block;width:100%}
  tr:has(th){display:none}
  tr{display:flex;flex-wrap:wrap;gap:8px 16px;padding:14px 0;border-bottom:1px solid var(--line);align-items:center}
  tr:last-child{border-bottom:0}
  td{display:block;padding:0;border:0;flex:1 1 40%;min-width:0}
  td[data-l]::before{content:attr(data-l);display:block;font-size:9.5px;letter-spacing:.16em;text-transform:uppercase;color:var(--taupe-d);margin-bottom:3px}
  td:first-child{flex:1 1 100%}
  td.right{text-align:left;flex:1 1 100%}
  tr.click{background:#fff;border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:10px;gap:10px 16px;position:relative;box-shadow:0 1px 2px rgba(60,45,25,.03)}
  tr.click:active{background:var(--taupe-bg)}
  tr.click td:first-child,tr.click td:nth-child(2){flex:1 1 100%}
  tr.click td:first-child{color:var(--taupe-d);font-size:12px;letter-spacing:.12em;text-transform:uppercase;order:1;flex:1 1 0!important}
  tr.click td:first-child::before,tr.click td:nth-child(2)::before{display:none}
  tr.click td:first-child .small{display:inline;margin-left:8px}
  tr.click td:nth-child(2){order:2;font-size:19px}
  tr.click td:nth-child(2) b{font:400 21px var(--serif);letter-spacing:.02em}
  tr.click td:nth-child(n+3){order:3}
  tr.click td:last-child{order:1;flex:0 0 auto}
  tr.click td:last-child::before{display:none}
  .card:has(tr.click){background:none;border:0;padding:0}
  td input[type=number],td input[type=text]{max-width:none}
  .chips{gap:5px}

  /* pestañas */
  .tabs{position:sticky;top:var(--tb);z-index:20;margin:0 -16px 18px;padding:0 16px;background:rgba(250,248,245,.94);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);gap:22px;scroll-snap-type:x proximity}
  .tabs a{padding:14px 2px;scroll-snap-align:start;font-size:14.5px}

  /* ficha de boda */
  .back{display:none}
  .hero{gap:14px;margin-bottom:16px;align-items:flex-start}
  .datebox{width:68px;height:78px;border-radius:12px}.datebox b{font-size:32px}.datebox span{font-size:9px;letter-spacing:.14em}
  .hero .sp{min-width:0;flex:1 1 calc(100% - 90px)}
  .hero h1{font-size:26px;overflow-wrap:anywhere}
  .hero>.row{width:100%;flex-wrap:nowrap}
  .hero>.row select{flex:1}
  .member-card{gap:14px}.avatar{width:46px;height:46px}

  /* ventanas como hoja inferior */
  .modal{padding:0;align-items:flex-end;background:rgba(29,26,23,.5)}
  .modal>div{width:100%;max-height:92vh;overflow:auto;border-radius:22px 22px 0 0;padding:26px 18px calc(24px + env(safe-area-inset-bottom));animation:sheet .26s cubic-bezier(.2,.8,.2,1);-webkit-overflow-scrolling:touch;position:relative}
  .modal>div::before{content:"";display:block;width:40px;height:4px;border-radius:4px;background:var(--line2);margin:-12px auto 18px}
  @keyframes sheet{from{transform:translateY(40px);opacity:.4}to{transform:none;opacity:1}}
  .pick{max-height:50vh}
  .pick div{padding:14px}
  .toast{bottom:calc(var(--nav) + 76px);max-width:calc(100% - 32px);text-align:center;border-radius:14px}

  /* hoja «Más» */
  .sheet-link{display:flex;align-items:center;gap:14px;padding:15px 4px;border-bottom:1px solid var(--line);color:var(--ink);font-size:16px}
  .sheet-link .i{width:22px;height:22px;color:var(--taupe-d)}.sheet-link .i-chevron{margin-left:auto;width:16px;height:16px;color:var(--line2)}
  .sheet-user{display:flex;gap:12px;align-items:center;padding:4px 0 16px}

  /* calendario: cuadrícula compacta + agenda */
  .cal>div{min-height:50px;padding:4px 2px;text-align:center}
  .cal .dh{padding:8px 0;font-size:9.5px;letter-spacing:.1em}
  .cal .dn{font-size:12.5px}
  .ev{display:inline-block;width:7px;height:7px;padding:0;border-radius:50%;font-size:0;margin:3px 1px 0;border-left:0;background:currentColor;vertical-align:top}
  .calnav{font-size:20px;min-width:0;flex:1}
  .agenda{display:block;margin-top:22px}
  .agenda h2{margin-bottom:12px}
  .ag{display:flex;gap:14px;align-items:center;padding:14px;background:#fff;border:1px solid var(--line);border-radius:14px;margin-bottom:10px}
  .ag .d{width:48px;text-align:center;flex-shrink:0}.ag .d b{display:block;font:300 26px/1 var(--serif)}.ag .d span{font-size:9.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe-d)}
  .ag .t{flex:1;min-width:0}.ag .t b{display:block;font-weight:500}.ag .t small{color:var(--muted)}

  /* portal admin */
  .pgrid{display:block}
  .pprev{margin-top:20px}.pprev .frame{height:70vh;min-height:420px}
  .gal{grid-template-columns:repeat(2,1fr)}
  .litem{padding:12px}
  .seg a{padding:8px 14px}
  .drop{padding:30px 14px}

  /* archivos de partituras */
  .part{padding:8px 8px 8px 12px;font-size:13.5px}
  .part select{min-height:34px;font-size:13px;padding:2px 22px 2px 4px}
  .part button{font-size:18px;padding:0 6px}
}
@media(max-width:380px){.g4{grid-template-columns:1fr 1fr}.stat b{font-size:28px}#nav a{font-size:10px}}

@media(max-width:900px){
  td[data-l="#"]{flex:0 0 auto!important;font:300 24px/1 var(--serif);color:var(--taupe-d);min-width:30px}
  td[data-l="#"]::before{display:none}
  tr:has(td[data-l="#"]) td:nth-child(2){flex:1 1 0!important;min-width:0}
  tr:has(td[data-l="#"]) td.right{flex:0 0 auto!important;display:flex;gap:2px;margin-left:auto}
  tr:has(td[data-l="#"]) td:nth-child(3),tr:has(td[data-l="#"]) td:nth-child(4){order:5;flex:1 1 44%}
}
@media(max-width:900px){
  td.right{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-start;align-items:center}
  td.right .btn.ghost.del{margin-left:auto}
  tr:has(td select[data-lu]) td{flex:1 1 40%}
  tr:has(td select[data-lu]) td:first-child{flex:1 1 100%}
  tr:has(td select[data-lu]) select{width:100%}
}
@media(max-width:900px){
  tr[data-editsong]{gap:6px 14px}
  tr[data-editsong] td:first-child{order:2;flex:1 1 100%!important;color:var(--ink);font:400 20px/1.2 var(--serif);text-transform:none;letter-spacing:.02em}
  tr[data-editsong] td:nth-child(2){order:3;flex:1 1 100%;font-size:14px;color:var(--muted)}
  tr[data-editsong] td:nth-child(2) b{font:inherit;font-weight:400}
  tr[data-editsong] td:last-child{order:1;flex:1 1 100%;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--taupe-d);text-align:left}
  tr[data-editsong] td:nth-child(n+3):not(:last-child){order:4;flex:0 0 auto}
}
@media(max-width:900px){
  [data-sfilter],#q{max-width:none!important;width:100%}
  tr[data-editsong] td:first-child b{font-weight:400}
  .calnav{white-space:nowrap;font-size:19px}
  .head .row:has(.calnav){flex-wrap:wrap}.head .row:has(.calnav) .calnav{order:-1;flex:1 1 100%;text-align:left;margin-bottom:4px}
}
@media(max-width:900px){
  .row[style*="nowrap"]{flex-wrap:wrap!important}
  .row[style*="nowrap"]>input,.row[style*="nowrap"]>select:not([style*="width:auto"]){flex:1 1 100%}
  .row[style*="nowrap"]>.btn{flex:1 1 auto}
  .row[style*="nowrap"]>select[style*="width:auto"]{flex:1 1 40%;width:auto}
}
@media(max-width:900px){.modal{z-index:60}.toast{z-index:70}.login{z-index:100}}

/* repertorio compacto */
.badge.mini{font-size:9.5px;padding:2px 8px;letter-spacing:.06em;margin:1px 0}
table.dense td{padding:7px 10px}table.dense th{padding:0 10px 8px}
table.dense.rep td{padding:6px 10px}
.card.slim{padding:6px 8px}
table.rep tr.click td b{font-weight:500}
@media(max-width:900px){
  .card.slim{padding:0;border:0;background:none}
  table.rep tr.click{padding:11px 13px;margin-bottom:7px;gap:3px 12px;border-radius:12px}
  table.rep tr.click td:first-child{order:1;flex:1 1 100%!important;color:var(--ink);font-size:15px;letter-spacing:0;text-transform:none}
  table.rep tr.click td:nth-child(2),table.rep tr.click td:nth-child(3){order:2;flex:0 0 auto;font-size:12px;color:var(--muted)}
  table.rep tr.click td:nth-child(2)::before,table.rep tr.click td:nth-child(3)::before{display:none}
  table.rep tr.click td:nth-child(2){font-size:12px}
  table.rep tr.click td:nth-child(4){order:3;flex:1 1 100%}
  table.rep tr.click td:nth-child(4)::before{display:none}
  table.rep tr.click td:last-child{display:none}
  .filters select,.filters input{max-width:none!important;flex:1 1 45%}
}
