/* Variables de Tema - Paleta Moderna y Oscura */
:root {
    --bg-color: #0f172a; /* Slate 900 */
    --canvas-bg: #0f172a;
    --glass-bg: rgba(30, 41, 59, 0.7);
    --glass-border: rgba(255, 255, 255, 0.1);
    --text-primary: #f8fafc; /* Slate 50 */
    --text-secondary: #94a3b8; /* Slate 400 */
    --accent-color: #00ffcc; /* Cyan brillante/Neon */
    --accent-hover: #00e6b8;
    --danger-color: #ef4444;
    --danger-hover: #dc2626;
    --success-color: #10b981;
    --safe-top: env(safe-area-inset-top, 0px);
    --safe-right: env(safe-area-inset-right, 0px);
    --safe-bottom: env(safe-area-inset-bottom, 0px);
    --safe-left: env(safe-area-inset-left, 0px);
}

* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html,
body {
    width: 100%;
    min-height: 100%;
    background-color: var(--bg-color);
}

body {
    font-family: 'Inter', sans-serif;
    background-color: var(--bg-color);
    color: var(--text-primary);
    overflow: hidden;
    min-height: 100vh;
    min-height: 100dvh;
    width: 100%;
    touch-action: manipulation;
    overscroll-behavior: none;
}

/* Overlay de Login */
.login-overlay {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: var(--bg-color);
    z-index: 1000;
    display: flex;
    justify-content: center;
    align-items: center;
    transition: opacity 0.5s ease;
}

.login-overlay.hidden {
    opacity: 0;
    pointer-events: none;
}

.login-card {
    background: var(--glass-bg);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    border: 1px solid var(--glass-border);
    padding: 40px;
    border-radius: 24px;
    text-align: center;
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5);
    display: flex;
    flex-direction: column;
    gap: 16px;
    align-items: center;
    width: min(420px, calc(100vw - 32px));
}

.login-card h2 {
    font-size: 1.5rem;
    color: var(--accent-color);
}

.login-card p {
    color: var(--text-secondary);
    font-size: 0.95rem;
    margin-bottom: 10px;
}

.google-btn {
    background-color: white;
    color: #3c4043;
    border: none;
    border-radius: 8px;
    padding: 12px 24px;
    font-family: 'Inter', sans-serif;
    font-weight: 500;
    font-size: 0.95rem;
    display: flex;
    align-items: center;
    gap: 12px;
    cursor: pointer;
    box-shadow: 0 2px 4px rgba(0,0,0,0.2);
    transition: background-color 0.2s, box-shadow 0.2s;
}

.google-btn:hover {
    background-color: #f8f9fa;
    box-shadow: 0 4px 8px rgba(0,0,0,0.2);
}

.google-btn:disabled,
.guest-btn:disabled,
.tool-btn:disabled {
    opacity: 0.58;
    cursor: wait;
}

.guest-btn {
    background: transparent;
    color: var(--text-secondary);
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    padding: 10px 18px;
    font-family: inherit;
    font-size: 0.86rem;
    cursor: pointer;
}

.guest-btn:hover {
    color: var(--text-primary);
    border-color: rgba(255, 255, 255, 0.24);
}

.login-status {
    min-height: 18px;
    color: var(--text-secondary);
    font-size: 0.78rem;
}

.login-status.error {
    color: #fca5a5;
}

.image-process-overlay {
    position: fixed;
    inset: 0;
    z-index: 1050;
    display: grid;
    place-items: center;
    padding: 20px;
    background: rgba(15, 23, 42, 0.46);
    backdrop-filter: blur(7px);
    -webkit-backdrop-filter: blur(7px);
    opacity: 1;
    pointer-events: auto;
    transition: opacity 140ms ease;
}

.image-process-overlay.hidden {
    opacity: 0;
    pointer-events: none;
}

.image-process-card {
    width: min(360px, calc(100vw - 32px));
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 10px;
    background: rgba(15, 23, 42, 0.94);
    box-shadow: 0 18px 44px rgba(0, 0, 0, 0.42);
    padding: 18px;
}

.image-process-card h2 {
    font-size: 1rem;
    font-weight: 700;
    margin-bottom: 7px;
    color: var(--text-primary);
}

.image-process-card p {
    min-height: 18px;
    margin-bottom: 14px;
    color: var(--text-secondary);
    font-size: 0.84rem;
}

.image-process-progress {
    height: 8px;
    overflow: hidden;
    border-radius: 999px;
    background: rgba(148, 163, 184, 0.2);
}

.image-process-bar {
    width: 0%;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, #00ffcc, #7dd3fc);
    transition: width 140ms ease;
}

.image-process-meta {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-top: 9px;
    color: var(--text-secondary);
    font-size: 0.75rem;
}

/* El Canvas */
.canvas-scroll {
    position: fixed;
    inset: 0;
    width: 100vw;
    width: 100dvw;
    height: 100vh;
    height: 100dvh;
    overflow: hidden;
}

#drawing-canvas,
#stroke-preview-canvas {
    position: absolute;
    inset: 0;
    display: block;
    touch-action: none;
    width: 100vw;
    width: 100dvw;
    height: 100vh;
    height: 100dvh;
}

/* Vista /otro_paint_prueba_2: replica visual propia de Paint clasico Windows 98. */
.paint98-chrome,
.paint98-color-box,
.paint98-statusbar {
    display: none;
}

html.paint98-route {
    --bg-color: #008080;
    --canvas-bg: #7f7f7f;
    --glass-bg: #c0c0c0;
    --glass-border: #808080;
    --text-primary: #000000;
    --text-secondary: #000000;
    --accent-color: #000080;
    --accent-hover: #000080;
    color-scheme: light;
}

html.paint98-route,
html.paint98-route body {
    width: 100%;
    height: 100%;
    background: #008080;
}

html.paint98-route body {
    font-family: Tahoma, "MS Sans Serif", Arial, sans-serif;
    color: #000000;
    image-rendering: auto;
}

html.paint98-route .paint98-chrome {
    position: fixed;
    inset: 0 0 auto 0;
    z-index: 28;
    display: block;
    height: 42px;
    padding: 2px;
    background: #c0c0c0;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
}

