:root,[data-theme=light],[data-theme=dark]{--color-background: #0b1020;--color-surface: #11172a;--color-text: #f5f7ff;--color-text-muted: #c8d4ff;--color-primary: #5b8cff;--color-accent: #45d6ff;--color-border: #27324a;--opacity-pressed: .85;--opacity-disabled: .6;--border-width-sm: 1px;--border-width-md: 2px;--size-content-max: 1120px;--size-card-min: 280px;--size-viewport-height: 100vh;--size-viewport-width: 100vw;--spacing-none: 0px;--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--font-family-base: "Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-size-sm: 14px;--font-size-md: 16px;--font-size-lg: 20px;--font-size-xl: 28px;--font-weight-regular: 400;--font-weight-medium: 500;--font-weight-bold: 700}*{box-sizing:border-box}body{margin:var(--spacing-none);font-family:var(--font-family-base);background:var(--color-background);color:var(--color-text);min-height:var(--size-viewport-height)}a{color:var(--color-accent);text-decoration:none}.app-shell{min-height:var(--size-viewport-height);display:flex;flex-direction:column}.app-header{padding:var(--spacing-md) var(--spacing-lg);border-bottom:var(--border-width-sm) solid var(--color-border);background:var(--color-surface)}.nav-link{color:var(--color-text);padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm)}.nav-link.active{background:var(--color-primary)}.publisher-home{display:grid;gap:var(--spacing-lg);min-width:0}.publisher-layout{display:grid;gap:var(--spacing-lg);width:100%;min-width:0;overflow-x:clip;align-items:start}.publisher-nav,.publisher-workspace{display:grid;gap:var(--spacing-lg)}.publisher-header{display:flex;flex-wrap:wrap;gap:var(--spacing-lg);justify-content:space-between;align-items:center}.publisher-actions{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.publisher-section,.publisher-panel,.publisher-stack{display:grid;gap:var(--spacing-lg)}.publisher-grid{display:grid;gap:var(--spacing-md);grid-template-columns:repeat(auto-fit,minmax(180px,1fr))}.publisher-field{display:flex;flex-direction:column;gap:var(--spacing-xs);font-size:var(--font-size-sm)}.publisher-field input,.publisher-field textarea,.publisher-field select{background:transparent;border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-sm);color:var(--color-text)}.publisher-field textarea{min-height:90px}.publisher-field.publisher-full{grid-column:1 / -1}.section-header{display:flex;justify-content:space-between;align-items:center;gap:var(--spacing-md)}.inline-actions,.publisher-inline-actions{display:flex;gap:var(--spacing-sm);flex-wrap:wrap}.publisher-toolbar{display:flex;flex-wrap:wrap;gap:var(--spacing-md);justify-content:space-between;align-items:center}.publisher-toolbar-actions{display:flex;flex-wrap:wrap;gap:var(--spacing-sm);align-items:center}.publisher-column{min-width:0;display:grid;gap:var(--spacing-sm);align-content:start;overflow:hidden}.publisher-column-body{display:grid;gap:var(--spacing-sm);min-width:0;overflow-x:clip}.publisher-column.collapsed .publisher-section{padding-bottom:var(--spacing-sm)}.publisher-column.collapsed{min-width:48px;width:48px;max-width:48px;overflow:hidden}.publisher-column.collapsed .publisher-column-header h3,.publisher-column.collapsed .publisher-column-header p{display:none}.publisher-column.collapsed .publisher-column-header .section-header{justify-content:center}.publisher-column.collapsed .publisher-column-header .ghost-button{font-size:0;min-width:32px;padding:var(--spacing-xs)}.publisher-column.collapsed .publisher-column-header .ghost-button:before{content:"+";font-size:var(--font-size-md);line-height:1}.publisher-column-header{border-bottom:var(--border-width-sm) solid var(--color-border);padding-bottom:var(--spacing-sm);margin-bottom:var(--spacing-sm)}.publisher-layout.publisher-layout-parallel{grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) minmax(48px,1.6fr) minmax(48px,1.6fr);align-items:start;width:100%;overflow-x:clip}.publisher-layout.publisher-layout-parallel.publisher-layout-structure-collapsed{grid-template-columns:48px minmax(0,1fr) minmax(0,1fr)}.publisher-layout.publisher-layout-parallel.publisher-layout-designer-collapsed{grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) 48px minmax(0,1fr)}.publisher-layout.publisher-layout-parallel.publisher-layout-preview-collapsed{grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) minmax(0,1fr) 48px}.publisher-layout.publisher-layout-parallel.publisher-layout-structure-collapsed.publisher-layout-designer-collapsed{grid-template-columns:48px 48px minmax(0,1fr)}.publisher-layout.publisher-layout-parallel.publisher-layout-structure-collapsed.publisher-layout-preview-collapsed{grid-template-columns:48px minmax(0,1fr) 48px}.publisher-layout.publisher-layout-parallel.publisher-layout-designer-collapsed.publisher-layout-preview-collapsed{grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) 48px 48px}.publisher-layout.publisher-layout-parallel.publisher-layout-structure-collapsed.publisher-layout-designer-collapsed.publisher-layout-preview-collapsed{grid-template-columns:48px 48px 48px}.publisher-tree{display:grid;gap:var(--spacing-xs);min-width:0}.publisher-tree-group{display:grid;gap:var(--spacing-xs)}.publisher-tree-children{display:grid;gap:var(--spacing-xs);padding-left:var(--spacing-sm);border-left:var(--border-width-sm) solid var(--color-border);margin-left:var(--spacing-sm);min-width:0}.publisher-tree-lesson{display:grid;gap:var(--spacing-xs)}.publisher-tree-exercises{padding-left:var(--spacing-sm)}.publisher-node{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);padding:var(--spacing-xs) var(--spacing-sm);border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);min-width:0;overflow:hidden}.publisher-node.selected{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.publisher-node-label{display:flex;flex-direction:row;gap:var(--spacing-sm);align-items:flex-start;text-align:left;background:transparent;border:none;color:inherit;cursor:pointer;flex:1}.publisher-node-label>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.publisher-node-actions{display:flex;gap:4px;flex-wrap:nowrap;flex-shrink:0}.publisher-node-actions .ghost-button{padding:2px 6px;min-height:24px}.publisher-tree-add{font-size:var(--font-size-sm)}.publisher-node-kind{color:var(--color-text-muted);font-size:var(--font-size-sm)}.publisher-preview{display:grid;gap:var(--spacing-lg)}.publisher-preview-item{border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);background:var(--color-surface)}.ghost-button{background:transparent;border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-xs) var(--spacing-md);color:var(--color-text);cursor:pointer}.publisher-module,.publisher-lesson,.publisher-exercise,.publisher-step,.publisher-blank{display:grid;gap:var(--spacing-md);padding:var(--spacing-md) 0;border-top:var(--border-width-sm) solid var(--color-border)}.publisher-content-block{border:var(--border-width-sm) dashed var(--color-border);padding:var(--spacing-md);border-radius:var(--radius-md)}@media(min-width:900px){.publisher-layout{grid-template-columns:minmax(260px,1fr) minmax(0,3fr);align-items:start}.publisher-layout.publisher-layout-parallel{grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) minmax(48px,1.6fr) minmax(48px,1.6fr)}.publisher-layout.publisher-layout-parallel.publisher-layout-structure-collapsed{grid-template-columns:48px minmax(0,1fr) minmax(0,1fr)}.publisher-layout.publisher-layout-parallel.publisher-layout-designer-collapsed{grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) 48px minmax(0,1fr)}.publisher-layout.publisher-layout-parallel.publisher-layout-preview-collapsed{grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) minmax(0,1fr) 48px}.publisher-layout.publisher-layout-parallel.publisher-layout-structure-collapsed.publisher-layout-designer-collapsed{grid-template-columns:48px 48px minmax(0,1fr)}.publisher-layout.publisher-layout-parallel.publisher-layout-structure-collapsed.publisher-layout-preview-collapsed{grid-template-columns:48px minmax(0,1fr) 48px}.publisher-layout.publisher-layout-parallel.publisher-layout-designer-collapsed.publisher-layout-preview-collapsed{grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) 48px 48px}.publisher-layout.publisher-layout-parallel.publisher-layout-structure-collapsed.publisher-layout-designer-collapsed.publisher-layout-preview-collapsed{grid-template-columns:48px 48px 48px}}.status-error{color:#ff9b9b}.editor-shell{border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-sm);background:var(--color-background)}.editor-toolbar{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);margin-bottom:var(--spacing-sm)}.editor-toolbar-button{background:var(--color-surface);border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-xs) var(--spacing-sm);color:var(--color-text);cursor:pointer}.editor-input{min-height:120px;outline:none}.editor-placeholder{color:var(--color-text-muted)}.editor-bold{font-weight:var(--font-weight-bold)}.editor-italic{font-style:italic}.editor-underline{text-decoration:underline}.editor-list-ol,.editor-list-ul{margin-left:var(--spacing-lg)}.editor-link{color:var(--color-accent)}.app-main{flex:1;padding:var(--spacing-lg)}.container{max-width:var(--size-content-max);margin:var(--spacing-none) auto}.hero{display:grid;gap:var(--spacing-lg);align-items:center;grid-template-columns:repeat(auto-fit,minmax(var(--size-card-min),1fr));padding:var(--spacing-lg) 0}.course-list{margin-bottom:var(--spacing-xl)}.course-header{display:flex;justify-content:space-between;gap:var(--spacing-lg);align-items:center}.course-grid{display:grid;gap:var(--spacing-lg);grid-template-columns:repeat(auto-fit,minmax(var(--size-card-min),1fr));margin-top:var(--spacing-lg)}.course-card{display:flex;flex-direction:column;gap:var(--spacing-md)}.course-link{display:inline-flex;align-items:center;justify-content:center;background:var(--color-primary);color:var(--color-text);border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-sm) var(--spacing-lg);font-weight:var(--font-weight-medium);transition:opacity .2s ease}.course-link:hover{opacity:var(--opacity-pressed)}.lesson-view{display:flex;flex-direction:column;gap:var(--spacing-lg)}.learning-layout{display:grid;grid-template-columns:minmax(48px,clamp(220px,24vw,320px)) minmax(0,1fr);grid-template-rows:auto 1fr;align-items:start;gap:var(--spacing-lg)}.learning-layout.structure-collapsed{grid-template-columns:48px minmax(0,1fr)}.learning-structure-toggle{grid-column:1;grid-row:1;justify-self:stretch;width:100%}.learning-structure-panel{grid-column:1;grid-row:2;display:grid;gap:var(--spacing-sm);min-width:0}.learning-structure-panel.collapsed{display:none}.learning-structure-tree,.learning-structure-module,.learning-structure-lesson{display:grid;gap:var(--spacing-xs)}.learning-structure-children{display:grid;gap:var(--spacing-xs);margin-left:var(--spacing-sm);padding-left:var(--spacing-sm);border-left:var(--border-width-sm) solid var(--color-border)}.learning-structure-row{display:flex;align-items:center;justify-content:space-between;gap:var(--spacing-sm);border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-md);background:var(--color-surface);padding:var(--spacing-xs) var(--spacing-sm);color:var(--color-text);text-decoration:none}.learning-structure-row.active{border-color:var(--color-primary);box-shadow:0 0 0 1px var(--color-primary)}.learning-content-column{grid-column:2;grid-row:1 / span 2;min-width:0}.lesson-header{display:flex;flex-direction:column;gap:var(--spacing-md)}.lesson-content{display:grid;gap:var(--spacing-lg)}.lesson-content-block{display:grid;gap:var(--spacing-sm)}.lesson-text{margin:var(--spacing-none)}.lesson-image{width:100%;border-radius:var(--radius-lg);display:block}.exercise-flow{display:grid;gap:var(--spacing-lg)}.exercise-context{background:var(--color-surface);border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-md)}.exercise-context-body{display:grid;gap:var(--spacing-sm);max-height:220px;overflow-y:auto}.exercise-thread-title{font-weight:var(--font-weight-medium);margin:var(--spacing-sm) var(--spacing-none)}.exercise-context-line{margin:var(--spacing-none)}.exercise-blank-inline{padding:0 var(--spacing-xs);border-bottom:1px dashed var(--color-border)}.exercise-card{border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-lg);padding:var(--spacing-lg);background:var(--color-surface)}.exercise-header h3{margin:var(--spacing-sm) var(--spacing-none)}.exercise-prompt{margin:var(--spacing-none)}.exercise-sentence{display:flex;flex-wrap:wrap;gap:var(--spacing-xs);padding:var(--spacing-md) 0;align-items:center;font-size:var(--font-size-lg)}.exercise-input{min-width:140px;padding:var(--spacing-xs) var(--spacing-sm);border-radius:var(--radius-sm);border:var(--border-width-sm) solid var(--color-border);background:transparent;color:var(--color-text)}.exercise-blank{border:var(--border-width-sm) dashed var(--color-border);border-radius:var(--radius-sm);padding:var(--spacing-xs) var(--spacing-sm);background:transparent;color:var(--color-text);cursor:pointer}.exercise-blank.active{border-color:var(--color-accent)}.exercise-options{display:grid;gap:var(--spacing-sm)}.exercise-options-grid{display:flex;flex-wrap:wrap;gap:var(--spacing-sm)}.exercise-option{border:var(--border-width-sm) solid var(--color-border);border-radius:var(--radius-md);padding:var(--spacing-xs) var(--spacing-md);background:var(--color-background);color:var(--color-text);cursor:pointer}.exercise-actions{margin-top:var(--spacing-lg)}@media(min-width:900px){.exercise-flow{grid-template-columns:minmax(240px,1fr) minmax(360px,2fr);align-items:start}}.card-grid{display:grid;gap:var(--spacing-lg);grid-template-columns:repeat(auto-fit,minmax(var(--size-card-min),1fr))}.muted{color:var(--color-text-muted)}
