@font-face {
    font-family: 'BMmini';
    src: url('data:font/woff;base64,d09GRgABAAAAAAUgAA0AAAAACBQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAFAAAAABoAAAAciW32M0dERUYAAATwAAAAHAAAAB4AJwAQT1MvMgAAAZgAAAA+AAAAYA37BvRjbWFwAAACHAAAAGQAAAFqAKgHq2dhc3AAAAToAAAACAAAAAgAAAAQZ2x5ZgAAArQAAAEzAAABbB4/kNxoZWFkAAAA2AAAADQAAAA2BO/LUmhoZWEAAAEIAAAAHQAAACQD+QIBaG10eAAAAcQAAAAmAAAAJggwAABsb2NhAAACmAAAABQAAAAUBOoDOm1heHAAAAE8AAAAHgAAACAAEQAGbmFtZQAABBAAAADYAAABX/w2mBtwb3N0AAAExAAAABgAAAAg/3oAMXjaY2BkYGAAYmHlkX7x/DZfGbiZGEDg+vL7jRj6/6//n5gZmP2AXAYGEKgCANuQDJ0AAAB42mNgZGBg9v1/gonhvwADAyMDKwOQIR0QBQBE4AKzAAAAeNpjYGRgYFBksGdgYQABJiBkYAABXgAjAAAAeNpLycxLK83MAQIKc8lSBiNn57Cg0GAX53D/0ODQEAcAIbAG5HjaY2BgYGaAAEYGNuC2MGAE0gBoDQAEfAAUAHjaY2BgYmCcwMDKwMI6i9WYgYFRHkIzX2RIY2JgYABiBhZkMAdxgT4OQYwMDP4MDMz+/08wMfz/zxTCAwB4EAsrAAAAeNpjYEADjAwQYCZlMIJyHBiKjAwYAKsVArAAAAAABgAMABQAHAAoAAAAAQAB//8AD3jaY2BgYGBkYARiRoZIBkaGCQxSDA4M3gxODGEMTgyBDI4MyQz+DB4MbgyiDCYMygw2AAo+BF4AAAB42mNgZgCD/1cY0AAjAyYgBwA6AwIzAHjabcyxCsJQFATQO8b4wL6g+CGFaBEhZAtBC2uxErQQ0T7iV/kLP8n3eT/gNMyB3R2G+W6x4uRk6W5jYqY+4y4+fFp7oIuN4Wb724+s09pD3rE32zX2/1l9pL1hZ7ZrjP+0P2lX8y/00Vv9A4q+EE4AAA==') format('woff');
    font-weight: normal;
    font-style: normal;
    font-display: block;
}

:root {
    --gov-green: #2b3543;
    --gov-dark: #16181d;
    --gov-light: #5c677d;
    --gov-paper: #e8ecef;
    --gov-stamp: #9c3f4a;
    --pixel-light: #ac9f9b;
    --pixel-dark: #625252;
    --warning: #c2505c;
    --approved: #4c8a66;
    --terminal-bg: #1e2229;
    --terminal-border: #3b4657;
    --text-glow: #ffffff;
    --info-blue: #4070a6;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    image-rendering: pixelated;
    image-rendering: -moz-crisp-edges;
    image-rendering: crisp-edges;
}

/* --- Smooth Transition Animations --- */
body {
    font-family: 'Courier New', 'Consolas', monospace;
    background-color: var(--gov-dark);
    color: var(--gov-paper);
    background-image: repeating-linear-gradient(0deg, transparent, transparent 2px, rgba(0,0,0,0.15) 2px, rgba(0,0,0,0.15) 4px);
    min-height: 100vh;
    position: relative;
    overflow-x: hidden;
    
    /* Triggers immediately when the page loads. */
    opacity: 0;
    animation: terminalFadeIn 0.4s ease-out forwards;
}

/* Triggers when a button is clicked via JavaScript. */
body.fade-out {
    animation: terminalFadeOut 0.4s ease-in forwards;
}

@keyframes terminalFadeIn {
    from { opacity: 0; filter: brightness(0.5) blur(4px); }
    to { opacity: 1; filter: brightness(1) blur(0); }
}

@keyframes terminalFadeOut {
    from { opacity: 1; filter: brightness(1) blur(0); }
    to { opacity: 0; filter: brightness(0.5) blur(4px); }
}
/* ---------------------------------- */