html.paint98-route .paint98-titlebar {
    display: grid;
    grid-template-columns: 16px minmax(0, 1fr) auto;
    align-items: center;
    gap: 4px;
    height: 18px;
    padding: 1px 2px;
    background: linear-gradient(90deg, #000080, #1084d0);
    color: #ffffff;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}

html.paint98-route .paint98-window-icon {
    width: 16px;
    height: 16px;
    background: url("vendor/jspaint/jspaint-16x16.png") center / 16px 16px no-repeat;
}

html.paint98-route .paint98-window-title {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

html.paint98-route .paint98-window-controls {
    display: grid;
    grid-template-columns: repeat(3, 16px);
    gap: 2px;
}

html.paint98-route .paint98-window-controls span {
    position: relative;
    width: 16px;
    height: 14px;
    border: 1px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
}

html.paint98-route .paint98-minimize::before {
    content: "";
    position: absolute;
    left: 4px;
    right: 4px;
    bottom: 3px;
    height: 2px;
    background: #000000;
}

html.paint98-route .paint98-maximize::before {
    content: "";
    position: absolute;
    inset: 3px 4px 4px;
    border: 1px solid #000000;
    border-top-width: 2px;
}

html.paint98-route .paint98-close::before,
html.paint98-route .paint98-close::after {
    content: "";
    position: absolute;
    left: 4px;
    top: 6px;
    width: 8px;
    height: 1px;
    background: #000000;
}

html.paint98-route .paint98-close::before {
    transform: rotate(45deg);
}

html.paint98-route .paint98-close::after {
    transform: rotate(-45deg);
}

html.paint98-route .paint98-menubar {
    display: flex;
    align-items: center;
    height: 20px;
    padding: 1px 2px 0;
    color: #000000;
    font-size: 11px;
    line-height: 1;
}

html.paint98-route .paint98-menubar span {
    min-width: 38px;
    padding: 4px 7px 3px;
    border: 1px solid transparent;
}

html.paint98-route .paint98-menubar span:hover {
    border-color: #ffffff #808080 #808080 #ffffff;
    background: #d4d0c8;
}

html.paint98-route .paint-chrome,
html.paint98-route .paint-statusbar,
html.paint98-route .menu-toggle,
html.paint98-route .floating-tools,
html.paint98-route .toolbar-backdrop {
    display: none;
}

html.paint98-route .canvas-scroll {
    inset: 42px 118px 67px 59px;
    width: auto;
    height: auto;
    overflow: hidden;
    background: #7f7f7f;
    border: 2px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    border-radius: 0;
    box-shadow:
        inset 1px 1px #404040,
        inset -1px -1px #dfdfdf;
}

html.paint98-route #drawing-canvas,
html.paint98-route #stroke-preview-canvas {
    width: 100%;
    height: 100%;
}

html.paint98-route .toolbar {
    top: 42px;
    bottom: 67px;
    left: 0;
    z-index: 24;
    width: 59px;
    height: auto;
    max-height: none;
    padding: 3px 2px;
    transform: none;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-left: 0;
    border-radius: 0;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    color: #000000;
    overflow-x: hidden;
    overflow-y: auto;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    transition: none;
}

html.paint98-route .toolbar-header,
html.paint98-route .auth-group,
html.paint98-route .world-group,
html.paint98-route .admin-group,
html.paint98-route .tile-nav-group,
html.paint98-route .color-tool-group,
html.paint98-route .image-tool-group,
html.paint98-route .zoom-group,
html.paint98-route .history-group,
html.paint98-route .status-indicator {
    display: none;
}

html.paint98-route .tools-container {
    display: flex;
    flex-direction: column;
    gap: 3px;
    height: auto;
    padding: 0;
    overflow: visible;
}

html.paint98-route .tool-group {
    padding: 2px;
    gap: 2px;
    border: 0;
    border-radius: 0;
    background: transparent;
    box-shadow: none;
}

html.paint98-route .tool-grid-group {
    order: 1;
    display: grid;
    grid-template-columns: repeat(2, 26px);
    position: relative;
    gap: 0;
    width: 52px;
    padding: 0;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    background: #c0c0c0;
}

html.paint98-route .view-tool-group {
    display: none;
}

html.paint98-route .brush-size-group {
    position: relative;
    order: 2;
    display: block;
    width: 52px;
    height: 88px;
    margin-top: 7px;
    padding: 3px;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    background: #ffffff;
}

html.paint98-route .tool-grid-group .tool-hint,
html.paint98-route .brush-size-group label span,
html.paint98-route .tool-hint {
    display: none;
}

html.paint98-route .tool-btn,
html.paint98-route .icon-btn,
html.paint98-route .guest-btn,
html.paint98-route .tool-select,
html.paint98-route .tool-number-input,
html.paint98-route .tool-text-input,
html.paint98-route .tool-textarea,
html.paint98-route .tool-check {
    border: 1px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    font-family: Tahoma, "MS Sans Serif", Arial, sans-serif;
}

html.paint98-route .tool-btn,
html.paint98-route .icon-btn {
    display: grid;
    place-items: center;
    min-width: 26px;
    width: 26px;
    min-height: 26px;
    height: 26px;
    padding: 0;
    gap: 0;
    overflow: hidden;
    font-size: 0;
    line-height: 0;
}

html.paint98-route .tool-grid-group .tool-btn {
    border-width: 1px;
}

html.paint98-route .paint98-tool {
    position: relative;
    order: 30;
}

html.paint98-route .paint98-tool svg {
    display: none;
}

html.paint98-route .paint98-faux-tool {
    cursor: default;
}

html.paint98-route .paint98-tool-free-select { order: 1; }
html.paint98-route .paint98-tool-select { order: 2; }
html.paint98-route .paint98-tool-eraser { order: 3; }
html.paint98-route .paint98-tool-fill { order: 4; }
html.paint98-route .paint98-tool-picker { order: 5; }
html.paint98-route .paint98-tool-magnifier { order: 6; }
html.paint98-route .paint98-tool-pencil { order: 7; }
html.paint98-route .paint98-tool-brush { order: 8; }
html.paint98-route .paint98-tool-airbrush { order: 9; }
html.paint98-route .paint98-tool-text { order: 10; }
html.paint98-route .paint98-tool-line { order: 11; }
html.paint98-route .paint98-tool-curve { order: 12; }
html.paint98-route .paint98-tool-rectangle { order: 13; }
html.paint98-route .paint98-tool-polygon { order: 14; }
html.paint98-route .paint98-tool-ellipse { order: 15; }
html.paint98-route .paint98-tool-roundrect { order: 16; }

html.paint98-route .paint98-tool::before,
html.paint98-route .paint98-tool::after {
    content: "";
    position: absolute;
    pointer-events: none;
}

html.paint98-route .paint98-tool-free-select::before {
    left: 5px;
    top: 6px;
    width: 14px;
    height: 12px;
    border: 1px dotted #000000;
    border-radius: 55% 45% 50% 40%;
    transform: rotate(-14deg);
}

html.paint98-route .paint98-tool-select::before {
    left: 5px;
    top: 5px;
    width: 14px;
    height: 13px;
    border: 1px dashed #000000;
}

html.paint98-route .paint98-tool-eraser::before {
    left: 5px;
    top: 8px;
    width: 15px;
    height: 8px;
    border: 1px solid #000000;
    background: linear-gradient(90deg, #ff9fb0 0 48%, #ffffff 48% 100%);
    transform: rotate(-25deg);
}

html.paint98-route .paint98-tool-fill::before {
    left: 5px;
    top: 6px;
    width: 13px;
    height: 10px;
    border: 1px solid #000000;
    background: #d4d0c8;
    transform: rotate(-35deg) skewX(-8deg);
}

html.paint98-route .paint98-tool-fill::after {
    left: 17px;
    top: 16px;
    width: 5px;
    height: 6px;
    border-radius: 50% 50% 55% 55%;
    background: #0000ff;
}

html.paint98-route .paint98-tool-picker::before {
    left: 5px;
    top: 11px;
    width: 16px;
    height: 3px;
    border: 1px solid #000000;
    background: #ffffff;
    transform: rotate(-45deg);
}

html.paint98-route .paint98-tool-picker::after {
    left: 14px;
    top: 4px;
    width: 5px;
    height: 5px;
    border: 1px solid #000000;
    background: #808080;
}

html.paint98-route .paint98-tool-magnifier::before {
    left: 5px;
    top: 5px;
    width: 10px;
    height: 10px;
    border: 2px solid #000000;
    border-radius: 50%;
    background: #ffffff;
}

html.paint98-route .paint98-tool-magnifier::after {
    left: 15px;
    top: 16px;
    width: 9px;
    height: 2px;
    background: #000000;
    transform: rotate(45deg);
    transform-origin: left center;
}

html.paint98-route .paint98-tool-pencil::before {
    left: 4px;
    top: 10px;
    width: 18px;
    height: 4px;
    border: 1px solid #000000;
    background: linear-gradient(90deg, #000000 0 12%, #ffff00 12% 80%, #804000 80% 100%);
    transform: rotate(-45deg);
}

html.paint98-route .paint98-tool-brush::before {
    left: 7px;
    top: 11px;
    width: 15px;
    height: 4px;
    border: 1px solid #000000;
    background: #804000;
    transform: rotate(-40deg);
}

html.paint98-route .paint98-tool-brush::after {
    left: 4px;
    top: 14px;
    width: 8px;
    height: 7px;
    border-radius: 1px 1px 5px 5px;
    background: #000000;
    transform: rotate(-40deg);
}

html.paint98-route .paint98-tool-airbrush::before {
    left: 5px;
    top: 10px;
    width: 10px;
    height: 7px;
    border: 1px solid #000000;
    background: #808080;
}

html.paint98-route .paint98-tool-airbrush::after {
    left: 15px;
    top: 5px;
    width: 7px;
    height: 12px;
    background:
        radial-gradient(circle at 1px 2px, #000000 0 1px, transparent 1.4px),
        radial-gradient(circle at 5px 5px, #000000 0 1px, transparent 1.4px),
        radial-gradient(circle at 2px 9px, #000000 0 1px, transparent 1.4px),
        radial-gradient(circle at 6px 12px, #000000 0 1px, transparent 1.4px);
}

html.paint98-route .paint98-tool-text::before {
    content: "B";
    left: 6px;
    top: 2px;
    color: #000000;
    font-family: "Times New Roman", serif;
    font-size: 20px;
    font-weight: 700;
    line-height: 1;
}

html.paint98-route .paint98-tool-line::before {
    left: 4px;
    top: 12px;
    width: 18px;
    height: 2px;
    background: #000000;
    transform: rotate(-35deg);
}

html.paint98-route .paint98-tool-curve::before {
    left: 5px;
    top: 5px;
    width: 15px;
    height: 14px;
    border-right: 2px solid #000000;
    border-bottom: 2px solid #000000;
    border-radius: 0 0 14px 0;
    transform: rotate(-26deg);
}

html.paint98-route .paint98-tool-rectangle::before {
    left: 5px;
    top: 6px;
    width: 15px;
    height: 12px;
    border: 2px solid #000000;
    background: #ffffff;
}

html.paint98-route .paint98-tool-polygon::before {
    left: 5px;
    top: 5px;
    width: 16px;
    height: 15px;
    background: #000000;
    clip-path: polygon(50% 0, 100% 35%, 82% 100%, 18% 100%, 0 35%);
}

html.paint98-route .paint98-tool-polygon::after {
    left: 7px;
    top: 7px;
    width: 12px;
    height: 11px;
    background: #ffffff;
    clip-path: polygon(50% 0, 100% 35%, 82% 100%, 18% 100%, 0 35%);
}

html.paint98-route .paint98-tool-ellipse::before {
    left: 5px;
    top: 6px;
    width: 15px;
    height: 12px;
    border: 2px solid #000000;
    border-radius: 50%;
    background: #ffffff;
}

html.paint98-route .paint98-tool-roundrect::before {
    left: 5px;
    top: 6px;
    width: 15px;
    height: 12px;
    border: 2px solid #000000;
    border-radius: 5px;
    background: #ffffff;
}

/* JS Paint classic toolbar sprite, MIT: public/vendor/jspaint/LICENSE.txt */
html.paint98-route .paint98-tool-free-select { --jspaint-tool-index: 0; }
html.paint98-route .paint98-tool-select { --jspaint-tool-index: 1; }
html.paint98-route .paint98-tool-eraser { --jspaint-tool-index: 2; }
html.paint98-route .paint98-tool-fill { --jspaint-tool-index: 3; }
html.paint98-route .paint98-tool-picker { --jspaint-tool-index: 4; }
html.paint98-route .paint98-tool-magnifier { --jspaint-tool-index: 5; }
html.paint98-route .paint98-tool-pencil { --jspaint-tool-index: 6; }
html.paint98-route .paint98-tool-brush { --jspaint-tool-index: 7; }
html.paint98-route .paint98-tool-airbrush { --jspaint-tool-index: 8; }
html.paint98-route .paint98-tool-text { --jspaint-tool-index: 9; }
html.paint98-route .paint98-tool-line { --jspaint-tool-index: 10; }
html.paint98-route .paint98-tool-curve { --jspaint-tool-index: 11; }
html.paint98-route .paint98-tool-rectangle { --jspaint-tool-index: 12; }
html.paint98-route .paint98-tool-polygon { --jspaint-tool-index: 13; }
html.paint98-route .paint98-tool-ellipse { --jspaint-tool-index: 14; }
html.paint98-route .paint98-tool-roundrect { --jspaint-tool-index: 15; }

html.paint98-route .paint98-tool::before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: 16px;
    height: 16px;
    border: 0;
    border-radius: 0;
    background: url("vendor/jspaint/classic-tools.png") no-repeat;
    background-position: calc(-16px * var(--jspaint-tool-index)) 0;
    background-size: 256px 16px;
    box-shadow: none;
    clip-path: none;
    transform: translate(-50%, -50%);
}

html.paint98-route .paint98-tool::after {
    display: none;
}

html.paint98-route .tool-grid-group .text-controls {
    position: absolute;
    left: 58px;
    top: 104px;
    z-index: 40;
    display: grid;
    width: 238px;
    gap: 5px;
    padding: 7px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080, 2px 2px 0 rgba(0, 0, 0, 0.22);
    color: #000000;
    font-family: Tahoma, "MS Sans Serif", Arial, sans-serif;
    font-size: 11px;
    line-height: 1.2;
}

html.paint98-route .tool-grid-group .text-controls[hidden] {
    display: none;
}

html.paint98-route .tool-grid-group .text-controls label,
html.paint98-route .tool-grid-group .text-controls .tool-hint {
    display: block;
    margin: 0;
    color: #000000;
    font-size: 11px;
    line-height: 1.2;
}

html.paint98-route .tool-grid-group .text-controls .tool-textarea,
html.paint98-route .tool-grid-group .text-controls input[type="range"] {
    width: 100%;
}

html.paint98-route .tool-grid-group .text-controls .tool-textarea {
    min-height: 64px;
    padding: 4px;
    resize: vertical;
    background: #ffffff;
    color: #000000;
    font-size: 12px;
    line-height: 1.25;
}

html.paint98-route .tool-btn svg,
html.paint98-route .icon-btn svg {
    width: 18px;
    height: 18px;
    stroke-width: 2;
}

html.paint98-route .tool-btn:hover,
html.paint98-route .icon-btn:hover {
    transform: none;
    background: #d4d0c8;
}

html.paint98-route .tool-btn.active,
html.paint98-route .icon-btn.active,
html.paint98-route .icon-btn[aria-pressed="true"] {
    border-color: #404040 #ffffff #ffffff #404040;
    background: #d4d0c8;
    color: #000080;
    box-shadow: inset 1px 1px #808080, inset -1px -1px #ffffff;
}

html.paint98-route .brush-size-group label {
    display: block;
    margin-bottom: 3px;
    color: #000000;
    font-size: 0;
    line-height: 0;
}

html.paint98-route .brush-size-group label::before {
    content: "Options";
    display: block;
    color: #000000;
    font-size: 10px;
    line-height: 1.2;
}

html.paint98-route .brush-size-group input[type="range"] {
    position: absolute;
    inset: 17px 3px 3px;
    z-index: 2;
    width: calc(100% - 6px);
    height: calc(100% - 20px);
    margin: 0;
    opacity: 0;
    cursor: ns-resize;
}

html.paint98-route .brush-size-group::before {
    content: "";
    position: absolute;
    left: 8px;
    right: 8px;
    top: 28px;
    height: 40px;
    background:
        linear-gradient(#000000 0 0) center 1px / 28px 1px no-repeat,
        linear-gradient(#000000 0 0) center 12px / 30px 2px no-repeat,
        linear-gradient(#000000 0 0) center 24px / 32px 3px no-repeat,
        linear-gradient(#000000 0 0) center 37px / 34px 4px no-repeat;
}

html.paint98-route .brush-size-group::after {
    content: "";
    position: absolute;
    left: 5px;
    right: 5px;
    bottom: 8px;
    height: 15px;
    border: 1px dotted #000000;
    pointer-events: none;
}

html.paint98-route input[type="range"]::-webkit-slider-runnable-track {
    width: 4px;
    height: 100%;
    border-radius: 0;
    background: #808080;
}

html.paint98-route input[type="range"]::-webkit-slider-thumb {
    width: 12px;
    height: 12px;
    margin-left: -4px;
    border: 1px solid #404040;
    border-radius: 0;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #ffffff, inset -1px -1px #808080;
}

html.paint98-route .paint98-color-box {
    position: fixed;
    left: 0;
    right: 0;
    bottom: 22px;
    z-index: 27;
    display: grid;
    grid-template-columns: 54px minmax(0, max-content) 48px;
    align-items: center;
    gap: 7px;
    height: 45px;
    padding: 4px 6px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
}

html.paint98-route .paint98-current-colors {
    position: relative;
    width: 42px;
    height: 34px;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    background: #c0c0c0;
}

html.paint98-route .paint98-primary-swatch,
html.paint98-route .paint98-secondary-swatch {
    position: absolute;
    width: 24px;
    height: 24px;
    border: 1px solid;
    border-color: #404040 #ffffff #ffffff #404040;
}

html.paint98-route .paint98-primary-swatch {
    left: 5px;
    top: 4px;
    z-index: 2;
    background: #000000;
    cursor: pointer;
}

html.paint98-route .paint98-secondary-swatch {
    right: 4px;
    bottom: 3px;
    background: #ffffff;
}

html.paint98-route .paint98-swatches {
    display: grid;
    grid-template-columns: repeat(14, 16px);
    grid-template-rows: repeat(2, 16px);
    gap: 1px;
}

html.paint98-route .paint98-swatch {
    width: 16px;
    height: 16px;
    padding: 0;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    border-radius: 0;
    cursor: pointer;
}

html.paint98-route .paint98-swatch.active {
    outline: 1px dotted #000000;
    outline-offset: -3px;
}

html.paint98-route .paint98-more-color-btn {
    display: grid;
    grid-template-columns: 14px 1fr;
    align-items: center;
    gap: 3px;
    width: 44px;
    height: 32px;
    padding: 2px 3px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    color: #000000;
    font-family: "MS Sans Serif", "Tahoma", sans-serif;
    font-size: 10px;
    line-height: 1;
    cursor: pointer;
}

html.paint98-route .paint98-more-color-btn:active,
html.paint98-route .paint98-more-color-btn[aria-expanded="true"] {
    border-color: #404040 #ffffff #ffffff #404040;
    box-shadow: inset 1px 1px #808080, inset -1px -1px #dfdfdf;
}

html.paint98-route .paint98-more-color-preview {
    width: 14px;
    height: 22px;
    border: 1px solid #000000;
    background: #000000;
}

html.paint98-route .paint98-color-popup {
    position: absolute;
    left: 64px;
    bottom: 48px;
    z-index: 80;
    display: grid;
    width: 236px;
    gap: 6px;
    padding: 7px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080, 3px 3px 0 rgba(0, 0, 0, 0.28);
    color: #000000;
    font-family: "MS Sans Serif", "Tahoma", sans-serif;
}

html.paint98-route .paint98-color-popup[hidden] {
    display: none;
}

html.paint98-route .paint98-color-popup-title {
    padding: 2px 4px;
    background: #000080;
    color: #ffffff;
    font-size: 11px;
    line-height: 1.25;
}

html.paint98-route .paint98-spectrum {
    position: relative;
    width: 220px;
    height: 138px;
    overflow: hidden;
    border: 2px solid;
    border-color: #404040 #ffffff #ffffff #404040;
    background:
        linear-gradient(to top, #000000, rgba(0, 0, 0, 0)),
        linear-gradient(to right, #ffffff, #ff0000);
    cursor: crosshair;
    touch-action: none;
}

html.paint98-route .paint98-spectrum-cursor {
    position: absolute;
    left: 100%;
    top: 0;
    width: 10px;
    height: 10px;
    border: 1px solid #ffffff;
    outline: 1px solid #000000;
    border-radius: 50%;
    transform: translate(-5px, -5px);
    pointer-events: none;
}

html.paint98-route .paint98-hue-slider {
    width: 220px;
    height: 14px;
    appearance: none;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    background: linear-gradient(90deg, #ff0000, #ffff00, #00ff00, #00ffff, #0000ff, #ff00ff, #ff0000);
}

html.paint98-route .paint98-hue-slider::-webkit-slider-thumb {
    width: 8px;
    height: 18px;
    margin-top: -2px;
    border: 1px solid #000000;
    border-radius: 0;
    background: #ffffff;
    box-shadow: none;
}

html.paint98-route .paint98-color-popup-row {
    display: grid;
    grid-template-columns: 26px 1fr 54px;
    align-items: center;
    gap: 5px;
}

html.paint98-route .paint98-spectrum-preview {
    width: 24px;
    height: 22px;
    border: 1px solid #000000;
    background: #000000;
}

html.paint98-route .paint98-hex-input {
    min-width: 0;
    height: 23px;
    padding: 2px 4px;
    border: 2px solid;
    border-color: #404040 #ffffff #ffffff #404040;
    border-radius: 0;
    background: #ffffff;
    color: #000000;
    font-family: "MS Sans Serif", "Tahoma", sans-serif;
    font-size: 11px;
    text-transform: uppercase;
}

html.paint98-route .paint98-color-close-btn {
    height: 24px;
    padding: 2px 8px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    color: #000000;
    font-family: "MS Sans Serif", "Tahoma", sans-serif;
    font-size: 11px;
}

html.paint98-route .paint98-statusbar {
    position: fixed;
    inset: auto 0 0 0;
    z-index: 27;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 170px 70px;
    gap: 2px;
    height: 22px;
    padding: 2px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-top-width: 1px;
    background: #c0c0c0;
    color: #000000;
    font-size: 11px;
}

html.paint98-route .paint98-statusbar span {
    min-width: 0;
    overflow: hidden;
    padding: 2px 5px;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    text-overflow: ellipsis;
    white-space: nowrap;
}

html.paint98-route .canvas-minimap {
    top: 42px;
    right: 0;
    bottom: 67px;
    z-index: 24;
    display: flex;
    gap: 0;
    transform: none;
}

html.paint98-route .minimap-toggle {
    display: none;
}

html.paint98-route .minimap-panel {
    width: 118px;
    height: 100%;
    padding: 3px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

html.paint98-route .minimap-header {
    height: 17px;
    margin: 0 0 3px;
    color: #000000;
    font-size: 10px;
    font-weight: 400;
}

html.paint98-route #minimap-position {
    color: #000080;
    font-weight: 700;
}

html.paint98-route .minimap-scroll-shell,
html.paint98-route .minimap-scroll {
    width: 108px;
}

html.paint98-route .minimap-scroll {
    height: calc(100dvh - 134px);
    min-height: 190px;
    border: 2px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    border-radius: 0;
    background: #ffffff;
    scrollbar-width: auto;
    scrollbar-color: #808080 #c0c0c0;
}

html.paint98-route .minimap-scroll::-webkit-scrollbar {
    width: 16px;
}

html.paint98-route .minimap-scroll::-webkit-scrollbar-track {
    background: #c0c0c0;
    border-left: 1px solid #808080;
}

html.paint98-route .minimap-scroll::-webkit-scrollbar-thumb {
    border: 1px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
}

html.paint98-route .minimap-jump {
    right: 2px;
    left: auto;
    width: 16px;
    height: 16px;
    border: 1px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    color: #c00000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    transform: none;
}

html.paint98-route .minimap-jump svg {
    width: 14px;
    height: 14px;
    stroke-width: 4;
}

html.paint98-route .minimap-jump:hover,
html.paint98-route .minimap-jump:active {
    background: #d4d0c8;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    transform: none;
}

html.paint98-route .minimap-jump-start {
    top: 20px;
}

html.paint98-route .minimap-jump-end {
    bottom: 3px;
}

html.paint98-route .brush-context-panel,
html.paint98-route .image-placement-tools,
html.paint98-route .image-process-card,
html.paint98-route .login-card {
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080, 4px 4px 0 rgba(0, 0, 0, 0.24);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

html.paint98-route .login-card h2,
html.paint98-route .login-card p,
html.paint98-route .brush-context-controls label,
html.paint98-route .image-process-card h2,
html.paint98-route .image-process-card p {
    color: #000000;
}

html.paint98-route .google-btn,
html.paint98-route .brush-context-tool-btn,
html.paint98-route .image-placement-tool,
html.paint98-route .image-placement-primary,
html.paint98-route .image-placement-secondary {
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
}

html.paint98-route .canvas-notice {
    top: 48px;
    border: 1px solid #000000;
    border-radius: 0;
    background: #ffffe1;
    color: #000000;
}

html.paint98-route .paint98-chrome {
    height: 68px;
}

html.paint98-route .paint98-advanced-bar {
    display: flex;
    align-items: center;
    gap: 2px;
    height: 24px;
    padding: 2px 3px 0;
    border-top: 1px solid #808080;
    background: #c0c0c0;
}

html.paint98-route .paint98-advanced-btn {
    min-width: 72px;
    height: 20px;
    padding: 1px 7px 2px;
    border: 1px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    font-family: Tahoma, "MS Sans Serif", Arial, sans-serif;
    font-size: 11px;
    line-height: 1;
    cursor: pointer;
}

html.paint98-route .paint98-advanced-btn:hover,
html.paint98-route .paint98-advanced-btn.active {
    border-color: #404040 #ffffff #ffffff #404040;
    background: #d4d0c8;
    box-shadow: inset 1px 1px #808080, inset -1px -1px #ffffff;
}

html.paint98-route .paint98-advanced-btn:disabled {
    color: #808080;
    cursor: not-allowed;
    text-shadow: 1px 1px #ffffff;
}

html.paint98-route .paint98-session-btn {
    margin-left: auto;
    min-width: 92px;
}

html.paint98-route .paint98-session-btn[hidden] {
    display: none;
}

html.paint98-route .canvas-scroll {
    inset: 68px 118px 67px 59px;
}

html.paint98-route .toolbar,
html.paint98-route .canvas-minimap {
    top: 68px;
}

html.paint98-route .canvas-notice {
    top: 74px;
}

html.paint98-route .minimap-scroll {
    height: calc(100dvh - 160px);
}

html.paint98-route .floating-tools {
    position: fixed;
    top: 74px;
    left: 66px;
    right: auto;
    bottom: auto;
    z-index: 26;
    display: grid;
    grid-template-columns: repeat(7, 26px);
    gap: 1px;
    padding: 3px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080, 2px 2px 0 rgba(0, 0, 0, 0.2);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

html.paint98-route .floating-tool,
html.paint98-route .floating-tool:hover,
html.paint98-route .floating-tool:disabled:hover {
    position: relative;
    display: grid;
    place-items: center;
    width: 26px;
    height: 26px;
    padding: 0;
    border: 1px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    transform: none;
    transition: none;
}

html.paint98-route .floating-tool.active,
html.paint98-route .floating-tool[aria-pressed="true"] {
    border-color: #404040 #ffffff #ffffff #404040;
    background: #d4d0c8;
    color: #000080;
    box-shadow: inset 1px 1px #808080, inset -1px -1px #ffffff;
}

html.paint98-route .floating-tool:disabled {
    color: #808080;
    opacity: 0.72;
    cursor: not-allowed;
    text-shadow: 1px 1px #ffffff;
}

html.paint98-route .floating-tool svg {
    width: 17px;
    height: 17px;
}

html.paint98-route .paint98-floating-pressure::before,
html.paint98-route .paint98-floating-image::before,
html.paint98-route .paint98-floating-image::after {
    content: "";
    position: absolute;
    pointer-events: none;
}

html.paint98-route .paint98-floating-pressure::before {
    left: 6px;
    top: 5px;
    width: 14px;
    height: 16px;
    background:
        radial-gradient(circle at 11px 3px, #000080 0 2px, transparent 2.4px),
        linear-gradient(135deg, transparent 0 44%, #000000 45% 55%, transparent 56%) center / 15px 15px no-repeat,
        linear-gradient(#ffff00 0 0) 5px 5px / 8px 11px no-repeat;
    transform: rotate(-18deg);
}

html.paint98-route .paint98-floating-image::before {
    left: 5px;
    top: 5px;
    width: 16px;
    height: 15px;
    border: 1px solid #000000;
    background:
        radial-gradient(circle at 4px 4px, #000080 0 2px, transparent 2.4px),
        linear-gradient(135deg, transparent 0 52%, #008000 53% 66%, transparent 67%),
        #ffffff;
}

html.paint98-route .paint98-floating-image::after {
    left: 8px;
    top: 13px;
    width: 12px;
    height: 6px;
    background: #008000;
    clip-path: polygon(0 100%, 38% 22%, 58% 60%, 78% 12%, 100% 100%);
}

html.paint98-route body[data-paint98-open-panel] .toolbar {
    overflow: visible;
}

html.paint98-route body[data-paint98-open-panel="nav"] .tile-nav-group,
html.paint98-route body[data-paint98-open-panel="image"] .image-tool-group,
html.paint98-route body[data-paint98-open-panel="zoom"] .zoom-group,
html.paint98-route body[data-paint98-open-panel="history"] .history-group,
html.paint98-route body[data-paint98-open-panel="world"] .world-group:not([hidden]),
html.paint98-route body[data-paint98-open-panel="admin"] .admin-group:not([hidden]) {
    position: fixed;
    left: 270px;
    top: 74px;
    z-index: 45;
    display: grid;
    width: 282px;
    max-height: calc(100dvh - 178px);
    overflow: auto;
    gap: 5px;
    padding: 7px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080, 3px 3px 0 rgba(0, 0, 0, 0.22);
    color: #000000;
}

html.paint98-route body[data-paint98-open-panel] .panel-summary,
html.paint98-route body[data-paint98-open-panel] .tool-group label,
html.paint98-route body[data-paint98-open-panel] .tool-hint {
    display: block;
    color: #000000;
    font-size: 11px;
    line-height: 1.2;
}

html.paint98-route body[data-paint98-open-panel] .tool-hint {
    margin: 0;
}

html.paint98-route body[data-paint98-open-panel] .tool-select,
html.paint98-route body[data-paint98-open-panel] .tool-number-input,
html.paint98-route body[data-paint98-open-panel] .tool-text-input,
html.paint98-route body[data-paint98-open-panel] .tool-textarea,
html.paint98-route body[data-paint98-open-panel] .auth-user {
    width: 100%;
    min-height: 24px;
    padding: 2px 5px;
    background: #ffffff;
    color: #000000;
    font-size: 11px;
}

html.paint98-route body[data-paint98-open-panel] .tool-btn,
html.paint98-route body[data-paint98-open-panel] .icon-btn {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: auto;
    min-width: 26px;
    height: 26px;
    min-height: 26px;
    padding: 2px 7px;
    gap: 5px;
    overflow: hidden;
    font-size: 11px;
    line-height: 1;
}

html.paint98-route body[data-paint98-open-panel] .tool-btn svg,
html.paint98-route body[data-paint98-open-panel] .icon-btn svg {
    display: block;
    width: 16px;
    height: 16px;
}

html.paint98-route body[data-paint98-open-panel] .segmented-tools {
    display: flex;
    gap: 4px;
}

html.paint98-route body[data-paint98-open-panel] .image-size-controls,
html.paint98-route body[data-paint98-open-panel] .tracing-controls {
    display: grid;
    gap: 5px;
}

@media (max-width: 760px) {
    html.paint98-route .paint98-chrome {
        height: 67px;
    }

    html.paint98-route .paint98-menubar span {
        min-width: auto;
        padding-inline: 5px;
    }

    html.paint98-route .paint98-advanced-bar {
        overflow-x: auto;
        overflow-y: hidden;
    }

    html.paint98-route .paint98-advanced-btn {
        flex: 0 0 auto;
        min-width: 68px;
    }

    html.paint98-route .canvas-scroll {
        inset: 67px 74px 119px 0;
    }

    html.paint98-route .toolbar {
        top: auto;
        right: 0;
        bottom: 93px;
        width: 100%;
        height: 26px;
        padding: 0;
        border-left: 0;
        border-right: 0;
        overflow-x: auto;
        overflow-y: hidden;
    }

    html.paint98-route .tools-container {
        flex-direction: row;
        align-items: center;
        gap: 0;
        width: max-content;
    }

    html.paint98-route .tool-grid-group {
        display: flex;
        width: auto;
        border: 0;
    }

    html.paint98-route .view-tool-group {
        display: none;
    }

    html.paint98-route .brush-size-group {
        display: none;
    }

    html.paint98-route .canvas-minimap {
        top: 67px;
        bottom: 119px;
    }

    html.paint98-route .floating-tools {
        left: 4px;
        top: auto;
        right: 78px;
        bottom: 68px;
        grid-template-columns: repeat(7, 26px);
        width: max-content;
        max-width: calc(100dvw - 84px);
        overflow-x: auto;
    }

    html.paint98-route body[data-paint98-open-panel="nav"] .tile-nav-group,
    html.paint98-route body[data-paint98-open-panel="image"] .image-tool-group,
    html.paint98-route body[data-paint98-open-panel="zoom"] .zoom-group,
    html.paint98-route body[data-paint98-open-panel="history"] .history-group,
    html.paint98-route body[data-paint98-open-panel="world"] .world-group:not([hidden]),
    html.paint98-route body[data-paint98-open-panel="admin"] .admin-group:not([hidden]) {
        left: 6px;
        right: 80px;
        top: 71px;
        width: auto;
        max-height: calc(100dvh - 192px);
    }

    html.paint98-route .minimap-panel {
        width: 74px;
    }

    html.paint98-route .minimap-scroll-shell,
    html.paint98-route .minimap-scroll {
        width: 64px;
    }

    html.paint98-route .minimap-scroll {
        height: calc(100dvh - 153px);
        min-height: 160px;
    }

    html.paint98-route .paint98-color-box {
        grid-template-columns: 44px minmax(223px, 1fr) 44px;
        height: 45px;
        overflow-x: auto;
    }

    html.paint98-route .paint98-swatches {
        grid-template-columns: repeat(14, 15px);
        grid-template-rows: repeat(2, 15px);
    }

    html.paint98-route .paint98-swatch {
        width: 15px;
        height: 15px;
    }

    html.paint98-route .paint98-more-color-btn {
        width: 40px;
        font-size: 9px;
    }

    html.paint98-route .paint98-color-popup {
        left: 6px;
        bottom: 50px;
        width: min(236px, calc(100vw - 12px));
    }

    html.paint98-route .paint98-statusbar {
        grid-template-columns: minmax(0, 1fr) 64px;
    }

    html.paint98-route .paint98-statusbar span:nth-child(2) {
        display: none;
    }
}

#drawing-canvas {
    background-color: var(--canvas-bg);
    cursor: crosshair;
    z-index: 1;
}

#stroke-preview-canvas {
    background: transparent;
    pointer-events: none;
    z-index: 2;
}

#drawing-canvas.has-brush-cursor {
    cursor: none;
}

#drawing-canvas.is-panning-mode {
    cursor: grab;
}

#drawing-canvas.is-panning-mode:active {
    cursor: grabbing;
}

#drawing-canvas.is-fill-mode {
    cursor: cell;
}

#drawing-canvas.is-eyedropper-mode {
    cursor: copy;
}

#drawing-canvas.is-export-select-mode {
    cursor: crosshair;
}

#drawing-canvas.is-lock-select-mode {
    cursor: crosshair;
}

#drawing-canvas.is-tracing-move-mode {
    cursor: move;
}

.canvas-notice {
    position: fixed;
    left: 50%;
    top: max(14px, env(safe-area-inset-top));
    z-index: 30;
    transform: translateX(-50%);
    max-width: min(92vw, 440px);
    border: 1px solid rgba(251, 191, 36, 0.65);
    border-radius: 10px;
    background: rgba(15, 23, 42, 0.92);
    box-shadow: 0 16px 40px rgba(0, 0, 0, 0.26);
    color: #fff7ed;
    font-size: 0.84rem;
    font-weight: 700;
    line-height: 1.25;
    padding: 10px 14px;
    pointer-events: none;
}

.canvas-notice[hidden] {
    display: none;
}

.brush-cursor {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 6;
    width: 12px;
    height: 12px;
    border: 1.5px solid rgba(15, 23, 42, 0.9);
    border-radius: 999px;
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.82),
        0 0 7px rgba(15, 23, 42, 0.2);
    pointer-events: none;
    opacity: 0;
    transform: translate3d(-50%, -50%, 0);
    transition:
        opacity 80ms ease,
        width 60ms ease,
        height 60ms ease,
        border-color 80ms ease;
    will-change: left, top, width, height, opacity;
}

.brush-cursor.visible {
    opacity: 1;
}

.brush-cursor.eraser {
    border-style: dashed;
    border-color: rgba(239, 68, 68, 0.9);
    box-shadow:
        0 0 0 1px rgba(255, 255, 255, 0.88),
        0 0 8px rgba(239, 68, 68, 0.22);
}

.brush-cursor.pressure {
    border-color: rgba(0, 255, 204, 0.95);
    box-shadow:
        0 0 0 1px rgba(15, 23, 42, 0.72),
        0 0 9px rgba(0, 255, 204, 0.28);
}

.brush-context-panel {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 42;
    width: min(330px, calc(100vw - 20px));
    display: grid;
    grid-template-columns: 112px minmax(0, 1fr);
    gap: 14px;
    padding: 14px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 10px;
    background: rgba(43, 48, 56, 0.96);
    box-shadow: 0 18px 48px rgba(0, 0, 0, 0.42);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
}

.brush-context-panel[hidden] {
    display: none;
}

.brush-context-preview-wrap {
    display: grid;
    place-items: center;
    min-height: 112px;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 8px;
    background:
        linear-gradient(rgba(255, 255, 255, 0.08) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255, 255, 255, 0.08) 1px, transparent 1px),
        rgba(255, 255, 255, 0.04);
    background-size: 50% 50%, 50% 50%, auto;
}

.brush-context-preview {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: radial-gradient(circle, #f8fafc 0 56%, rgba(248, 250, 252, 0.72) 66%, rgba(248, 250, 252, 0.12) 100%);
    box-shadow: 0 0 16px rgba(248, 250, 252, 0.34);
}

.brush-context-controls {
    display: grid;
    grid-template-columns: 1fr 72px;
    align-content: center;
    gap: 8px 10px;
}

.brush-context-controls label {
    align-self: center;
    color: var(--text-primary);
    font-size: 0.78rem;
    font-weight: 600;
}

.brush-context-number {
    width: 100%;
    min-height: 32px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 4px;
    background: rgba(15, 23, 42, 0.34);
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.82rem;
    padding: 5px 8px;
    outline: none;
}

.brush-context-number:focus {
    border-color: var(--accent-color);
    box-shadow: 0 0 0 2px rgba(0, 255, 204, 0.12);
}

.brush-context-color {
    width: 72px;
    min-height: 32px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 4px;
    background: rgba(15, 23, 42, 0.34);
    padding: 3px;
    cursor: pointer;
}

.brush-context-swatches {
    grid-column: 1 / -1;
    display: grid;
    grid-template-columns: repeat(8, minmax(0, 1fr));
    gap: 6px;
}

.brush-context-swatch {
    width: 100%;
    aspect-ratio: 1;
    min-height: 22px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 4px;
    cursor: pointer;
    box-shadow: inset 0 0 0 1px rgba(15, 23, 42, 0.18);
}

.brush-context-swatch.active {
    outline: 2px solid var(--accent-color);
    outline-offset: 1px;
}

.brush-context-tool-btn {
    grid-column: 1 / -1;
    min-height: 34px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 6px;
    background: rgba(255, 255, 255, 0.07);
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 700;
    cursor: pointer;
}

.brush-context-tool-btn:hover {
    border-color: var(--accent-color);
    color: var(--accent-color);
}

.brush-context-controls input[type="range"] {
    grid-column: 1 / -1;
}

.image-placement-tools {
    position: fixed;
    z-index: 23;
    min-width: min(420px, calc(100vw - 24px));
    padding: 8px;
    border: 1px solid rgba(0, 255, 204, 0.34);
    border-radius: 12px;
    background: rgba(15, 23, 42, 0.86);
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    box-shadow: 0 16px 32px rgba(0, 0, 0, 0.36);
    display: grid;
    gap: 8px;
}

.image-placement-tools[hidden] {
    display: none;
}

.image-placement-modes,
.image-placement-actions {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 6px;
}

.image-placement-actions {
    grid-template-columns: 1fr 1fr;
}

.image-placement-tool,
.image-placement-primary,
.image-placement-secondary {
    min-height: 34px;
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    padding: 0 7px;
    font: inherit;
    font-size: 0.74rem;
    font-weight: 700;
    color: var(--text-secondary);
    background: rgba(255, 255, 255, 0.06);
    cursor: pointer;
}

.image-placement-tool.active,
.image-placement-tool[aria-pressed="true"] {
    color: var(--accent-color);
    border-color: var(--accent-color);
    background: rgba(0, 255, 204, 0.14);
}

.image-placement-primary {
    color: #031b1a;
    border-color: var(--accent-color);
    background: var(--accent-color);
}

.image-placement-secondary:hover,
.image-placement-tool:hover {
    color: var(--text-primary);
    border-color: rgba(0, 255, 204, 0.6);
}

.image-placement-tool:disabled,
.image-placement-primary:disabled,
.image-placement-secondary:disabled {
    cursor: not-allowed;
    opacity: 0.55;
}

.menu-toggle {
    position: fixed;
    top: max(16px, calc(var(--safe-top) + 12px));
    left: max(16px, calc(var(--safe-left) + 12px));
    z-index: 20;
    width: 48px;
    height: 48px;
    border: 1px solid var(--glass-border);
    border-radius: 12px;
    background: var(--glass-bg);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    color: var(--text-primary);
    cursor: pointer;
    display: grid;
    place-items: center;
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.35);
    transition: transform 0.2s, background-color 0.2s, border-color 0.2s;
}

.menu-toggle:hover {
    background: rgba(255, 255, 255, 0.08);
    border-color: var(--accent-color);
    transform: translateY(-2px);
}

.menu-toggle[aria-expanded="true"] {
    opacity: 0;
    pointer-events: none;
    transform: translateX(-12px);
}

.floating-tools {
    position: fixed;
    top: max(16px, calc(var(--safe-top) + 12px));
    right: max(16px, calc(var(--safe-right) + 12px));
    z-index: 17;
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 6px;
    border: 1px solid var(--glass-border);
    border-radius: 16px;
    background: rgba(15, 23, 42, 0.62);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    box-shadow: 0 12px 24px rgba(0, 0, 0, 0.32);
}

.floating-tool {
    width: 38px;
    height: 38px;
    border: 1px solid transparent;
    border-radius: 12px;
    background: rgba(255, 255, 255, 0.06);
    color: var(--text-secondary);
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: background-color 0.18s, border-color 0.18s, color 0.18s, transform 0.18s;
}

.floating-tool:hover {
    color: var(--text-primary);
    background: rgba(255, 255, 255, 0.1);
    transform: translateY(-1px);
}

.floating-tool.active {
    color: var(--accent-color);
    border-color: var(--accent-color);
    background: rgba(0, 255, 204, 0.14);
    box-shadow: 0 0 14px rgba(0, 255, 204, 0.16);
}

.floating-tool:disabled {
    opacity: 0.45;
    cursor: not-allowed;
    color: var(--text-secondary);
    border-color: transparent;
    background: rgba(255, 255, 255, 0.04);
    box-shadow: none;
}

.floating-tool:disabled:hover {
    transform: none;
    color: var(--text-secondary);
    background: rgba(255, 255, 255, 0.04);
}

.paint98-floating-only {
    display: none;
}

.canvas-minimap {
    position: fixed;
    top: 50%;
    right: max(14px, calc(var(--safe-right) + 14px));
    z-index: 16;
    display: flex;
    align-items: flex-start;
    gap: 8px;
    transform: translateY(-50%);
}

.minimap-toggle {
    width: 34px;
    height: 34px;
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    background: rgba(15, 23, 42, 0.72);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    color: var(--text-secondary);
    cursor: pointer;
    display: grid;
    place-items: center;
    box-shadow: 0 10px 22px rgba(0, 0, 0, 0.3);
    transition: background-color 0.18s, border-color 0.18s, color 0.18s, transform 0.18s;
}

.minimap-toggle:hover {
    color: var(--text-primary);
    border-color: var(--accent-color);
    background: rgba(15, 23, 42, 0.88);
    transform: translateY(-1px);
}

.minimap-panel {
    width: 98px;
    padding: 8px;
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    background: rgba(15, 23, 42, 0.74);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    box-shadow: 0 18px 36px rgba(0, 0, 0, 0.34);
}

.minimap-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 6px;
    color: var(--text-secondary);
    font-size: 0.64rem;
    font-weight: 600;
    line-height: 1;
    margin-bottom: 7px;
    white-space: nowrap;
}

#minimap-position {
    color: var(--accent-color);
    font-variant-numeric: tabular-nums;
}

.minimap-scroll-shell {
    position: relative;
    width: 80px;
}

.minimap-jump {
    position: absolute;
    left: 50%;
    z-index: 5;
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    padding: 0;
    border: 2px solid rgba(255, 255, 255, 0.88);
    border-radius: 999px;
    background: rgba(239, 68, 68, 0.96);
    color: #ffffff;
    cursor: pointer;
    box-shadow:
        0 10px 22px rgba(239, 68, 68, 0.38),
        0 0 0 4px rgba(239, 68, 68, 0.16);
    transform: translateX(-50%);
    transition: transform 0.16s, background-color 0.16s, box-shadow 0.16s;
}

.minimap-jump:hover {
    background: #dc2626;
    box-shadow:
        0 12px 26px rgba(239, 68, 68, 0.48),
        0 0 0 5px rgba(239, 68, 68, 0.2);
    transform: translateX(-50%) scale(1.05);
}

.minimap-jump:active {
    transform: translateX(-50%) scale(0.96);
}

.minimap-jump-start {
    top: 8px;
}

.minimap-jump-end {
    bottom: 8px;
}

.minimap-scroll {
    position: relative;
    width: 80px;
    height: min(52vh, 520px);
    min-height: 240px;
    overflow-y: auto;
    overflow-x: hidden;
    border: 1px solid rgba(148, 163, 184, 0.28);
    border-radius: 6px;
    background: #ffffff;
    cursor: ns-resize;
    touch-action: none;
    scrollbar-width: thin;
    scrollbar-color: rgba(0, 255, 204, 0.55) rgba(15, 23, 42, 0.18);
}

.minimap-scroll::-webkit-scrollbar {
    width: 5px;
}

.minimap-scroll::-webkit-scrollbar-track {
    background: rgba(15, 23, 42, 0.08);
}

.minimap-scroll::-webkit-scrollbar-thumb {
    background: rgba(0, 255, 204, 0.55);
    border-radius: 999px;
}

.minimap-canvas {
    position: sticky;
    top: 0;
    z-index: 1;
    display: block;
    width: 100%;
    height: 100%;
    cursor: ns-resize;
    touch-action: none;
}

.minimap-track {
    width: 1px;
    height: 0;
    pointer-events: none;
}

.canvas-minimap.collapsed .minimap-panel {
    display: none;
}

.canvas-minimap.collapsed .minimap-toggle {
    color: var(--accent-color);
    border-color: rgba(0, 255, 204, 0.45);
}

.toolbar-backdrop {
    position: fixed;
    inset: 0;
    z-index: 18;
    background: rgba(15, 23, 42, 0.35);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s;
}

.toolbar-backdrop.open {
    opacity: 1;
    pointer-events: auto;
}

/* UI Overlay - Menu lateral */
.toolbar {
    position: fixed;
    top: 0;
    left: 0;
    z-index: 19;
    width: min(292px, calc(100vw - 28px));
    height: 100vh;
    height: 100dvh;
    transform: translateX(-105%);

    background: var(--glass-bg);
    backdrop-filter: blur(14px);
    -webkit-backdrop-filter: blur(14px);
    border: 1px solid var(--glass-border);
    border-left: 0;
    border-radius: 0 14px 14px 0;
    padding: max(16px, calc(var(--safe-top) + 12px)) 14px max(16px, calc(var(--safe-bottom) + 12px));
    
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
    touch-action: pan-y;
    box-shadow: 0 20px 40px rgba(0, 0, 0, 0.4), 
                0 1px 3px rgba(255, 255, 255, 0.05) inset;
    transition: transform 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}

.toolbar.open {
    transform: translateX(0);
}

body.toolbar-pinned .toolbar {
    transform: translateX(0);
}

body.toolbar-pinned .toolbar-backdrop {
    opacity: 0;
    pointer-events: none;
}

body.toolbar-pinned .menu-toggle {
    opacity: 0;
    pointer-events: none;
    transform: translateX(-12px);
}

.toolbar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
}

.toolbar-header-actions {
    display: flex;
    align-items: center;
    gap: 6px;
}

.icon-btn {
    width: 34px;
    height: 34px;
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.05);
    color: var(--text-primary);
    cursor: pointer;
    display: grid;
    place-items: center;
    transition: background-color 0.2s, border-color 0.2s;
}

.icon-btn:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: var(--accent-color);
}

.icon-btn.active,
.icon-btn[aria-pressed="true"] {
    color: var(--accent-color);
    border-color: var(--accent-color);
    background: rgba(0, 255, 204, 0.14);
}

.app-title {
    font-size: 0.76rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 1.3px;
    color: var(--text-secondary);
}

.tools-container {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 10px;
}

.tool-group {
    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 6px;
}

.tool-group label {
    font-size: 0.68rem;
    color: var(--text-secondary);
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}

.hidden-file-input {
    display: none;
}

.tool-hint {
    color: var(--text-secondary);
    font-size: 0.66rem;
    line-height: 1.35;
}

.image-size-controls,
.tracing-controls,
.text-controls {
    display: grid;
    gap: 8px;
    padding-top: 4px;
}

.image-size-controls[hidden],
.tracing-controls[hidden],
.text-controls[hidden] {
    display: none;
}

.tool-textarea {
    width: 100%;
    min-height: 58px;
    resize: vertical;
    border: 1px solid var(--glass-border);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.06);
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.78rem;
    line-height: 1.35;
    padding: 7px 8px;
    outline: none;
}

.tool-textarea:focus {
    border-color: var(--accent-color);
    box-shadow: 0 0 0 2px rgba(0, 255, 204, 0.12);
}

.tool-textarea::placeholder {
    color: rgba(226, 232, 240, 0.42);
}

.image-size-controls .segmented-tools {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.image-size-controls .icon-btn {
    width: 100%;
}

.tool-select {
    width: 100%;
    min-height: 34px;
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.06);
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.76rem;
    padding: 6px 8px;
    outline: none;
}

.tool-select:focus {
    border-color: var(--accent-color);
    box-shadow: 0 0 0 2px rgba(0, 255, 204, 0.12);
}

.tool-check {
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 30px;
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.05);
    color: var(--text-primary);
    font-size: 0.72rem;
    line-height: 1.2;
    padding: 6px 8px;
    user-select: none;
}

.tool-check input {
    width: 15px;
    height: 15px;
    accent-color: var(--accent-color);
}

.tool-select option {
    color: #0f172a;
}

.tool-number-input,
.tool-text-input {
    width: 100%;
    min-height: 34px;
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.06);
    color: var(--text-primary);
    font-family: inherit;
    font-size: 0.76rem;
    padding: 6px 8px;
    outline: none;
}

.tool-number-input:focus,
.tool-text-input:focus {
    border-color: var(--accent-color);
    box-shadow: 0 0 0 2px rgba(0, 255, 204, 0.12);
}

.tool-text-input::placeholder {
    color: rgba(226, 232, 240, 0.42);
}

/* Color Picker Personalizado */
.color-wrapper {
    width: 32px;
    height: 32px;
    border-radius: 8px;
    overflow: hidden;
    border: 2px solid var(--glass-border);
    cursor: pointer;
    transition: transform 0.2s, border-color 0.2s;
    box-shadow: 0 4px 10px rgba(0,0,0,0.3);
}

.color-wrapper:hover {
    transform: scale(1.1);
    border-color: var(--accent-color);
}

input[type="color"] {
    width: 150%;
    height: 150%;
    margin: -25%;
    cursor: pointer;
    border: none;
    padding: 0;
}

/* Slider Personalizado */
input[type="range"] {
    -webkit-appearance: none;
    width: 100%;
    background: transparent;
}

input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    height: 16px;
    width: 16px;
    border-radius: 50%;
    background: var(--accent-color);
    cursor: pointer;
    margin-top: -6px;
    box-shadow: 0 0 10px var(--accent-color);
    transition: transform 0.1s;
}

