/* ==================== VECTOR ART FUNDAMENTALS STYLES ==================== */

/* Course Container */
.course-container {
    min-height: 100vh;
    padding-bottom: 4rem;
}

/* Course Header */
.course-header {
    background: linear-gradient(180deg, rgba(167, 139, 250, 0.08) 0%, transparent 100%);
    border-bottom: 1px solid var(--dark-border);
    padding: 2rem 0 3rem;
}

.course-header-content {
    max-width: 56rem;
    margin: 0 auto;
    padding: 0 1.5rem;
}

.back-link {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--muted);
    font-size: 0.875rem;
    text-decoration: none;
    margin-bottom: 1.5rem;
    transition: color 0.2s;
}

.back-link:hover {
    color: var(--accent);
}

.course-meta {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-bottom: 1rem;
}

.course-category {
    background: rgba(167, 139, 250, 0.15);
    color: var(--accent);
    padding: 0.375rem 0.875rem;
    border-radius: 9999px;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.course-duration {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    color: var(--muted);
    font-size: 0.875rem;
}

.course-title {
    font-family: var(--font-heading);
    font-size: 2.5rem;
    font-weight: 700;
    color: var(--light);
    margin-bottom: 0.75rem;
    line-height: 1.1;
}

@media (min-width: 640px) {
    .course-title {
        font-size: 3rem;
    }
}

.course-subtitle {
    font-size: 1.125rem;
    color: var(--muted);
    max-width: 40rem;
    line-height: 1.6;
    margin-bottom: 2rem;
}

.course-features {
    display: flex;
    flex-wrap: wrap;
    gap: 1.5rem;
}

.course-features .feature {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    color: var(--muted);
    font-size: 0.875rem;
}

.course-features .feature svg {
    color: var(--accent);
    opacity: 0.8;
}

/* Course Navigation */
.course-nav {
    position: sticky;
    top: 0;
    z-index: 40;
    background: rgba(13, 13, 15, 0.95);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--dark-border);
}

.course-nav-inner {
    max-width: 56rem;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    gap: 0.25rem;
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    scrollbar-width: none;
}

.course-nav-inner::-webkit-scrollbar {
    display: none;
}

.nav-section {
    padding: 1rem 1rem;
    color: var(--muted);
    font-size: 0.8125rem;
    font-weight: 500;
    text-decoration: none;
    white-space: nowrap;
    border-bottom: 2px solid transparent;
    transition: all 0.2s;
}

.nav-section:hover {
    color: var(--light);
}

.nav-section.active {
    color: var(--accent);
    border-bottom-color: var(--accent);
}

/* Course Content */
.course-content {
    max-width: 56rem;
    margin: 0 auto;
    padding: 0 1.5rem;
}

/* Section Styles */
.course-section {
    padding: 4rem 0;
    border-bottom: 1px solid var(--dark-border);
}

.course-section:last-child {
    border-bottom: none;
}

.section-header {
    margin-bottom: 2rem;
}

.section-number {
    display: inline-block;
    background: rgba(167, 139, 250, 0.15);
    color: var(--accent);
    padding: 0.375rem 0.75rem;
    border-radius: 0.375rem;
    font-size: 0.75rem;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: 1rem;
}

.section-title {
    font-family: var(--font-heading);
    font-size: 2rem;
    font-weight: 700;
    color: var(--light);
}

/* Prose Content */
.prose-content {
    font-size: 1.0625rem;
    line-height: 1.75;
    color: var(--muted);
    margin-bottom: 2rem;
}

.prose-content p {
    margin-bottom: 1.25rem;
}

.prose-content h3 {
    font-family: var(--font-heading);
    font-size: 1.375rem;
    font-weight: 600;
    color: var(--light);
    margin-top: 2.5rem;
    margin-bottom: 1rem;
}

.prose-content h4 {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--light);
    margin-top: 1.5rem;
    margin-bottom: 0.75rem;
}

.prose-content strong {
    color: var(--light);
    font-weight: 600;
}

.prose-content ul,
.prose-content ol {
    margin-bottom: 1.25rem;
    padding-left: 1.5rem;
}

.prose-content li {
    margin-bottom: 0.5rem;
}

.prose-content ul li {
    list-style-type: disc;
}

/* Highlight styles for inline elements */
.highlight-square {
    display: inline-block;
    width: 0.875em;
    height: 0.875em;
    background: var(--accent);
    vertical-align: middle;
    margin: 0 0.125em;
}

.highlight-circle {
    display: inline-block;
    width: 0.875em;
    height: 0.875em;
    background: #22c55e;
    border-radius: 50%;
    vertical-align: middle;
    margin: 0 0.125em;
}

