/* App layout - minimal CSS, most styling via Tailwind */ .app-shell { display: flex; flex-direction: column; height: 100%; width: 100%; overflow: hidden; box-shadow: inset 0 0 0 1px var(--border-primary); } .app { display: flex; flex: 1; min-height: 0; overflow: hidden; } .app__sidebar { flex-shrink: 1; min-width: 180px; display: flex; flex-direction: column; } .app__sidebar > * { flex: 1; } .app__note-list { flex-shrink: 10; min-width: 220px; display: flex; flex-direction: column; } .app__note-list > * { flex: 1; } .app__editor { flex: 1; min-width: 400px; min-height: 0; overflow: hidden; display: flex; flex-direction: column; container-type: inline-size; container-name: editor; } .app__editor > * { flex: 1; } @keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } } @keyframes tab-status-pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.3; } } .tab-status-pulse { animation: tab-status-pulse 1.2s ease-in-out infinite; } /* AI highlight animation — applied by useAiActivity when MCP calls ui_highlight */ @keyframes ai-highlight-glow { 0% { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--accent-blue) 80%, transparent); } 50% { box-shadow: inset 0 0 8px 2px color-mix(in srgb, var(--accent-blue) 40%, transparent); } 100% { box-shadow: inset 0 0 0 2px color-mix(in srgb, var(--accent-blue) 0%, transparent); } } .ai-highlight { animation: ai-highlight-glow 0.8s ease-out; }