input[type="range"]::-webkit-slider-thumb:hover {
    transform: scale(1.2);
}

input[type="range"]::-webkit-slider-runnable-track {
    width: 100%;
    height: 4px;
    cursor: pointer;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 2px;
}

/* Botones */
.tool-btn {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--glass-border);
    color: var(--text-primary);
    padding: 6px 10px;
    border-radius: 8px;
    cursor: pointer;
    font-family: inherit;
    font-size: 0.78rem;
    font-weight: 500;
    display: flex;
    align-items: center;
    gap: 8px;
    min-height: 34px;
    transition: all 0.2s;
}

.tool-btn:hover {
    background: rgba(255, 255, 255, 0.1);
    transform: translateY(-1px);
}

.tool-btn.active {
    background: rgba(0, 255, 204, 0.15);
    border-color: var(--accent-color);
    color: var(--accent-color);
    box-shadow: 0 0 15px rgba(0, 255, 204, 0.2);
}

.segmented-tools {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: center;
    gap: 6px;
}

.segmented-tools .tool-btn {
    justify-content: center;
}

.tool-btn.danger {
    padding: 6px 8px;
    color: var(--danger-color);
}

.tool-btn.danger:hover {
    background: rgba(239, 68, 68, 0.15);
    border-color: var(--danger-color);
    color: var(--danger-color);
}

