/* ==============================================
   GuestGlue — Miami Streamline Theme
   ============================================== */
:root {
    --bg:#F4F8FB;--card:#FFF;--card-alt:#EFF4F8;
    --pri:#0891B2;--pri-lt:#22D3EE;--pri-pale:#ECFEFF;--pri-dk:#0E7490;
    --pink:#EC4899;--pink-lt:#FBCFE8;--pink-pale:#FDF2F8;
    --coral:#FB923C;--coral-lt:#FED7AA;
    --mint:#6EE7B7;--mint-pale:#ECFDF5;
    --txt:#0F172A;--txt-lt:#64748B;--bdr:#DEE5ED;
    --grn:#10B981;--grn-lt:#D1FAE5;
    --err:#EF4444;--err-lt:#FEE2E2;
    --wrn:#F59E0B;--wrn-lt:#FEF3C7;
    --shadow:0 4px 24px rgba(0,0,0,.05);
    --shadow-lg:0 12px 40px rgba(0,0,0,.08);
    --grad:linear-gradient(135deg,#0891B2,#EC4899,#FB923C);
    --r:12px;--r-lg:16px;--r-pill:50px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'DM Sans',-apple-system,BlinkMacSystemFont,sans-serif;background:var(--bg);color:var(--txt);line-height:1.6;min-height:100vh}
h1,h2,h3,h4{font-family:'Josefin Sans',sans-serif;font-weight:600}

/* HEADER */
.app-header{text-align:center;padding:2.5rem 1rem 1.5rem;background:linear-gradient(180deg,var(--pri-pale) 0%,var(--bg) 100%)}
.app-logo{width:250px;height:250px;object-fit:contain;margin-bottom:.5rem;filter:drop-shadow(0 4px 12px rgba(8,145,178,.15))}
.app-header h1{font-size:2.6rem;letter-spacing:.14em;color:var(--pri-dk);text-shadow:0 0 60px rgba(8,145,178,.12)}
.subtitle{font-family:'DM Sans',sans-serif;font-size:.9rem;color:var(--txt-lt);letter-spacing:.1em;text-transform:uppercase;font-weight:400;margin-top:.1rem}
.privacy-badge{display:inline-flex;align-items:center;gap:.4rem;background:var(--mint-pale);color:#065F46;font-size:.73rem;font-weight:600;padding:.3rem .9rem;border-radius:var(--r-pill);margin-top:.8rem;border:1px solid rgba(16,185,129,.2)}

/* STEP NAV */
.step-nav{display:flex;justify-content:center;align-items:flex-start;padding:1.5rem 1rem .5rem;max-width:720px;margin:0 auto}
.step-item{display:flex;flex-direction:column;align-items:center;cursor:pointer;min-width:64px;position:relative}
.step-circle{width:36px;height:36px;border-radius:50%;border:2.5px solid var(--bdr);background:var(--card);display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:700;color:var(--txt-lt);transition:all .3s;z-index:1}
.step-item.active .step-circle{background:var(--pri);border-color:var(--pri);color:#fff;box-shadow:0 0 0 4px rgba(8,145,178,.15)}
.step-item.completed .step-circle{background:var(--grn);border-color:var(--grn);color:#fff}
.step-text{font-size:.6rem;margin-top:.35rem;color:var(--txt-lt);text-transform:uppercase;letter-spacing:.04em;font-weight:500;font-family:'Josefin Sans',sans-serif;white-space:nowrap}
.step-item.active .step-text{color:var(--pri-dk);font-weight:700}
.step-item.completed .step-text{color:var(--grn)}
.step-line{flex:1;height:2.5px;background:var(--bdr);margin-top:17px;min-width:12px;border-radius:2px}
.step-line.done{background:var(--grn)}

/* MAIN */
.main-container{max-width:1100px;margin:0 auto;padding:0 1.5rem 3rem}

/* CARDS */
.card{background:var(--card);border:1px solid var(--bdr);border-radius:var(--r-lg);padding:2rem;margin-bottom:1.5rem;box-shadow:var(--shadow);position:relative;overflow:hidden}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:var(--grad)}
.card h2{font-size:1.55rem;margin-bottom:.4rem;color:var(--pri-dk)}
.card h3{font-size:1.2rem;color:var(--txt);margin-bottom:.4rem}
.card-desc{color:var(--txt-lt);font-size:.88rem;margin-bottom:1.2rem;line-height:1.7}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:.5rem;padding:.55rem 1.4rem;border:2px solid transparent;border-radius:var(--r-pill);font-family:'DM Sans',sans-serif;font-size:.82rem;font-weight:600;cursor:pointer;transition:all .25s;text-transform:uppercase;letter-spacing:.04em}
.btn-primary{background:var(--pri);color:#fff;border-color:var(--pri)}
.btn-primary:hover{background:var(--pri-dk);border-color:var(--pri-dk);box-shadow:0 4px 16px rgba(8,145,178,.25);transform:translateY(-1px)}
.btn-secondary{background:transparent;color:var(--pri);border-color:var(--pri)}
.btn-secondary:hover{background:var(--pri);color:#fff}
.btn-pink{background:var(--pink);color:#fff;border-color:var(--pink)}
.btn-pink:hover{background:#DB2777;border-color:#DB2777;box-shadow:0 4px 16px rgba(236,72,153,.25);transform:translateY(-1px)}
.btn-danger{background:var(--err);color:#fff;border-color:var(--err)}
.btn-success{background:var(--grn);color:#fff;border-color:var(--grn)}
.btn-sm{padding:.3rem .85rem;font-size:.72rem}
.btn:disabled{opacity:.5;cursor:not-allowed;transform:none!important}
.btn-group{display:flex;gap:.75rem;margin-top:1.5rem;flex-wrap:wrap}

/* FORMS */
select,input[type="text"],input[type="number"]{font-family:'DM Sans',sans-serif;font-size:.84rem;padding:.5rem .75rem;border:1.5px solid var(--bdr);border-radius:8px;background:#fff;color:var(--txt);transition:border-color .2s}
select:focus,input:focus{outline:none;border-color:var(--pri);box-shadow:0 0 0 3px rgba(8,145,178,.1)}
input[type="checkbox"]{accent-color:var(--pri);width:16px;height:16px}

/* UPLOAD */
.upload-zone{border:2.5px dashed var(--pri-lt);border-radius:var(--r-lg);padding:3rem 2rem;text-align:center;cursor:pointer;transition:all .3s;background:var(--pri-pale)}
.upload-zone:hover,.upload-zone.dragover{border-color:var(--pri);background:rgba(8,145,178,.06);transform:scale(1.005)}
.upload-zone .uz-icon{font-size:3rem;margin-bottom:.5rem}
.upload-zone p{color:var(--txt-lt);font-size:.9rem}
.upload-zone .browse{color:var(--pri);font-weight:600;text-decoration:underline}

/* FILE LIST */
.file-list{margin-top:1.5rem}
.file-item{display:flex;align-items:flex-start;gap:1rem;padding:1rem 1.25rem;background:var(--card-alt);border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:.65rem;transition:box-shadow .2s}
.file-item:hover{box-shadow:var(--shadow)}
.file-icon{font-size:1.5rem;padding-top:.1rem}
.file-info{flex:1}
.file-name{font-weight:600;font-size:.92rem}
.file-meta{font-size:.78rem;color:var(--txt-lt)}
.file-label-input{margin-top:.4rem;width:100%;max-width:300px}
.file-remove{background:none;border:none;color:var(--err);cursor:pointer;font-size:1.2rem;padding:.2rem;border-radius:50%;transition:background .2s}
.file-remove:hover{background:var(--err-lt)}
.sheet-list{margin-top:.5rem;padding-left:.5rem}
.sheet-item{display:flex;align-items:center;gap:.5rem;padding:.25rem 0;font-size:.84rem}
.sheet-item label{cursor:pointer}
.sheet-label-input{margin-left:auto;width:200px;font-size:.78rem;padding:.3rem .5rem}

/* MAPPING */
.mapping-section{margin-bottom:1.5rem;border:1px solid var(--bdr);border-radius:var(--r);overflow:hidden;background:var(--card)}
.mapping-header{background:var(--card-alt);padding:.9rem 1.2rem;border-bottom:1px solid var(--bdr);display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:.5rem}
.mapping-header h3{font-size:1.05rem;display:flex;align-items:center;gap:.5rem}
.mapping-badge{font-size:.68rem;background:var(--pri);color:#fff;padding:.15rem .5rem;border-radius:var(--r-pill);font-family:'DM Sans',sans-serif}
.mapping-status{font-size:.76rem;display:flex;gap:.6rem;flex-wrap:wrap}
.mapping-status .ok{color:var(--grn);font-weight:600}
.mapping-status .miss{color:var(--err);font-weight:600}
.preview-wrap{overflow-x:auto;padding:1rem 1.2rem}
.preview-table{width:100%;border-collapse:collapse;font-size:.78rem}
.preview-table th{background:var(--pri-dk);color:#fff;padding:.45rem .7rem;text-align:left;font-weight:600;white-space:nowrap}
.preview-table td{padding:.35rem .7rem;border-bottom:1px solid var(--bdr);white-space:nowrap;max-width:180px;overflow:hidden;text-overflow:ellipsis}
.preview-table tr:nth-child(even){background:var(--card-alt)}
.mapping-row{background:var(--pri-pale)!important}
.mapping-row td{padding:.45rem .7rem}
.mapping-row select{width:100%;font-size:.74rem;padding:.3rem}

/* IDENTITY CONFIG */
.config-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem}
.key-item{display:flex;align-items:center;gap:.75rem;padding:.7rem 1rem;background:var(--card-alt);border:1px solid var(--bdr);border-radius:var(--r);margin-bottom:.5rem}
.key-num{display:flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--pri);color:#fff;border-radius:50%;font-size:.72rem;font-weight:700;flex-shrink:0}
.key-item.off{opacity:.5}
.key-item.off .key-num{background:var(--bdr)}
.threshold-ctrl{display:flex;align-items:center;gap:1rem;margin-top:.5rem}
.threshold-ctrl input[type="range"]{flex:1;accent-color:var(--pri)}
.threshold-val{font-weight:700;color:var(--pri-dk);min-width:45px;text-align:center;font-size:1rem}
.info-box{padding:1rem;background:var(--card-alt);border-radius:var(--r);font-size:.84rem;margin-top:1rem;border-left:3px solid var(--pri-lt)}
.info-box ul{padding-left:1.2rem;color:var(--txt-lt);margin-top:.3rem}

/* COLUMN SELECTOR */
.col-groups{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:1.2rem;margin-top:.75rem}
.col-group{background:var(--card-alt);padding:1rem;border-radius:var(--r);border:1px solid var(--bdr)}
.col-group h4{font-size:.78rem;color:var(--pri);margin-bottom:.5rem;text-transform:uppercase;letter-spacing:.06em;padding-bottom:.35rem;border-bottom:2px solid var(--pri-lt)}
.col-toggle{display:flex;align-items:center;gap:.5rem;font-size:.82rem;padding:.2rem 0;cursor:pointer}

/* FUZZY */
.fuzzy-card{border:2px solid var(--wrn-lt);background:#FFFDF6;border-radius:var(--r);padding:1.2rem;margin-bottom:1rem;transition:all .3s}
.fuzzy-card.accepted{border-color:var(--grn-lt);background:#F5FFF8}
.fuzzy-card.rejected{border-color:var(--err-lt);background:#FFF5F5;opacity:.65}
.fuzzy-score{display:inline-block;padding:.2rem .6rem;border-radius:var(--r-pill);font-size:.72rem;font-weight:700}
.fuzzy-score.high{background:var(--grn-lt);color:#065F46}
.fuzzy-score.med{background:var(--wrn-lt);color:#78350F}
.fuzzy-score.low{background:var(--err-lt);color:#7F1D1D}
.fuzzy-comp{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:.7rem 0;font-size:.84rem}
.fuzzy-side{background:#fff;padding:.75rem;border-radius:8px;border:1px solid var(--bdr)}
.fuzzy-side-label{font-size:.68rem;text-transform:uppercase;color:var(--txt-lt);margin-bottom:.25rem;letter-spacing:.05em;font-weight:600}
.fuzzy-actions{display:flex;gap:.5rem}

/* REVIEW TABLE */
.rev-table-wrap{overflow-x:auto;border:1px solid var(--bdr);border-radius:var(--r);max-height:600px;overflow-y:auto}
.rev-table{width:100%;border-collapse:collapse;font-size:.8rem}
.rev-table th{background:var(--pri-dk);color:#fff;padding:.55rem .7rem;text-align:left;font-weight:600;white-space:nowrap;position:sticky;top:0;z-index:1}
.rev-table td{padding:.45rem .7rem;border-bottom:1px solid var(--bdr);max-width:180px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rev-table tr:nth-child(even){background:var(--card-alt)}
.rev-table tr:hover{background:rgba(8,145,178,.04)}
.rev-table td.conflict{background:var(--wrn-lt);cursor:pointer}

/* TABS */
.tab-bar{display:flex;gap:0;border-bottom:2.5px solid var(--bdr);margin-bottom:1rem}
.tab{padding:.55rem 1.2rem;font-size:.84rem;font-weight:500;cursor:pointer;border:none;background:none;color:var(--txt-lt);border-bottom:2.5px solid transparent;margin-bottom:-2.5px;transition:all .2s;font-family:'DM Sans',sans-serif}
.tab.active{color:var(--pri-dk);border-bottom-color:var(--pri);font-weight:600}
.tab .badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;background:var(--txt-lt);color:#fff;border-radius:10px;font-size:.68rem;font-weight:700;margin-left:.3rem;padding:0 5px}
.tab.active .badge{background:var(--pri)}
.tab .badge.err-b{background:var(--err)}

/* PAGINATION */
.pagination{display:flex;align-items:center;justify-content:center;gap:.4rem;margin-top:1rem}
.pagination button{padding:.35rem .75rem;border:1px solid var(--bdr);background:#fff;border-radius:8px;cursor:pointer;font-size:.78rem;font-family:'DM Sans',sans-serif;transition:all .2s}
.pagination button.active{background:var(--pri);color:#fff;border-color:var(--pri)}
.pagination button:disabled{opacity:.35;cursor:not-allowed}

/* STATS */
.stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:1rem;margin-bottom:1.5rem}
.stat-card{text-align:center;padding:1rem;background:var(--card-alt);border-radius:var(--r);border:1px solid var(--bdr)}
.stat-card.st-teal{border-bottom:3px solid var(--pri)}
.stat-card.st-pink{border-bottom:3px solid var(--pink)}
.stat-card.st-coral{border-bottom:3px solid var(--coral)}
.stat-card.st-mint{border-bottom:3px solid var(--grn)}
.stat-val{font-family:'Josefin Sans',sans-serif;font-size:1.9rem;font-weight:700;color:var(--pri-dk)}
.stat-label{font-size:.7rem;color:var(--txt-lt);text-transform:uppercase;letter-spacing:.05em;font-weight:500}

/* EXPORT GRID */
.export-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem}
.export-option{text-align:center;padding:1.5rem;border:2px solid var(--bdr);border-radius:var(--r-lg);cursor:pointer;transition:all .25s;background:#fff}
.export-option:hover{border-color:var(--pri);transform:translateY(-3px);box-shadow:var(--shadow-lg)}
.export-option .ex-icon{font-size:2rem;margin-bottom:.4rem}
.export-option h4{font-family:'Josefin Sans',sans-serif;font-size:1.05rem;margin-bottom:.2rem}
.export-option p{font-size:.76rem;color:var(--txt-lt)}

/* MODAL */
.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,23,42,.4);z-index:1000;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(2px)}
.modal{background:#fff;border-radius:var(--r-lg);padding:2rem;max-width:500px;width:90%;max-height:80vh;overflow-y:auto;box-shadow:var(--shadow-lg)}
.modal h3{font-family:'Josefin Sans',sans-serif;margin-bottom:1rem;color:var(--pri-dk)}
.conf-opt{display:block;width:100%;text-align:left;padding:.75rem;border:1.5px solid var(--bdr);border-radius:var(--r);margin-bottom:.5rem;cursor:pointer;transition:all .2s;background:#fff;font-family:'DM Sans',sans-serif;font-size:.85rem}
.conf-opt:hover,.conf-opt.sel{border-color:var(--pri);background:var(--pri-pale)}
.conf-src{font-size:.72rem;color:var(--txt-lt);margin-top:.15rem}

/* TOAST */
.toast{position:fixed;bottom:2rem;right:2rem;padding:.7rem 1.5rem;border-radius:var(--r-pill);color:#fff;font-size:.84rem;font-weight:500;z-index:2000;animation:slideIn .3s ease;box-shadow:var(--shadow)}
.toast.success{background:var(--grn)}.toast.error{background:var(--err)}
@keyframes slideIn{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}

/* DECO */
.deco-line{display:flex;align-items:center;gap:.5rem;margin:1.5rem 0}
.deco-line::before,.deco-line::after{content:'';flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--bdr),transparent)}
.deco-line .dot{width:8px;height:8px;background:var(--grad);border-radius:50%}

/* FOOTER */
.app-footer{text-align:center;padding:2rem 1rem;font-size:.8rem;color:var(--txt-lt);border-top:1px solid var(--bdr)}
.app-footer a{color:var(--pri);text-decoration:none;font-weight:500}
.app-footer a:hover{text-decoration:underline}
.app-footer p+p{margin-top:.4rem}

/* UTILITY */
.hidden{display:none!important}
.text-muted{color:var(--txt-lt)}.text-sm{font-size:.78rem}
.mt-1{margin-top:.5rem}.mt-2{margin-top:1rem}.mb-1{margin-bottom:.5rem}.mb-2{margin-bottom:1rem}
.flex{display:flex}.flex-between{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:.5rem}
.gap-1{gap:.5rem}
.edit-input{width:100%;padding:.2rem .4rem;border:2px solid var(--pri);border-radius:6px;font-size:.8rem;font-family:'DM Sans',sans-serif}
.empty-state{text-align:center;padding:3rem;color:var(--txt-lt)}
.empty-state .icon{font-size:3rem;margin-bottom:.5rem}

@media(max-width:768px){
    .config-grid{grid-template-columns:1fr}
    .app-header h1{font-size:2rem}
    .step-text{display:none}
    .step-item{min-width:36px}
    .fuzzy-comp{grid-template-columns:1fr}
    .col-groups{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){
    .col-groups{grid-template-columns:1fr}
    .card{padding:1.25rem}
}