/* Key Takeaways */
.key-takeaways {
    background: rgba(167, 139, 250, 0.08);
    border: 1px solid rgba(167, 139, 250, 0.2);
    border-radius: 0.75rem;
    padding: 1.5rem;
    margin-top: 2rem;
}

.key-takeaways h4 {
    color: var(--accent);
    margin-top: 0;
    margin-bottom: 0.75rem;
}

.key-takeaways ul {
    margin-bottom: 0;
}

/* ==================== INTERACTIVE TOOLS ==================== */

.interactive-tool {
    background: var(--dark-surface);
    border: 1px solid var(--dark-border);
    border-radius: 1rem;
    overflow: hidden;
    margin: 2rem 0;
}

.tool-header {
    padding: 1.25rem 1.5rem;
    border-bottom: 1px solid var(--dark-border);
}

.tool-title {
    font-family: var(--font-heading);
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--light);
    margin-bottom: 0.375rem;
}

.tool-description {
    font-size: 0.875rem;
    color: var(--muted);
    margin: 0;
}

.tool-content {
    padding: 1.5rem;
}

/* Tool Controls */
.tool-btn {
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--dark-border);
    color: var(--light);
    padding: 0.5rem 1rem;
    border-radius: 0.5rem;
    font-size: 0.875rem;
    cursor: pointer;
    transition: all 0.2s;
}

.tool-btn:hover {
    background: rgba(255, 255, 255, 0.1);
    border-color: rgba(255, 255, 255, 0.2);
}

.tool-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}

.tool-toggle {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.875rem;
    color: var(--muted);
    cursor: pointer;
}

.tool-toggle input {
    accent-color: var(--accent);
}

.tool-info {
    font-size: 0.8125rem;
    color: var(--muted);
    font-style: italic;
}

/* ==================== ZOOM COMPARISON TOOL ==================== */