.tool-btn[hidden],
.guest-btn[hidden] {
    display: none;
}

.panel-group {
    border-bottom: 1px solid var(--glass-border);
    padding-bottom: 10px;
}

.panel-summary {
    list-style: none;
    color: var(--text-secondary);
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: space-between;
    min-height: 28px;
    font-size: 0.72rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.08em;
    user-select: none;
}

.panel-summary::-webkit-details-marker {
    display: none;
}

.panel-summary::after {
    content: "›";
    color: var(--accent-color);
    font-size: 1rem;
    line-height: 1;
    transform: rotate(0deg);
    transition: transform 0.18s;
}

.panel-group[open] > .panel-summary::after {
    transform: rotate(90deg);
}

.panel-group > :not(.panel-summary) {
    margin-top: 6px;
}

.auth-group {
    border-bottom: 1px solid var(--glass-border);
    padding-bottom: 10px;
}

.world-group[hidden] {
    display: none;
}

.admin-group[hidden] {
    display: none;
}

.auth-user {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid var(--glass-border);
    border-radius: 8px;
    color: var(--text-primary);
    font-size: 0.7rem;
    line-height: 1.25;
    min-height: 30px;
    padding: 6px 8px;
    overflow-wrap: anywhere;
}

.quick-option-group {
    display: grid;
    grid-template-columns: 40px minmax(0, 1fr);
    align-items: center;
}

