/* ============================================================
   WINDOWS 98 SHELL - styles.css
   Classic Windows 98 "Windows Classic" theme: 3D bevels (hard
   1px highlight/shadow lines), teal desktop, Tahoma chrome.
   ============================================================ */

:root {
    --gray: #c0c0c0;
    --gray-light: #dfdfdf;
    --gray-hi: #ffffff;
    --gray-dark: #808080;
    --gray-black: #0a0a0a;
    --desktop: #008080;
    --title-a1: #000080;
    --title-a2: #1084d0;
    --title-i1: #808080;
    --title-i2: #b5b5b5;
    --highlight: #000080;
    --font: Tahoma, 'MS Sans Serif', 'Trebuchet MS', system-ui, sans-serif;
}

* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

html, body {
    height: 100%;
    width: 100%;
    overflow: hidden;
    font-family: var(--font);
    font-size: 11px;
    color: #000;
    background: var(--desktop);
    cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="black" d="M0.5 0.5 L0.5 15.5 L5.2 11 L7.7 15.8 L10.3 14.5 L7.8 9.7 L12.5 9.7 Z"/><path fill="white" d="M1.7 1.7 L1.7 13.9 L5.8 9.9 L7.9 14.2 L8.9 13.7 L6.9 9.4 L11.4 9.4 Z"/></svg>') 1 1, auto;
}

body.booting {
    cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="black" d="M7 1 L13 5 L10 8 L13 11 L7 15 L6 13.5 L7.5 11.5 L5 8 L7.5 4.5 L6 2.5 Z"/><path fill="white" d="M8 2.2 L12 5 L9.6 7.2 H9 L8.5 8 L9.6 8.6 L12 8.8 L8 12.8 L7.6 11 L6.6 8 L7.6 5 L8 2.2 Z"/></svg>') 7 7, wait;
}

::selection {
    background: var(--highlight);
    color: #fff;
}

.hidden {
    display: none !important;
}

/* every raised/clickable thing gets the hand pointer by default; text keeps I-beam */
button, a, .menu-item, .desktop-icon, .task, .start-item, .start-sep, .mp-item, .cal-nav, .tool-btn, .paint-tool, .calc-btn, .rev-cell, .dock-item, .cp-item, .dos-row, [role="button"] {
    cursor: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><path fill="white" stroke="black" d="M6 2 v5.5 l-3 -0.8 -2.2 2.2 l4 5.5 1.5 1 h4.5 l3.2 -7.4 -1.2 -1 -2.6 2 V2 c0 -0.9 -1 -1 -1 0 z" stroke-width="0.8"/></svg>') 4 0, pointer;
}

input, textarea, select, .write-doc, [contenteditable="true"] {
    cursor: text;
}

/* ---------------- bevel utilities ---------------- */

.raised {
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark),
        inset 2px 2px 0 var(--gray-light),
        inset -2px -2px 0 var(--gray-black);
}

.sunken {
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

.sunken-field {
    background: #fff;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

/* classic 98 button */
.win-btn, .btn {
    border: 1px solid var(--gray-black);
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark),
        inset 2px 2px 0 var(--gray-light),
        inset -2px -2px 0 var(--gray-black);
    color: #000;
    font-family: var(--font);
    font-size: 11px;
    padding: 4px 14px;
    min-width: 70px;
    height: 24px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    user-select: none;
    line-height: 1;
}

.win-btn:active, .win-btn.active,
.btn:active, .btn.active {
    box-shadow:
        inset 1px 1px 0 var(--gray-black),
        inset -1px -1px 0 var(--gray-hi),
        inset 2px 2px 0 var(--gray-dark),
        inset -2px -2px 0 var(--gray-light);
    padding: 5px 13px 3px 15px;
}

.win-btn:focus, .btn:focus {
    outline: 1px dotted var(--gray-black);
    outline-offset: -4px;
}

/* ---------------- boot: plain MS-DOS text ---------------- */

#boot-screen {
    position: fixed;
    inset: 0;
    z-index: 30000;
    background: #000;
    color: #d0d0d0;
    padding: 14px 16px;
    overflow: hidden;
    user-select: none;
}