body::before {
    content: '';
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: radial-gradient(ellipse at center, transparent 0%, rgba(0,0,0,0.6) 100%);
    pointer-events: none;
    z-index: 9999;
}

.scanline {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 4px;
    background: linear-gradient(to bottom, transparent, rgba(255,255,255,0.03), transparent);
    animation: scanline 8s linear infinite;
    pointer-events: none;
    z-index: 9998;
}

@keyframes scanline {
    0% { transform: translateY(0); }
    100% { transform: translateY(100vh); }
}

.terminal-container { max-width: 1400px; margin: 0 auto; padding: 1rem; position: relative; z-index: 1; }

.terminal-header { 
    background: var(--gov-green); 
    border: 2px solid var(--terminal-border); 
    border-radius: 8px;
    padding: 1.5rem; 
    text-align: center; 
    margin-bottom: 2rem; 
    position: relative; 
    box-shadow: 0 6px 16px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.05);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
}

/* Return to Base navigation button. */
.header-btn {
    position: absolute;
    left: 1.5rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
    background: var(--gov-dark);
    border: 2px solid var(--terminal-border);
    color: var(--gov-paper);
    padding: 0.5rem 1rem;
    border-radius: 6px;
    font-family: inherit;
    font-size: 0.85rem;
    font-weight: bold;
    letter-spacing: 0.1em;
    transition: all 0.3s ease;
    cursor: pointer;
    z-index: 10;
}

.header-btn:hover {
    background: var(--info-blue);
    border-color: #2a4d77;
    color: var(--text-glow);
    transform: translateY(-2px);
    box-shadow: 0 4px 12px rgba(0,0,0,0.3);
}

.header-btn:active {
    transform: translateY(0);
    box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}

.header-badge { position: absolute; top: 50%; transform: translateY(-50%); font-size: 2rem; filter: drop-shadow(0 2px 4px rgba(0,0,0,0.5)); }
.header-badge.right { right: 2rem; }
.system-title { font-size: 2rem; font-weight: bold; letter-spacing: 0.2em; color: var(--text-glow); text-shadow: 0 0 10px rgba(255, 255, 255, 0.2), 0 2px 4px rgba(0,0,0,0.5); margin-bottom: 0.5rem; }
.system-subtitle { font-size: 0.9rem; letter-spacing: 0.1em; opacity: 0.7; margin-bottom: 0; }

.main-grid { display: grid; grid-template-columns: 450px 1fr; gap: 2rem; margin-bottom: 2rem; }
@media (max-width: 1024px) { .main-grid { grid-template-columns: 1fr; } }
@media (max-width: 768px) {
    .terminal-header { padding-top: 4rem; }
    .header-btn { top: 1rem; position: static; margin-bottom: 1rem; width: 100%; justify-content: center; }
}

.terminal-window { 
    background: var(--terminal-bg); 
    border: 2px solid var(--terminal-border); 
    border-radius: 8px; 
    overflow: hidden; 
    box-shadow: 0 8px 24px rgba(0,0,0,0.4), inset 0 1px 0 rgba(255,255,255,0.05); 
}
.terminal-title { background: var(--gov-green); padding: 0.75rem 1rem; font-weight: bold; font-size: 0.9rem; letter-spacing: 0.1em; border-bottom: 2px solid var(--terminal-border); display: flex; align-items: center; gap: 0.5rem; }
.terminal-icon { color: var(--gov-stamp); }
.terminal-content { padding: 1.5rem; }

.mode-selector { margin-bottom: 1.5rem; }
.mode-tabs { display: grid; grid-template-columns: repeat(3, 1fr); border: 2px solid var(--terminal-border); border-radius: 8px; overflow: hidden; }
.mode-tab { padding: 1rem 0.5rem; font-family: inherit; font-size: 0.75rem; font-weight: bold; letter-spacing: 0.05em; background: var(--gov-dark); color: var(--gov-paper); border: none; cursor: pointer; transition: all 0.3s ease; display: flex; flex-direction: column; align-items: center; gap: 0.5rem; border-right: 1px solid var(--terminal-border); }
.mode-tab:last-child { border-right: none; }
.mode-tab:hover { background: var(--gov-green); }
.mode-tab.active { background: var(--info-blue); color: var(--text-glow); box-shadow: inset 0 2px 4px rgba(0,0,0,0.3); }
.tab-icon { font-size: 1.2rem; }

