:root{--nile-blue: #0e4eaf;--nile-blue-dark: #0a3c88;--nile-amber: #ff6600;--nile-coral: #ee4a59;--nile-gradient: linear-gradient(90deg, var(--nile-amber), var(--nile-coral));--ink: #182333;--ink-soft: #5b6472;--border: #dde3ef;--surface: #ffffff;--page-bg: #f4f7fc}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;background:var(--page-bg);color:var(--ink)}.home,.tool-page{max-width:900px;margin:0 auto;padding:2rem}.site-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.5rem}.site-header img{height:34px;width:auto}.site-header h1{margin:0;font-size:1.3rem;font-weight:600;color:var(--ink)}.site-header h1 span{color:var(--nile-blue);font-weight:700}.site-footer{margin-top:3rem;padding-top:1.25rem;border-top:1px solid var(--border)}.site-footer p{color:var(--ink-soft);font-size:.8rem;line-height:1.5;margin:0 0 .75rem}.site-footer .version-tag{margin:0;font-size:.75rem;color:var(--ink-soft);opacity:.7}.header-accent{height:3px;width:64px;border-radius:2px;background:var(--nile-gradient);margin:.6rem 0 1.5rem}.tile-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem;margin-top:1.5rem}.tile{position:relative;text-align:left;padding:1.25rem;border:1px solid var(--border);border-radius:12px;background:var(--surface);cursor:pointer;overflow:hidden;transition:box-shadow .15s ease,border-color .15s ease,transform .15s ease}.tile:before{content:"";position:absolute;top:0;left:0;right:0;height:3px;background:var(--nile-gradient);opacity:0;transition:opacity .15s ease}.tile:hover{border-color:#c7d3ea;box-shadow:0 8px 20px #0e4eaf1f;transform:translateY(-1px)}.tile:hover:before{opacity:1}.tile h2{margin:0 0 .4rem;font-size:1.1rem;color:var(--ink)}.tile p{margin:0;font-size:.9rem;color:var(--ink-soft)}.tile .tile-version{margin-top:.6rem;font-size:.75rem;opacity:.7}.back-link{background:none;border:none;color:var(--nile-blue);cursor:pointer;padding:0;font-size:.9rem;margin-bottom:1rem;font-weight:500}.back-link:hover{color:var(--nile-blue-dark)}.key-entry{display:flex;gap:.5rem;align-items:center;margin:1rem 0}.key-entry label{white-space:nowrap}@media(max-width:640px){.key-entry{flex-direction:column;align-items:stretch}.key-entry label{white-space:normal}}.key-entry input{flex:1;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px}.key-entry input:focus{outline:none;border-color:var(--nile-blue);box-shadow:0 0 0 3px #0e4eaf26}.key-entry button{padding:.5rem 1rem;border:none;border-radius:8px;background:var(--nile-blue);color:#fff;cursor:pointer;font-weight:500;transition:background .15s ease}.key-entry button:hover:not(:disabled){background:var(--nile-blue-dark)}.key-entry button:disabled{background:#a8b3c4;cursor:not-allowed}.error{color:#c6303f}.success{color:#1a7f4b}.btn-primary{padding:.5rem 1.25rem;border:none;border-radius:8px;background:var(--nile-blue);color:#fff;cursor:pointer;font-weight:500;transition:background .15s ease}.btn-primary:hover:not(:disabled){background:var(--nile-blue-dark)}.btn-primary:disabled{background:#a8b3c4;cursor:not-allowed}.field-group{margin:1rem 0}.field-group label{display:block;margin-bottom:.35rem;font-weight:500;font-size:.9rem}.field-group input[type=text],.field-group input[type=number],.field-group input[type=password],.field-group input[type=email]{width:100%;padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px}.field-group input:focus{outline:none;border-color:var(--nile-blue);box-shadow:0 0 0 3px #0e4eaf26}.date-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:1rem;margin:1rem 0}.date-fields .field{display:flex;flex-direction:column;gap:.35rem}.date-fields .field label{font-weight:500;font-size:.9rem}.date-fields .field input{padding:.5rem .75rem;border:1px solid var(--border);border-radius:8px}.date-fields .field input:focus{outline:none;border-color:var(--nile-blue);box-shadow:0 0 0 3px #0e4eaf26}.portal-list{list-style:none;padding:0}.portal-list li{padding:0;border:1px solid var(--border);border-radius:8px;margin-bottom:.5rem;background:var(--surface);border-left:3px solid var(--nile-blue);overflow:hidden}.portal-list-item{display:block;width:100%;text-align:left;padding:.75rem;border:none;background:none;cursor:pointer;font:inherit;color:inherit}.portal-list-item:disabled{cursor:not-allowed;color:var(--ink-soft)}.portal-list-item:not(:disabled):hover{background:var(--page-bg)}.portal-type-badge{color:var(--ink-soft);font-size:.9rem;margin:-.5rem 0 1rem}.menu-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:.75rem;margin-top:1.5rem}.menu-tile{padding:1rem;border:1px solid var(--border);border-radius:10px;background:var(--surface);border-left:3px solid var(--nile-blue);cursor:pointer;font-weight:500;font-size:.95rem;text-align:left;transition:box-shadow .15s ease,transform .15s ease}.menu-tile:hover{box-shadow:0 6px 16px #0e4eaf1f;transform:translateY(-1px)}.menu-tile--secondary{border-left-color:var(--ink-soft);color:var(--ink-soft)}.table-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:8px;margin:1rem 0}.data-table{border-collapse:collapse;width:100%;min-width:560px;font-size:.9rem}.data-table th,.data-table td{padding:.6rem .85rem;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.data-table th{color:var(--ink-soft);font-weight:600;font-size:.8rem;text-transform:uppercase;letter-spacing:.02em}.data-table tbody tr:last-child td{border-bottom:none}@media(max-width:640px){.menu-grid{grid-template-columns:1fr}}.guest-row-form{display:flex;flex-direction:column;gap:.75rem;margin:1rem 0}.guest-row{display:grid;grid-template-columns:auto repeat(auto-fit,minmax(160px,1fr));gap:.5rem;padding:.75rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);border-left:3px solid var(--nile-blue);align-items:end}.guest-row .field{display:flex;flex-direction:column;gap:.25rem}.guest-row label{font-size:.75rem;color:var(--ink-soft);font-weight:500}.guest-row input{padding:.5rem .6rem;border:1px solid var(--border);border-radius:6px}.guest-row input:focus{outline:none;border-color:var(--nile-blue);box-shadow:0 0 0 3px #0e4eaf26}.guest-row-index{font-weight:600;color:var(--nile-blue);font-size:.85rem;padding-bottom:.6rem}.row-error-list{grid-column:1 / -1;margin:.25rem 0 0;padding-left:1.25rem;color:#c6303f;font-size:.8rem}.button-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.75rem;margin-top:1rem}@media(max-width:640px){.guest-row{grid-template-columns:1fr}.guest-row-index{padding-bottom:0}}.csv-upload{display:flex;flex-wrap:wrap;gap:.75rem;align-items:center;margin:1rem 0}.csv-upload-button input[type=file]{display:none}.csv-upload-button,.csv-template-button{display:inline-block;padding:.5rem 1rem;border-radius:8px;cursor:pointer;font-weight:500;font-size:.9rem}.csv-upload-button{background:var(--nile-blue);color:#fff;border:none}.csv-template-button{background:var(--surface);color:var(--nile-blue);border:1px solid var(--nile-blue)}.csv-preview-table tr.row-error{background:#c6303f0f}.chunk-status-list{list-style:none;padding:0;margin:1rem 0}.chunk-status{padding:.5rem .75rem;border-radius:6px;margin-bottom:.4rem;font-size:.9rem;border-left:3px solid var(--border)}.chunk-status--success{border-left-color:#1a7f4b;background:#1a7f4b0f}.chunk-status--failed{border-left-color:#c6303f;background:#c6303f0f}.chunk-status--in-progress{border-left-color:var(--nile-blue);background:#0e4eaf0f}@media(max-width:640px){.csv-upload{flex-direction:column;align-items:stretch}.csv-upload-button,.csv-template-button{width:100%;text-align:center}}.confirm-overlay{position:fixed;inset:0;background:#0f172a73;display:flex;align-items:center;justify-content:center;padding:1rem;z-index:50}.confirm-dialog{background:var(--surface);border-radius:12px;padding:1.5rem;max-width:420px;width:100%;box-shadow:0 20px 40px #0e4eaf33}.confirm-dialog h3{margin:0 0 .5rem}.confirm-dialog-actions{display:flex;gap:.75rem;margin-top:1.25rem;justify-content:flex-end}.confirm-dialog-actions button{padding:.5rem 1rem;border-radius:8px;cursor:pointer;font-weight:500}.confirm-dialog-actions .confirm-danger{background:var(--nile-coral);color:#fff;border:none}.confirm-dialog-actions .confirm-cancel{background:var(--surface);color:var(--ink-soft);border:1px solid var(--border)}@media(max-width:480px){.confirm-dialog-actions{flex-direction:column-reverse}.confirm-dialog-actions button{width:100%}}