#boot-output {
    margin: 0;
    font-family: 'Lucida Console', 'Consolas', 'Courier New', monospace;
    font-size: 14px;
    line-height: 1.35;
    white-space: pre-wrap;
    color: #d0d0d0;
}

.boot-cursor {
    display: inline-block;
    color: #d0d0d0;
    animation: boot-blink 1s steps(1) infinite;
}

@keyframes boot-blink {
    0%, 49% { opacity: 1; }
    50%, 100% { opacity: 0; }
}

/* ---------------- desktop ---------------- */

#desktop {
    position: fixed;
    inset: 0;
    background: var(--desktop);
    z-index: 100;
}

#desktop-icons {
    position: absolute;
    top: 6px;
    left: 4px;
    z-index: 10;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 6px;
    user-select: none;
}

.desktop-icon {
    width: 80px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 3px;
    padding: 4px 2px;
    text-align: center;
}

.desktop-icon img {
    width: 32px;
    height: 32px;
    image-rendering: pixelated;
}

.desktop-icon .di-label {
    font-size: 11px;
    color: #fff;
    font-weight: 700;
    line-height: 1.15;
    text-shadow: 1px 1px 0 #000;
}

.desktop-icon.selected {
    outline: 1px dotted #ffff80;
    background: rgba(0, 0, 128, 0.35);
}

.desktop-icon.selected .di-label {
    background: var(--highlight);
    color: #fff;
    text-shadow: none;
}

.desktop-icon:active .di-label {
    text-shadow: 0 0 0 transparent;
}

/* ---------------- windows: free floating, overlapping ---------------- */

#windows-container {
    position: absolute;
    inset: 0;
    z-index: 200;
    pointer-events: none;
}

.window {
    position: absolute;
    display: flex;
    flex-direction: column;
    background: var(--gray);
    border: 1px solid var(--gray-black);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-black),
        inset 2px 2px 0 var(--gray-light),
        inset -2px -2px 0 var(--gray-dark),
        3px 3px 0 rgba(0, 0, 0, 0.30);
    pointer-events: auto;
    min-width: 180px;
    min-height: 120px;
}

.window.maximized {
    box-shadow: none;
    border: 1px solid var(--gray-black);
}

/* title bar */
.window-titlebar {
    height: 20px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 2px 0 3px;
    color: #fff;
    font-weight: 700;
    font-size: 11px;
    user-select: none;
    background: linear-gradient(90deg, var(--title-i1) 0%, var(--title-i2) 100%);
    color: var(--gray-light);
}

.window.active .window-titlebar {
    background: linear-gradient(90deg, var(--title-a1) 0%, var(--title-a2) 100%);
    color: #fff;
}

.title-icon {
    flex-shrink: 0;
    display: flex;
    align-items: center;
}

.title-icon img {
    width: 16px;
    height: 16px;
    image-rendering: pixelated;
    display: block;
}

.title-text {
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    line-height: 20px;
}

.title-buttons {
    display: flex;
    gap: 2px;
    flex-shrink: 0;
}

.tb {
    width: 16px;
    height: 14px;
    border: 1px solid var(--gray-black);
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    font-size: 9px;
    font-weight: 700;
    line-height: 1;
    color: #000;
}

.window:not(.active) .tb {
    opacity: 0.75;
}