.processing-mode { margin-bottom: 1.5rem; }
.upload-section { margin-bottom: 2rem; }
.file-input { display: none; }

.upload-zone { border-radius: 8px; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3rem 2rem; background: var(--gov-dark); border: 3px dashed var(--terminal-border); cursor: pointer; transition: all 0.3s ease; position: relative; overflow: hidden; }
.upload-zone:hover { background: var(--gov-green); border-color: var(--gov-light); }
.upload-zone.has-file { border-color: var(--approved); background: rgba(76, 138, 102, 0.15); }
.upload-zone.preproc-zone { border-color: var(--info-blue); }
.upload-zone.preproc-zone:hover { background: rgba(64, 112, 166, 0.15); border-color: var(--info-blue); }
.upload-zone.direct-zone { border-color: var(--gov-stamp); }
.upload-zone.direct-zone:hover { background: rgba(156, 63, 74, 0.15); border-color: var(--gov-stamp); }

.upload-icon { font-size: 3rem; margin-bottom: 1rem; opacity: 0.7; }
.upload-primary { font-size: 1.1rem; font-weight: bold; letter-spacing: 0.1em; margin-bottom: 0.5rem; }
.upload-secondary { font-size: 0.85rem; opacity: 0.7; margin-bottom: 1rem; }
.upload-warning { font-size: 0.8rem; color: var(--gov-stamp); font-weight: bold; }

.control-group { margin-bottom: 1.5rem; }
.control-label { display: block; margin-bottom: 0.75rem; }
.label-primary { display: block; font-weight: bold; font-size: 0.9rem; letter-spacing: 0.05em; }

.slider-container { border-radius: 6px; display: flex; align-items: center; gap: 1rem; background: var(--gov-dark); padding: 1rem; border: 1px solid var(--terminal-border); }
.threshold-slider { flex: 1; height: 8px; border-radius: 4px; background: var(--terminal-bg); outline: none; -webkit-appearance: none; border: 1px solid var(--terminal-border); }
.threshold-slider::-webkit-slider-thumb { -webkit-appearance: none; width: 20px; height: 20px; border-radius: 4px; background: var(--gov-stamp); cursor: pointer; border: 2px solid var(--terminal-border); }
.threshold-display { border-radius: 4px; min-width: 3rem; text-align: center; font-weight: bold; padding: 0.25rem 0.5rem; background: var(--gov-green); border: 1px solid var(--terminal-border); }

.process-info { border-radius: 6px; background: var(--gov-dark); padding: 1rem; margin-bottom: 1.5rem; border: 1px solid var(--terminal-border); }
.info-row { display: flex; justify-content: space-between; padding: 0.25rem 0; font-size: 0.85rem; }
.info-label { opacity: 0.6; }
.info-value { font-weight: bold; color: var(--text-glow); opacity: 0.9; }

