/* App layout - minimal CSS, most styling via Tailwind */ .app-shell { display: flex; flex-direction: column; height: 100%; width: 100%; overflow: hidden; background: radial-gradient(58rem 35rem at 82% -16%, var(--guanghu-aurora), transparent 62%), radial-gradient(42rem 30rem at -12% 112%, var(--guanghu-glow), transparent 65%), var(--surface-app); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--border-primary) 82%, var(--accent-blue)); } .app { display: flex; flex: 1; min-height: 0; overflow: hidden; } .app__sidebar { flex: 0 0 auto; min-width: 220px; display: flex; flex-direction: column; background: linear-gradient(180deg, color-mix(in srgb, var(--surface-sidebar) 92%, var(--guanghu-glow)), var(--surface-sidebar)); } .app__sidebar > * { flex: 1; } .app:has(.app__note-list) .app__sidebar > * { border-right-color: transparent; } .app__note-list { flex: 0 0 auto; min-width: 220px; display: flex; flex-direction: column; position: relative; z-index: 20; background: linear-gradient(180deg, color-mix(in srgb, var(--surface-sidebar) 94%, var(--guanghu-glow)), var(--surface-sidebar)); box-shadow: 14px 0 30px color-mix(in srgb, var(--surface-app) 60%, transparent); } .app__note-list > * { flex: 1; border-left: 1px solid var(--sidebar-border); } .app__editor { flex: 1; min-width: 480px; min-height: 0; overflow: hidden; display: flex; flex-direction: column; container-type: inline-size; container-name: editor; position: relative; background: linear-gradient(var(--guanghu-grid) 1px, transparent 1px), linear-gradient(90deg, var(--guanghu-grid) 1px, transparent 1px), color-mix(in srgb, var(--surface-editor) 94%, var(--guanghu-glow)); background-size: 32px 32px, 32px 32px, auto; } .app__editor::before { content: ''; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(180deg, color-mix(in srgb, var(--surface-editor) 28%, transparent), transparent 13rem); z-index: 0; } .app__editor > * { position: relative; z-index: 1; } .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; }