.tb:active {
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

.tb svg { display: block; }

.tb-close:hover {
    background: #d00000;
}
.tb-close:hover svg path,
.tb-close:hover svg rect {
    stroke: #fff !important;
    fill: #fff !important;
}

/* menu bar */
.window-menu {
    height: 20px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    background: var(--gray);
    padding: 0 1px;
    user-select: none;
    border-bottom: 1px solid var(--gray-black);
}

.menu-item {
    padding: 2px 7px;
    font-size: 11px;
    line-height: 14px;
    position: relative;
    border: 1px solid transparent;
    white-space: nowrap;
}

.menu-item.mi-open,
.menu-item:hover {
    background: var(--highlight);
    color: #fff;
}

/* window content */
.window-content {
    flex: 1;
    overflow: auto;
    background: var(--gray);
    position: relative;
    padding: 2px;
    scrollbar-color: var(--gray) #fff;
    scrollbar-width: auto;
}

.window-content::-webkit-scrollbar {
    width: 16px;
    height: 16px;
    background: var(--gray);
}

.window-content::-webkit-scrollbar-track {
    background: var(--gray);
}

.window-content::-webkit-scrollbar-thumb {
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark),
        inset 2px 2px 0 var(--gray-light),
        inset -2px -2px 0 var(--gray-black);
}

.window-content::-webkit-scrollbar-thumb:active {
    box-shadow:
        inset 1px 1px 0 var(--gray-black),
        inset -1px -1px 0 var(--gray-hi);
}

.window-content::-webkit-scrollbar-button {
    width: 16px;
    height: 16px;
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark);
    background-repeat: no-repeat;
    background-position: center;
}

.window-content::-webkit-scrollbar-button:active {
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

.window-content::-webkit-scrollbar-button:vertical:decrement {
    background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpolygon points='1,8 9,8 5,2' fill='black'/%3E%3C/svg%3E");
}
.window-content::-webkit-scrollbar-button:vertical:increment {
    background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpolygon points='1,2 9,2 5,8' fill='black'/%3E%3C/svg%3E");
}
.window-content::-webkit-scrollbar-button:horizontal:decrement {
    background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpolygon points='8,1 8,9 2,5' fill='black'/%3E%3C/svg%3E");
}
.window-content::-webkit-scrollbar-button:horizontal:increment {
    background-image: url("data:image/svg+xml;utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10'%3E%3Cpolygon points='2,1 2,9 8,5' fill='black'/%3E%3C/svg%3E");
}

.window-content::-webkit-scrollbar-corner {
    background: var(--gray);
}

/* resize handles */
.rs { position: absolute; z-index: 20; }
.rs-n { top: -2px; left: 4px; right: 4px; height: 5px; cursor: n-resize; }
.rs-s { bottom: -2px; left: 4px; right: 4px; height: 5px; cursor: s-resize; }
.rs-e { right: -2px; top: 4px; bottom: 4px; width: 5px; cursor: e-resize; }
.rs-w { left: -2px; top: 4px; bottom: 4px; width: 5px; cursor: w-resize; }
.rs-ne { top: -2px; right: -2px; width: 7px; height: 7px; cursor: ne-resize; }
.rs-nw { top: -2px; left: -2px; width: 7px; height: 7px; cursor: nw-resize; }
.rs-se { bottom: -2px; right: -2px; width: 7px; height: 7px; cursor: se-resize; }
.rs-sw { bottom: -2px; left: -2px; width: 7px; height: 7px; cursor: sw-resize; }

.window.maximized .rs { display: none; }

/* status bar */
.status-bar {
    flex-shrink: 0;
    height: 19px;
    display: flex;
    align-items: center;
    padding: 0 6px;
    font-size: 11px;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    user-select: none;
    white-space: nowrap;
    overflow: hidden;
}

/* ---------------- popups (window menus) ---------------- */
.menu-pop {
    position: fixed;
    z-index: 25000;
    background: var(--gray);
    border: 1px solid var(--gray-black);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark);
    padding: 2px;
    min-width: 150px;
    user-select: none;
}

.mp-item {
    padding: 3px 20px 3px 8px;
    font-size: 11px;
    white-space: nowrap;
}