.quick-option-group label {
    grid-column: 1 / -1;
}

.tool-grid-group {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 6px;
}

.tool-grid-group .tool-btn {
    min-height: 52px;
    padding: 6px 4px;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    text-align: center;
    font-size: 0.66rem;
}

.tool-grid-group .tool-btn svg {
    width: 18px;
    height: 18px;
}

.tool-grid-group .tool-hint,
.tool-grid-group .text-controls {
    grid-column: 1 / -1;
}

.compact-action-group .tool-btn {
    justify-content: center;
}

.history-group {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr)) 38px;
    gap: 6px;
}

.history-group .tool-btn {
    justify-content: center;
}

.history-group .tool-btn.danger {
    min-width: 38px;
}

.zoom-group .segmented-tools {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.admin-group > .tool-btn,
.admin-group .segmented-tools .tool-btn,
.world-group .segmented-tools .tool-btn,
.tile-nav-group > .tool-btn,
.tile-nav-group .segmented-tools .tool-btn {
    justify-content: center;
    min-height: 32px;
    padding: 5px 8px;
    font-size: 0.72rem;
}

.tile-jump-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 6px;
}

.tile-jump-grid label {
    margin-bottom: -2px;
}

.tile-nav-group .tool-text-input {
    min-height: 32px;
}

