:root {
  --ink:#302c2b; --muted:#766b6a; --rose:#c65c70; --rose-dark:#a84258;
  --blush:#f7eeeb; --paper:#fffaf7; --white:#fff; --line:#e8d9d4;
  --green:#377a62; --amber:#ae6b2f; --blue:#5d6e9c;
  --shadow:0 18px 50px rgba(92,52,48,.12);
  --serif:'Playfair Display',Georgia,serif; --sans:'DM Sans',Arial,sans-serif;
}
* { box-sizing:border-box; }
html { min-height:100%; scroll-behavior:smooth; }
body { min-height:100vh; margin:0; background:var(--paper); color:var(--ink); font-family:var(--sans); line-height:1.55; }
a { color:inherit; }
h1,h2,h3,p { overflow-wrap:anywhere; }
.btn { display:inline-block; border:0; border-radius:999px; padding:11px 19px; cursor:pointer; text-decoration:none; text-align:center; font:600 .78rem var(--sans); letter-spacing:.02em; transition:.2s; }
.btn:hover { transform:translateY(-1px); }
.btn-primary { background:var(--rose-dark); color:#fff; box-shadow:0 8px 20px rgba(168,66,88,.18); }
.btn-secondary,.btn-info { background:#fff; border:1px solid var(--rose); color:var(--rose-dark); }
.eyebrow { margin:0 0 10px; color:var(--rose-dark); font-size:.67rem; font-weight:600; letter-spacing:.21em; }
.empty-state { padding:20px; color:var(--muted); text-align:center; }

/* Acceso */
.login-header { padding:28px 20px 8px; text-align:center; }
.login-header img { width:104px; height:104px; object-fit:contain; }
.login-header p { margin:4px 0 0; color:var(--rose-dark); font-size:.68rem; font-weight:600; letter-spacing:.22em; }
.login-content { min-height:calc(100vh - 220px); display:grid; place-items:center; padding:25px 20px 70px; background:radial-gradient(circle at 50% 20%,#fff 0,var(--paper) 48%,var(--blush) 100%); }
.login-container { width:100%; display:flex; justify-content:center; }
.login-card { width:min(100%,440px); padding:38px; }
.login-card h2 { font:500 2.15rem var(--serif); margin:0 0 8px; border:0; padding:0; }
.login-copy { margin:0 0 25px; color:var(--muted); font-size:.9rem; }
.login-card form { display:grid; gap:17px; }
.login-card label { display:grid; gap:7px; color:var(--muted); font-size:.78rem; font-weight:600; }
.login-card .btn { width:100%; margin-top:5px; }
.error { padding:10px 12px; background:#fce7ea; color:#8e3248; border-left:3px solid var(--rose-dark); font-size:.85rem; }

/* Estructura administrativa */
.admin-footer { padding:20px; text-align:center; background:var(--ink); color:#cbb9b5; font-size:.72rem; }
.admin-shell .admin-footer { margin-left:260px; transition:margin-left .25s ease; }
.app-header { position:fixed; inset:0 auto 0 0; z-index:30; width:260px; display:flex; flex-direction:column; padding:24px 18px 20px; background:#fff; border-right:1px solid var(--line); box-shadow:10px 0 30px rgba(92,52,48,.08); transition:transform .25s ease; }
.admin-brand { display:flex; align-items:center; gap:11px; padding:0 5px 22px; border-bottom:1px solid var(--line); text-decoration:none; flex-shrink:0; }
.admin-brand img { width:54px; height:54px; object-fit:contain; }
.admin-brand span { display:flex; flex-direction:column; letter-spacing:.11em; }
.admin-brand strong { font-size:.78rem; }
.admin-brand small { font-size:.51rem; color:var(--rose-dark); margin-top:2px; }
.nav-tabs { display:flex; flex:1; flex-direction:column; gap:6px; padding-top:25px; }
.tab-link { display:flex; align-items:center; justify-content:space-between; width:100%; padding:11px 13px; border-radius:7px; text-decoration:none; color:var(--muted); font-size:.76rem; font-weight:600; transition:.2s; }
.tab-link:hover { background:var(--blush); color:var(--rose-dark); }
.tab-link.active { background:var(--rose-dark); color:#fff; box-shadow:0 5px 14px rgba(168,66,88,.18); }
.btn-logout { margin-top:auto; border:1px solid var(--line); }
.tab-link.active.btn-logout { background:transparent; color:var(--muted); }
.notification-badge { display:inline-grid; place-items:center; min-width:20px; min-height:20px; padding:2px 6px; border-radius:999px; background:#fff; color:var(--rose-dark); font-size:.64rem; text-align:center; }
.sidebar-toggle { position:fixed; z-index:35; top:26px; left:246px; display:grid; place-items:center; width:42px; height:42px; padding:0; border:1px solid var(--line); border-radius:0 8px 8px 0; background:#fff; color:var(--rose-dark); box-shadow:5px 5px 15px rgba(92,52,48,.1); cursor:pointer; transition:left .25s ease; }
.hamburger-icon { display:grid; gap:4px; width:18px; }
.hamburger-icon i { display:block; width:100%; height:2px; border-radius:999px; background:currentColor; transition:transform .2s ease; }
.app-content { min-height:calc(100vh - 70px); margin-left:260px; padding:34px 4vw 65px; transition:margin-left .25s ease; }
html.sidebar-collapsed .app-header { transform:translateX(-100%); }
html.sidebar-collapsed .sidebar-toggle { left:0; }
html.sidebar-collapsed .app-content,html.sidebar-collapsed .admin-shell .admin-footer { margin-left:0; }
.page-heading,.dashboard-heading { margin:14px 0 30px; }
.page-heading h1,.dashboard-heading h1 { font:500 clamp(2rem,4vw,3.45rem)/1.08 var(--serif); margin:0; }
.page-heading p:last-child,.dashboard-heading p:last-child { color:var(--muted); }
.page-heading.split { display:flex; align-items:flex-end; justify-content:space-between; gap:20px; }
.button-group { display:flex; gap:9px; flex-wrap:wrap; justify-content:flex-end; }
.reveal-panel { scroll-margin-top:100px; }
.reveal-panel[hidden],.order-tab-panel[hidden] { display:none; }
.success-banner { margin:-12px 0 24px; padding:12px 16px; border:1px solid #b8ddcc; background:#edf8f3; color:#286149; font-size:.82rem; }
.error-banner { margin:-12px 0 24px; padding:12px 16px; border:1px solid #efb7c2; background:#fce7ea; color:#8e3248; font-size:.82rem; }

/* Formularios y tarjetas */
.card { background:#fff; padding:28px; border:1px solid var(--line); box-shadow:var(--shadow); margin-bottom:24px; }
.card h1,.card h2 { font:500 1.7rem var(--serif); margin:0 0 20px; border-bottom:1px solid var(--line); padding-bottom:12px; }
.form-grid,.order-form,.payment-form { display:grid; grid-template-columns:repeat(4,minmax(150px,1fr)); gap:16px; align-items:end; }
.form-grid label,.order-form label,.payment-form label,.payment-registration-form label,.catalog-row label { display:grid; gap:7px; color:var(--muted); font-size:.76rem; font-weight:600; }
.wide { grid-column:1/-1; }
fieldset { margin:0; padding:16px; border:1px solid var(--line); }
legend { padding:0 7px; color:var(--muted); font-size:.76rem; font-weight:600; }
input,select,textarea { width:100%; padding:11px 12px; border:1px solid #d7c7c3; border-radius:6px; background:#fff; color:var(--ink); font:inherit; }
textarea { resize:vertical; }
input:focus,select:focus,textarea:focus { outline:2px solid rgba(198,92,112,.2); border-color:var(--rose); }
label small { color:var(--muted); font-size:.68rem; font-weight:400; }
.search-form { display:flex; align-items:end; gap:10px; margin-bottom:22px; }
.search-form label { display:grid; flex:1; max-width:440px; gap:7px; color:var(--muted); font-size:.76rem; font-weight:600; }
.search-form input { max-width:440px; }
.search-form label input { max-width:none; }
.check-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:9px; }
.check-option { display:flex!important; grid-template-columns:none!important; align-items:center; gap:9px!important; padding:10px; border:1px solid var(--line); background:var(--paper); color:var(--ink)!important; font-size:.8rem!important; }
.check-option input { width:auto; }
.check-option span { display:flex; justify-content:space-between; gap:8px; width:100%; }
.check-option small { color:var(--rose-dark); }

/* Calendarios */
.month-nav { display:flex; align-items:center; justify-content:center; gap:16px; margin-bottom:25px; }
.btn-today { padding:9px 18px; font-size:.72rem; }
.calendar-section { margin-bottom:42px; }
.calendar-legends { display:flex; flex-wrap:wrap; align-items:center; justify-content:center; gap:12px 28px; margin-bottom:20px; text-align:center; }
.calendar-legends .section-title { margin:0; }
.calendar-month-label { margin:0 0 18px; text-align:center; font:500 1.75rem var(--serif); text-transform:capitalize; }
.section-title { display:flex; align-items:center; gap:10px; margin:0 0 14px; }
.section-title h2 { margin:0; font-size:.82rem; letter-spacing:.12em; }
.legend { width:12px; height:12px; border-radius:50%; }
.legend.delivery,.calendar-event.delivery { background:#f5dfe3; color:#7f3142; }
.legend.payment,.calendar-event.payment { background:#f7e8d9; color:#824f24; }
.calendar { border:1px solid var(--line); background:#fff; box-shadow:0 8px 25px rgba(92,52,48,.05); overflow:hidden; }
.calendar-week,.calendar-grid { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); }
.calendar-week { background:var(--ink); color:#fff; }
.calendar-week span { padding:9px; text-align:center; font-size:.67rem; letter-spacing:.08em; text-transform:uppercase; }
.calendar-day { min-height:130px; padding:9px; border-right:1px solid var(--line); border-bottom:1px solid var(--line); }
.calendar-day:nth-child(7n) { border-right:0; }
.calendar-day.muted { background:#fbf7f5; }
.calendar-day time { display:block; margin-bottom:7px; color:var(--muted); font-size:.72rem; }
.calendar-day.today { background:#eeeae8; box-shadow:inset 0 0 0 2px #d7cfcb; }
.calendar-day.today time { display:inline-flex; align-items:center; justify-content:center; min-width:25px; height:25px; padding:0 6px; border-radius:50%; background:#d7cfcb; color:var(--ink); font-weight:600; }
.calendar-event { display:block; margin:5px 0; padding:7px 8px; border-radius:5px; text-decoration:none; font-size:.68rem; line-height:1.3; transition:.2s; }
.calendar-event:hover { transform:translateY(-1px); filter:saturate(1.2); }
.calendar-event b,.calendar-event span { display:block; }
.calendar-event span { opacity:.8; }

/* Catálogos */
.editable-list,.catalog-list { display:grid; gap:12px; }
.editable-row { display:grid; grid-template-columns:2fr 1fr auto; gap:12px; align-items:center; padding:14px; background:var(--paper); border:1px solid var(--line); }
.editable-clients .editable-row { grid-template-columns:1.4fr 1.5fr 1fr auto; }
.catalog-row { display:grid; grid-template-columns:1.2fr .65fr 2fr auto; gap:13px; align-items:end; padding:16px; background:var(--paper); border:1px solid var(--line); }
.catalog-search { display:flex; align-items:end; gap:12px; margin-bottom:20px; }
.catalog-search label { display:grid; flex:1; max-width:560px; gap:7px; color:var(--muted); font-size:.76rem; font-weight:600; }
.catalog-no-results { padding:18px; color:var(--muted); background:var(--paper); text-align:center; }
.catalog-actions { display:grid; gap:7px; }
.catalog-actions form { margin:0; }
.catalog-actions .btn { width:100%; }
.editable-table { min-width:760px; table-layout:fixed; white-space:normal; }
.invitation-table { min-width:900px; }
.editable-table input,.editable-table textarea { min-width:120px; }
.editable-table input:disabled,.editable-table textarea:disabled { padding:4px 0; border-color:transparent; background:transparent; color:var(--ink); opacity:1; -webkit-text-fill-color:var(--ink); resize:none; }
.editable-table tr[hidden] { display:none; }
.editable-table tr.selected td { background:var(--blush); }
.catalog-description { min-height:105px; overflow:hidden; line-height:1.5; white-space:pre-wrap; }
.editable-table td:last-child { width:180px; }
.invitation-table th:nth-child(1) { width:24%; }
.invitation-table th:nth-child(2) { width:14%; }
.invitation-table th:nth-child(3) { width:42%; }
.service-table th:nth-child(1) { width:50%; }
.service-table th:nth-child(2) { width:25%; }

/* Pedidos */
.orders-section { margin-bottom:42px; }
.orders-workspace { padding:0; overflow:hidden; }
.order-view-tabs { display:grid; grid-template-columns:1fr 1fr; border-bottom:1px solid var(--line); background:var(--paper); }
.order-view-tab { display:flex; align-items:center; justify-content:center; gap:9px; min-height:58px; padding:13px 18px; border:0; border-right:1px solid var(--line); background:transparent; color:var(--muted); font:600 .75rem var(--sans); letter-spacing:.08em; cursor:pointer; }
.order-view-tab:last-child { border-right:0; }
.order-view-tab span { display:inline-grid; place-items:center; min-width:23px; min-height:23px; padding:2px 6px; border-radius:999px; background:#eadeda; color:var(--ink); font-size:.66rem; letter-spacing:0; }
.order-view-tab.active { background:#fff; color:var(--rose-dark); box-shadow:inset 0 -3px var(--rose-dark); }
.order-tab-panel { padding:26px; }
.order-list { display:grid; gap:12px; }
.order-card { display:grid; grid-template-columns:minmax(220px,1.8fr) minmax(130px,.6fr) auto; gap:20px; align-items:center; padding:20px 22px; background:#fff; border:1px solid var(--line); box-shadow:0 6px 18px rgba(92,52,48,.04); }
.order-card h3 { margin:5px 0 2px; font:500 1.25rem var(--serif); }
.order-card p { margin:0; color:var(--muted); font-size:.82rem; }
.order-money { display:grid; text-align:right; }
.order-money b { color:var(--rose-dark); }
.order-money small { color:var(--muted); }
.status { display:inline-block; width:max-content; padding:4px 8px; border-radius:999px; font-size:.63rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase; }
.status.pending { background:#f8eadb; color:#8b5728; }
.status.done,.status.paid { background:#dff0e8; color:#286149; }
.new-order { scroll-margin-top:100px; }
.detail-grid { display:grid; grid-template-columns:.9fr 1.1fr; gap:24px; align-items:start; }
.detail-grid.single { grid-template-columns:1fr; }
.detail-grid.single .summary-card { position:static; }
.summary-card { position:sticky; top:95px; }
.summary-card dl { margin:0; }
.summary-card dl>div { display:grid; grid-template-columns:145px 1fr; gap:12px; padding:8px 0; border-bottom:1px solid var(--line); }
.summary-card dt { color:var(--muted); font-size:.74rem; }
.summary-card dd { margin:0; font-size:.84rem; }
.totals { display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin:20px 0; }
.totals span { padding:12px; background:var(--blush); color:var(--muted); font-size:.7rem; }
.totals b { display:block; color:var(--rose-dark); font-size:1rem; }
.summary-actions { display:flex; align-items:center; gap:10px; flex-wrap:wrap; }
.summary-actions form { margin:0; }
.order-form.compact { grid-template-columns:repeat(2,minmax(140px,1fr)); }
.payment-form { grid-template-columns:1fr 1fr 1fr auto; }
.payment-registration-form { display:grid; grid-template-columns:repeat(2,minmax(220px,1fr)); gap:16px; align-items:end; }
.payment-registration-form .payment-order { grid-column:1/-1; }
.payment-registration-form>.btn { width:max-content; min-width:180px; }
.payment-order-picker { position:relative; }
.field-help { color:var(--muted); font-size:.67rem; font-weight:400; }
.payment-order-results { position:absolute; z-index:12; top:calc(100% - 17px); left:0; right:0; max-height:270px; overflow:auto; padding:7px; border:1px solid var(--line); border-radius:7px; background:#fff; box-shadow:var(--shadow); }
.payment-order-results[hidden],.payment-order-result[hidden] { display:none; }
.payment-order-result { display:flex; align-items:center; justify-content:space-between; gap:15px; width:100%; padding:11px 12px; border:0; border-bottom:1px solid var(--line); background:#fff; color:var(--ink); text-align:left; cursor:pointer; }
.payment-order-result:last-child { border-bottom:0; }
.payment-order-result:hover,.payment-order-result:focus { outline:0; background:var(--blush); }
.payment-order-result strong { font-size:.8rem; }
.payment-order-result span { color:var(--muted); font-size:.74rem; }
.payment-registration-form :disabled { cursor:not-allowed; opacity:.58; }
.payment-list { display:grid; gap:10px; }
.payment-head { display:grid; grid-template-columns:1fr 1fr 1.4fr auto; gap:10px; padding:0 12px 7px; color:var(--muted); font-size:.67rem; letter-spacing:.08em; text-transform:uppercase; }
.payment-row { display:grid; grid-template-columns:1fr 1fr 1.4fr auto; gap:10px; align-items:center; padding:12px; background:var(--paper); border:1px solid var(--line); }
.payment-head-readonly,.payment-row-readonly { grid-template-columns:1fr 1fr 1.4fr; }
.payment-row-readonly { min-height:52px; }
.payment-row-readonly strong { color:var(--rose-dark); }
.payment-row-readonly time { color:var(--muted); }

/* Tablas */
.table-scroll { overflow:auto; }
.data-table { width:100%; border-collapse:collapse; white-space:nowrap; }
.data-table th,.data-table td { padding:13px 11px; text-align:left; border-bottom:1px solid var(--line); font-size:.82rem; }
.data-table th { color:var(--muted); font-size:.68rem; letter-spacing:.08em; text-transform:uppercase; }
.data-table tr:hover td { background:#fffaf8; }

/* Notificaciones */
.notification-list { display:grid; gap:10px; }
.notification-card { display:grid; grid-template-columns:auto 1fr auto; gap:14px; align-items:center; padding:17px; background:#fff; border:1px solid var(--line); text-decoration:none; }
.notification-card.unread { border-left:4px solid var(--rose-dark); }
.notification-card.read { opacity:.72; }
.notification-icon { display:grid; place-items:center; width:38px; height:38px; border-radius:50%; color:#fff; font-weight:600; }
.notification-icon.entrega { background:var(--rose-dark); }
.notification-icon.pago { background:var(--amber); }
.notification-card b,.notification-card small { display:block; }
.notification-card b { font-size:.85rem; }
.notification-card small { margin-top:3px; color:var(--muted); font-size:.7rem; }
.notification-card em { color:var(--muted); font-size:.68rem; font-style:normal; }

@media(max-width:1100px) {
  .form-grid,.order-form { grid-template-columns:repeat(2,minmax(150px,1fr)); }
  .detail-grid { grid-template-columns:1fr; }
  .summary-card { position:static; }
  .catalog-row { grid-template-columns:1fr 1fr; }
  .catalog-row .wide { grid-column:1/-1; }
  .payment-registration-form { grid-template-columns:repeat(2,minmax(150px,1fr)); }
}
@media(max-width:900px) {
  .app-content,.admin-shell .admin-footer { margin-left:0; }
  .app-header { transform:translateX(-100%); }
  html:not(.sidebar-collapsed) .app-header { transform:translateX(0); }
  .sidebar-toggle { left:0; }
  html:not(.sidebar-collapsed) .sidebar-toggle { left:246px; }
}
@media(max-width:760px) {
  .app-content { padding:24px 16px 50px; }
  .page-heading.split { align-items:flex-start; flex-direction:column; }
  .month-nav { flex-wrap:wrap; }
  .calendar { overflow-x:auto; }
  .calendar-week,.calendar-grid { min-width:760px; }
  .order-card { grid-template-columns:1fr; gap:10px; }
  .order-money { text-align:left; }
  .payment-form,.payment-registration-form,.payment-row,.payment-head { grid-template-columns:1fr 1fr; }
  .payment-head-readonly,.payment-row-readonly { grid-template-columns:1fr 1fr 1.4fr; }
  .editable-row,.editable-clients .editable-row { grid-template-columns:1fr; }
  .order-view-tabs { grid-template-columns:1fr; }
  .order-view-tab { border-right:0; border-bottom:1px solid var(--line); }
  .order-tab-panel { padding:18px; }
}
@media(max-width:520px) {
  .admin-brand span { display:flex; }
  .login-card { padding:28px 22px; }
  .form-grid,.order-form,.order-form.compact,.catalog-row,.payment-form,.payment-registration-form,.payment-row { grid-template-columns:1fr; }
  .payment-head-readonly { display:none; }
  .payment-row-readonly { grid-template-columns:1fr; gap:5px; }
  .catalog-search { align-items:stretch; flex-direction:column; }
  .search-form { align-items:stretch; flex-direction:column; }
  .wide { grid-column:auto; }
  .totals { grid-template-columns:1fr; }
  .summary-card dl>div { grid-template-columns:1fr; gap:2px; }
  .tab-link { font-size:.68rem; padding:7px 8px; }
}