.mp-item.crumb {
    padding-right: 8px;
    position: relative;
}

.mp-item.crumb::after {
    content: '\25B8';
    position: absolute;
    right: 6px;
    top: 2px;
}

.mp-item.checked::before {
    content: '\2713';
    position: absolute;
    left: 4px;
}

.mp-item:hover {
    background: var(--highlight);
    color: #fff;
}

.mp-sep {
    height: 1px;
    background: var(--gray-dark);
    box-shadow: 0 1px 0 var(--gray-hi);
    margin: 3px 1px;
    border: none;
}

/* ---------------- taskbar ---------------- */

#taskbar {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    height: 30px;
    z-index: 20000;
    background: var(--gray);
    display: flex;
    align-items: center;
    padding: 0 3px;
    border-top: 1px solid #fff;
    box-shadow:
        inset 0 1px 0 var(--gray-light),
        0 -1px 0 var(--gray-dark),
        0 -2px 0 #000;
    user-select: none;
}

#start-btn {
    border: 1px solid var(--gray-black);
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark),
        inset 2px 2px 0 var(--gray-light),
        inset -2px -2px 0 var(--gray-black);
    height: 23px;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 8px;
    font-family: var(--font);
    font-weight: 700;
    font-size: 11px;
}

#start-btn:active, #start-btn.start-open {
    box-shadow:
        inset 1px 1px 0 var(--gray-black),
        inset 2px 2px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    padding: 1px 7px 0 9px;
}

.start-flag {
    width: 16px;
    height: 16px;
    display: block;
    flex-shrink: 0;
}

#task-list {
    flex: 1;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 6px;
    overflow: hidden;
}

.task {
    border: 1px solid var(--gray-black);
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark);
    height: 23px;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 8px 0 4px;
    font-family: var(--font);
    font-size: 11px;
    max-width: 170px;
    min-width: 40px;
    flex-shrink: 1;
}

.task img {
    width: 16px;
    height: 16px;
    image-rendering: pixelated;
    flex-shrink: 0;
}

.task .task-label {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.task.active, .task.minimized {
    box-shadow:
        inset 1px 1px 0 var(--gray-black),
        inset 2px 2px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    font-weight: 700;
    padding: 1px 7px 0 5px;
}

#tray {
    height: 23px;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 4px;
    flex-shrink: 0;
    border-left: 1px solid var(--gray-dark);
    box-shadow:
        inset 1px 0 0 var(--gray-light),
        inset -1px -1px 0 var(--gray-hi);
}

#clock {
    font-size: 11px;
    padding: 0 4px;
}

.tray-icon {
    border: none;
    background: transparent;
    padding: 0;
    width: 16px;
    height: 16px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.tray-icon img {
    width: 16px;
    height: 16px;
    image-rendering: pixelated;
    display: block;
}

/* ---------------- start menu ---------------- */

#start-menu {
    position: fixed;
    left: 2px;
    bottom: 31px;
    z-index: 25000;
    width: 190px;
    background: var(--gray);
    border: 1px solid var(--gray-black);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset 2px 2px 0 var(--gray-light),
        inset -1px -1px 0 var(--gray-dark),
        inset -2px -2px 0 var(--gray-black),
        3px 3px 0 rgba(0, 0, 0, 0.30);
    padding: 2px;
    user-select: none;
    display: flex;
    flex-direction: column;
}

