@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap');
:root{
  --ctm:#071827;--ctm-2:#0B2236;--accent:#2563EB;--accent-2:#0EA5E9;--danger:#DC2626;--ok:#16A34A;
  --bg:#F3F7FB;--panel:#FFFFFF;--panel-2:#F8FAFC;--text:#111827;--muted:#6B7280;--line:#DDE6EF;--line-2:#E5E7EB;--ring:#93C5FD;
  --shadow:0 18px 45px rgba(15,35,60,.10);--shadow-sm:0 8px 22px rgba(15,35,60,.08);--radius:16px;--radius-sm:12px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.45}body:before{content:"";position:fixed;inset:0 0 auto;height:4px;background:linear-gradient(90deg,var(--ctm),var(--accent));z-index:20}a{color:var(--accent);font-weight:700;text-decoration:none}a:hover{text-decoration:underline}
nav{position:sticky;top:0;z-index:10;background:linear-gradient(135deg,var(--ctm),var(--ctm-2));color:#fff;padding:14px max(18px,calc((100vw - 1220px)/2));display:flex;gap:10px;align-items:center;box-shadow:0 10px 30px rgba(2,8,23,.18)}nav b{margin-right:auto;font-size:1.05rem;letter-spacing:.01em;display:flex;align-items:center;gap:10px}nav b:before{content:"CTM";display:inline-flex;align-items:center;justify-content:center;width:42px;height:28px;border-radius:9px;background:#fff;color:var(--ctm);font-size:.76rem;font-weight:900;letter-spacing:.04em}nav a{color:#EAF4FF;text-decoration:none;padding:9px 12px;border-radius:999px;font-weight:800;font-size:.92rem;border:1px solid rgba(255,255,255,.10)}nav a:hover{background:rgba(255,255,255,.12);text-decoration:none}
main{max-width:1220px;margin:28px auto 48px;padding:0 18px}h1{margin:0;color:var(--ctm-2);font-size:clamp(1.8rem,3vw,2.55rem);letter-spacing:-.04em;line-height:1.05}h2{margin:22px 0 10px;color:var(--ctm-2);font-size:1.15rem}.muted{color:var(--muted);font-size:.92rem}.card,form,table{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card{padding:22px}.login{max-width:440px;margin:54px auto;padding:30px}.login h1:after{content:"Gestiona partes, firmas y PDFs";display:block;margin-top:8px;color:var(--muted);font-size:1rem;font-weight:500;letter-spacing:0;line-height:1.4}.toolbar{display:flex;align-items:center;gap:12px;justify-content:space-between;margin:6px 0 18px;flex-wrap:wrap}.hero-sub{color:var(--muted);margin:8px 0 0}.pill{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;background:#EEF6FF;color:#164B7B;font-weight:850;font-size:.8rem}.pill.ok{background:#ECFDF5;color:#047857}.status{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;font-size:.76rem;font-weight:850;text-transform:uppercase;letter-spacing:.03em}.status-borrador{background:#FFF7ED;color:#9A3412}.status-finalizado{background:#ECFDF5;color:#047857}
.workorder-shell{padding:0;background:transparent;border:0;box-shadow:none}.tabs{display:flex;gap:8px;margin:0 0 16px;overflow:auto;padding-bottom:2px}.tab{white-space:nowrap;padding:12px 16px;border-radius:14px;color:#40546B;background:#EAF1F8;border:1px solid #D9E5F0}.tab.active{background:#fff;color:var(--ctm-2);box-shadow:var(--shadow-sm);border-color:var(--line)}.summary-card,.form-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.summary-card{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:18px}.summary-card h1{font-size:clamp(2rem,4.8vw,3.45rem);color:var(--danger);margin:4px 0 10px}.eyebrow,.section-title,label span{display:block;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:.74rem;font-weight:850}.section-title{color:#24344D;margin-bottom:14px}.section-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.section-head .section-title{margin:0}.form-card{margin-bottom:18px}.client-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px 16px}.span-2{grid-column:span 2}.date-field{min-width:210px}label{font-weight:700;color:#24344D;font-size:.92rem}input,textarea,select{width:100%;min-height:46px;border:1px solid #CBD8E8;border-radius:var(--radius-sm);padding:11px 13px;margin-top:7px;font:inherit;background:#fff;color:var(--text);transition:border-color .18s ease,box-shadow .18s ease,background .18s ease}textarea{resize:vertical;min-height:158px}input::placeholder,textarea::placeholder{color:#9CA3AF}input:hover,textarea:hover,select:hover{border-color:#A8BCD4}input:focus,textarea:focus,select:focus{outline:0;border-color:var(--accent);box-shadow:0 0 0 4px rgba(37,99,235,.16)}
.responsive-lines{display:grid;gap:10px}.line-row{display:grid;gap:10px;align-items:end;padding:12px;border:1px solid var(--line-2);border-radius:14px;background:#FBFDFF}.service-row{grid-template-columns:minmax(220px,2.3fr) .55fr .65fr .75fr .9fr}.material-row{grid-template-columns:minmax(220px,2fr) .55fr .9fr 1fr}.line-row input{margin-top:5px}.note{margin:12px 0 0}.bottom-grid{display:grid;grid-template-columns:1fr 1fr 1fr;gap:18px}.signature-panel{margin:0}.signature-panel canvas{width:100%;height:220px;border:2px dashed #9DB5D1;border-radius:14px;background:#fff;touch-action:none;display:block;box-shadow:inset 0 1px 0 rgba(255,255,255,.85)}.sig-preview{display:block;max-width:100%;border:1px solid var(--line);border-radius:12px;margin-top:10px;background:#fff}.tech-sign{min-height:220px;border:2px dashed #D5DEE9;border-radius:14px;background:#FBFDFF;display:flex;align-items:center;justify-content:center;color:#24344D;font-weight:800;margin-top:14px}.obs-card label span{margin-bottom:7px}.tax-note{text-align:right;color:var(--muted);font-size:.78rem;font-weight:900;margin:4px 2px 16px;letter-spacing:.04em}.actions{position:sticky;bottom:12px;z-index:7;display:flex;gap:10px;flex-wrap:wrap;margin:22px 0 0;padding:12px;background:rgba(255,255,255,.90);backdrop-filter:blur(14px);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow-sm)}button,.btn{border:0;border-radius:13px;background:linear-gradient(135deg,var(--accent),#1D4ED8);color:#fff;min-height:46px;padding:12px 17px;font-weight:850;text-decoration:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:8px;box-shadow:0 10px 22px rgba(37,99,235,.20);transition:transform .16s ease,box-shadow .16s ease,filter .16s ease}button:hover,.btn:hover{transform:translateY(-1px);filter:saturate(1.05);text-decoration:none;box-shadow:0 14px 28px rgba(37,99,235,.24)}button:active,.btn:active{transform:translateY(0)}button:focus-visible,.btn:focus-visible{outline:3px solid var(--ring);outline-offset:3px}button[type=button],.btn-secondary{background:#5F7188;box-shadow:none}.btn-ghost{background:#EEF4FB;color:#17426F;box-shadow:none}.btn-success{background:linear-gradient(135deg,#0F766E,#0D9488)}.btn-small{min-height:36px;padding:8px 12px;border-radius:11px;font-size:.86rem}.btn-link{background:#EEF4FB;color:#17426F;box-shadow:none;min-height:34px;padding:7px 10px}
table{width:100%;border-collapse:separate;border-spacing:0;overflow:hidden}th,td{padding:14px 13px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}th{background:#EEF6FF;color:#25415F;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}tr:last-child td{border-bottom:0}tbody tr:hover{background:#FBFDFF}.table-wrap{overflow:auto;border-radius:var(--radius);box-shadow:var(--shadow)}.empty{padding:24px;text-align:center;color:var(--muted);background:#fff;border:1px dashed var(--line);border-radius:var(--radius)}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media(max-width:1024px){main{max-width:920px;margin-top:22px}.client-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.span-2{grid-column:1/-1}.bottom-grid{grid-template-columns:1fr 1fr}.obs-card{grid-column:1/-1}.service-row{grid-template-columns:minmax(220px,1.7fr) repeat(4,minmax(86px,1fr));overflow:auto}.material-row{grid-template-columns:minmax(220px,1.7fr) repeat(3,minmax(100px,1fr));overflow:auto}.summary-card,.form-card{box-shadow:var(--shadow-sm)}}
@media(max-width:760px){body{background:#F7F9FC}nav{position:static;padding:12px;gap:6px;flex-wrap:wrap}nav b{flex-basis:100%;margin:0 0 4px}nav a{padding:8px 10px;background:rgba(255,255,255,.08)}main{margin:16px auto 34px;padding:0 12px}.toolbar{align-items:stretch}.toolbar .btn{width:100%}.summary-card{display:block;padding:18px}.date-field{display:block;min-width:0;margin-top:16px}.client-grid,.bottom-grid{grid-template-columns:1fr}.span-2,.obs-card{grid-column:auto}.summary-card,.form-card{padding:16px;border-radius:15px}.section-head{align-items:flex-start}.line-row,.service-row,.material-row{grid-template-columns:1fr;gap:8px}.actions{position:static;display:grid;grid-template-columns:1fr;padding:10px;margin-top:12px}button,.btn{width:100%;min-height:48px}.login{margin:22px auto;padding:22px}table,thead,tbody,tr,th,td{display:block}thead{display:none}table{background:transparent;border:0;box-shadow:none}tr{background:#fff;margin:0 0 12px;border:1px solid var(--line);border-radius:16px;box-shadow:var(--shadow-sm);overflow:hidden}td{display:flex;justify-content:space-between;gap:14px;border-bottom:1px solid #EEF2F7;padding:11px 13px;text-align:right}td:before{content:attr(data-label);font-weight:850;color:#5D7088;text-align:left}td:last-child{border-bottom:0;display:grid;grid-template-columns:1fr;gap:8px}td:last-child:before{display:none}.table-wrap{box-shadow:none;overflow:visible}.signature-panel canvas,.tech-sign{height:205px;min-height:205px}.tax-note{text-align:left}.tabs{margin-left:-2px;margin-right:-2px}}
.notice{margin:0 0 16px;padding:13px 16px;border-radius:14px;font-weight:800;border:1px solid #BBF7D0;background:#ECFDF5;color:#047857;box-shadow:var(--shadow-sm)}
.settings-panel{max-width:560px;margin:18px auto;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:22px}.settings-panel h1{font-size:1.25rem;letter-spacing:-.02em}.modal-head{display:flex;justify-content:space-between;gap:12px;margin-bottom:24px}.modal-head h1:before{content:'⚙️';margin-right:8px}.smtp-form{padding:0;border:0;box-shadow:none;background:transparent}.smtp-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px 16px}.smtp-grid .span-2{grid-column:1/-1}.smtp-grid label span{font-size:.76rem;color:#6B7C8F}.modal-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:28px}.modal-actions .btn,.modal-actions button{width:auto;min-width:92px}
@media(max-width:760px){.settings-panel{margin:12px 0;padding:16px}.smtp-grid{grid-template-columns:1fr}.modal-actions{display:grid;grid-template-columns:1fr}.modal-actions .btn,.modal-actions button{width:100%}}
.tech-meta{display:flex;flex-direction:column;gap:2px;align-items:center;justify-content:center;margin-top:8px;color:#24344D}.tech-meta strong{font-weight:900}.tech-meta span{color:var(--muted);font-size:.9rem}
.inline-form{display:flex;gap:8px;align-items:center;padding:0;border:0;box-shadow:none;background:transparent}.inline-form input{min-height:38px;margin:0;max-width:100px}.inline-form button{min-height:38px;padding:8px 10px;width:auto}
.check-list{display:grid;gap:10px}.check-title{display:block;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:.74rem;font-weight:850}.check-row{display:flex;align-items:center;gap:10px;border:1px solid var(--line);border-radius:12px;padding:12px;background:#fff;font-weight:600}.check-row input{width:18px;height:18px;min-height:18px;margin:0;accent-color:var(--accent)}.check-row input:disabled{opacity:.45}
.login{max-width:440px;margin:54px auto;padding:34px 30px 30px}.login-logo-slot{display:flex;justify-content:center;align-items:center;margin:0 0 18px}.login-logo-slot img{max-width:180px;max-height:72px;object-fit:contain}.login h1{margin:0 0 8px}.login h1:after{content:none}.login-subtitle{margin:0 0 22px;color:var(--muted);font-size:1rem}.login-form{padding:0;border:0;box-shadow:none;background:transparent;display:grid;gap:16px}.login-form label{margin:0}.login-form input{margin-top:7px}.login-form button{margin-top:4px;width:auto;justify-self:start;padding-left:22px;padding-right:22px}
@media(max-width:760px){.login{margin:22px auto;padding:28px 22px}.login-logo-slot img{max-width:155px}.login-form button{width:100%}}
.login-logo-slot img{max-width:280px;max-height:100px;width:100%;height:auto;mix-blend-mode:multiply}
@media(max-width:760px){.login-logo-slot img{max-width:235px;max-height:86px}}

.app-version{position:fixed;left:8px;bottom:6px;z-index:20;display:flex;align-items:center;gap:6px;color:#66717c;font-size:x-small;font-weight:800;line-height:1;background:rgba(255,255,255,.78);border:1px solid rgba(150,165,180,.45);border-radius:8px;padding:5px 7px;backdrop-filter:blur(8px)}
.app-version.has-update{background:#FFF3B0;border-color:#E0AF23;color:#4B3710;box-shadow:0 8px 24px rgba(100,76,10,.16)}
.app-version[data-update="true"]{background:#FFF3B0;border-color:#E0AF23;color:#4B3710;box-shadow:0 8px 24px rgba(100,76,10,.16)}
.app-version[data-update="false"]{background:rgba(255,255,255,.78)!important;border-color:rgba(150,165,180,.45)!important;color:#66717c!important;box-shadow:none!important}
.app-version button{min-height:24px;padding:3px 7px;border-radius:7px;background:#E0AF23;border-color:#C99212;color:#241800;font-size:x-small;box-shadow:none}
.app-version button[hidden],.app-version[data-update="false"] button,[hidden]{display:none!important}
.mobile-sign-btn{display:none}.signature-modal-card{display:block}.signature-modal-head,.signature-modal-actions{display:none}
.btn-save-sign{background:linear-gradient(135deg,#16A34A,#15803D)}.btn-clear-sign{background:linear-gradient(135deg,#F59E0B,#D97706);color:#111827}.btn-exit{background:linear-gradient(135deg,#DC2626,#B91C1C)}
@media(max-width:1024px){
  .desktop-clear{display:none}.mobile-sign-btn{display:inline-flex;width:100%;margin-top:8px;background:linear-gradient(135deg,var(--accent),#1D4ED8)}
  .signature-panel canvas,.signature-panel .sig-preview,.signature-panel .signature-modal > .signature-modal-card > .muted{display:none}
  .signature-modal{display:none;position:fixed;inset:0;z-index:1000;background:rgba(7,24,39,.72);padding:16px;align-items:center;justify-content:center}
  .signature-modal.open{display:flex}
  .signature-modal.open canvas,.signature-modal.open .sig-preview{display:block}
  .signature-modal-card{width:min(720px,100%);background:#fff;border-radius:18px;padding:16px;border:1px solid var(--line);box-shadow:0 24px 80px rgba(0,0,0,.28)}
  .signature-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.signature-modal-head strong{font-size:1.05rem;color:var(--ctm-2)}
  .signature-modal-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}.signature-modal-actions button,.btn-exit{width:100%}
  .signature-modal.open canvas{height:min(46vh,320px);min-height:230px;border:2px dashed #9DB5D1;border-radius:14px;background:#fff;touch-action:none}
  body.signature-lock{overflow:hidden}
}
@media(max-width:760px){.signature-modal{padding:10px}.signature-modal-card{padding:12px;border-radius:16px}.signature-modal.open canvas{height:48vh;min-height:240px}.signature-modal-actions{grid-template-columns:1fr}.signature-modal-head{align-items:flex-start}.btn-exit{min-width:108px;width:auto}}
/* Navegación superior: estilo visual tipo pills, más claro y usable */
nav{gap:12px;padding-top:16px;padding-bottom:16px;background:linear-gradient(135deg,#061625 0%,#0B2236 55%,#0F2F4A 100%);border-bottom:1px solid rgba(255,255,255,.08)}
nav a{position:relative;overflow:hidden;padding:11px 16px;border-radius:999px;background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.12);color:#F8FBFF;font-weight:900;box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 8px 18px rgba(0,0,0,.10);transition:transform .16s ease,background .16s ease,border-color .16s ease,box-shadow .16s ease}
nav a:before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(37,99,235,.24),rgba(14,165,233,.14));opacity:0;transition:opacity .16s ease;z-index:-1}
nav a:hover{transform:translateY(-1px);background:rgba(255,255,255,.09);border-color:rgba(147,197,253,.45);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 12px 24px rgba(0,0,0,.16);text-decoration:none}
nav a:hover:before{opacity:1}
nav a[href='/new']{background:linear-gradient(135deg,#2563EB,#0EA5E9);border-color:rgba(255,255,255,.20);color:#fff;box-shadow:0 12px 24px rgba(37,99,235,.30)}
nav a[href='/logout']{background:rgba(220,38,38,.10);border-color:rgba(248,113,113,.26);color:#FEE2E2}
nav a[href='/logout']:hover{background:rgba(220,38,38,.22);border-color:rgba(248,113,113,.50)}
@media(max-width:760px){nav{gap:8px;padding:12px}nav a{padding:10px 12px;font-size:.88rem;flex:1 1 auto;text-align:center}nav b{width:100%}}
/* Ajuste visual pastel / plano solicitado */
:root{--pastel-blue:#DBEAFE;--pastel-blue-strong:#93C5FD;--pastel-red:#FCA5A5;--pastel-red-bg:#FEE2E2;--pastel-green:#BBF7D0;--pastel-yellow:#FEF3C7}
nav{background:#0F2740;box-shadow:none;border-bottom:1px solid #DDE6EF}
nav a{background:#F8FAFC;color:#1F2937;border:1px solid #DDE6EF;box-shadow:none;text-shadow:none}
nav a:before{display:none}
nav a:hover{background:#EAF1F8;border-color:#BFDBFE;box-shadow:none;transform:none}
nav a[href='/new']{background:var(--pastel-blue);border-color:var(--pastel-blue-strong);color:#1E3A8A;box-shadow:none}
nav a[href='/new']::after{content:" +";font-weight:900;color:#2563EB}
nav a[href='/logout']{background:#EF4444;border-color:#DC2626;color:#FFFFFF;box-shadow:none}
nav a[href='/logout']:hover{background:#DC2626;border-color:#B91C1C;color:#FFFFFF}
button,.btn{box-shadow:none;background:#BFDBFE;color:#1E3A8A;border:1px solid #93C5FD}
button:hover,.btn:hover{box-shadow:none;transform:none;background:#DBEAFE}
.btn-success{background:#BBF7D0;color:#14532D;border-color:#86EFAC}.btn-success:hover{background:#DCFCE7}
.btn-secondary{background:#E5E7EB;color:#374151;border-color:#D1D5DB}.btn-ghost{background:#F8FAFC;color:#334155;border-color:#CBD5E1}
.btn-save-sign{background:#BBF7D0!important;color:#14532D!important;border-color:#86EFAC!important}.btn-clear-sign{background:#FEF3C7!important;color:#92400E!important;border-color:#FCD34D!important}.btn-exit{background:#EF4444!important;color:#fff!important;border-color:#DC2626!important}
.admin-hero{background:#fff;border:1px solid var(--line);border-radius:20px;padding:24px;margin-bottom:18px}.admin-hero h1{margin-top:6px}.admin-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:18px}.stat-card{background:#fff;border:1px solid var(--line);border-radius:16px;padding:16px}.stat-card span{display:block;color:var(--muted);font-size:.8rem;font-weight:850;text-transform:uppercase;letter-spacing:.06em}.stat-card strong{display:block;margin-top:8px;font-size:1.7rem;color:#1E3A8A}.admin-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.admin-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:16px;background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px;color:var(--text);box-shadow:none}.admin-card:hover{text-decoration:none;background:#F8FAFC;border-color:#BFDBFE}.admin-card h2{margin:0 0 6px;font-size:1.1rem}.admin-card p{margin:0;color:var(--muted);font-weight:500}.admin-icon{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:1.4rem}.admin-card.users .admin-icon{background:#DBEAFE}.admin-card.email .admin-icon{background:#FEF3C7}.admin-card>span{font-weight:900;color:#2563EB}
@media(max-width:900px){.admin-stats{grid-template-columns:repeat(2,1fr)}.admin-grid{grid-template-columns:1fr}}
@media(max-width:560px){.admin-stats{grid-template-columns:1fr}.admin-card{grid-template-columns:1fr}.admin-card>span{justify-self:start}}
/* Consistencia estética en paneles de administración */
.user-create-form,.smtp-form,.admin-table-card{margin-bottom:18px}.user-create-form{padding:22px}.admin-table-card{padding:18px}.settings-panel .smtp-form{padding:0}.settings-panel input,.settings-panel select,.user-create-form input,.user-create-form select{background:#F8FAFC;border-color:#DDE6EF}.settings-panel input:focus,.settings-panel select:focus,.user-create-form input:focus,.user-create-form select:focus{background:#fff;border-color:#93C5FD;box-shadow:0 0 0 4px rgba(147,197,253,.22)}.admin-table-card table{box-shadow:none;border-radius:14px}.admin-table-card th{background:#DBEAFE;color:#1E3A8A}.admin-table-card tr:nth-child(even) td{background:#F8FAFC}.admin-table-card td{background:#fff}.inline-form{justify-content:center}.inline-form input{background:#F8FAFC;border-color:#DDE6EF}.inline-form button{background:#DBEAFE;color:#1E3A8A;border-color:#93C5FD}.settings-panel{padding:24px}.settings-panel .modal-actions,.user-create-form .modal-actions{padding-top:8px;margin-top:18px;border-top:1px solid #EEF2F7}.smtp-grid,.client-grid{align-items:end}
@media(max-width:760px){.user-create-form,.settings-panel,.admin-table-card{padding:16px}.inline-form{display:grid;grid-template-columns:1fr}.inline-form input{max-width:none}.inline-form button{width:100%}}
.line-delete{background:#FEE2E2!important;color:#991B1B!important;border:1px solid #FCA5A5!important;min-height:42px;align-self:end}.line-qr{background:#DBEAFE!important;color:#1E3A8A!important;border:1px solid #93C5FD!important;min-height:42px;align-self:end;display:inline-flex;align-items:center;justify-content:center}.line-qr:hover{background:#BFDBFE!important}.service-row{grid-template-columns:minmax(220px,2.3fr) .7fr .65fr .75fr .9fr auto}.material-row{grid-template-columns:minmax(220px,2fr) .55fr .9fr 1fr auto auto}.line-row{position:relative}.line-row:focus-within{border-color:#93C5FD;background:#F8FBFF}@media(max-width:1024px){.service-row,.material-row{grid-template-columns:1fr}.line-delete,.line-qr{width:100%}}
/* Botones + Añadir en azul claro pastel */
.btn-small[data-add-row]{background:#DBEAFE!important;color:#1E3A8A!important;border:1px solid #93C5FD!important;box-shadow:none!important;font-weight:900}
.btn-small[data-add-row]:hover{background:#BFDBFE!important;border-color:#60A5FA!important;color:#1E40AF!important;transform:none!important}
.pagination-bar{display:flex;justify-content:space-between;align-items:center;gap:14px;margin:16px 0 0;padding:14px 16px;background:#fff;border:1px solid var(--line);border-radius:16px;flex-wrap:wrap}.pagination-info{color:var(--muted);font-weight:700}.pagination-controls{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.page-btn{display:inline-flex;align-items:center;justify-content:center;min-height:40px;padding:9px 13px;border-radius:12px;background:#DBEAFE;color:#1E3A8A;border:1px solid #93C5FD;font-weight:900}.page-btn:hover{text-decoration:none;background:#BFDBFE}.page-btn.disabled{pointer-events:none;opacity:.45;background:#F1F5F9;color:#64748B;border-color:#E2E8F0}.page-current{font-weight:850;color:#334155;padding:0 6px}.page-size-form{padding:0;border:0;box-shadow:none;background:transparent}.page-size-form label{display:flex;align-items:center;gap:8px;color:var(--muted);font-weight:850}.page-size-form select{min-height:40px;margin:0;width:auto;background:#F8FAFC}@media(max-width:760px){.pagination-bar{align-items:stretch}.pagination-controls{display:grid;grid-template-columns:1fr; width:100%}.page-btn,.page-size-form select{width:100%}.page-size-form label{display:grid;grid-template-columns:auto 1fr}}
.manual-email-block{display:grid;gap:7px}.manual-email-title{display:block;text-transform:uppercase;letter-spacing:.07em;color:var(--muted);font-size:.74rem;font-weight:850}.manual-email-row{display:grid;grid-template-columns:1fr 42px;gap:8px;align-items:center;margin-bottom:8px}.manual-email-row input{margin:0}.manual-email-add{width:42px!important;min-height:42px!important;height:42px;border-radius:999px!important;background:#BBF7D0!important;color:#14532D!important;border:1px solid #86EFAC!important;font-size:1.35rem!important;font-weight:900!important;padding:0!important;box-shadow:none!important}.manual-email-add:hover{background:#86EFAC!important}.manual-email-remove{width:42px!important;min-height:42px!important;height:42px;border-radius:999px!important;background:#FEE2E2!important;color:#991B1B!important;border:1px solid #FCA5A5!important;font-size:1.1rem!important;font-weight:900!important;padding:0!important;box-shadow:none!important}
.fixed-tech-block{display:grid;grid-template-columns:1fr 1fr;gap:16px;padding:12px;border:1px solid #FCA5A5;background:#FEF2F2;border-radius:14px}.fixed-tech-block input[readonly]{background:#FFF7F7;color:#111827;font-weight:850;border-color:#FECACA;cursor:not-allowed}.tech-extra-panel{display:grid;gap:12px}.section-head.compact{margin:4px 0 0}.tech-row{grid-template-columns:1fr 160px auto}.tech-row input{margin-top:5px}@media(max-width:760px){.fixed-tech-block,.tech-row{grid-template-columns:1fr}.tech-extra-panel{grid-column:auto}}
.mini-check{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;font-weight:850;color:#334155;white-space:nowrap}.mini-check input{width:16px;height:16px;min-height:16px;margin:0;accent-color:#2563EB}.tech-row select{margin-top:5px}.tech-row input[readonly]{background:#F8FAFC;color:#475569;font-weight:850}
.summary-side{display:grid;gap:12px;min-width:230px}.test-part-check{display:flex;align-items:center;gap:10px;background:#FEF3C7;border:1px solid #F59E0B;border-radius:14px;padding:12px 14px;color:#92400E;font-weight:900}.test-part-check input{width:20px;height:20px;min-height:20px;margin:0;accent-color:#F59E0B}.test-part-check strong{font-size:.86rem;letter-spacing:.04em}@media(max-width:760px){.summary-side{min-width:0}.test-part-check{margin-top:10px}}
/* Tabler Icons: iconografía consistente */
.ti{font-size:1.15em;line-height:1;vertical-align:-.14em}a .ti,button .ti,.btn .ti{margin-right:7px}.line-delete .ti,.line-qr .ti,.manual-email-add .ti,.manual-email-remove .ti{margin-right:0}.btn,button,nav a,.page-btn{gap:7px}.btn-text{display:inline}.line-delete,.line-qr{display:inline-flex;align-items:center;justify-content:center}.manual-email-add,.manual-email-remove{display:inline-flex!important;align-items:center!important;justify-content:center!important}
@media(max-width:1024px){
  .btn-text{display:none!important}
  a .ti,button .ti,.btn .ti,nav a .ti{margin-right:0!important;font-size:1.28em}
  nav a,.btn,button,.page-btn{min-width:44px;justify-content:center}
  .mobile-sign-btn .btn-text,.btn-save-sign .btn-text,.btn-clear-sign .btn-text,.btn-exit .btn-text{display:inline!important}
  .mobile-sign-btn .ti,.btn-save-sign .ti,.btn-clear-sign .ti,.btn-exit .ti{margin-right:7px!important}
}
@media(min-width:1025px){.line-delete,.line-qr{min-width:46px}.manual-email-add,.manual-email-remove{font-size:1rem!important}}
.btn-danger-soft{background:#FEE2E2!important;color:#991B1B!important;border-color:#FCA5A5!important}.btn-danger-soft:hover{background:#FECACA!important}.btn-danger{background:#EF4444!important;color:#fff!important;border-color:#DC2626!important}.delete-confirm{border-color:#FCA5A5}.delete-confirm h1{color:#991B1B}
/* Responsive global para todas las ventanas/paneles */
img,svg,canvas{max-width:100%}.settings-panel,.admin-hero,.form-card,.summary-card,.card{width:100%;max-width:100%}.modal-actions,.actions{flex-wrap:wrap}.modal-actions .btn,.modal-actions button{white-space:normal}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}.smtp-grid,.client-grid,.admin-grid,.admin-stats,.bottom-grid{min-width:0}.smtp-grid>*,.client-grid>*,.admin-grid>*,.admin-stats>*,.bottom-grid>*{min-width:0}
@media(max-width:1100px){main{max-width:100%;padding:0 16px}.summary-card{align-items:flex-start}.smtp-grid,.client-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-grid,.bottom-grid{grid-template-columns:1fr}.settings-panel{max-width:760px}.actions{position:static}}
@media(max-width:760px){main{padding:0 12px;margin-top:14px}.summary-card{display:grid;grid-template-columns:1fr;gap:14px}.summary-side{width:100%}.smtp-grid,.client-grid,.admin-stats,.admin-grid,.bottom-grid{grid-template-columns:1fr!important}.span-2{grid-column:auto!important}.settings-panel,.admin-hero,.form-card,.summary-card,.card{border-radius:16px;padding:16px}.modal-actions,.actions{display:grid!important;grid-template-columns:1fr;gap:10px}.modal-actions .btn,.modal-actions button,.actions .btn,.actions button{width:100%;justify-content:center}.toolbar{display:grid;grid-template-columns:1fr;gap:12px}.toolbar .btn{width:100%}.admin-card{grid-template-columns:1fr;align-items:start}.admin-icon{width:44px;height:44px}.smtp-form,.user-create-form{padding:0!important;border:0!important;box-shadow:none!important;background:transparent!important}.check-row,.test-part-check{align-items:flex-start}.manual-email-row{grid-template-columns:1fr 42px}.fixed-tech-block{grid-template-columns:1fr}.pagination-bar{display:grid;grid-template-columns:1fr}.pagination-info{text-align:center}.pagination-controls{grid-template-columns:1fr}.signature-modal-card{max-height:94vh;overflow:auto}td{word-break:break-word}.inline-form{grid-template-columns:1fr!important}.inline-form input{max-width:none;width:100%}}
@media(max-width:420px){main{padding:0 8px}nav{padding:10px 8px}.settings-panel,.admin-hero,.form-card,.summary-card,.card{padding:14px;border-radius:14px}h1{font-size:1.55rem}.summary-card h1{font-size:2rem}.section-head{display:grid;grid-template-columns:1fr;align-items:stretch}.section-head button{width:100%}.manual-email-row{grid-template-columns:1fr}.manual-email-add,.manual-email-remove{width:100%!important;border-radius:12px!important}.page-current{text-align:center}.login{padding:22px 16px}}
/* Unificar botones grises con azul pastel */
.btn-link,.desktop-clear,button[type=button].btn-link{background:#DBEAFE!important;color:#1E3A8A!important;border:1px solid #93C5FD!important;box-shadow:none!important}.btn-link:hover,.desktop-clear:hover,button[type=button].btn-link:hover{background:#BFDBFE!important;border-color:#60A5FA!important;color:#1E40AF!important;transform:none!important}
/* Quitar + final duplicado en Nuevo parte */
nav a[href='/new']::after{content:none!important}
/* Tabla partes: alinear arriba y acciones compactas */
.table-wrap th,.table-wrap td{vertical-align:top!important;align-items:flex-start}.table-wrap td{padding-top:14px!important}.table-wrap td:last-child{display:flex!important;flex-wrap:nowrap!important;gap:6px!important;align-items:flex-start!important;justify-content:flex-start!important;min-width:330px}.table-wrap td:last-child .btn{min-height:34px!important;padding:7px 10px!important;border-radius:11px!important;font-size:.86rem!important;line-height:1!important;white-space:nowrap!important}.table-wrap td:last-child .ti{font-size:1.05em!important;margin-right:5px!important}.table-wrap td:last-child .btn-text{display:inline!important}
@media(max-width:1024px){.table-wrap td:last-child{min-width:0;display:grid!important;grid-template-columns:repeat(4,minmax(44px,1fr))!important;gap:6px!important}.table-wrap td:last-child .btn{width:100%;padding:8px!important}.table-wrap td:last-child .btn-text{display:none!important}.table-wrap td:last-child .ti{margin-right:0!important}}
@media(max-width:760px){td{align-items:flex-start!important}.table-wrap td:last-child{grid-template-columns:repeat(4,1fr)!important}.table-wrap td:last-child:before{display:none!important}}
.email-message-field{min-height:120px;background:#F8FAFC;border-color:#DDE6EF;resize:vertical}.email-message-field:focus{background:#fff;border-color:#93C5FD;box-shadow:0 0 0 4px rgba(147,197,253,.22)}
@media(max-width:760px){.email-message-field{min-height:140px}}
.time-selects{display:grid;grid-template-columns:1fr 1fr;gap:6px}.time-selects select{min-height:46px;margin-top:7px}.time-field{min-width:150px}@media(max-width:760px){.time-selects{grid-template-columns:1fr 1fr}}
/* Menú inferior móvil: mostrar texto junto al icono para identificar la acción */
@media(max-width:1024px){
  .actions .btn-text{display:inline!important}
  .actions .btn .ti,.actions button .ti{margin-right:7px!important}
}
/* Lectura pública: descripción a la izquierda; tipo, tiempo/unidades y serie a la derecha */
.readonly-lines th:first-child,.readonly-lines td:first-child{text-align:left!important}
.readonly-lines th:nth-child(n+2),.readonly-lines td:nth-child(n+2){text-align:right!important}
@media(max-width:760px){
  .readonly-lines td{display:block!important;width:100%!important;border-bottom:0!important;padding:10px 13px!important;text-align:right!important}
  .readonly-lines td:before{display:none!important}
  .readonly-lines td:first-child{text-align:left!important}
  .readonly-lines tr{padding:0!important}
}
/* Notificaciones internas web */
.web-notifications{display:grid;gap:10px;margin:0 0 16px}.web-notification{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:start;background:#EFF6FF;border:1px solid #93C5FD;border-left:5px solid #2563EB;border-radius:16px;padding:13px 14px;color:#1E3A8A}.web-notification .ti{font-size:1.35rem;margin-top:2px}.web-notification p{margin:2px 0 0;color:#1F2937}.web-notification small{display:block;margin-top:4px;color:#64748B}.notification-close{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:999px;background:#DBEAFE;color:#1E3A8A;font-size:1.2rem;font-weight:900;text-decoration:none}.notification-close:hover{background:#BFDBFE;text-decoration:none}
@media(max-width:760px){.web-notification{grid-template-columns:auto 1fr auto;padding:12px}.web-notification p{font-size:.92rem}}
.qr-modal{display:none;position:fixed;inset:0;z-index:1100;background:rgba(7,24,39,.76);padding:16px;align-items:center;justify-content:center}.qr-modal.open{display:flex}.qr-modal-card{width:min(560px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 80px rgba(0,0,0,.28);padding:16px}.qr-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.qr-modal-head strong{font-size:1.08rem;color:var(--ctm-2)}#qr-video{width:100%;aspect-ratio:1/1;max-height:58vh;background:#0F172A;border-radius:14px;object-fit:cover;border:1px solid #CBD5E1}.qr-status{margin:10px 2px 0}.qr-modal-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}@media(max-width:760px){.qr-modal{padding:10px}.qr-modal-card{padding:12px;border-radius:16px;max-height:94vh;overflow:auto}.qr-modal-actions{grid-template-columns:1fr}.qr-modal-actions .btn-text,.qr-modal-head .btn-text{display:inline!important}.qr-modal-actions .ti,.qr-modal-head .ti{margin-right:7px!important}}

/* Vista pública de firma: tablas de resumen con importes alineados en todos los dispositivos */
.readonly-lines{table-layout:fixed!important;width:100%!important;border-collapse:separate!important;border-spacing:0!important;overflow:hidden!important}
.readonly-lines th,.readonly-lines td{display:table-cell!important;vertical-align:top!important;white-space:normal!important;word-break:normal!important;overflow-wrap:anywhere!important;min-width:0!important}
.readonly-lines td:last-child{display:table-cell!important;min-width:0!important;justify-content:initial!important;align-items:initial!important}
.readonly-lines tfoot th{background:#EEF6FF!important;color:#25415F!important;border-top:1px solid var(--line);font-weight:900!important}
.readonly-lines tfoot th:last-child{text-align:right!important}
.readonly-services th:nth-child(1),.readonly-services td:nth-child(1){width:44%;text-align:left!important}
.readonly-services th:nth-child(2),.readonly-services td:nth-child(2){width:8%;text-align:center!important}
.readonly-services th:nth-child(3),.readonly-services td:nth-child(3){width:16%;text-align:right!important}
.readonly-services th:nth-child(4),.readonly-services td:nth-child(4){width:16%;text-align:right!important}
.readonly-services th:nth-child(5),.readonly-services td:nth-child(5){width:16%;text-align:right!important}
.readonly-materials th:nth-child(1),.readonly-materials td:nth-child(1){width:38%;text-align:left!important}
.readonly-materials th:nth-child(2),.readonly-materials td:nth-child(2){width:10%;text-align:right!important}
.readonly-materials th:nth-child(3),.readonly-materials td:nth-child(3){width:16%;text-align:right!important}
.readonly-materials th:nth-child(4),.readonly-materials td:nth-child(4){width:16%;text-align:right!important}
.readonly-materials th:nth-child(5),.readonly-materials td:nth-child(5){width:20%;text-align:right!important}
@media(max-width:760px){
  .readonly-lines{table-layout:auto!important;border:0!important;background:transparent!important;box-shadow:none!important}
  .readonly-lines thead{display:none!important}
  .readonly-lines tbody,.readonly-lines tfoot{display:block!important}
  .readonly-lines tr{display:block!important;background:#fff!important;margin:0 0 12px!important;border:1px solid var(--line)!important;border-radius:14px!important;box-shadow:var(--shadow-sm)!important;overflow:hidden!important}
  .readonly-lines td,.readonly-lines th{display:grid!important;grid-template-columns:minmax(105px,42%) 1fr!important;gap:10px!important;width:100%!important;padding:10px 12px!important;border-bottom:1px solid #EEF2F7!important;text-align:right!important}
  .readonly-lines td:before,.readonly-lines th:before{content:attr(data-label);display:block!important;font-weight:850;color:#5D7088;text-align:left!important}
  .readonly-lines td:first-child{text-align:right!important}
  .readonly-lines td:last-child{display:grid!important;min-width:0!important;border-bottom:0!important}
  .readonly-lines tfoot tr{background:#EEF6FF!important}
  .readonly-lines tfoot th{background:transparent!important}
}
/* Mejoras panel admin: estados, actividad, emails y permisos */
.stat-card small{display:block;margin-top:6px;color:var(--muted);font-weight:700}.status-card.ok{border-color:#86EFAC;background:#F0FDF4}.status-card.ok strong{color:#15803D}.status-card.warn{border-color:#FDBA74;background:#FFF7ED}.status-card.warn strong{color:#C2410C}.status-card.bad{border-color:#FCA5A5;background:#FEF2F2}.status-card.bad strong{color:#B91C1C}.admin-panels{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:18px}.metric-list,.activity-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.metric-list li{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #EEF2F7}.metric-list strong{color:#1E3A8A}.activity-list li{padding:10px 0;border-bottom:1px solid #EEF2F7}.activity-list span,.activity-list em{display:block;color:var(--muted);font-style:normal;font-size:.82rem;margin-top:3px}.smtp-test-box{margin-top:18px;padding-top:18px;border-top:1px solid #EEF2F7}.user-row-form{display:grid!important;grid-template-columns:1.2fr .7fr auto 1fr auto 1.2fr auto;align-items:center;gap:8px}.user-row-form input,.user-row-form select{min-width:0}.admin-table-card td .status{white-space:nowrap}@media(max-width:1100px){.admin-panels{grid-template-columns:1fr}.user-row-form{grid-template-columns:1fr!important}}
/* Filtros directos en cabecera de partes + drag&drop admin */
.table-filter-row th{background:#F8FAFC!important;padding:8px}.table-filter-row input,.table-filter-row select{width:100%;min-width:110px;padding:9px 10px;border:1px solid #DDE6EF;border-radius:10px;background:#fff;font-size:.86rem}.table-filter-row .btn-small{min-height:36px;margin:2px}.date-filter-pair{display:grid;grid-template-columns:1fr;gap:6px}.draggable-zone [data-dnd-id]{cursor:grab}.draggable-zone [data-dnd-id]:active{cursor:grabbing}.draggable-item.dragging{opacity:.55;outline:2px dashed #2563EB;outline-offset:4px}.admin-hero .hero-sub:after{content:'  ↕';color:#2563EB;font-weight:900}@media(max-width:760px){.table-filter-row th{display:block}.table-filter-row input,.table-filter-row select,.table-filter-row .btn-small{width:100%}}
/* Resumen solo lectura de partes */
.summary-modal{position:fixed;inset:0;z-index:80;background:rgba(7,24,39,.62);display:none;align-items:center;justify-content:center;padding:18px}.summary-modal.open{display:flex}.summary-modal-card{background:#fff;border-radius:20px;box-shadow:var(--shadow);width:min(980px,96vw);max-height:94vh;overflow:auto;padding:18px}.readonly-summary{display:grid;gap:14px}.readonly-section{border:1px solid var(--line);border-radius:16px;background:#F8FAFC;padding:14px}.readonly-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.readonly-grid div{background:#fff;border:1px solid #E5EAF0;border-radius:12px;padding:10px}.readonly-grid span{display:block;color:var(--muted);font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}.readonly-grid strong{display:block;margin-top:4px;color:var(--text);font-weight:850}.readonly-table table{box-shadow:none}.readonly-table th{background:#DBEAFE;color:#1E3A8A}.readonly-section p{margin:8px 0 0;white-space:pre-wrap}@media(max-width:760px){.readonly-grid{grid-template-columns:1fr}.summary-modal-card{width:96vw}}
/* Servicio realizado multilínea autoampliable */
.service-textarea{min-height:42px;resize:none;overflow:hidden;line-height:1.35}.service-row{align-items:start}.service-row label span{margin-bottom:6px}
/* Resumen: servicios alineados a la izquierda */
.readonly-service-summary th,.readonly-service-summary td{text-align:left!important}.readonly-service-summary td{vertical-align:top}.readonly-service-summary td:first-child{white-space:pre-wrap}
.offline-card{max-width:720px;margin:40px auto}
.offline-banner{position:sticky;top:0;z-index:2000;background:#FEF3C7;color:#92400E;border-bottom:1px solid #FCD34D;padding:10px 16px;text-align:center;font-weight:900}
body.is-offline .actions{border-color:#FCD34D;background:rgba(254,243,199,.92)}
/* Formulario de parte: cuadrícula estable para datos de cliente y resumen */
.client-grid{align-items:start}
.client-grid label{min-width:0}
.summary-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}
.summary-modal-head strong{font-size:1.05rem;color:var(--ctm-2)}
@media(min-width:1025px){
  .client-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
    grid-template-areas:
      "dni budget contact"
      "billing address address"
      "phone town postal"
      "email email email"
      "tech tech tech";
  }
  .client-dni{grid-area:dni}.client-billing{grid-area:billing}.client-budget{grid-area:budget}.client-contact{grid-area:contact}
  .client-address{grid-area:address}.client-phone{grid-area:phone}.client-town{grid-area:town}.client-postal{grid-area:postal}.client-email{grid-area:email}
  .tech-extra-panel{grid-area:tech}
}