.tile-nav-group .segmented-tools {
    grid-template-columns: minmax(0, 1fr) 38px;
}

.tile-nav-group .tool-btn.danger {
    min-width: 38px;
    padding-left: 6px;
    padding-right: 6px;
}

body.private-readonly .quick-option-group,
body.private-readonly .tool-grid-group,
body.private-readonly .image-tool-group,
body.private-readonly .history-group {
    display: none !important;
}

body.private-readonly .toolbar {
    width: min(260px, calc(100vw - 28px));
}

/* Indicador de Estado */
.status-indicator {
    position: static;
    background: var(--bg-color);
    padding: 4px 12px;
    border-radius: 20px;
    border: 1px solid var(--glass-border);
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 0.75rem;
    color: var(--text-secondary);
    min-height: 28px;
    word-break: break-word;
}

.status-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background-color: var(--danger-color); /* Desconectado por defecto */
}

.status-dot.connected {
    background-color: var(--success-color);
    box-shadow: 0 0 8px var(--success-color);
}

/* Responsive */
@media (max-width: 768px) {
    .login-card {
        padding: 28px 22px;
        border-radius: 18px;
    }

    .login-card h2 {
        font-size: 1.25rem;
    }

    .google-btn {
        width: 100%;
        justify-content: center;
        padding: 12px 16px;
    }

    .menu-toggle {
        top: auto;
        left: max(14px, calc(var(--safe-left) + 14px));
        bottom: max(14px, calc(var(--safe-bottom) + 14px));
        width: 54px;
        height: 54px;
        border-radius: 50%;
    }

    .menu-toggle:hover {
        transform: translateY(-1px);
    }

    .menu-toggle[aria-expanded="true"] {
        transform: translateY(14px);
    }

    .floating-tools {
        top: auto;
        right: max(14px, calc(var(--safe-right) + 14px));
        bottom: max(14px, calc(var(--safe-bottom) + 14px));
        gap: 6px;
        padding: 5px;
        border-radius: 15px;
    }

    .floating-tool {
        width: 42px;
        height: 42px;
        border-radius: 12px;
    }

    .canvas-minimap {
        top: max(14px, calc(var(--safe-top) + 14px));
        right: max(10px, calc(var(--safe-right) + 10px));
        transform: none;
        flex-direction: row-reverse;
        align-items: flex-start;
        gap: 6px;
        z-index: 18;
    }

    .minimap-toggle {
        width: 32px;
        height: 32px;
        border-radius: 8px;
    }

    .minimap-panel {
        width: 72px;
        padding: 6px;
        border-radius: 8px;
    }

    .minimap-header {
        justify-content: center;
        margin-bottom: 5px;
        font-size: 0.58rem;
    }

    .minimap-header span:first-child {
        display: none;
    }

    .minimap-scroll {
        width: 58px;
        height: min(44vh, 340px);
        min-height: 190px;
    }

    .minimap-scroll-shell {
        width: 58px;
    }

    .minimap-jump {
        width: 31px;
        height: 31px;
    }

    .minimap-jump svg {
        width: 21px;
        height: 21px;
    }

    .minimap-jump-start {
        top: 6px;
    }

    .minimap-jump-end {
        bottom: 6px;
    }

    .toolbar-backdrop {
        background: rgba(15, 23, 42, 0.48);
    }

    .toolbar {
        top: auto;
        right: 0;
        bottom: 0;
        width: 100vw;
        width: 100dvw;
        height: auto;
        max-height: min(78vh, 620px);
        max-height: min(78dvh, 620px);
        transform: translateY(105%);
        border-left: 1px solid var(--glass-border);
        border-bottom: 0;
        border-radius: 20px 20px 0 0;
        padding:
            16px
            max(16px, calc(var(--safe-right) + 16px))
            max(18px, calc(var(--safe-bottom) + 18px))
            max(16px, calc(var(--safe-left) + 16px));
        gap: 14px;
        background: rgba(15, 23, 42, 0.86);
    }

    .toolbar::before {
        content: "";
        width: 42px;
        height: 4px;
        border-radius: 999px;
        background: rgba(248, 250, 252, 0.28);
        align-self: center;
        flex: 0 0 auto;
    }

    .toolbar.open {
        transform: translateY(0);
    }

    body.toolbar-pinned .toolbar {
        transform: translateY(0);
    }

    body.toolbar-pinned .menu-toggle {
        opacity: 0;
        pointer-events: none;
        transform: translateY(12px);
    }

    .toolbar-header {
        gap: 12px;
    }

    .app-title {
        font-size: 0.78rem;
        letter-spacing: 1.4px;
    }

    .icon-btn {
        width: 38px;
        height: 38px;
        border-radius: 10px;
    }
    
    .tools-container {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 10px;
    }

    .tool-group {
        min-width: 0;
        gap: 6px;
    }

    .auth-group,
    .panel-group,
    .tool-grid-group,
    .image-tool-group,
    .view-tool-group,
    .zoom-group,
    .history-group {
        grid-column: 1 / -1;
    }

    .tool-group label {
        font-size: 0.74rem;
    }

    .tool-btn {
        width: 100%;
        min-height: 38px;
        justify-content: center;
        padding: 7px 9px;
        border-radius: 10px;
        font-size: 0.76rem;
    }

    .tool-btn:hover {
        transform: none;
    }

    .tool-btn.danger {
        min-height: 38px;
        padding: 7px 9px;
    }

    .segmented-tools {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 6px;
    }

    .segmented-tools .icon-btn {
        width: 100%;
    }

    .color-wrapper {
        width: 38px;
        height: 38px;
        align-self: center;
    }

    .tool-grid-group {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .tool-grid-group .tool-btn {
        min-height: 50px;
        font-size: 0.64rem;
    }

    .history-group {
        grid-template-columns: repeat(2, minmax(0, 1fr)) 40px;
    }
    
    input[type="range"] {
        width: 100%;
    }

    input[type="range"]::-webkit-slider-thumb {
        height: 22px;
        width: 22px;
        margin-top: -9px;
    }

    input[type="range"]::-webkit-slider-runnable-track {
        height: 5px;
    }

    .tool-hint {
        text-align: center;
        font-size: 0.7rem;
    }

    .status-indicator {
        justify-content: center;
        min-height: 32px;
        padding: 6px 10px;
        font-size: 0.72rem;
        border-radius: 12px;
    }
}

@media (max-width: 380px) {
    .toolbar {
        max-height: min(82vh, 620px);
        max-height: min(82dvh, 620px);
        padding-left: max(12px, calc(var(--safe-left) + 12px));
        padding-right: max(12px, calc(var(--safe-right) + 12px));
    }

    .tools-container {
        gap: 10px;
    }

    .tool-btn {
        font-size: 0.8rem;
        gap: 6px;
    }
}

@media (max-height: 520px) and (max-width: 900px) {
    .toolbar {
        max-height: 92vh;
        max-height: 92dvh;
    }

    .tools-container {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .auth-group,
    .panel-group,
    .tool-grid-group,
    .image-tool-group,
    .view-tool-group,
    .zoom-group,
    .history-group {
        grid-column: span 2;
    }

    .tool-grid-group {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* Vista /paint: piel retro tipo Paint, usando el mismo lienzo infinito. */
.paint-chrome,
.paint-statusbar {
    display: none;
}

html.paint-route {
    --bg-color: #008080;
    --canvas-bg: #7f7f7f;
    --glass-bg: #c0c0c0;
    --glass-border: #808080;
    --text-primary: #000000;
    --text-secondary: #1f1f1f;
    --accent-color: #000080;
    --accent-hover: #0000a8;
}

html.paint-route,
html.paint-route body {
    background: #008080;
}

html.paint-route body {
    font-family: Tahoma, "MS Sans Serif", Arial, sans-serif;
    color: #000000;
}

html.paint-route .paint-chrome {
    position: fixed;
    inset: 0 0 auto 0;
    z-index: 24;
    display: block;
    height: 74px;
    padding: 3px;
    background: #c0c0c0;
    border-bottom: 2px solid #404040;
    box-shadow: inset 1px 1px #ffffff, inset -1px -1px #808080;
    color: #000000;
}

html.paint-route .paint-titlebar {
    display: grid;
    grid-template-columns: 18px minmax(0, 1fr) auto;
    align-items: center;
    gap: 6px;
    height: 23px;
    padding: 2px 3px;
    background: linear-gradient(90deg, #000080, #1084d0);
    color: #ffffff;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
}

html.paint-route .paint-window-icon {
    width: 14px;
    height: 14px;
    border: 1px solid #000000;
    background:
        linear-gradient(90deg, #ff0000 0 25%, #ffff00 25% 50%, #00a000 50% 75%, #0000ff 75%),
        #ffffff;
    box-shadow: inset 1px 1px #ffffff;
}

html.paint-route .paint-window-title {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

html.paint-route .paint-window-controls {
    display: flex;
    gap: 2px;
}

html.paint-route .paint-window-controls span {
    width: 17px;
    height: 15px;
    border: 1px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
}

html.paint-route .paint-menubar,
html.paint-route .paint-ribbon {
    display: flex;
    align-items: center;
    gap: 2px;
    min-height: 22px;
    padding: 2px 3px;
    color: #000000;
    font-size: 12px;
}

html.paint-route .paint-menubar a,
html.paint-route .paint-menubar span {
    color: #000000;
    text-decoration: none;
    padding: 3px 8px;
}

html.paint-route .paint-menubar a:hover,
html.paint-route .paint-menubar span:hover {
    outline: 1px solid #808080;
    background: #dcdcdc;
}

html.paint-route .paint-ribbon {
    min-height: 23px;
    border-top: 1px solid #808080;
    box-shadow: inset 0 1px #ffffff;
    overflow: hidden;
    white-space: nowrap;
}

html.paint-route .paint-ribbon span {
    padding: 2px 8px;
    border-left: 1px solid #ffffff;
    border-right: 1px solid #808080;
}

html.paint-route .paint-statusbar {
    position: fixed;
    inset: auto 0 0 0;
    z-index: 24;
    display: grid;
    grid-template-columns: 90px 190px minmax(0, 1fr);
    gap: 3px;
    height: 25px;
    padding: 3px;
    background: #c0c0c0;
    border-top: 1px solid #ffffff;
    color: #000000;
    font-size: 12px;
}

html.paint-route .paint-statusbar span {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    padding: 2px 6px;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
}

html.paint-route .menu-toggle,
html.paint-route .floating-tools,
html.paint-route .toolbar-backdrop {
    display: none;
}

html.paint-route .canvas-scroll {
    inset: 78px 124px 29px 196px;
    width: auto;
    height: auto;
    overflow: hidden;
    background: #7f7f7f;
    border: 2px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    box-shadow: inset 1px 1px #404040, inset -1px -1px #dfdfdf;
}

html.paint-route #drawing-canvas,
html.paint-route #stroke-preview-canvas {
    width: 100%;
    height: 100%;
}

html.paint-route .toolbar {
    top: 78px;
    bottom: 29px;
    left: 0;
    z-index: 22;
    width: 190px;
    height: auto;
    max-height: none;
    transform: none;
    padding: 6px;
    gap: 6px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-left: 0;
    border-radius: 0;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    transition: none;
}

html.paint-route .toolbar-header {
    min-height: 24px;
    padding: 2px 4px;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    background: #d4d0c8;
}

html.paint-route .app-title {
    color: #000000;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0;
    text-transform: none;
}

html.paint-route .toolbar-header-actions {
    display: none;
}

html.paint-route .tools-container {
    gap: 6px;
}

html.paint-route .tool-group,
html.paint-route .panel-group,
html.paint-route .auth-group {
    gap: 5px;
    padding: 5px;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    background: #d4d0c8;
}

html.paint-route .quick-option-group {
    grid-template-columns: 42px minmax(0, 1fr);
}

html.paint-route .tool-grid-group {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

html.paint-route .tool-group label,
html.paint-route .panel-summary,
html.paint-route .tool-hint {
    color: #000000;
    letter-spacing: 0;
    text-transform: none;
}

html.paint-route .tool-hint {
    font-size: 10px;
    line-height: 1.2;
}

html.paint-route .tool-btn,
html.paint-route .icon-btn,
html.paint-route .guest-btn,
html.paint-route .tool-select,
html.paint-route .tool-number-input,
html.paint-route .tool-text-input,
html.paint-route .tool-textarea,
html.paint-route .auth-user,
html.paint-route .tool-check {
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    font-family: Tahoma, "MS Sans Serif", Arial, sans-serif;
}

html.paint-route .tool-btn,
html.paint-route .icon-btn {
    min-height: 32px;
    justify-content: center;
    padding: 4px 6px;
    font-size: 11px;
    font-weight: 400;
    gap: 5px;
}

html.paint-route .tool-btn:hover,
html.paint-route .icon-btn:hover {
    transform: none;
    background: #dcdcdc;
}

html.paint-route .tool-btn.active,
html.paint-route .icon-btn.active,
html.paint-route .icon-btn[aria-pressed="true"] {
    border-color: #404040 #ffffff #ffffff #404040;
    background: #e5e5e5;
    color: #000080;
    box-shadow: inset 1px 1px #808080, inset -1px -1px #ffffff;
}

html.paint-route .tool-btn svg,
html.paint-route .icon-btn svg {
    width: 17px;
    height: 17px;
}

html.paint-route .color-wrapper {
    width: 34px;
    height: 34px;
    border-radius: 0;
    border: 2px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    box-shadow: none;
}

html.paint-route input[type="range"]::-webkit-slider-thumb {
    width: 14px;
    height: 18px;
    margin-top: -7px;
    border-radius: 0;
    background: #c0c0c0;
    border: 1px solid #404040;
    box-shadow: inset 1px 1px #ffffff, inset -1px -1px #808080;
}

html.paint-route input[type="range"]::-webkit-slider-runnable-track {
    height: 4px;
    border-radius: 0;
    background: #808080;
}

html.paint-route .status-indicator {
    min-height: 24px;
    border-radius: 0;
    background: #d4d0c8;
    border: 1px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    color: #000000;
    font-size: 11px;
}

html.paint-route .canvas-minimap {
    top: 78px;
    right: 6px;
    bottom: 29px;
    z-index: 22;
    transform: none;
    gap: 4px;
}

html.paint-route .minimap-toggle {
    width: 24px;
    height: 24px;
    border-radius: 0;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
}

html.paint-route .minimap-panel {
    width: 92px;
    height: calc(100dvh - 107px);
    padding: 5px;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    border-radius: 0;
    background: #c0c0c0;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

html.paint-route .minimap-header {
    color: #000000;
    font-size: 10px;
    margin-bottom: 4px;
}

html.paint-route #minimap-position {
    color: #000080;
}

html.paint-route .minimap-scroll-shell,
html.paint-route .minimap-scroll {
    width: 78px;
}

html.paint-route .minimap-scroll {
    height: calc(100dvh - 144px);
    min-height: 180px;
    border: 2px solid;
    border-color: #808080 #ffffff #ffffff #808080;
    border-radius: 0;
    scrollbar-color: #808080 #d4d0c8;
}

html.paint-route .minimap-jump {
    width: 27px;
    height: 27px;
    border-radius: 0;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    color: #c00000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080;
}

html.paint-route .minimap-jump:hover {
    background: #dcdcdc;
    box-shadow: inset 1px 1px #ffffff, inset -1px -1px #808080;
}

html.paint-route .brush-context-panel,
html.paint-route .image-placement-tools,
html.paint-route .image-process-card,
html.paint-route .login-card {
    border-radius: 0;
    border: 2px solid;
    border-color: #ffffff #404040 #404040 #ffffff;
    background: #c0c0c0;
    color: #000000;
    box-shadow: inset 1px 1px #dfdfdf, inset -1px -1px #808080, 4px 4px 0 rgba(0, 0, 0, 0.22);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

html.paint-route .login-card h2,
html.paint-route .login-card p,
html.paint-route .brush-context-controls label,
html.paint-route .image-process-card h2,
html.paint-route .image-process-card p {
    color: #000000;
}

html.paint-route .canvas-notice {
    top: 84px;
    border-radius: 0;
    background: #ffffe1;
    color: #000000;
    border: 1px solid #000000;
}

@media (max-width: 760px) {
    html.paint-route .paint-chrome {
        height: 70px;
    }

    html.paint-route .paint-ribbon {
        display: none;
    }

    html.paint-route .canvas-scroll {
        inset: 72px 0 196px 0;
    }

    html.paint-route .toolbar {
        top: auto;
        left: 0;
        right: 0;
        bottom: 25px;
        width: 100%;
        height: 171px;
        padding: 5px;
        border-left: 0;
        border-right: 0;
        overflow-y: auto;
    }

    html.paint-route .tools-container {
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 5px;
    }

    html.paint-route .toolbar-header,
    html.paint-route .auth-group,
    html.paint-route .panel-group,
    html.paint-route .image-tool-group,
    html.paint-route .zoom-group,
    html.paint-route .history-group {
        grid-column: 1 / -1;
    }

    html.paint-route .tool-grid-group {
        grid-column: 1 / -1;
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    html.paint-route .canvas-minimap {
        top: 78px;
        right: 6px;
        bottom: auto;
    }

    html.paint-route .minimap-panel {
        width: 82px;
        height: min(45vh, 320px);
    }

    html.paint-route .minimap-scroll-shell,
    html.paint-route .minimap-scroll {
        width: 68px;
    }

    html.paint-route .minimap-scroll {
        height: min(38vh, 270px);
        min-height: 150px;
    }

    html.paint-route .paint-statusbar {
        grid-template-columns: 70px minmax(0, 1fr);
    }

    html.paint-route .paint-statusbar span:nth-child(3) {
        display: none;
    }
}

/* /paint classic workspace: Paint-like layout with Dibujo infinito identity. */
html.paint-route .paint-chrome {
    height: 82px;
}

html.paint-route .paint-titlebar {
    background: linear-gradient(90deg, #103f8f, #2d8bd8);
}

html.paint-route .paint-ribbon {
    gap: 0;
    padding-left: 5px;
}

html.paint-route .paint-ribbon span:first-child {
    font-weight: 700;
}

html.paint-route .paint-ribbon span {
    min-width: 76px;
    text-align: center;
}

html.paint-route .canvas-scroll {
    inset: 86px 366px 29px 212px;
}

html.paint-route .toolbar {
    top: 86px;
    right: 106px;
    bottom: 29px;
    left: 0;
    width: auto;
    padding: 0;
    border: 0;
    background: transparent;
    box-shadow: none;
    pointer-events: none;
    overflow: visible;
}

html.paint-route .tools-container {
    display: grid;
    grid-template-columns: 204px minmax(0, 1fr) 250px;
    grid-auto-rows: min-content;
    align-content: start;
    gap: 6px;
    width: 100%;
    height: 100%;
    overflow-y: auto;
    overflow-x: hidden;
    padding: 0 0 6px 0;
    pointer-events: none;
}

html.paint-route .tool-group,
html.paint-route .panel-group,
html.paint-route .auth-group,
html.paint-route .toolbar-header,
html.paint-route .status-indicator {
    pointer-events: auto;
}

html.paint-route .toolbar-header,
html.paint-route .color-tool-group,
html.paint-route .brush-size-group,
html.paint-route .tool-grid-group,
html.paint-route .view-tool-group,
html.paint-route .history-group {
    grid-column: 1;
}

html.paint-route .auth-group,
html.paint-route .world-group,
html.paint-route .tile-nav-group,
html.paint-route .image-tool-group,
html.paint-route .zoom-group,
html.paint-route .admin-group,
html.paint-route .status-indicator {
    grid-column: 3;
}

html.paint-route .toolbar-header { grid-row: 1; }
html.paint-route .color-tool-group { grid-row: 2; }
html.paint-route .brush-size-group { grid-row: 3; }
html.paint-route .tool-grid-group { grid-row: 4; }
html.paint-route .view-tool-group { grid-row: 5; }
html.paint-route .history-group { grid-row: 6; }

html.paint-route .auth-group { grid-row: 1; }
html.paint-route .world-group { grid-row: 2; }
html.paint-route .tile-nav-group { grid-row: 3; }
html.paint-route .image-tool-group { grid-row: 4; }
html.paint-route .zoom-group { grid-row: 5; }
html.paint-route .admin-group { grid-row: 6; }

html.paint-route .toolbar-header {
    width: 204px;
}

html.paint-route .toolbar-header::before {
    content: "Herramientas";
    display: block;
    color: #000000;
    font-size: 11px;
    font-weight: 700;
}

html.paint-route .toolbar-header .app-title {
    display: none;
}

html.paint-route .tool-grid-group {
    width: 204px;
    display: grid;
    grid-template-columns: repeat(4, 32px);
    justify-content: start;
    align-content: start;
    gap: 2px;
}

html.paint-route .tool-grid-group .tool-btn {
    position: relative;
    width: 32px;
    min-width: 32px;
    height: 32px;
    min-height: 32px;
    padding: 0;
    font-size: 0;
    line-height: 0;
    overflow: hidden;
}

html.paint-route .tool-grid-group .tool-hint,
html.paint-route .tool-grid-group .text-controls {
    grid-column: 1 / -1;
}

html.paint-route .paint98-tool svg {
    display: none;
}

html.paint-route .paint98-tool::before,
html.paint-route .paint98-tool::after {
    content: "";
    position: absolute;
    pointer-events: none;
}

html.paint-route .paint98-tool-free-select::before {
    left: 7px;
    top: 8px;
    width: 17px;
    height: 13px;
    border: 1px dotted #000000;
    border-radius: 50% 45% 55% 40%;
    transform: rotate(-14deg);
}

html.paint-route .paint98-tool-select::before {
    left: 7px;
    top: 8px;
    width: 17px;
    height: 13px;
    border: 1px dashed #000000;
}

html.paint-route .paint98-tool-magnifier::before {
    left: 7px;
    top: 6px;
    width: 12px;
    height: 12px;
    border: 2px solid #000000;
    border-radius: 50%;
    background: #ffffff;
}

html.paint-route .paint98-tool-magnifier::after {
    left: 18px;
    top: 19px;
    width: 10px;
    height: 2px;
    background: #000000;
    transform: rotate(45deg);
    transform-origin: left center;
}

html.paint-route .paint98-tool-airbrush::before {
    left: 6px;
    top: 13px;
    width: 12px;
    height: 8px;
    border: 1px solid #000000;
    background: #808080;
}

html.paint-route .paint98-tool-airbrush::after {
    left: 18px;
    top: 6px;
    width: 9px;
    height: 15px;
    background:
        radial-gradient(circle at 1px 2px, #000000 0 1px, transparent 1.4px),
        radial-gradient(circle at 6px 5px, #000000 0 1px, transparent 1.4px),
        radial-gradient(circle at 3px 10px, #000000 0 1px, transparent 1.4px),
        radial-gradient(circle at 8px 14px, #000000 0 1px, transparent 1.4px);
}

html.paint-route .paint98-tool-line::before {
    left: 6px;
    top: 16px;
    width: 20px;
    height: 2px;
    background: #000000;
    transform: rotate(-35deg);
}

html.paint-route .paint98-tool-curve::before {
    left: 8px;
    top: 7px;
    width: 17px;
    height: 16px;
    border-right: 2px solid #000000;
    border-bottom: 2px solid #000000;
    border-radius: 0 0 16px 0;
    transform: rotate(-26deg);
}

html.paint-route .paint98-tool-rectangle::before {
    left: 7px;
    top: 8px;
    width: 17px;
    height: 13px;
    border: 2px solid #000000;
    background: #ffffff;
}

html.paint-route .paint98-tool-polygon::before {
    left: 7px;
    top: 7px;
    width: 18px;
    height: 17px;
    background: #000000;
    clip-path: polygon(50% 0, 100% 35%, 82% 100%, 18% 100%, 0 35%);
}

html.paint-route .paint98-tool-polygon::after {
    left: 9px;
    top: 9px;
    width: 14px;
    height: 13px;
    background: #ffffff;
    clip-path: polygon(50% 0, 100% 35%, 82% 100%, 18% 100%, 0 35%);
}

html.paint-route .paint98-tool-ellipse::before {
    left: 7px;
    top: 8px;
    width: 17px;
    height: 13px;
    border: 2px solid #000000;
    border-radius: 50%;
    background: #ffffff;
}

html.paint-route .paint98-tool-roundrect::before {
    left: 7px;
    top: 8px;
    width: 17px;
    height: 13px;
    border: 2px solid #000000;
    border-radius: 5px;
    background: #ffffff;
}

html.paint-route .paint98-tool-brush::before {
    left: 9px;
    top: 14px;
    width: 15px;
    height: 4px;
    border: 1px solid #000000;
    background: #804000;
    transform: rotate(-40deg);
}

html.paint-route .paint98-tool-brush::after {
    left: 6px;
    top: 17px;
    width: 8px;
    height: 7px;
    border-radius: 1px 1px 5px 5px;
    background: #000000;
    transform: rotate(-40deg);
}

html.paint-route .paint98-tool-pencil::before {
    left: 6px;
    top: 14px;
    width: 20px;
    height: 4px;
    border: 1px solid #000000;
    background: linear-gradient(90deg, #000000 0 12%, #ffff00 12% 80%, #804000 80% 100%);
    transform: rotate(-45deg);
}

html.paint-route .paint98-tool-text::before {
    content: "A";
    left: 9px;
    top: 4px;
    color: #000000;
    font-family: "Times New Roman", serif;
    font-size: 23px;
    font-weight: 700;
    line-height: 1;
}

html.paint-route .paint98-tool-eraser::before {
    left: 7px;
    top: 12px;
    width: 17px;
    height: 9px;
    border: 1px solid #000000;
    background: linear-gradient(90deg, #ff9fb0 0 48%, #ffffff 48% 100%);
    transform: rotate(-25deg);
}

html.paint-route .paint98-tool-fill::before {
    left: 7px;
    top: 8px;
    width: 15px;
    height: 11px;
    border: 1px solid #000000;
    background: #d4d0c8;
    transform: rotate(-35deg) skewX(-8deg);
}

html.paint-route .paint98-tool-fill::after {
    left: 21px;
    top: 20px;
    width: 5px;
    height: 6px;
    border-radius: 50% 50% 55% 55%;
    background: #0000ff;
}

html.paint-route .paint98-tool-picker::before {
    left: 6px;
    top: 15px;
    width: 18px;
    height: 3px;
    border: 1px solid #000000;
    background: #ffffff;
    transform: rotate(-45deg);
}

html.paint-route .paint98-tool-picker::after {
    left: 17px;
    top: 6px;
    width: 6px;
    height: 6px;
    border: 1px solid #000000;
    background: #808080;
}

html.paint-route .view-tool-group .tool-btn,
html.paint-route .history-group .tool-btn,
html.paint-route .image-tool-group .tool-btn {
    justify-content: flex-start;
}

html.paint-route .panel-group {
    max-height: 220px;
    overflow: auto;
}

html.paint-route .admin-group {
    max-height: min(42vh, 360px);
}

html.paint-route .status-indicator {
    padding: 4px 7px;
}

html.paint-route .canvas-minimap {
    right: 6px;
}

@media (max-width: 980px) {
    html.paint-route .canvas-scroll {
        inset: 86px 106px 236px 0;
    }

    html.paint-route .toolbar {
        top: auto;
        right: 0;
        bottom: 29px;
        left: 0;
        height: 204px;
        overflow: hidden;
        border-top: 2px solid #ffffff;
        background: #c0c0c0;
        pointer-events: auto;
    }

    html.paint-route .tools-container {
        display: grid;
        grid-template-columns: repeat(6, minmax(86px, 1fr));
        gap: 5px;
        height: 100%;
        overflow: auto;
        padding: 5px;
        pointer-events: auto;
    }

    html.paint-route .toolbar-header,
    html.paint-route .color-tool-group,
    html.paint-route .brush-size-group,
    html.paint-route .tool-grid-group,
    html.paint-route .view-tool-group,
    html.paint-route .history-group,
    html.paint-route .auth-group,
    html.paint-route .world-group,
    html.paint-route .tile-nav-group,
    html.paint-route .image-tool-group,
    html.paint-route .zoom-group,
    html.paint-route .admin-group,
    html.paint-route .status-indicator {
        grid-column: auto;
        grid-row: auto;
    }

    html.paint-route .toolbar-header,
    html.paint-route .auth-group,
    html.paint-route .admin-group,
    html.paint-route .world-group,
    html.paint-route .tile-nav-group {
        grid-column: span 2;
    }

    html.paint-route .tool-grid-group {
        grid-column: span 2;
    }

    html.paint-route .canvas-minimap {
        top: 88px;
        right: 6px;
        bottom: auto;
    }
}

/* Final classic Paint layout pass: compact the toolbox and keep status out of the canvas. */
html.paint-route .color-tool-group {
    min-height: 62px;
}

html.paint-route .brush-size-group {
    height: 118px;
    align-content: start;
}

html.paint-route .tool-grid-group .tool-hint {
    display: none;
}

html.paint-route .toolbar > .status-indicator {
    position: fixed;
    right: 112px;
    bottom: 35px;
    z-index: 25;
    width: 250px;
    min-height: 24px;
}

html.paint-route .toolbar > .status-indicator + .status-indicator {
    bottom: 63px;
}

@media (max-width: 980px) {
    html.paint-route .toolbar > .status-indicator {
        position: static;
        width: auto;
        min-width: 120px;
    }

    html.paint-route .brush-size-group {
        height: auto;
    }
}

/* Final /otro_paint_prueba_2 overrides. Keep floating advanced panels viewport-based. */
html.paint98-route .toolbar.open,
html.paint98-route body.toolbar-pinned .toolbar {
    transform: none;
}

html.paint98-route .tool-grid-group > .tool-hint {
    display: none !important;
}

html.paint98-route body[data-paint98-open-panel] .brush-size-group label {
    font-size: 0;
    line-height: 0;
}