.zoom-comparison {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.zoom-panel {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.zoom-label {
    font-size: 0.8125rem;
    font-weight: 600;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    text-align: center;
}

.zoom-canvas {
    aspect-ratio: 1;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
    overflow: hidden;
    display: flex;
    align-items: center;
    justify-content: center;
}

.raster-canvas {
    image-rendering: pixelated;
}

#vector-svg {
    width: 80%;
    height: 80%;
    transition: transform 0.1s ease-out;
}

.zoom-controls {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.zoom-controls input[type="range"] {
    flex: 1;
    accent-color: var(--accent);
}

.zoom-value {
    font-size: 0.8125rem;
    color: var(--muted);
    min-width: 2.5rem;
}

/* ==================== BEZIER PLAYGROUND ==================== */

.bezier-canvas-container,
.node-canvas-container {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
    margin-bottom: 1rem;
}

.bezier-canvas,
.node-canvas {
    width: 100%;
    display: block;
}

.bezier-path {
    stroke: var(--accent);
    stroke-width: 3;
    fill: none;
}

.handle-line {
    stroke: rgba(255, 255, 255, 0.3);
    stroke-width: 1;
    stroke-dasharray: 4, 4;
}

.anchor-point {
    fill: var(--accent);
    stroke: white;
    stroke-width: 2;
    cursor: move;
}

.anchor-point:hover,
.anchor-point.selected {
    fill: white;
    stroke: var(--accent);
}

.control-handle {
    fill: #22c55e;
    stroke: white;
    stroke-width: 2;
    cursor: move;
}

.control-handle:hover {
    fill: white;
    stroke: #22c55e;
}

.bezier-controls,
.node-controls {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

/* ==================== BOOLEAN OPERATIONS ==================== */

.boolean-canvas-container {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
    margin-bottom: 1rem;
}

.boolean-canvas {
    width: 100%;
    display: block;
}

.boolean-controls {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.boolean-operations {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.bool-op-btn {
    background: rgba(167, 139, 250, 0.15);
    border: 1px solid rgba(167, 139, 250, 0.3);
    color: var(--accent);
    padding: 0.625rem 1.25rem;
    border-radius: 0.5rem;
    font-size: 0.875rem;
    font-weight: 500;
    cursor: pointer;
    transition: all 0.2s;
}

.bool-op-btn:hover {
    background: rgba(167, 139, 250, 0.25);
    border-color: var(--accent);
}

.boolean-shapes {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
}

.boolean-shapes label {
    font-size: 0.8125rem;
    color: var(--muted);
}

.boolean-shapes select {
    background: var(--dark-bg);
    border: 1px solid var(--dark-border);
    color: var(--light);
    padding: 0.375rem 0.75rem;
    border-radius: 0.375rem;
    font-size: 0.875rem;
}

/* Shape Challenge */
.challenge-container {
    display: grid;
    grid-template-columns: 1fr 1.5fr;
    gap: 1rem;
    margin-bottom: 1rem;
}

.challenge-target,
.challenge-workspace {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.challenge-label {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.challenge-svg {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
}

.challenge-controls {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.challenge-shapes,
.challenge-ops,
.challenge-nav {
    display: flex;
    gap: 0.5rem;
    align-items: center;
}

.add-shape-btn,
.challenge-op-btn {
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--dark-border);
    color: var(--light);
    padding: 0.5rem 0.875rem;
    border-radius: 0.375rem;
    font-size: 0.8125rem;
    cursor: pointer;
    transition: all 0.2s;
}

.add-shape-btn:hover,
.challenge-op-btn:hover {
    background: rgba(255, 255, 255, 0.1);
}

#challenge-counter {
    font-size: 0.875rem;
    color: var(--muted);
}

/* ==================== PATH EDITOR ==================== */

.path-canvas-container,
.trace-canvas-container {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
    margin-bottom: 1rem;
    cursor: crosshair;
}

.path-canvas,
.trace-canvas {
    width: 100%;
    display: block;
}

.user-path {
    stroke: var(--accent);
    stroke-width: 2;
}

.user-path.filled {
    fill: rgba(167, 139, 250, 0.3);
}

.ghost-line {
    stroke: rgba(167, 139, 250, 0.4);
    stroke-width: 1;
    stroke-dasharray: 4, 4;
}

.path-controls {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 0.75rem;
}

.path-instructions {
    font-size: 0.8125rem;
    color: var(--muted);
}

/* Trace Tool */
.trace-target {
    fill: none;
    stroke: rgba(255, 255, 255, 0.15);
    stroke-width: 2;
}

.trace-path {
    stroke: var(--accent);
    stroke-width: 2;
}

.trace-guide {
    fill: rgba(255, 255, 255, 0.3);
    stroke: none;
}

.trace-controls {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    align-items: center;
}

.trace-progress {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    font-size: 0.8125rem;
    color: var(--muted);
}

.progress-bar {
    width: 120px;
    height: 8px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 4px;
    overflow: hidden;
}

.progress-fill {
    height: 100%;
    background: var(--accent);
    transition: width 0.3s;
}

.trace-nav {
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

#trace-counter {
    font-size: 0.875rem;
    color: var(--muted);
}

/* ==================== STROKE AND FILL ==================== */

.stroke-fill-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
}

@media (max-width: 640px) {
    .stroke-fill-container {
        grid-template-columns: 1fr;
    }
}

.stroke-fill-preview {
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
    padding: 2rem;
}

.stroke-fill-canvas {
    width: 100%;
    max-width: 250px;
}

#demo-shape {
    transition: all 0.2s;
}

.stroke-fill-controls {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.control-group {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}

.control-group label {
    font-size: 0.8125rem;
    color: var(--muted);
}

.control-group .tool-toggle {
    flex-direction: row;
}

.color-input {
    width: 3rem;
    height: 2rem;
    border: 1px solid var(--dark-border);
    border-radius: 0.375rem;
    cursor: pointer;
    background: transparent;
    padding: 0;
}

.color-input.large {
    width: 4rem;
    height: 2.5rem;
}

.radio-group {
    display: flex;
    gap: 1rem;
}

.radio-group label {
    display: flex;
    align-items: center;
    gap: 0.375rem;
    font-size: 0.8125rem;
    cursor: pointer;
}

.radio-group input {
    accent-color: var(--accent);
}

#stroke-width-value {
    font-size: 0.8125rem;
    color: var(--muted);
}

/* ==================== COLOR PALETTE ==================== */

.palette-container {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.palette-picker {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.palette-picker label {
    font-size: 0.875rem;
    color: var(--muted);
}

.palette-display {
    display: flex;
    gap: 0.5rem;
}

.palette-swatch {
    flex: 1;
    aspect-ratio: 1;
    border-radius: 0.5rem;
    border: 2px solid transparent;
    cursor: pointer;
    transition: all 0.2s;
}

.palette-swatch:hover {
    transform: scale(1.05);
}

.palette-swatch.selected {
    border-color: white;
}

.palette-preview {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
    padding: 1rem;
}

#palette-preview-svg {
    width: 100%;
    max-width: 300px;
    margin: 0 auto;
    display: block;
}

/* Color Harmony */
.harmony-container {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 2rem;
    align-items: start;
}

@media (max-width: 640px) {
    .harmony-container {
        grid-template-columns: 1fr;
    }
}

.color-wheel-container {
    position: relative;
    width: 250px;
    height: 250px;
}

#color-wheel {
    border-radius: 50%;
    cursor: crosshair;
}

#harmony-markers {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
}

.harmony-marker {
    position: absolute;
    width: 20px;
    height: 20px;
    border: 3px solid white;
    border-radius: 50%;
    transform: translate(-50%, -50%);
    box-shadow: 0 2px 4px rgba(0,0,0,0.3);
}

.harmony-controls {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.harmony-buttons {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.harmony-btn {
    background: rgba(255, 255, 255, 0.06);
    border: 1px solid var(--dark-border);
    color: var(--light);
    padding: 0.5rem 1rem;
    border-radius: 0.375rem;
    font-size: 0.8125rem;
    cursor: pointer;
    transition: all 0.2s;
}

.harmony-btn:hover {
    background: rgba(255, 255, 255, 0.1);
}

.harmony-btn.active {
    background: rgba(167, 139, 250, 0.2);
    border-color: var(--accent);
    color: var(--accent);
}

.harmony-result {
    display: flex;
    gap: 0.5rem;
}

.harmony-swatch {
    width: 3rem;
    height: 3rem;
    border-radius: 0.5rem;
    border: 2px solid rgba(255,255,255,0.2);
}

/* ==================== LAYERS DEMO ==================== */

.layers-container {
    display: grid;
    grid-template-columns: 1fr 200px;
    gap: 1.5rem;
}

@media (max-width: 640px) {
    .layers-container {
        grid-template-columns: 1fr;
    }
}

.layers-canvas {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
}

#layers-svg {
    width: 100%;
    display: block;
}

.layers-panel {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
    padding: 0.75rem;
}

.layer-item {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.5rem;
    background: rgba(255, 255, 255, 0.03);
    border: 1px solid transparent;
    border-radius: 0.375rem;
    margin-bottom: 0.375rem;
    cursor: grab;
    transition: all 0.2s;
}

.layer-item:hover {
    background: rgba(255, 255, 255, 0.06);
}

.layer-item.selected {
    border-color: var(--accent);
    background: rgba(167, 139, 250, 0.1);
}

.layer-item.dragging {
    opacity: 0.5;
}

.layer-visibility {
    width: 1.25rem;
    height: 1.25rem;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    color: var(--muted);
}

.layer-visibility:hover {
    color: var(--light);
}

.layer-visibility.hidden {
    opacity: 0.3;
}

.layer-color {
    width: 1rem;
    height: 1rem;
    border-radius: 0.25rem;
}

.layer-name {
    flex: 1;
    font-size: 0.8125rem;
    color: var(--light);
}

.layer-opacity {
    width: 50px;
}

/* ==================== FINAL PROJECT ==================== */

.project-container {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 2rem;
}

@media (max-width: 768px) {
    .project-container {
        grid-template-columns: 1fr;
    }
}

.project-canvas {
    background: rgba(0, 0, 0, 0.3);
    border: 1px solid var(--dark-border);
    border-radius: 0.5rem;
    aspect-ratio: 1;
}

#project-svg {
    width: 100%;
    height: 100%;
}

.project-steps {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.step-indicator {
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--accent);
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.step-instruction h4 {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--light);
    margin-bottom: 0.5rem;
}

.step-instruction p {
    font-size: 0.9375rem;
    color: var(--muted);
    line-height: 1.5;
}

.step-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.step-nav {
    display: flex;
    gap: 0.5rem;
    margin-top: auto;
    padding-top: 1rem;
    border-top: 1px solid var(--dark-border);
}

/* Course Complete */
.prose-content.course-complete {
    background: linear-gradient(135deg, rgba(167, 139, 250, 0.08) 0%, rgba(34, 197, 94, 0.08) 100%);
    border: 1px solid rgba(167, 139, 250, 0.2);
    border-radius: 1rem;
    padding: 2rem;
    margin-top: 2rem;
}

.next-steps {
    background: rgba(255, 255, 255, 0.03);
    border-radius: 0.75rem;
    padding: 1.5rem;
    margin-top: 1.5rem;
}

.next-steps h4 {
    color: var(--accent);
    margin-top: 0;
}

/* Course Footer */
.course-footer {
    border-top: 1px solid var(--dark-border);
    padding: 3rem 0;
    margin-top: 2rem;
}

.course-footer-content {
    max-width: 56rem;
    margin: 0 auto;
    padding: 0 1.5rem;
    display: flex;
    justify-content: center;
}

/* Draggable shapes */
.draggable-shape {
    cursor: move;
}

.draggable-shape:hover {
    filter: brightness(1.1);
}

.draggable-shape.dragging {
    opacity: 0.8;
}
