:root {
    --text-primary: #b6b6b6;
    --text-secondary: #ececec;
    --bg-primary: #23232e;
    --bg-secondary: #141418;

    --primary-bg: #1e1e1e;
    --primary-bg-lighter: #666666;
    --primary-bg-light: #444444;
    --primary-bg-dark: #333333;

    --primary-fg: #fff;
    
    --secondary-bg: #007AD0;
    --secondary-bg-light: #419AD9;
    --secondary-bg-dark: #005591;
    
    --popup-bg: #333c;
    
    --secondary-fg: #fff;
    --ternary-fg: #ccc;
}

* {
    background-color: var(--primary-bg);
    color: var(--primary-fg);

    margin: 0;
    padding: 0;

    font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", Roboto, Ubuntu;
}

.CodeMirror-cursor {
    border-left: 1px solid white;
    border-right: 1px solid white;
}

.CodeMirror-gutters {
    border-right: 0;
}

.CodeMirror,
.CodeMirror * {
    background-color: var(--primary-bg-lighter);

    -webkit-touch-callout: none !important;
    -webkit-user-select: none !important;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none !important;
}

.CodeMirror {
    height: 100%;
}

.CodeMirror-lines div:has(.CodeMirror-selected) {
    background-color: #f003;
    z-index: 99;
    position: static !important;
}

.CodeMirror-selected {
    margin-top: 5px;
    background-color: #f003;
    z-index: 100;
}

button:not(:disabled) {
    cursor: pointer;
}

button:not(:disabled):hover {
    background-color: var(--primary-bg-lighter);
}

button, input, textarea {
    padding: 10px;
    border-radius: 5px;
    background-color: var(--primary-bg-light);
    
    border: 1px solid var(--secondary-fg);
}

button:disabled {
    background-color: var(--primary-bg-darker);
    color: var(--ternary-fg);
}

textarea {
    overflow: scroll;
    display: inline-block;
    outline: none;
    font-family: Courier, sans-serif;
    font-size: 14px;
    resize: none;
}

textarea::before {
    content: counter(name);
}



.container {
    width: calc(100vw - 40px);
    height: calc(100vh - 40px);
    margin: 20px;

    display: grid;
    gap: 10px;
}

.input-container {
    grid-template-columns: 1fr;
    grid-template-rows: 1fr 90fr 1fr;
    grid-template-areas: "headline" "code" "buttons";
}

.headline { grid-area: headline; }
.code { grid-area: code; }
.buttons { grid-area: buttons; }

.output-container {
    grid-template-columns: 1fr 5fr 5fr 5fr;
    grid-template-rows: 8fr 2fr;
    grid-template-areas: "regs rom ram code" "ctrl ctrl disp disp";
}

.regs { grid-area: regs; }
.codeView { 
    grid-area: code; 
    max-height: 100%;
    overflow-y: auto;
}
.rom { 
    grid-area: rom; 
    max-height: 100%;
    overflow-y: auto;
}
.ram { 
    grid-area: ram; 
    max-height: 100%;
    overflow-y: auto;
}
.disp { grid-area: disp; }
.ctrl { grid-area: ctrl; }

.rom td, .rom th, .ram td, .ram th {
    font-family: monospace;
}

.rom th, .ram th {
    margin-right: 10px;
}

.rom td.null, .ram td.null {
    color: var(--ternary-fg);
}

.marked {
    color: magenta;
}

.read {
    color: magenta;
}

.write {
    color: lime;
}





/* POPUP */

.popup {
    position: fixed;
    left: 0;
    top: 0;
    height: 100%;
    width: 100%;
    background-color: var(--popup-bg);
    opacity: 0;
    visibility: hidden;
    -webkit-transition: opacity 0.3s 0s, visibility 0s 0.3s;
    -moz-transition: opacity 0.3s 0s, visibility 0s 0.3s;
    transition: opacity 0.3s 0s, visibility 0s 0.3s;
}
.popup.visible {
    opacity: 1;
    visibility: visible;
    -webkit-transition: opacity 0.3s 0s, visibility 0s 0s;
    -moz-transition: opacity 0.3s 0s, visibility 0s 0s;
    transition: opacity 0.3s 0s, visibility 0s 0s;
}
.popup-body {
    position: relative;
    width: 90%;
    max-width: 400px;
    margin: 4rem auto;
    padding: 1rem;
}

.popup-body > * {
    margin: 0.5rem 0;
}