:root {
    --bg-primary: #0d1117;
    --bg-surface: #161b22;
    --bg-elevated: #1c2333;
    --bg-hover: #1f2a40;
    --border: #30363d;
    --border-accent: #58a6ff;
    --text-primary: #c9d1d9;
    --text-secondary: #8b949e;
    --accent: #58a6ff;
    --accent-hover: #79c0ff;
    --success: #3fb950;
    --danger: #f85149;
    --warning: #d29922;
    --radius: 6px;
    --shadow: 0 1px 3px rgba(0,0,0,0.3);
}

*, *::before, *::after {
    transition: background-color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease;
}

html, button, input, select, textarea {
    color: var(--text-primary);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    font-size: 14px;
}

body {
    background-color: var(--bg-primary);
    margin: 0;
    padding: 0;
}

.webcam-container {padding:0;margin:0}
.size640x480 { width:640px; height:480px;}
.webcam-container object {border:1px solid var(--border);}
.webcam-error {color:var(--danger);padding-top:5px;}

div#appcontainer {
    width:100%;
    display:flex;
    flex-direction:column;
    min-height:100vh;
}

#mainBody {
    display:flex;
    flex:1;
    min-height:0;
}

/* Toolbar row */
div.toolbar {
    display:flex;
    flex-wrap:wrap;
    gap:2px;
    padding:2px 4px;
    background:#161b22;
    border-bottom:1px solid var(--border);
    min-height:0;
}

div.toolbar .ui-button {
    padding:0.3em;
    margin:0;
    background:transparent;
    border:1px solid transparent;
    border-radius:3px;
}

div.toolbar .ui-button .ui-icon {
    position:static;
}

div.toolbar .ui-button:hover {
    background:var(--bg-hover);
    border-color:var(--border);
}

div.toolbar .ui-button:hover .ui-icon {
    background-image:url("ui-icons_cc0000_256x240.png") !important;
}

div#canvas-div {
    flex:1;
    min-width:0;
    position:relative;
    padding:0;
    display:flex;
    align-items:center;
    justify-content:center;
}

#toolbox-sizer {
    width:4px;
    cursor:col-resize;
    background:#444;
    flex-shrink:0;
    transition: background-color 0.15s;
}
#toolbox-sizer:hover {
    background:#d97706;
}

#toolbox {
    width:260px;
    flex-shrink:0;
    background:#333;
    border-left:1px solid #555;
    overflow-y:auto;
    overflow-x:hidden;
    display:flex;
    flex-direction:column;
}

#toolbox label, #toolbox p, #toolbox span, #toolbox div {
    max-width:100%;
    word-wrap:break-word;
    overflow-wrap:break-word;
}

/* Patternator-style panel classes for toolbox */
#toolbox .panel {
    padding:8px 10px;
    border-bottom:1px solid #444;
}
#toolbox .panel-title {
    font-size:11px;
    text-transform:uppercase;
    color:#999;
    margin-bottom:4px;
    letter-spacing:1px;
}

/* Toolbox action buttons */
#toolbox .action-btn {
    padding:4px 8px;
    background:#444;
    color:#ccc;
    border:1px solid #555;
    border-radius:3px;
    cursor:pointer;
    font-size:11px;
}
#toolbox .action-btn:hover {
    background:#555;
    color:#fff;
}
#toolbox .action-btn.primary {
    background:#4488cc;
    color:#fff;
    border-color:#3377bb;
}
#toolbox .action-btn.primary:hover {
    background:#5599dd;
}
#toolbox .action-btn.danger {
    background:#cc4444;
    color:#fff;
    border-color:#bb3333;
}

#toolbox .flex-row {
    display:flex;
    gap:4px;
}

/* Patternator panel classes used in toolbox */
#toolbox .btn-row {
    display:flex;
    flex-wrap:wrap;
    gap:4px;
}
#toolbox .group-btn {
    padding:2px 5px;
    font-size:10px;
    background:#444;
    color:#ccc;
    border:1px solid #555;
    border-radius:3px;
    cursor:pointer;
}
#toolbox .group-btn.active {
    background:#4488cc;
    color:#fff;
    border-color:#3377bb;
}
#toolbox .stroke-btn {
    background:#444;
    border:1px solid #555;
    border-radius:2px;
    cursor:pointer;
    padding:2px;
}
#toolbox .stroke-btn.active {
    outline:2px solid #fff;
    outline-offset:1px;
}
#toolbox .grid-lbl {
    display:flex;
    align-items:center;
    gap:4px;
    font-size:11px;
    cursor:pointer;
    color:#ccc;
}
#toolbox .grid-lbl input {
    accent-color:#4488cc;
}

/* Stroke canvas inside button */
#toolbox .stroke-btn canvas { display:block; }

/* Color popup (Patternator toggles .show class) */
#colorPopup { display:none; }
#colorPopup.show { display:block; position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:100; }
#colorPopupInner { position:absolute; top:50%; left:50%; transform:translate(-50%,-50%); background:#333; padding:16px; border-radius:6px; display:flex; gap:16px; align-items:center; }
.preset-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:3px; align-content:start; min-width:140px; }
.preset-swatch { aspect-ratio:1; border-radius:3px; border:1px solid #555; cursor:pointer; }
.preset-swatch:hover { border-color:#d97706; }

/* Export modal */
#exportModal { display:none; }
#exportModal.show { display:block; position:fixed; inset:0; background:rgba(0,0,0,0.5); z-index:100; }

canvas {
    max-width:100%;
    max-height:100%;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    border: 1px solid var(--border);
}

canvas:hover {
    border-color: var(--border-accent);
}

video#video-container {
    display: none;
}

div#message-div {
    width:100%;
    height: 5em;
    overflow-wrap: break-word;
    word-wrap: break-word;
    overflow-y: auto;
    background: var(--bg-surface);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    margin: 0.5rem 0;
    color: var(--text-secondary);
    font-size: 0.85rem;
}
div#message-div p{
    margin: 0.1em 0.5em;
    padding: 0;
}
div#message-div p:first-child {
    margin-top: 0.3em;
}

/* Processing spinner overlay */
div#processing-overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    background: rgba(13, 17, 23, 0.7);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    border-radius: var(--radius);
    z-index: 10;
    color: var(--text-primary);
    font-size: 13px;
    gap: 8px;
}

div#processing-overlay .spinner {
    width: 32px;
    height: 32px;
    border: 3px solid var(--border);
    border-top-color: var(--accent);
    border-radius: 50%;
    animation: spin 0.8s linear infinite;
}

@keyframes spin {
    to { transform: rotate(360deg); }
}

/* Patternator tile mode — hide by default, show on .patternator-active */
#planeCanvas, #gridCanvas { display:none; }
.patternator-active #image-canvas { display:none; }
.patternator-active #planeCanvas { display:block; position:absolute; top:0; left:0; width:100%; height:100%; cursor:crosshair; }
.patternator-active #gridCanvas { display:block; position:absolute; top:0; left:0; width:100%; height:100%; pointer-events:none; }

p#info-para {
    color: var(--text-secondary);
    font-size: 0.8rem;
    text-align: left;
    padding: 0.5rem;
    margin: 0;
    white-space: normal;
    overflow-wrap: break-word;
    word-wrap: break-word;
}