.process-button, .action-button { border-radius: 6px; width: 100%; padding: 1rem; font-family: inherit; font-size: 0.95rem; font-weight: bold; letter-spacing: 0.1em; border: 2px solid var(--terminal-border); cursor: pointer; transition: all 0.3s ease; display: flex; align-items: center; justify-content: center; gap: 0.5rem; position: relative; overflow: hidden; }
.process-button { background: var(--gov-stamp); color: var(--text-glow); border-color: #7a323a; }
.process-button:hover:not(:disabled) { background: var(--warning); transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.3); border-color: #963e47; }
.process-button:disabled { background: var(--gov-dark); color: var(--terminal-border); cursor: not-allowed; opacity: 0.6; border-color: var(--terminal-border); }

.action-button { background: var(--gov-green); color: var(--text-glow); border-color: #202732; }
.action-button.generate { background: var(--approved); border-color: #3b6b4f; }
.action-button.download { background: var(--gov-stamp); border-color: #7a323a; }
.action-button:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 4px 12px rgba(0,0,0,0.3); filter: brightness(1.1); }
.action-button:disabled { background: var(--gov-dark); color: var(--terminal-border); cursor: not-allowed; opacity: 0.6; border-color: var(--terminal-border); }
.button-icon { font-size: 1.2rem; }

.preview-split { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-bottom: 1.5rem; }
.preview-box { text-align: center; }
.preview-label { font-size: 0.85rem; font-weight: bold; margin-bottom: 0.5rem; opacity: 0.7; }
.preview-frame { border-radius: 6px; background: var(--gov-dark); border: 2px solid var(--terminal-border); padding: 1rem; height: 180px; display: flex; align-items: center; justify-content: center; position: relative; overflow: hidden; }
.original-image { max-width: 100%; max-height: 100%; object-fit: contain; }
.processed-image { width: 120px; height: 144px; image-rendering: pixelated; }
.preview-empty { display: flex; align-items: center; justify-content: center; height: 100%; opacity: 0.4; font-size: 0.9rem; font-weight: bold; }

.country-selector { border-radius: 6px; width: 100%; padding: 0.75rem; font-family: inherit; font-size: 0.9rem; font-weight: bold; background: var(--gov-dark); color: var(--gov-paper); border: 2px solid var(--terminal-border); cursor: pointer; transition: all 0.3s ease; }
.country-selector:hover:not(:disabled) { background: var(--gov-green); }
.country-selector:disabled { opacity: 0.6; cursor: not-allowed; }

.passport-fields { border-radius: 8px; background: var(--gov-dark); padding: 1rem; border: 1px solid var(--terminal-border); margin-bottom: 1.5rem; }
.field-group { margin-bottom: 1rem; }
.field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.field-label { display: block; font-size: 0.8rem; font-weight: bold; margin-bottom: 0.5rem; opacity: 0.7; letter-spacing: 0.05em; }
.field-input { border-radius: 4px; width: 100%; padding: 0.5rem; font-family: inherit; font-size: 0.9rem; background: var(--terminal-bg); color: var(--gov-paper); border: 1px solid var(--terminal-border); transition: all 0.3s ease; }
.field-input:focus { outline: none; border-color: var(--gov-stamp); background: var(--gov-green); }
.field-input:disabled { opacity: 0.6; cursor: not-allowed; }

.action-buttons { display: flex; gap: 1rem; }

.passport-preview-section { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(15, 17, 21, 0.85); display: flex; align-items: center; justify-content: center; z-index: 1000; padding: 2rem; backdrop-filter: blur(4px); }
.preview-window { max-width: 800px; width: 100%; max-height: 95vh; overflow: auto; border: 2px solid var(--terminal-border); }
.passport-container { border-radius: 8px; background: var(--gov-dark); padding: 2rem; display: flex; justify-content: center; align-items: center; min-height: 400px; border-bottom: 1px solid var(--terminal-border); }
#passport-canvas { border-radius: 4px; max-width: 100%; height: auto; border: 2px solid var(--terminal-border); box-shadow: 0 8px 32px rgba(0,0,0,0.6); cursor: crosshair; }
.preview-actions { margin-top: 1rem; display: flex; justify-content: center; gap: 1rem; }

.terminal-footer { text-align: center; padding: 2rem 0 1rem 0; margin-top: 2rem; }
.footer-content { display: flex; justify-content: center; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }

.hidden { display: none !important; }
button:active:not(:disabled) { transform: translateY(0); box-shadow: 0 2px 4px rgba(0,0,0,0.3); }

/* Proprietary legal disclaimer. */
.legal-disclaimer {
    max-width: 800px;
    margin: 40px auto 20px auto; /* Restored breathing room */
    padding: 1.5rem;
    background: var(--terminal-bg); /* Swapped from --gov-dark to --terminal-bg for the bluish tint */
    border: 1px solid var(--terminal-border);
    border-radius: 8px; 
    box-shadow: inset 0 2px 4px rgba(0,0,0,0.2);
    text-align: center;
}

.disclaimer-text {
    font-family: 'Courier New', monospace; /* Restored original font */
    font-size: 0.8rem;
    line-height: 1.6;
    color: var(--gov-light);
    margin-bottom: 0;
}

.attribution-text {
    font-family: 'Courier New', monospace; /* Applied to the new attribution line */
    font-size: 0.8rem;
    line-height: 1.6;
    margin-top: 8px;
    color: #9ca3af; 
}