.start-brand {
    height: 64px;
    flex-shrink: 0;
    display: flex;
    align-items: flex-end;
    padding: 0 0 8px 6px;
    background: linear-gradient(180deg, var(--highlight) 0%, #0000a0 60%, #000080 100%);
    color: #fff;
    font-style: italic;
    font-weight: 700;
    font-size: 19px;
    letter-spacing: 0.5px;
    border-bottom: 1px solid var(--gray-black);
}

.start-item {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 5px 8px;
    font-size: 11px;
    white-space: nowrap;
    position: relative;
}

.start-item img {
    width: 24px;
    height: 24px;
    image-rendering: pixelated;
    flex-shrink: 0;
}

.start-item .start-label {
    flex: 1;
}

.start-item.crumb::after {
    content: '\25B8';
    position: absolute;
    right: 7px;
    top: 50%;
    transform: translateY(-50%);
}

.start-item:hover {
    background: var(--highlight);
    color: #fff;
}

.start-sep {
    height: 1px;
    background: var(--gray-dark);
    box-shadow: 0 1px 0 var(--gray-hi);
    margin: 2px 1px;
}

.start-item.zec-start {
    font-weight: 700;
}

/* ---------------- dialogs ---------------- */

.dialog {
    position: fixed;
    z-index: 26000;
    background: var(--gray);
    border: 1px solid var(--gray-black);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset 2px 2px 0 var(--gray-light),
        inset -1px -1px 0 var(--gray-dark),
        inset -2px -2px 0 var(--gray-black),
        4px 4px 6px rgba(0, 0, 0, 0.35);
    min-width: 300px;
    max-width: 430px;
}

.dialog-titlebar {
    height: 20px;
    display: flex;
    align-items: center;
    gap: 4px;
    padding: 0 2px 0 4px;
    background: linear-gradient(90deg, var(--title-a1) 0%, var(--title-a2) 100%);
    color: #fff;
    font-weight: 700;
    font-size: 11px;
    user-select: none;
    flex-shrink: 0;
}

.dialog-title {
    flex: 1;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.dialog-body {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 20px 16px 12px;
}

.dialog-icon {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}

.dialog-icon img {
    width: 32px;
    height: 32px;
}

.dialog-msg {
    font-size: 11px;
    line-height: 1.45;
    max-width: 280px;
    overflow-wrap: break-word;
}

.dialog-buttons {
    display: flex;
    justify-content: center;
    gap: 8px;
    padding: 4px 10px 14px;
}

/* ---------------- MS-DOS / My Computer file list ---------------- */

.dos-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 11px;
}

.dos-table td {
    padding: 1px 6px;
    border-bottom: 1px solid var(--gray-dark);
}

.dos-head td {
    background: var(--gray);
    font-weight: 700;
    box-shadow:
        inset 0 -1px 0 var(--gray-dark),
        inset 1px 1px 0 var(--gray-hi);
}

.dos-row.sel td {
    background: var(--highlight);
    color: #fff;
}

/* ---------------- Notepad ---------------- */
.notepad-root {
    overflow: hidden;
    padding: 0;
}

.notepad-text {
    width: 100%;
    height: 100%;
    min-height: 0;
    box-sizing: border-box;
    border: none;
    resize: none;
    background: #fff;
    color: #000;
    font-family: 'Fixedsys', 'Courier New', monospace;
    font-size: 12px;
    line-height: 1.5;
    padding: 3px;
    outline: none;
    overflow: auto;
    display: block;
}

/* ---------------- WordPad ---------------- */
.write-toolbar {
    display: flex;
    gap: 2px;
    padding: 3px;
    background: var(--gray);
    box-shadow:
        inset -1px -1px 0 var(--gray-hi),
        0 1px 0 var(--gray-dark);
    flex-shrink: 0;
}

.tool-btn {
    width: 26px;
    height: 24px;
    border: 1px solid var(--gray-black);
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark);
    font-family: var(--font);
    font-size: 12px;
    font-weight: 700;
}

