/* Melchisoft — Estilos principales */

:root {
      --font: 'Plus Jakarta Sans', -apple-system, sans-serif;
      --bg:#f4f6f9; --surface:#fff; --surface-2:#f8f9fc;
      --border:#e1e6ef; --divider:#edf0f5;
      --text:#0c1322; --muted:#5a6478; --faint:#97a3b4;
      --blue:#0051a8; --blue-h:#003d80; --blue-l:#dbeafe;
      --green:#16a34a; --green-l:#dcfce7;
      --r-sm:6px; --r-md:10px; --r-lg:16px; --r-xl:22px; --r-f:9999px;
      --sh-lg:0 20px 48px rgba(0,0,0,.12),0 4px 8px rgba(0,0,0,.04);
    }
    *,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
    html{-webkit-font-smoothing:antialiased;scroll-behavior:smooth}
    body{font-family:var(--font);font-size:15px;color:var(--text);background:var(--bg);line-height:1.6;min-height:100dvh;
      -webkit-user-select:none;-moz-user-select:none;user-select:none}
    img,canvas{display:block;max-width:100%;-webkit-user-drag:none;user-drag:none;pointer-events:none}
    /* inputs/buttons need pointer events */
    input,button,a,label{pointer-events:auto}
    button{cursor:pointer;font:inherit;color:inherit;border:none;background:none}
    a{color:var(--blue)}
    .wrap{max-width:960px;margin-inline:auto;padding-inline:16px}
    .wrap-sm{max-width:620px;margin-inline:auto;padding-inline:16px}
    .header{position:sticky;top:0;z-index:100;background:rgba(255,255,255,.92);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border-bottom:1px solid var(--border)}
    .header-inner{display:flex;align-items:center;justify-content:space-between;height:58px;max-width:960px;margin-inline:auto;padding-inline:16px}
    .logo{display:flex;align-items:center;gap:8px;font-weight:800;font-size:18px;color:var(--blue);text-decoration:none}
    .logo-icon{width:32px;height:32px;background:var(--blue);border-radius:8px;display:flex;align-items:center;justify-content:center}
    .chip{display:inline-flex;align-items:center;gap:5px;padding:3px 11px;border-radius:var(--r-f);font-size:12px;font-weight:700}
    .chip-blue{background:var(--blue-l);color:var(--blue)}
    .chip-green{background:var(--green-l);color:var(--green)}
    .hero{padding:56px 0 36px;text-align:center}
    .hero-eyebrow{margin-bottom:14px}
    .hero h1{font-size:clamp(26px,5vw,46px);font-weight:800;line-height:1.1;letter-spacing:-.02em;margin-bottom:14px}
    .hero h1 em{font-style:normal;color:var(--blue)}
    .hero p{font-size:clamp(15px,2vw,18px);color:var(--muted);max-width:46ch;margin-inline:auto;margin-bottom:24px}
    .price-pill{display:inline-flex;align-items:center;gap:8px;background:var(--blue);color:#fff;padding:10px 24px;border-radius:var(--r-f);font-size:18px;font-weight:800}
    .steps-wrap{padding:12px 0 40px}
    .steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px}
    .step{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:16px;display:flex;gap:12px;align-items:flex-start}
    .step-n{flex-shrink:0;width:30px;height:30px;border-radius:var(--r-f);background:var(--blue-l);color:var(--blue);font-weight:800;font-size:13px;display:flex;align-items:center;justify-content:center}
    .step h3{font-size:13px;font-weight:700;margin-bottom:3px}
    .step p{font-size:12px;color:var(--muted);line-height:1.45}
    .tool-wrap{padding-bottom:72px}
    .tool-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--sh-lg);overflow:hidden}
    .tool-head{padding:14px 22px;border-bottom:1px solid var(--divider);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:8px}
    .tool-head h2{font-size:15px;font-weight:700}
    .tool-body{padding:22px}
    .upload-zone{border:2px dashed var(--border);border-radius:var(--r-lg);padding:52px 20px;text-align:center;cursor:pointer;background:var(--bg);transition:all .18s ease}
    .upload-zone:hover,.upload-zone.drag-over{border-color:var(--blue);background:var(--blue-l)}
    .upload-icon{margin:0 auto 14px;color:var(--faint)}
    .upload-zone h3{font-size:16px;font-weight:700;margin-bottom:4px}
    .upload-zone p{font-size:13px;color:var(--muted)}
    #file-input{display:none}
    .proc-area{display:none}
    .proc-area.on{display:block}
    .alert{display:flex;gap:9px;align-items:flex-start;padding:10px 14px;border-radius:var(--r-md);margin-bottom:14px;font-size:13px}
    .alert-info{background:var(--blue-l);color:#1e40af}
    .alert-warn{background:#fef9c3;color:#854d0e}
    .alert svg{flex-shrink:0;margin-top:1px}
    .options{display:flex;flex-direction:column;gap:10px;margin-bottom:18px}
    .opt-row{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface-2)}
    .opt-label{font-size:13px;font-weight:600;margin-bottom:2px}
    .opt-desc{font-size:12px;color:var(--muted)}
    .tog{position:relative;width:42px;height:23px;flex-shrink:0}
    .tog input{opacity:0;width:0;height:0}
    .tog-s{position:absolute;inset:0;background:var(--border);border-radius:var(--r-f);cursor:pointer;transition:background .2s}
    .tog-s::before{content:'';position:absolute;height:17px;width:17px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:transform .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
    .tog input:checked~.tog-s{background:var(--blue)}
    .tog input:checked~.tog-s::before{transform:translateX(19px)}
    .prog-wrap{margin-bottom:14px}
    .prog-bar{height:5px;background:var(--border);border-radius:3px;overflow:hidden;margin-bottom:6px}
    .prog-fill{height:100%;background:var(--blue);border-radius:3px;transition:width .3s ease}
    .prog-lbl{font-size:12px;color:var(--muted);text-align:center}
    .prev-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px}
    @media(max-width:480px){.prev-grid{grid-template-columns:1fr}}
    .prev-box{border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}
    .prev-lbl{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:7px 12px;background:var(--surface-2);border-bottom:1px solid var(--border)}
    .prev-img{position:relative;background:#e0e0e0;background-image:linear-gradient(45deg,#c8c8c8 25%,transparent 25%),linear-gradient(-45deg,#c8c8c8 25%,transparent 25%),linear-gradient(45deg,transparent 75%,#c8c8c8 75%),linear-gradient(-45deg,transparent 75%,#c8c8c8 75%);background-size:14px 14px;background-position:0 0,0 7px,7px -7px,-7px 0px;display:flex;align-items:center;justify-content:center;min-height:190px;overflow:hidden}
    .prev-img.white{background:#fff;background-image:none}
    #c-display{max-height:270px;width:auto;max-width:100%}
    .spin-overlay{display:none;position:absolute;inset:0;background:rgba(255,255,255,.88);backdrop-filter:blur(4px);align-items:center;justify-content:center;flex-direction:column;gap:10px}
    .spin-overlay.on{display:flex}
    .spinner{width:30px;height:30px;border:3px solid var(--border);border-top-color:var(--blue);border-radius:50%;animation:spin .7s linear infinite}
    @keyframes spin{to{transform:rotate(360deg)}}
    .btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:10px 18px;border-radius:var(--r-md);font-size:14px;font-weight:700;cursor:pointer;transition:all .18s ease;border:none;white-space:nowrap;min-height:44px;text-decoration:none}
    .btn-blue{background:var(--blue);color:#fff}
    .btn-blue:hover{background:var(--blue-h)}
    .btn-green{background:var(--green);color:#fff}
    .btn-green:hover{background:#15803d}
    .btn-wa{background:#25d366;color:#fff;font-size:15px;padding:13px 20px;border-radius:var(--r-lg)}
    .btn-wa:hover{background:#1ebe5d}
    .btn-ghost{border:1px solid var(--border);color:var(--muted);background:transparent}
    .btn-ghost:hover{background:var(--bg)}
    .btn-full{width:100%}
    .btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}
    .btn-row{display:flex;gap:10px;flex-wrap:wrap}
    .pay-box{display:none;padding:0;border-top:1px solid var(--divider)}
    .pay-box.on{display:block}
    .pay-inner{padding:22px;background:var(--surface-2)}
    .pay-card{border:2px solid #e2f0ff;border-radius:var(--r-lg);padding:22px 20px;background:#fff;max-width:420px;margin-inline:auto}
    .pay-card h3{font-size:17px;font-weight:800;margin-bottom:4px}
    .pay-price{font-size:32px;font-weight:800;color:var(--blue);margin:6px 0 14px}
    .clabe-box{background:var(--blue-l);border:1px solid #bfdbfe;border-radius:var(--r-md);padding:14px 16px;margin-bottom:14px;text-align:left}
    .clabe-box label{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.05em;color:var(--blue);display:block;margin-bottom:4px}
    .clabe-num{font-size:17px;font-weight:800;color:var(--blue);letter-spacing:.06em;font-variant-numeric:tabular-nums;word-break:break-all}
    .clabe-copy{display:flex;align-items:center;gap:6px;margin-top:8px;font-size:12px;color:var(--blue);font-weight:600;cursor:pointer;border:none;background:none;padding:0}
    .clabe-copy:hover{text-decoration:underline}
    .pay-steps{list-style:none;margin-bottom:16px;display:flex;flex-direction:column;gap:9px;text-align:left}
    .pay-steps li{display:flex;align-items:flex-start;gap:9px;font-size:13px;color:var(--muted)}
    .pay-step-n{flex-shrink:0;width:22px;height:22px;background:var(--blue);color:#fff;border-radius:var(--r-f);font-size:11px;font-weight:800;display:flex;align-items:center;justify-content:center;margin-top:1px}
    .code-section{background:var(--surface-2);border:1px solid var(--border);border-radius:var(--r-md);padding:14px 16px;margin-bottom:14px;text-align:left}
    .code-section label{font-size:12px;font-weight:700;display:block;margin-bottom:8px;color:var(--text)}
    .code-row{display:flex;flex-direction:column;gap:8px}
    .code-input{flex:1;padding:10px 14px;border:1.5px solid var(--border);border-radius:var(--r-md);font-size:18px;font-weight:700;letter-spacing:.2em;text-align:center;font-family:var(--font);color:var(--text);outline:none;transition:border-color .18s;-webkit-user-select:text;user-select:text}
    .code-input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(0,81,168,.12)}
    .code-input.error{border-color:#dc2626;background:#fff5f5}
    .code-input.ok{border-color:var(--green);background:#f0fdf4}
    .code-error{font-size:12px;color:#dc2626;margin-top:5px;display:none}
    .code-error.on{display:block}
    .dl-box{display:none;padding:28px 22px;border-top:1px solid var(--divider);background:var(--green-l);text-align:center}
    .dl-box.on{display:block}
    .dl-box h3{font-size:18px;font-weight:800;margin-bottom:6px}
    .dl-box p{font-size:13px;color:#166534;margin-bottom:18px}
    .dl-specs{font-size:12px;color:#166534;margin-top:10px}
    .reqs{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:20px;margin-top:28px}
    .reqs h3{font-size:15px;font-weight:700;margin-bottom:14px}
    .reqs-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:8px}
    .req-item{display:flex;align-items:flex-start;gap:7px;font-size:13px;color:var(--muted)}
    .req-item .ck{color:var(--green);flex-shrink:0;margin-top:1px}
    .footer{border-top:1px solid var(--border);padding:36px 0;text-align:center;color:var(--faint);font-size:12px}
    #admin-panel{display:none;position:fixed;inset:0;z-index:999;background:rgba(0,0,0,.55);backdrop-filter:blur(6px);align-items:center;justify-content:center}
    #admin-panel.on{display:flex}
    .admin-card{background:#fff;border-radius:24px;padding:32px 28px;max-width:360px;width:90%;text-align:center;box-shadow:0 32px 64px rgba(0,0,0,.25)}
    .admin-card h2{font-size:17px;font-weight:800;margin-bottom:4px}
    .admin-card p{font-size:13px;color:var(--muted);margin-bottom:20px}
    .admin-code{font-size:52px;font-weight:800;color:var(--blue);letter-spacing:.15em;margin:12px 0}
    .admin-date{font-size:12px;color:var(--muted);margin-bottom:20px}
    .admin-close{font-size:13px;color:var(--muted);text-decoration:underline;cursor:pointer;border:none;background:none;margin-top:10px}
    @media(max-width:600px){.hero{padding:36px 0 24px}.tool-body,.pay-inner,.dl-box{padding:16px}}