/* App layout - minimal CSS, most styling via Tailwind */ .app-shell { /* HoloLake Era visual system: the inherited Tolaria dark palette is warm charcoal; override semantic tokens here so every existing panel speaks the same deep-lake blue language as the world entrance. */ --surface-app: #071126; --surface-sidebar: #0a1730; --surface-panel: #0d1c38; --surface-card: #102343; --surface-popover: #12284c; --surface-input: #0a1730; --surface-button: #172e55; --surface-dialog: #0d1d3a; --surface-editor: #09162d; --surface-overlay: rgba(2, 7, 18, .68); --text-primary: #edf4ff; --text-secondary: #b9c9e2; --text-tertiary: #8ea4c6; --text-muted: #7188ac; --text-heading: #f3f7ff; --border-default: #1d3a67; --border-subtle: #142b4d; --border-strong: #315588; --border-input: #274a78; --sidebar-border: #17365f; --state-hover: #142b4e; --state-hover-subtle: #0e213f; --state-selected: #173d70; --state-selected-strong: #24538d; --state-active: #1d477e; --accent-blue: #8dbbff; --accent-blue-bg: rgba(105, 165, 255, .23); --accent-blue-light: rgba(105, 165, 255, .16); 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)); } .hololake-bar { height: 52px; flex: 0 0 52px; display: flex; align-items: center; gap: 14px; padding: 0 20px; color: #eef4ff; background: linear-gradient(100deg, #08122b, #172d58 52%, #0b1731); border-bottom: 1px solid rgba(153, 189, 255, .28); letter-spacing: .02em; } .hololake-bar__brand, .hololake-bar__library { border: 0; background: transparent; color: inherit; cursor: pointer; } .hololake-bar__brand { display: inline-flex; align-items: center; gap: 9px; font-size: 16px; font-weight: 650; letter-spacing: .04em; } .hololake-bar__brand b { color: #9cc3ff; font-weight: 500; } .hololake-bar__mark { display: grid; place-items: center; width: 24px; height: 24px; color: #dceaff; border: 1px solid rgba(205, 225, 255, .48); border-radius: 50%; box-shadow: 0 0 22px rgba(96, 165, 250, .65); } .hololake-bar__line { width: 1px; height: 17px; background: rgba(196, 218, 255, .35); } .hololake-bar__context { color: #b7c8e7; font-size: 12px; } .hololake-bar__library { margin-left: auto; padding: 6px 10px; border: 1px solid rgba(185, 211, 255, .36); border-radius: 999px; color: #dceaff; font-size: 12px; } .hololake-home { position: relative; z-index: 2; width: 100%; overflow: auto; padding: clamp(32px, 6vw, 84px); color: #ecf4ff; background: radial-gradient(circle at 75% 10%, rgba(75, 135, 255, .25), transparent 28%), radial-gradient(circle at 12% 92%, rgba(83, 220, 255, .15), transparent 34%), #071126; } .hololake-home__hero { position: relative; max-width: 740px; padding: 24px 0 56px; overflow: hidden; } .hololake-home__halo { position: absolute; right: -110px; top: -180px; width: 390px; aspect-ratio: 1; border: 1px solid rgba(166, 205, 255, .28); border-radius: 50%; box-shadow: 0 0 0 45px rgba(103, 165, 255, .05), 0 0 0 105px rgba(103, 165, 255, .035), 0 0 100px rgba(77, 143, 255, .4); } .hololake-home__eyebrow, .hololake-home__section-head span { color: #8db5f7; font-size: 12px; letter-spacing: .16em; text-transform: uppercase; } .hololake-home h1 { position: relative; margin: 18px 0 0; font-family: Georgia, 'Times New Roman', serif; font-size: clamp(52px, 7vw, 92px); font-weight: 500; line-height: .95; letter-spacing: -.06em; } .hololake-home h1 em { color: #9cc7ff; font-style: italic; font-weight: 400; } .hololake-home__lead { margin: 20px 0 0; font-size: 18px; letter-spacing: .16em; } .hololake-home__copy { max-width: 560px; margin: 16px 0 0; color: #b9c8df; font-size: 15px; line-height: 1.9; } .hololake-home__actions { display: flex; align-items: center; gap: 18px; margin-top: 30px; } .hololake-home__primary { padding: 12px 18px; border: 1px solid #b9d5ff; border-radius: 8px; background: linear-gradient(135deg, #c8dcff, #6093e8); color: #061126; font-weight: 700; cursor: pointer; } .hololake-home__primary span, .hololake-module button span { margin-left: 12px; } .hololake-home__status { color: #9eb3d4; font-size: 12px; }.hololake-home__status i { display: inline-block; width: 7px; height: 7px; margin-right: 7px; border-radius: 50%; background: #67e8b6; box-shadow: 0 0 12px #67e8b6; } .hololake-home__signal-grid, .hololake-home__module-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .hololake-home__signal-grid article, .hololake-module { border: 1px solid rgba(157, 192, 244, .2); border-radius: 14px; background: linear-gradient(145deg, rgba(30, 57, 105, .55), rgba(12, 25, 51, .78)); box-shadow: inset 0 1px rgba(255,255,255,.06); } .hololake-home__signal-grid article { padding: 18px; }.hololake-home__signal-grid span, .hololake-home__signal-grid small { display: block; color: #91a9ce; font-size: 11px; }.hololake-home__signal-grid strong { display: block; margin: 10px 0 6px; font-size: 15px; } .hololake-home__modules { margin-top: 52px; }.hololake-home__section-head { display: flex; align-items: end; justify-content: space-between; margin-bottom: 14px; }.hololake-home__section-head p { margin: 0; color: #91a9ce; font-size: 13px; } .hololake-module { min-height: 215px; padding: 22px; display: flex; flex-direction: column; }.hololake-module__number { color: #78aaf7; font-family: monospace; font-size: 12px; }.hololake-module h2 { margin: auto 0 8px; font-size: 22px; font-weight: 600; }.hololake-module p { margin: 0; color: #aebed7; font-size: 13px; line-height: 1.7; }.hololake-module button { margin-top: 19px; padding: 0; border: 0; color: #c8dcff; background: transparent; text-align: left; font: inherit; cursor: pointer; }.hololake-module__soon { margin-top: 19px; color: #7185a8; font-size: 12px; } @media (max-width: 780px) { .hololake-home__signal-grid, .hololake-home__module-grid { grid-template-columns: 1fr; }.hololake-bar__context { display: none; }.hololake-home { padding: 28px; } } .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, #10254a, var(--surface-sidebar) 40%, #08152c); } .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, #0d2040, #091730 48%, #08152c); box-shadow: 14px 0 30px rgba(1, 7, 20, .36); } .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; }