.tool-btn:active, .tool-btn.on {
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

.write-doc {
    background: #fff;
    font-family: 'Times New Roman', Georgia, serif;
    font-size: 14px;
    line-height: 1.5;
    min-height: 130px;
    padding: 6px;
    white-space: pre-wrap;
    outline: none;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    margin: 3px;
}

/* ---------------- Paint ---------------- */
.paint-wrap {
    display: flex;
    height: 100%;
    gap: 3px;
    padding: 3px;
}

.paint-tools {
    width: 52px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 2px;
    align-self: flex-start;
}

.paint-tool {
    width: 100%;
    height: 24px;
    font-size: 10px;
    padding: 0;
    min-width: 0;
}

.paint-canvas {
    flex: 1;
    background: #fff;
    border: none;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    min-height: 150px;
    touch-action: none;
    cursor: crosshair;
}

/* ---------------- Calculator ---------------- */
.calc-body {
    display: flex;
    flex-direction: column;
    gap: 6px;
    padding: 6px;
    min-width: 196px;
}

.calc-display {
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    background: #fff;
    text-align: right;
    padding: 3px 6px;
    font-size: 15px;
    overflow: hidden;
    white-space: nowrap;
    border: 1px solid var(--gray-dark);
}

.calc-grid {
    display: grid;
    grid-template-columns: repeat(4, 34px);
    gap: 4px;
    justify-content: center;
}

.calc-btn {
    width: 34px;
    height: 28px;
    border: 1px solid var(--gray-black);
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark);
    font-family: var(--font);
    font-size: 12px;
}

.calc-btn:hover {
    background: var(--gray-light);
}

.calc-btn:active {
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

.calc-btn.span2 {
    grid-column: span 2;
    width: 72px;
}

/* ---------------- Calendar ---------------- */
.cal-body {
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 4px;
    background: #fff;
    height: 100%;
}

.cal-head {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 6px;
}

.cal-nav {
    min-width: 28px;
    width: 28px;
    height: 22px;
    padding: 0;
    font-size: 11px;
}

.cal-label {
    font-weight: 700;
    font-size: 11px;
}

.cal-table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 1px;
    font-size: 11px;
}

.cal-table td {
    padding: 2px;
    text-align: center;
    height: 20px;
    width: 14.28%;
    background: #fff;
}

.cal-dayhead {
    font-weight: 700;
    background: var(--gray) !important;
}

.cal-today {
    background: var(--highlight) !important;
    color: #fff;
    font-weight: 700;
}

/* ---------------- Clock ---------------- */
.clock-body {
    display: flex;
    justify-content: center;
    padding: 8px;
}

.clock-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
}

.clock-canvas {
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    background: #fff;
    border: 1px solid var(--gray-dark);
}

.clock-digital {
    font-family: var(--font);
    font-size: 16px;
    border: 1px solid var(--gray-dark);
    padding: 2px 8px;
    background: #fff;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

/* ---------------- Control Panel ---------------- */
.cp-body {
    padding: 6px;
}

.cp-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(88px, 1fr));
    gap: 6px;
}

.cp-item {
    border: 1px solid var(--gray-black);
    background: var(--gray);
    box-shadow:
        inset 1px 1px 0 var(--gray-hi),
        inset -1px -1px 0 var(--gray-dark);
    padding: 6px 4px;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    user-select: none;
}

.cp-icon {
    width: 24px;
    height: 24px;
    display: flex;
    align-items: center;
    justify-content: center;
}

.cp-icon img {
    width: 24px;
    height: 24px;
    image-rendering: pixelated;
}

.cp-name {
    font-size: 11px;
    text-align: center;
}

.cp-item.sel {
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    background: var(--gray-light);
}

/* ---------------- My Documents list ---------------- */
.lb-wrap {
    padding: 6px;
    height: 100%;
    box-sizing: border-box;
}

.lb-list {
    background: #fff;
    height: 100%;
    overflow: auto;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    padding: 2px;
    border: 1px solid var(--gray-dark);
}

.lb-item {
    padding: 3px 6px;
    font-size: 11px;
    display: flex;
    align-items: center;
    gap: 6px;
    white-space: nowrap;
    user-select: none;
}

.lb-item img {
    width: 16px;
    height: 16px;
    image-rendering: pixelated;
}

.lb-item.sel {
    background: var(--highlight);
    color: #fff;
}

/* ---------------- Desk Gallery ---------------- */
.gal-root {
    display: flex;
    flex-direction: column;
    overflow: hidden;
}

.gal-toolbar {
    display: flex;
    gap: 6px;
    padding: 5px 6px;
    box-sizing: border-box;
}

.gal-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 10px;
    padding: 8px;
    box-sizing: border-box;
    overflow: auto;
    flex: 1;
}

.gal-tile {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 6px;
    border: 1px solid var(--gray-hi);
    box-shadow:
        inset -1px -1px 0 var(--gray-hi),
        inset 1px 1px 0 var(--gray-dark);
    background: #fff;
    user-select: none;
    cursor: default;
}

.gal-tile.sel {
    box-shadow: none;
    border-color: var(--highlight);
    outline: 2px solid var(--highlight);
    outline-offset: -2px;
}

.gal-tile img {
    width: 110px;
    height: 82px;
    object-fit: cover;
    image-rendering: pixelated;
}

.gal-label {
    font-size: 10px;
    color: #000;
}

.gal-full {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 8px;
    overflow: auto;
}

.gal-full img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
    image-rendering: pixelated;
    background: #fff;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

.gal-caption {
    font-size: 11px;
    color: var(--gray-dark);
}

/* ---------------- Reversi ---------------- */
.rev-wrap {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 8px;
}

.rev-status {
    font-size: 11px;
    min-width: 200px;
    text-align: center;
    padding: 2px 8px;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
    background: #fff;
}

.rev-board {
    display: grid;
    grid-template-columns: repeat(8, 30px);
    gap: 1px;
    background: #000;
    padding: 1px;
    box-shadow:
        inset 1px 1px 0 var(--gray-dark),
        inset -1px -1px 0 var(--gray-hi);
}

.rev-cell {
    width: 30px;
    height: 30px;
    background: #249c3c;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rev-cell.hint::after {
    content: '';
    width: 7px;
    height: 7px;
    background: rgba(255, 255, 255, 0.55);
    border-radius: 50%;
}

.rev-disc {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    box-shadow:
        inset 2px 2px 4px rgba(255, 255, 255, 0.35),
        inset -2px -2px 4px rgba(0, 0, 0, 0.55);
}

.rev-disc.black { background: radial-gradient(circle at 35% 30%, #4a4a4a, #000); }
.rev-disc.white { background: radial-gradient(circle at 35% 30%, #fff, #d8d8d8); }

/* ---------------- ZEC DESK window ---------------- */
/* The raster logo is 1254x1254; always constrain it to its context so it
   can never render at raw size / cover the viewport. It is used only as an
   icon (desktop 32px, start menu 24px, title bar & taskbar 16px), never as a
   body or page background. */
img[src*="zecdesk-logo"] {
    object-fit: contain;
    max-width: 100%;
    max-height: 100%;
    image-rendering: auto;
}

/* ZEC DESK window: the WL terminal page fills the window body, rendered
   in the classic Win98 theme. Window chrome stays classic Win98. */
.zec-root {
    padding: 0;
    overflow: hidden;
    background: #c0c0c0;
}

.zec-frame {
    display: block;
    width: 100%;
    height: 100%;
    border: 0;
    background: #c0c0c0;
}

/* ---------------- responsive ---------------- */
@media (max-width: 700px) {
    .task { max-width: 110px; }
    .dialog { max-width: calc(100vw - 16px); min-width: 0; }
    .dialog-msg { max-width: 220px; }
    #start-menu { width: 172px; }
    .rev-board { grid-template-columns: repeat(8, 24px); }
    .rev-cell { width: 24px; height: 24px; }
    .rev-disc { width: 17px; height: 17px; }
}

@media (max-width: 420px) {
    .task .task-label { display: none; }
    .task { max-width: 52px; }
}