|
|
| :root{ |
| --bg: #0d1b0f; |
| --panel: #18361d; |
| --panel-2: #204b27; |
| --accent: #7cd26f; |
| --accent-2: #ffd36e; |
| --accent-3: #ff8a5b; |
| --ink: #f2ffef; |
| --muted: #a6c3a9; |
| --wood: #5a3f2e; |
| --shadow: rgba(0,0,0,.25); |
| --radius: 12px; |
| --pixel-font: 'Press Start 2P', system-ui, sans-serif; |
|
|
| |
| --accent-rgb: 124,210,111; |
| --accent-2-rgb: 255,211,110; |
| --accent-3-rgb: 255,138,91; |
| --btn-start-rgb: 42,90,53; |
|
|
| |
| --btn-start: #2a5a35; |
| --btn-end: #1a3a21; |
| --btn-hover-start: #35744a; |
| --btn-hover-end: #224b2b; |
|
|
| |
| --editor-bg: #18361d; |
| --editor-line: #204b27; |
|
|
| |
| --chat-accent: #7cd26f; |
| --chat-accent-rgb: 124,210,111; |
| } |
|
|
| |
| .current-line-highlight { |
| background: rgba(var(--accent-rgb), 0.03) !important; |
| border-left: none !important; |
| } |
|
|
| .current-line-glyph { |
| background: transparent !important; |
| width: 0px !important; |
| } |
|
|
| |
| .error-line-highlight { |
| background: rgba(255, 50, 30, 0.45) !important; |
| border-left: 3px solid #ff3322 !important; |
| box-shadow: inset 0 0 0 9999px rgba(255, 50, 30, 0.15); |
| } |
|
|
| .error-line-glyph { |
| background: #ff3322 !important; |
| width: 4px !important; |
| margin-left: 2px; |
| border-radius: 2px; |
| } |
|
|
| |
| .bracket-mismatch { |
| color: #ff3322 !important; |
| font-weight: bold; |
| text-decoration: wavy underline #ff3322; |
| background: rgba(255, 50, 30, 0.2); |
| border-radius: 2px; |
| } |
|
|
| |
| body{ |
| font-family: 'Baloo 2', Arial, sans-serif; |
| margin: 0; |
| padding: 0; |
| background: radial-gradient(1400px 700px at 80% -20%, rgba(var(--accent-rgb),.18), transparent), |
| radial-gradient(1000px 600px at 0% 100%, rgba(var(--accent-2-rgb),.15), transparent), |
| radial-gradient(800px 800px at 50% 50%, rgba(var(--accent-rgb),.08), transparent), |
| linear-gradient(135deg, #0a150c 0%, var(--bg) 50%, var(--panel-2) 100%); |
| color: var(--ink); |
| display: flex; |
| flex-direction: column; |
| height: 100vh; |
| height: 100dvh; |
| max-height: 100vh; |
| max-height: 100dvh; |
| overflow: hidden; |
| position: relative; |
| } |
|
|
| body::before { |
| content: ''; |
| position: fixed; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| background: |
| radial-gradient(circle at 20% 30%, rgba(var(--accent-rgb),.05) 0%, transparent 25%), |
| radial-gradient(circle at 80% 70%, rgba(var(--accent-2-rgb),.05) 0%, transparent 25%); |
| pointer-events: none; |
| animation: breathe 8s ease-in-out infinite alternate; |
| } |
|
|
| @keyframes breathe { |
| 0% { |
| opacity: 0.5; |
| transform: scale(1); |
| } |
| 100% { |
| opacity: 0.8; |
| transform: scale(1.02); |
| } |
| } |
|
|
| img, canvas{ image-rendering: pixelated; } |
|
|
| |
| ::-webkit-scrollbar{ width: 12px; height: 12px; background: rgba(15,32,20,.4); border-radius: 6px; } |
| ::-webkit-scrollbar-thumb{ |
| background:linear-gradient(135deg, #35543b 0%, #2a4530 100%); |
| border-radius: 6px; |
| border: 2px solid rgba(var(--btn-start-rgb),.6); |
| box-shadow: 0 2px 8px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.1); |
| } |
| ::-webkit-scrollbar-thumb:hover{ |
| background:linear-gradient(135deg, #4a6d4f 0%, #35543b 100%); |
| box-shadow: 0 2px 12px rgba(0,0,0,.4), inset 0 1px 0 rgba(255,255,255,.15); |
| } |
| ::-webkit-scrollbar-corner{ display: none; } |
|
|
| |
| .navbar{ |
| display: flex; align-items: center; justify-content: space-between; |
| background: linear-gradient(135deg, rgba(90,63,46,.98) 0%, rgba(70,50,35,.95) 100%); |
| padding: 14px 24px; max-height: 5%; |
| box-shadow: 0 4px 24px rgba(0,0,0,.5), |
| inset 0 1px 0 rgba(255,255,255,.12); |
| border-bottom: 3px solid #3f2c20; |
| backdrop-filter: blur(10px); |
| position: relative; |
| z-index: 100; |
| } |
|
|
| .navbar::after { |
| content: ''; |
| position: absolute; |
| bottom: -3px; |
| left: 0; |
| width: 100%; |
| height: 2px; |
| background: linear-gradient(90deg, |
| transparent 0%, |
| rgba(var(--accent-rgb),.4) 20%, |
| rgba(var(--accent-rgb),.6) 50%, |
| rgba(var(--accent-rgb),.4) 80%, |
| transparent 100%); |
| animation: shimmer 3s ease-in-out infinite; |
| } |
|
|
| @keyframes shimmer { |
| 0%, 100% { opacity: 0.5; } |
| 50% { opacity: 1; } |
| } |
|
|
| |
| .toolbar{ |
| display:flex; |
| align-items:center; |
| justify-content:space-between; |
| padding:10px 20px; |
| background:linear-gradient(135deg, var(--btn-start) 0%, var(--btn-end) 100%); |
| border-bottom:3px solid var(--btn-start); |
| box-shadow: 0 4px 16px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(var(--accent-rgb),.15); |
| position: relative; |
| z-index: 90; |
| } |
| .toolbar-left{ flex:1; display:flex; align-items:center; } |
| .toolbar-right{ display:flex; gap:8px; } |
| .current-file-name { |
| font-family: var(--pixel-font); |
| font-size: 11px; |
| font-weight: 700; |
| color: #b6ffb6; |
| background: linear-gradient(135deg, rgba(15,32,20,.7) 0%, rgba(10,24,14,.85) 100%); |
| border: 1px solid rgba(var(--accent-rgb),.3); |
| border-radius: 6px; |
| padding: 7px 14px 7px 30px; |
| max-width: 280px; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| white-space: nowrap; |
| letter-spacing: .4px; |
| text-shadow: 0 0 8px rgba(var(--accent-rgb),.4), 0 1px 3px rgba(0,0,0,.5); |
| position: relative; |
| box-shadow: 0 2px 8px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.05); |
| transition: all .3s ease; |
| } |
| .current-file-name::before { |
| content: '\1F4C4'; |
| position: absolute; |
| left: 10px; |
| top: 50%; |
| transform: translateY(-50%); |
| font-size: 12px; |
| filter: drop-shadow(0 0 3px rgba(var(--accent-rgb),.4)); |
| } |
| .current-file-name:hover { |
| border-color: rgba(var(--accent-rgb),.5); |
| text-shadow: 0 0 12px rgba(var(--accent-rgb),.6), 0 1px 3px rgba(0,0,0,.5); |
| box-shadow: 0 3px 12px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.08), 0 0 15px rgba(var(--accent-rgb),.08); |
| } |
| .app-title{ font-family: var(--pixel-font); letter-spacing:.5px; color: var(--ink); opacity:.9; text-shadow: 0 2px 4px rgba(0,0,0,.3); } |
| .tb-btn{ |
| border:2px solid rgba(var(--btn-start-rgb),.8); |
| background:linear-gradient(135deg, #15301e 0%, #102417 100%); |
| color:var(--ink); |
| padding:10px 16px; |
| border-radius:6px; |
| cursor:pointer; |
| font-weight:800; |
| font-family:var(--pixel-font); |
| font-size:11px; |
| transition: all .3s ease; |
| box-shadow: 0 3px 10px rgba(0,0,0,.3), |
| inset 0 1px 0 rgba(255,255,255,.08); |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| .tb-btn::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: -100%; |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(90deg, transparent, rgba(var(--accent-rgb),.2), transparent); |
| transition: left .5s ease; |
| } |
|
|
| .tb-btn:hover::before { |
| left: 100%; |
| } |
|
|
| .tb-btn:hover{ |
| background:linear-gradient(135deg, var(--btn-end) 0%, #15301e 100%); |
| transform: translateY(-2px); |
| box-shadow: 0 6px 16px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(255,255,255,.12); |
| border-color: rgba(var(--accent-rgb),.6); |
| } |
|
|
| .tb-btn:active{ |
| transform: translateY(0); |
| box-shadow: 0 2px 6px rgba(0,0,0,.3); |
| } |
|
|
| |
| .file-menu-wrap { |
| position: relative; |
| display: inline-block; |
| } |
| .file-popup { |
| position: absolute; |
| top: calc(100% + 6px); |
| left: 0; |
| min-width: 180px; |
| background: linear-gradient(135deg, #152a18 0%, #0f1d12 100%); |
| border: 2px solid rgba(var(--accent-rgb),.35); |
| border-radius: 8px; |
| padding: 6px 0; |
| box-shadow: 0 10px 32px rgba(0,0,0,.55), 0 0 0 1px rgba(0,0,0,.3); |
| z-index: 999; |
| animation: filePopIn .15s ease-out; |
| } |
| .file-popup.hidden { display: none; } |
| @keyframes filePopIn { |
| from { opacity: 0; transform: translateY(-6px) scale(.96); } |
| to { opacity: 1; transform: translateY(0) scale(1); } |
| } |
| .file-popup-item { |
| display: block; |
| width: 100%; |
| border: none; |
| background: transparent; |
| color: #d1f5c4; |
| font-family: var(--pixel-font); |
| font-size: 11px; |
| font-weight: 700; |
| padding: 10px 18px; |
| text-align: left; |
| cursor: pointer; |
| transition: background .15s, color .15s; |
| } |
| .file-popup-item:hover { |
| background: rgba(var(--accent-rgb),.15); |
| color: #fff; |
| } |
| .file-popup-item.danger { |
| color: #ff6b5a; |
| } |
| .file-popup-item.danger:hover { |
| background: rgba(255,80,60,.15); |
| color: #ff4433; |
| } |
| .file-popup-divider { |
| height: 1px; |
| margin: 4px 12px; |
| background: rgba(var(--accent-rgb),.2); |
| } |
|
|
| .tb-run{ |
| background:linear-gradient(135deg, var(--accent) 0%, #49a25c 100%); |
| color:#0f1d12; |
| border-color:#2e6f3e; |
| text-shadow: 0 1px 2px rgba(255,255,255,.4); |
| box-shadow: 0 3px 12px rgba(var(--accent-rgb),.4), |
| inset 0 1px 0 rgba(255,255,255,.2); |
| } |
|
|
| .tb-run:hover{ |
| background:linear-gradient(135deg, #8ee280 0%, #55b86a 100%); |
| box-shadow: 0 6px 20px rgba(var(--accent-rgb),.6), |
| inset 0 1px 0 rgba(255,255,255,.3); |
| } |
|
|
| |
| |
| |
|
|
| |
| .ide-titlebar { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| height: 48px; |
| min-height: 48px; |
| background: linear-gradient(180deg, #1a2e1d 0%, #111f14 100%); |
| padding: 0 14px; |
| border-bottom: 1px solid rgba(var(--btn-start-rgb),.5); |
| z-index: 100; |
| flex-shrink: 0; |
| position: relative; |
| } |
|
|
| .ide-titlebar-left { |
| display: flex; |
| align-items: center; |
| gap: 2px; |
| z-index: 2; |
| } |
|
|
| .ide-titlebar-center { |
| position: absolute; |
| left: 50%; |
| transform: translateX(-50%); |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| pointer-events: none; |
| } |
|
|
| .ide-titlebar-right { |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| z-index: 2; |
| } |
|
|
| .ide-logo { |
| height: 36px; |
| width: auto; |
| margin-right: 6px; |
| } |
|
|
| .ide-title { |
| font-family: var(--pixel-font); |
| font-size: 9px; |
| color: var(--muted); |
| letter-spacing: .5px; |
| opacity: .65; |
| } |
|
|
| .ide-center-logo { |
| height: 50px; |
| width: auto; |
| object-fit: contain; |
| pointer-events: none; |
| filter: drop-shadow(0 1px 4px rgba(0,0,0,.4)); |
| } |
|
|
| .ide-menu-btn { |
| background: linear-gradient(135deg, var(--btn-start) 0%, var(--btn-end) 100%); |
| border: 1px solid rgba(var(--accent-rgb),.35); |
| color: var(--ink); |
| font-family: var(--pixel-font); |
| font-size: 10px; |
| padding: 6px 14px; |
| cursor: pointer; |
| border-radius: 4px; |
| transition: background .15s, color .15s, border-color .15s; |
| letter-spacing: .3px; |
| font-weight: 700; |
| } |
|
|
| .ide-menu-btn:hover { |
| background: linear-gradient(135deg, var(--btn-hover-start) 0%, var(--btn-hover-end) 100%); |
| border-color: rgba(var(--accent-rgb),.6); |
| color: #8ee280; |
| } |
|
|
| |
| .ide-tabbar { |
| display: flex; |
| align-items: stretch; |
| height: 20px; |
| min-height: 20px; |
| background: #0b160d; |
| border-bottom: 1px solid rgba(var(--btn-start-rgb),.35); |
| flex-shrink: 0; |
| overflow-x: auto; |
| overflow-y: hidden; |
| } |
|
|
| .ide-tab { |
| display: flex; |
| align-items: center; |
| gap: 4px; |
| padding: 0 10px; |
| background: transparent; |
| border-right: 1px solid rgba(var(--btn-start-rgb),.2); |
| cursor: default; |
| white-space: nowrap; |
| min-width: 0; |
| position: relative; |
| } |
|
|
| .ide-tab.active { |
| background: var(--panel); |
| border-bottom: 2px solid var(--accent); |
| } |
|
|
| .ide-tab-icon { |
| font-size: 13px; |
| line-height: 1; |
| } |
|
|
| .ide-tabbar-fill { |
| flex: 1; |
| background: transparent; |
| } |
|
|
| |
| .ide-tab .current-file-name { |
| background: transparent; |
| border: none; |
| padding: 0; |
| box-shadow: none; |
| font-size: 10px; |
| font-weight: 700; |
| color: var(--ink); |
| text-shadow: none; |
| letter-spacing: .3px; |
| max-width: 220px; |
| } |
|
|
| .unsaved-dot { |
| display: none; |
| width: 8px; |
| height: 8px; |
| border-radius: 50%; |
| background: #f5c842; |
| flex-shrink: 0; |
| margin-left: 2px; |
| box-shadow: 0 0 4px #f5c842; |
| } |
|
|
| .unsaved-dot.visible { |
| display: inline-block; |
| animation: unsaved-glow 1.5s ease-in-out infinite; |
| } |
|
|
| @keyframes unsaved-glow { |
| 0%, 100% { box-shadow: 0 0 4px #f5c842; opacity: 1; } |
| 50% { box-shadow: 0 0 10px #f5c842, 0 0 18px #f5c84266; opacity: .75; } |
| } |
|
|
| .ide-tab .current-file-name::before { |
| display: none; |
| } |
|
|
| .ide-tab .current-file-name:hover { |
| border: none; |
| box-shadow: none; |
| text-shadow: none; |
| } |
|
|
| |
| .ide-statusbar { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| height: 32px; |
| min-height: 32px; |
| background: linear-gradient(180deg, #162e1b 0%, #0e1f12 100%); |
| border-top: 1px solid rgba(var(--btn-start-rgb),.4); |
| padding: 0 14px; |
| flex-shrink: 0; |
| z-index: 100; |
| } |
|
|
| .ide-statusbar-left { |
| display: flex; |
| gap: 10px; |
| align-items: center; |
| } |
|
|
| .ide-statusbar-right { |
| display: flex; |
| gap: 8px; |
| align-items: center; |
| } |
|
|
| .ide-status-lang { |
| font-family: var(--pixel-font); |
| font-size: 10px; |
| color: var(--muted); |
| letter-spacing: .3px; |
| } |
|
|
| |
| .ide-statusbar .status-chip { |
| padding: 4px 10px; |
| font-size: 10px; |
| border-width: 1px; |
| border-radius: 4px; |
| } |
|
|
| |
| .ide-run-icon { |
| font-size: 10px; |
| margin-right: 2px; |
| } |
|
|
| .ide-titlebar .run-dropdown .btn-primary { |
| min-width: 140px; |
| padding: 6px 28px; |
| font-size: 10px; |
| border-radius: 6px 0 0 6px; |
| } |
|
|
| .ide-titlebar .btn-dropdown-toggle { |
| padding: 6px 10px; |
| font-size: 9px; |
| border-radius: 0 6px 6px 0; |
| } |
|
|
| |
| .workspace{ display:flex; gap:0; padding:12px; flex:1; min-height:0; overflow:hidden; } |
|
|
| |
| .sidebarResizer{ width:6px; background:linear-gradient(180deg, #35543b, #2a4530); cursor:ew-resize; border-radius:2px; flex-shrink:0; transition: background .2s ease; position:relative; z-index:5; margin:0 3px; } |
| .sidebarResizer:hover, .sidebarResizer.active{ background:linear-gradient(180deg, var(--accent), #49a25c); } |
| .sidebarResizer::after{ content:''; position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:2px; height:30px; background:rgba(var(--accent-rgb),.5); border-radius:1px; } |
| .sidebar{ |
| width: 520px; |
| min-width: 200px; |
| max-width: 70%; |
| flex-shrink: 0; |
| background:linear-gradient(135deg, rgba(24,54,29,.95) 0%, rgba(18,40,22,.95) 100%); |
| outline:2px solid rgba(var(--btn-start-rgb),.9); |
| padding:16px; |
| box-shadow:0 6px 24px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(var(--accent-rgb),.1); |
| border-radius:8px; |
| backdrop-filter: blur(6px); |
| overflow-y:auto; |
| position: relative; |
| } |
|
|
| .sidebar::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 2px; |
| background: linear-gradient(90deg, transparent, rgba(var(--accent-rgb),.4), transparent); |
| animation: slideGlow 3s ease-in-out infinite; |
| } |
|
|
| @keyframes slideGlow { |
| 0%, 100% { opacity: 0.3; } |
| 50% { opacity: 0.8; } |
| } |
| .workspace-main{ flex:1; display:flex; flex-direction:column; gap:8px; overflow:hidden; height:100%; min-height:0; min-width:0; width:100%; max-width:100%; box-sizing:border-box; } |
| .sd-section{ font-family:var(--pixel-font); font-size:11px; color:var(--accent-2); margin:12px 0 8px; text-transform:uppercase; letter-spacing:.8px; text-shadow: 0 1px 2px rgba(0,0,0,.3); } |
| .explorer-list, .themes-list{ list-style:none; padding:0; margin:0; } |
| .explorer-list li, .themes-list li{ padding:8px 10px; border-left:3px solid transparent; cursor:pointer; transition: all .2s ease; border-radius:3px; margin-bottom:2px; } |
| .explorer-list li:hover, .themes-list li:hover{ background:rgba(26,58,33,.8); border-left-color:var(--accent); transform: translateX(2px); } |
| .themes-list .active{ background:linear-gradient(90deg, rgba(34,75,43,.9) 0%, rgba(26,58,33,.7) 100%); border-left-color:var(--accent); box-shadow: inset 0 1px 3px rgba(0,0,0,.2); } |
| .navbar img{ margin-right: 10px; } |
| .logoContainer{ display:flex; justify-content:flex-end; align-items:center; } |
| .logo-img{ height: 96px; width: auto; max-width: 260px; object-fit: contain; } |
| .logoName{ text-shadow: 2px 2px 0 #3a271c; margin: 0 0 0 8px; } |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
|
|
| |
| .side-tokens{ max-height: 90%; overflow:auto; margin-top:8px; border-radius:6px; outline:2px solid rgba(var(--btn-start-rgb),.6); box-shadow:0 2px 10px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.05); background:linear-gradient(135deg, rgba(24,54,29,.9), rgba(18,40,22,.9)); } |
| .side-token-table{ width:100%; border-collapse:separate; border-spacing:0; color: #e8ffe4; font-size:12px; } |
| .side-token-table thead th{ position:sticky; top:0; z-index:2; background:linear-gradient(135deg, var(--btn-end), #153018); padding:8px; font-family:var(--pixel-font); font-size:10px; letter-spacing:.5px; text-align:left; color: #ffd36e; font-weight: bold; border: 1px solid rgba(var(--btn-start-rgb),.6); box-shadow: 0 2px 4px rgba(0,0,0,.3); } |
| .side-token-table td{ padding:6px 8px; border: 1px solid rgba(var(--btn-start-rgb),.4); word-break:break-word; font-weight: bold; color: #e8ffe4; } |
| .side-token-table td:first-child{ color: #f2ffef; } |
| .side-token-table td:nth-child(2){ color: #89cff0; } |
| .side-token-table td:nth-child(3){ color: #ffa86a; } |
| .side-token-table tr:nth-child(even){ background:rgba(16,36,20,.7); } |
| .side-token-table tr:nth-child(odd){ background:rgba(20,44,26,.7); } |
| .side-token-table tr:hover{ background:rgba(var(--btn-start-rgb),.55) !important; transition: background .15s ease; } |
| |
| .side-token-table th:nth-child(3), .side-token-table td:nth-child(3){ |
| font-size: 11px; |
| white-space: normal; |
| overflow-wrap: anywhere; |
| } |
|
|
| |
| .button-group{ |
| display:inline-flex; |
| border-radius:6px; |
| overflow:hidden; |
| box-shadow:0 4px 16px rgba(0,0,0,.4); |
| } |
|
|
| .button-group button{ |
| padding:12px 16px; |
| border:none; |
| background:linear-gradient(135deg, rgba(24,54,29,.95) 0%, rgba(18,40,22,.95) 100%); |
| color:var(--ink); |
| cursor:pointer; |
| font-size:13px; |
| font-weight:800; |
| font-family:var(--pixel-font); |
| letter-spacing:.6px; |
| transition: all .3s ease; |
| position: relative; |
| } |
|
|
| .button-group button::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: 0; |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(135deg, rgba(var(--accent-rgb),.1), transparent); |
| opacity: 0; |
| transition: opacity .3s ease; |
| } |
|
|
| .button-group button:hover::before { |
| opacity: 1; |
| } |
|
|
| .button-group button:hover{ |
| background:linear-gradient(135deg, rgba(32,75,43,.95) 0%, rgba(26,58,33,.95) 100%); |
| } |
|
|
| .button-group .dropdown-toggle{ border-left:2px solid rgba(var(--accent-rgb),0.2); } |
|
|
| .nav-links{ |
| list-style:none; |
| padding:0; |
| margin:0; |
| position:absolute; |
| background:linear-gradient(135deg, rgba(32,75,43,.98) 0%, rgba(26,58,33,.98) 100%); |
| width:auto; |
| z-index:10; |
| box-shadow:0 10px 30px rgba(0,0,0,.5); |
| transition:all .3s ease; |
| outline:2px solid rgba(var(--accent-rgb),.6); |
| border-radius:6px; |
| overflow:hidden; |
| backdrop-filter:blur(10px); |
| } |
|
|
| .nav-links li a{ |
| display:block; |
| padding:12px 18px; |
| text-decoration:none; |
| color:var(--ink); |
| font-family:var(--pixel-font); |
| font-size:11px; |
| transition: all .3s ease; |
| position: relative; |
| } |
|
|
| .nav-links li a::before { |
| content: ''; |
| position: absolute; |
| left: 0; |
| top: 0; |
| width: 3px; |
| height: 100%; |
| background: linear-gradient(180deg, var(--accent), #49a25c); |
| transform: scaleY(0); |
| transition: transform .3s ease; |
| } |
|
|
| .nav-links li a:hover::before { |
| transform: scaleY(1); |
| } |
|
|
| .nav-links li a:hover{ |
| background:rgba(var(--btn-start-rgb),.6); |
| padding-left: 22px; |
| } |
| .hidden{ display:none; } |
|
|
| |
| .mainCont{ display:flex; height:55%; padding:0; gap:8px; position:relative; flex-shrink:0; min-height:0; } |
| .textFieldCont{ |
| display:flex; |
| width:100%; |
| min-width:50%; |
| background:linear-gradient(135deg, rgba(24,54,29,.95) 0%, rgba(18,40,22,.95) 100%); |
| border-radius:8px; |
| outline:2px solid rgba(var(--btn-start-rgb),.9); |
| padding:10px; |
| box-shadow:0 6px 24px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(var(--accent-rgb),.1); |
| position:relative; |
| height:auto; |
| backdrop-filter: blur(6px); |
| transition: all .3s ease; |
| } |
|
|
| .textFieldCont:hover{ |
| box-shadow:0 8px 32px rgba(0,0,0,.5), |
| inset 0 1px 0 rgba(var(--accent-rgb),.15); |
| outline-color: rgba(var(--accent-rgb),.7); |
| } |
| .editor-header{ display:flex; align-items:center; justify-content:space-between; background:linear-gradient(135deg, rgba(26,58,33,.7), rgba(16,36,23,.6)); border-radius:4px; padding:6px 8px; margin-bottom:8px; border:1px solid rgba(var(--btn-start-rgb),.5); } |
| .editor-tabs{ display:flex; gap:6px; } |
| .tab{ padding:6px 10px; border-radius:4px; border:1px solid transparent; font-family:var(--pixel-font); font-size:10px; color:var(--ink); background:transparent; cursor:pointer; transition:all .2s ease; } |
| .tab:hover{ background:rgba(26,58,33,.55); } |
| .tab.active{ background:linear-gradient(135deg, var(--btn-hover-end), var(--btn-end)); border-color:var(--btn-start); box-shadow: inset 0 1px 2px rgba(0,0,0,.25); } |
| .editor-actions .tab-btn{ padding:6px 8px; border:1px solid var(--btn-start); border-radius:4px; background:linear-gradient(135deg, #15301e, #102417); color:var(--ink); font-family:var(--pixel-font); font-size:10px; cursor:pointer; } |
| .editor-body{ height: calc(100% - 36px); } |
| .widthResizer{ width:4px; background:linear-gradient(135deg, #35543b, #2a4530); cursor:ew-resize; position:relative; height:10%; top:45%; border-radius:2px; transition: background .2s ease; } |
| .widthResizer:hover{ background:linear-gradient(135deg, #4a6d4f, #35543b); } |
| .heightResizer{ width:100%; height:6px; background:linear-gradient(180deg, #35543b, #2a4530); cursor:ns-resize; border-radius:2px; flex-shrink:0; transition: background .2s ease; position:relative; z-index:5; } |
| .heightResizer:hover, .heightResizer.active{ background:linear-gradient(180deg, var(--accent), #49a25c); } |
| .heightResizer::after{ content:''; position:absolute; left:50%; top:50%; transform:translate(-50%,-50%); width:30px; height:2px; background:rgba(var(--accent-rgb),.5); border-radius:1px; } |
| .outputCont{ flex:1; display:flex; flex-direction:column; overflow-y:auto; border-radius:6px; overflow-x:hidden; } |
|
|
| |
| .mobile-tokens{ |
| display: none; |
| position: fixed; |
| top: 50%; |
| left: 50%; |
| transform: translate(-50%, -50%); |
| width: 92%; |
| max-width: 500px; |
| height: 65vh; |
| max-height: 600px; |
| overflow: hidden; |
| border-radius: 12px; |
| background: rgba(24,54,29,.98); |
| outline: 3px solid rgba(var(--accent-rgb),.6); |
| box-shadow: 0 10px 50px rgba(0,0,0,.7), 0 0 0 1px rgba(var(--accent-rgb),.3); |
| z-index: 1000; |
| flex-direction: column; |
| will-change: transform; |
| } |
|
|
| .mobile-tokens.show { |
| display: flex !important; |
| } |
|
|
| .mobile-tokens-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| padding: 12px 16px; |
| background: linear-gradient(135deg, #2a4c30 0%, #234026 100%); |
| border-bottom: 2px solid rgba(var(--btn-start-rgb),.8); |
| } |
|
|
| .mobile-tokens-title { |
| font-family: var(--pixel-font); |
| font-size: 12px; |
| letter-spacing: 0.8px; |
| color: var(--accent-2); |
| margin: 0; |
| text-shadow: 0 1px 2px rgba(0,0,0,.3); |
| } |
|
|
| .mobile-tokens-close { |
| background: linear-gradient(135deg, #ff8a5b 0%, #c95f36 100%); |
| color: #fff; |
| border: 2px solid #8c3b21; |
| border-radius: 6px; |
| width: 36px; |
| height: 36px; |
| font-size: 20px; |
| font-weight: bold; |
| cursor: pointer; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| transition: all .2s ease; |
| box-shadow: 0 2px 8px rgba(0,0,0,.4); |
| text-shadow: 0 1px 2px rgba(0,0,0,.3); |
| } |
|
|
| .mobile-tokens-close:hover { |
| background: linear-gradient(135deg, #ffa070 0%, #d76f45 100%); |
| transform: scale(1.05); |
| } |
|
|
| .mobile-tokens-close:active { |
| transform: scale(0.95); |
| box-shadow: 0 1px 4px rgba(0,0,0,.3); |
| } |
|
|
| .mobile-tokens .tokenTable { |
| background: transparent; |
| outline: none; |
| box-shadow: none; |
| font-size: 13px; |
| height: 100%; |
| overflow-y: auto; |
| display: block; |
| min-width: unset; |
| } |
|
|
| .mobile-tokens .tokenTable thead { |
| display: table; |
| width: 100%; |
| table-layout: fixed; |
| } |
|
|
| .mobile-tokens .tokenTable tbody { |
| display: block; |
| overflow-y: auto; |
| height: calc(65vh - 90px); |
| max-height: 510px; |
| -webkit-overflow-scrolling: touch; |
| } |
|
|
| .mobile-tokens .tokenTable tr { |
| display: table; |
| width: 100%; |
| table-layout: fixed; |
| } |
|
|
| .mobile-tokens .tokenTable th { |
| font-size: 10px; |
| padding: 10px 8px; |
| background: linear-gradient(135deg, #2a4c30 0%, #234026 100%); |
| } |
|
|
| .mobile-tokens .tokenTable td { |
| padding: 10px 8px; |
| word-break: break-word; |
| } |
|
|
| |
| .mobile-tokens-backdrop { |
| display: none; |
| position: fixed; |
| top: 0; |
| left: 0; |
| right: 0; |
| bottom: 0; |
| background: rgba(0, 0, 0, 0.85); |
| z-index: 999; |
| backdrop-filter: blur(4px); |
| -webkit-backdrop-filter: blur(4px); |
| } |
|
|
| .mobile-tokens-backdrop.show { |
| display: block !important; |
| } |
|
|
| |
| .mobile-status-fab { |
| display: none; |
| position: fixed; |
| bottom: 16px; |
| right: 16px; |
| width: 48px; |
| height: 48px; |
| border-radius: 50%; |
| background: linear-gradient(135deg, var(--btn-start), var(--btn-end)); |
| border: 2px solid rgba(var(--accent-rgb),.5); |
| color: var(--accent); |
| font-size: 20px; |
| cursor: pointer; |
| z-index: 998; |
| box-shadow: 0 4px 16px rgba(0,0,0,.5), 0 0 0 1px rgba(var(--accent-rgb),.2); |
| align-items: center; |
| justify-content: center; |
| transition: all .2s ease; |
| } |
|
|
| .mobile-status-fab:active { |
| transform: scale(0.92); |
| box-shadow: 0 2px 8px rgba(0,0,0,.4); |
| } |
|
|
| .mobile-status-fab-icon { |
| font-size: 14px; |
| line-height: 1; |
| } |
|
|
| .mobile-status-backdrop { |
| display: none; |
| position: fixed; |
| top: 0; |
| left: 0; |
| right: 0; |
| bottom: 0; |
| background: rgba(0, 0, 0, 0.85); |
| z-index: 999; |
| backdrop-filter: blur(4px); |
| -webkit-backdrop-filter: blur(4px); |
| } |
|
|
| .mobile-status-backdrop.show { |
| display: block !important; |
| } |
|
|
| .mobile-status-popup { |
| display: none; |
| position: fixed; |
| bottom: 80px; |
| right: 16px; |
| width: 220px; |
| max-width: 80vw; |
| border-radius: 12px; |
| background: rgba(24,54,29,.98); |
| outline: 3px solid rgba(var(--accent-rgb),.6); |
| box-shadow: 0 10px 50px rgba(0,0,0,.7), 0 0 0 1px rgba(var(--accent-rgb),.3); |
| z-index: 1000; |
| flex-direction: column; |
| overflow: hidden; |
| } |
|
|
| .mobile-status-popup.show { |
| display: flex !important; |
| } |
|
|
| .mobile-status-header { |
| display: flex; |
| justify-content: space-between; |
| align-items: center; |
| padding: 10px 14px; |
| background: linear-gradient(135deg, #2a4c30 0%, #234026 100%); |
| border-bottom: 2px solid rgba(var(--btn-start-rgb),.8); |
| } |
|
|
| .mobile-status-title { |
| font-family: var(--pixel-font); |
| font-size: 11px; |
| letter-spacing: 0.8px; |
| color: var(--accent-2); |
| margin: 0; |
| text-shadow: 0 1px 2px rgba(0,0,0,.3); |
| } |
|
|
| .mobile-status-close { |
| background: linear-gradient(135deg, #ff8a5b 0%, #c95f36 100%); |
| color: #fff; |
| border: 2px solid #8c3b21; |
| border-radius: 6px; |
| width: 28px; |
| height: 28px; |
| font-size: 16px; |
| font-weight: bold; |
| cursor: pointer; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| transition: all .2s ease; |
| box-shadow: 0 2px 8px rgba(0,0,0,.4); |
| } |
|
|
| .mobile-status-close:active { |
| transform: scale(0.95); |
| } |
|
|
| .mobile-status-body { |
| display: flex; |
| flex-direction: column; |
| gap: 8px; |
| padding: 12px 14px; |
| } |
|
|
| .mobile-status-chip { |
| font-family: var(--pixel-font); |
| font-size: 11px; |
| padding: 8px 12px; |
| border-radius: 6px; |
| background: rgba(var(--btn-start-rgb),.3); |
| border: 1px solid rgba(var(--btn-start-rgb),.5); |
| color: var(--muted); |
| letter-spacing: .3px; |
| text-align: center; |
| } |
|
|
| .mobile-status-chip.ok { |
| background: linear-gradient(135deg, var(--accent) 0%, #49a25c 100%); |
| color: #0f1d12; |
| border-color: #2e6f3e; |
| box-shadow: 0 2px 8px rgba(var(--accent-rgb),.3); |
| } |
|
|
| .mobile-status-chip.err { |
| background: linear-gradient(135deg, #ff8a5b 0%, #c95f36 100%); |
| color: #2b0c06; |
| border-color: #8c3b21; |
| box-shadow: 0 2px 8px rgba(255,138,91,.3); |
| } |
|
|
| |
| .mobile-lexeme-nav-toggle { |
| display: none; |
| } |
|
|
| .btn-toggle-lexemes { |
| background: linear-gradient(135deg, var(--accent) 0%, #49a25c 100%); |
| color: #0f1d12; |
| border: 2px solid #2e6f3e; |
| border-radius: 6px; |
| padding: 10px 16px; |
| font-family: var(--pixel-font); |
| font-size: 11px; |
| font-weight: 800; |
| cursor: pointer; |
| box-shadow: 0 2px 8px rgba(0,0,0,.3); |
| transition: all .2s ease; |
| display: flex; |
| align-items: center; |
| gap: 6px; |
| text-shadow: 0 1px 1px rgba(255,255,255,.2); |
| } |
|
|
| .btn-toggle-lexemes:hover { |
| background: linear-gradient(135deg, #8ee280 0%, #55b86a 100%); |
| transform: translateY(-1px); |
| } |
|
|
| .btn-toggle-lexemes:active { |
| transform: translateY(0); |
| box-shadow: 0 1px 4px rgba(0,0,0,.3); |
| } |
|
|
| #lexeme-toggle-icon { |
| font-size: 10px; |
| } |
|
|
| |
| @media (min-width: 769px) { |
| .mobile-tokens { display: none !important; } |
| .mobile-tokens-backdrop { display: none !important; } |
| .mobile-lexeme-nav-toggle { display: none !important; } |
| .mobile-status-fab { display: none !important; } |
| .mobile-status-popup { display: none !important; } |
| .mobile-status-backdrop { display: none !important; } |
| } |
|
|
| |
| @media (max-width: 768px) { |
| html { |
| overflow-x: hidden !important; |
| max-width: 100vw; |
| } |
| |
| .mobile-lexeme-nav-toggle { |
| display: flex !important; |
| align-items: center; |
| justify-content: center; |
| } |
| |
| |
| * { |
| -webkit-tap-highlight-color: rgba(var(--accent-rgb),0.2); |
| box-sizing: border-box; |
| } |
| |
| body { |
| -webkit-font-smoothing: antialiased; |
| -moz-osx-font-smoothing: grayscale; |
| touch-action: manipulation; |
| overflow-x: hidden !important; |
| max-width: 100vw; |
| height: 100vh; |
| height: -webkit-fill-available; |
| height: 100dvh; |
| max-height: 100vh; |
| max-height: -webkit-fill-available; |
| max-height: 100dvh; |
| } |
| |
| |
| .workspace, .sidebar, .textFieldCont, .terminalCont, .tokenTable { |
| backdrop-filter: none !important; |
| } |
| |
| body::before { |
| display: none !important; |
| } |
| |
| |
| .navbar, .toolbar, .textFieldCont, .terminalCont { |
| box-shadow: 0 2px 8px rgba(0,0,0,.2) !important; |
| } |
| |
| |
| button, .btn, .tb-btn, .term-btn { |
| -webkit-user-select: none; |
| user-select: none; |
| } |
| } |
|
|
| |
| .tokenTable{ |
| border-collapse:collapse; |
| width:100%; |
| min-width:600px; |
| background:linear-gradient(135deg, rgba(24,54,29,.95) 0%, rgba(18,40,22,.95) 100%); |
| color: white; |
| border-radius:8px; |
| outline:2px solid rgba(var(--btn-start-rgb),.9); |
| box-shadow:0 6px 24px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(var(--accent-rgb),.1); |
| overflow:hidden; |
| } |
|
|
| .tokenTable th{ |
| background:linear-gradient(135deg, var(--btn-end) 0%, #153018 100%); |
| color: #ffd36e; |
| text-align:center; |
| padding:12px 14px; |
| font-family:var(--pixel-font); |
| font-size:11px; |
| letter-spacing:.6px; |
| text-shadow: 0 1px 3px rgba(0,0,0,.4); |
| font-weight: bold; |
| border: 1px solid rgba(var(--btn-start-rgb),.7); |
| position: sticky; |
| top: 0; |
| z-index: 2; |
| } |
|
|
| .tokenTable th::after { |
| content: ''; |
| position: absolute; |
| bottom: 0; |
| left: 0; |
| width: 100%; |
| height: 1px; |
| background: linear-gradient(90deg, transparent, rgba(var(--accent-rgb),.5), transparent); |
| } |
|
|
| .tokenTable td{ |
| text-align:left; |
| padding:10px 14px; |
| font-size:14px; |
| word-break:break-word; |
| border: 1px solid rgba(var(--btn-start-rgb),.4); |
| font-weight: bold; |
| transition: background .15s ease; |
| color: #e8ffe4; |
| } |
| .tokenTable td:first-child{ color: #f2ffef; } |
| .tokenTable td:nth-child(2){ color: #89cff0; } |
| .tokenTable td:nth-child(3){ color: #ffa86a; } |
|
|
| .tokenTable tr:nth-child(even){ background:rgba(16,36,20,.75); } |
| .tokenTable tr:nth-child(odd){ background:rgba(20,44,26,.75); } |
|
|
| .tokenTable tr:hover{ |
| background:rgba(var(--btn-start-rgb),.6) !important; |
| } |
| |
| .tokenTable th:nth-child(3), .tokenTable td:nth-child(3){ |
| font-size: 12px; |
| white-space: normal; |
| overflow-wrap: anywhere; |
| } |
|
|
| |
| .terminalCont{ |
| width:100%; |
| max-width:100%; |
| height:40%; |
| min-height:200px; |
| flex-shrink:0; |
| background:linear-gradient(135deg, rgba(24,54,29,.95) 0%, rgba(18,40,22,.95) 100%); |
| border-radius:8px; |
| border:2px solid rgba(var(--btn-start-rgb),.9); |
| color:var(--ink); |
| margin:0; |
| display:flex; |
| flex-direction:column; |
| overflow:hidden; |
| box-shadow:0 6px 24px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(var(--accent-rgb),.1); |
| backdrop-filter: blur(6px); |
| position:relative; |
| box-sizing:border-box; |
| } |
|
|
| .terminal-header{ |
| display:flex; |
| align-items:center; |
| justify-content:space-between; |
| gap:10px; |
| padding:8px 12px; |
| border-bottom:2px solid rgba(var(--btn-start-rgb),.7); |
| background:linear-gradient(135deg, rgba(26,58,33,.8), rgba(16,36,23,.7)); |
| box-shadow: 0 2px 10px rgba(0,0,0,.2); |
| flex-shrink: 0; |
| } |
| .panel-tabs{ display:flex; gap:6px; } |
| .panel-tabs .tab{ padding:6px 10px; border-radius:4px; border:1px solid transparent; font-family:var(--pixel-font); font-size:10px; color:var(--ink); background:transparent; cursor:pointer; transition:all .2s ease; } |
| .panel-tabs .tab:hover{ background:rgba(26,58,33,.55); } |
| .panel-tabs .tab.active{ background:linear-gradient(135deg, var(--btn-hover-end), var(--btn-end)); border-color:var(--btn-start); box-shadow: inset 0 1px 2px rgba(0,0,0,.25); } |
| .term-title{ |
| font-family:var(--pixel-font); |
| font-size:11px; |
| letter-spacing:.9px; |
| color:var(--accent-2); |
| display:flex; |
| align-items:center; |
| gap:10px; |
| text-shadow: 0 1px 3px rgba(0,0,0,.4); |
| } |
|
|
| .dot{ |
| width:10px; |
| height:10px; |
| border-radius:50%; |
| display:inline-block; |
| animation: pulse 2s ease-in-out infinite; |
| } |
|
|
| @keyframes pulse { |
| 0%, 100% { transform: scale(1); opacity: 1; } |
| 50% { transform: scale(1.1); opacity: 0.8; } |
| } |
|
|
| .dot-green{ |
| background:var(--accent); |
| box-shadow:0 0 8px rgba(var(--accent-rgb),.7), |
| inset 0 0 4px rgba(255,255,255,.3); |
| } |
| .term-actions{ display:flex; gap:8px; } |
| .term-btn{ |
| padding:7px 12px; |
| border:2px solid rgba(var(--btn-start-rgb),.8); |
| border-radius:5px; |
| cursor:pointer; |
| font-family:var(--pixel-font); |
| font-size:10px; |
| font-weight:800; |
| color:var(--ink); |
| background:linear-gradient(135deg, #15301e, #102417); |
| box-shadow:0 3px 10px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.08); |
| transition:all .3s ease; |
| } |
|
|
| .term-btn:hover{ |
| transform: translateY(-2px); |
| background:linear-gradient(135deg, var(--btn-end), #15301e); |
| box-shadow:0 5px 15px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(255,255,255,.12); |
| border-color: rgba(var(--accent-rgb),.6); |
| } |
|
|
| .term-btn[aria-pressed="true"]{ |
| background:linear-gradient(135deg, var(--accent), #49a25c); |
| color:#0f1d12; |
| border-color:#2e6f3e; |
| box-shadow:0 3px 12px rgba(var(--accent-rgb),.5), |
| inset 0 1px 0 rgba(255,255,255,.2); |
| } |
|
|
| .term-btn.danger{ |
| background:linear-gradient(135deg, #5b2a1e, #3a1b14); |
| border-color:#8c3b21; |
| box-shadow:0 3px 10px rgba(255,138,91,.3); |
| } |
|
|
| .term-btn.danger:hover{ |
| background:linear-gradient(135deg, #7a3a2a, #5b2a1e); |
| box-shadow:0 5px 15px rgba(255,138,91,.5); |
| } |
|
|
| |
| .term-status{ display:flex; flex-wrap:nowrap; gap:6px; align-items:center; padding:6px 8px; border-bottom:2px solid rgba(var(--btn-start-rgb),.4); background:linear-gradient(135deg, rgba(18,40,22,.7), rgba(12,28,17,.7)); } |
| .term-status .status-chip{ padding:4px 8px; font-size:10px; white-space:nowrap; } |
|
|
| .terminal-body{ flex:1; padding:12px; position:relative; overflow:auto; border:2px solid rgba(var(--btn-start-rgb),.6); border-radius:6px; box-shadow: inset 0 2px 6px rgba(0,0,0,.5); background:linear-gradient(135deg,var(--panel-2),#0a1a0e 60%); } |
| #terminal{ |
| height:100%; width:100%; background:#0a1a0e; color:var(--ink); |
| border:none; border-radius:4px; |
| padding:0; overflow:hidden; box-shadow: inset 0 2px 8px rgba(0,0,0,.4); |
| font-family: 'Courier New', monospace; font-size:14px; line-height:1.4; |
| } |
| .panel-placeholder{ position:absolute; inset:12px; background:linear-gradient(135deg, rgba(24,54,29,.6), rgba(18,40,22,.6)); color:var(--muted); border:1px dashed rgba(var(--btn-start-rgb),.6); border-radius:6px; display:flex; align-items:center; justify-content:center; font-family:var(--pixel-font); font-size:10px; letter-spacing:.6px; } |
| .token-value{ white-space:pre; } |
|
|
| |
| .analysis-status{ display:flex; gap:12px; align-items:center; padding:10px 16px; height:auto; flex-shrink:0; } |
| .status-chip{ padding:6px 12px; border:2px solid rgba(var(--btn-start-rgb),.8); background:linear-gradient(135deg, rgba(16,36,23,.95) 0%, rgba(12,28,17,.95) 100%); border-radius:4px; font-family:var(--pixel-font); font-size:10px; color:var(--ink); box-shadow: 0 2px 6px rgba(0,0,0,.2), inset 0 1px 0 rgba(255,255,255,.05); text-align: center; white-space: nowrap; box-sizing: border-box; } |
| .status-chip.ok{ background:linear-gradient(135deg, var(--accent) 0%, #49a25c 100%); color:#0f1d12; border-color:#2e6f3e; box-shadow: 0 2px 8px rgba(var(--accent-rgb),.3), inset 0 1px 0 rgba(255,255,255,.2); } |
| .status-chip.err{ background:linear-gradient(135deg, #ff8a5b 0%, #c95f36 100%); color:#2b0c06; border-color:#8c3b21; box-shadow: 0 2px 8px rgba(255,138,91,.3), inset 0 1px 0 rgba(255,255,255,.2); } |
|
|
| |
| .sr-only{ position:absolute !important; width:1px !important; height:1px !important; padding:0 !important; margin:-1px !important; overflow:hidden !important; clip:rect(0,0,0,0) !important; white-space:nowrap !important; border:0 !important; } |
|
|
| |
| .hud{ display:flex; align-items:center; gap:14px; } |
| .coin-badge{ background:linear-gradient(135deg, #ffd36e 0%, #ffb800 100%); color:#3a271c; font-weight:800; padding:6px 12px; border-radius:6px; border:2px solid #f3a300; box-shadow: 0 3px 10px rgba(var(--accent-2-rgb),.4), inset 0 1px 0 rgba(255,231,169,.6); min-width:50px; text-align:center; font-family:var(--pixel-font); transition: transform .2s ease; } |
| .coin-badge:hover{ transform: scale(1.05); } |
| .energy-wrap{ display:flex; align-items:center; gap:10px; } |
| .energy-bar{ width:170px; height:16px; background:#0a1a0e; border-radius:8px; padding:2px; border:2px solid #2d5d38; box-shadow: inset 0 2px 6px rgba(0,0,0,.4), 0 2px 8px rgba(0,0,0,.2); } |
| .energy-fill{ height:100%; background:linear-gradient(90deg, var(--accent) 0%, #b6ff85 100%); border-radius:6px; box-shadow:0 0 12px rgba(var(--accent-rgb),.6), inset 0 1px 0 rgba(255,255,255,.3); transition: width .3s ease; } |
| .energy-label{ color:var(--ink); font-weight:700; font-family:var(--pixel-font); font-size:12px; text-shadow: 0 1px 2px rgba(0,0,0,.3); } |
|
|
|
|
| |
| .statusbar{ position:fixed; bottom:0; left:0; right:0; height:28px; background:linear-gradient(180deg, #15301e, var(--panel-2)); border-top:3px solid var(--btn-start); color:var(--ink); display:flex; align-items:center; justify-content:space-between; padding:0 12px; font-size:12px; } |
| .sb-left{ opacity:.85; } |
| .sb-right{ opacity:.85; } |
|
|
| |
|
|
| |
| .btn{ |
| border-radius:6px; |
| padding:12px 20px; |
| border:2px solid rgba(var(--btn-start-rgb),.8); |
| background:linear-gradient(135deg, var(--btn-end) 0%, #15301e 100%); |
| color:var(--ink); |
| font-weight:800; |
| cursor:pointer; |
| font-family:var(--pixel-font); |
| font-size:11px; |
| transition: all .3s ease; |
| box-shadow: 0 4px 12px rgba(0,0,0,.3), inset 0 1px 0 rgba(255,255,255,.08); |
| position: relative; |
| overflow: hidden; |
| } |
|
|
| .btn::before { |
| content: ''; |
| position: absolute; |
| top: 0; |
| left: -100%; |
| width: 100%; |
| height: 100%; |
| background: linear-gradient(90deg, transparent, rgba(var(--accent-rgb),.25), transparent); |
| transition: left .5s ease; |
| } |
|
|
| .btn:hover::before { |
| left: 100%; |
| } |
|
|
| .btn:hover{ |
| background:linear-gradient(135deg, var(--btn-hover-end) 0%, var(--btn-end) 100%); |
| transform: translateY(-2px); |
| box-shadow: 0 6px 20px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(255,255,255,.12); |
| border-color: rgba(var(--accent-rgb),.7); |
| } |
|
|
| .btn:active{ |
| transform: translateY(0); |
| box-shadow: 0 2px 8px rgba(0,0,0,.3); |
| } |
|
|
| .btn-primary{ |
| background:linear-gradient(135deg, var(--btn-start) 0%, var(--btn-end) 100%); |
| border-color:var(--btn-end); |
| color:var(--accent); |
| text-shadow:0 1px 2px rgba(0,0,0,.5); |
| box-shadow: 0 4px 16px rgba(0,0,0,.4), |
| inset 0 1px 0 rgba(var(--accent-rgb),.15); |
| min-width: 140px; |
| padding: 10px 32px; |
| } |
|
|
| .btn-primary:hover{ |
| background:linear-gradient(135deg, var(--btn-hover-start) 0%, var(--btn-hover-end) 100%); |
| box-shadow: 0 6px 24px rgba(0,0,0,.5), |
| inset 0 1px 0 rgba(var(--accent-rgb),.25); |
| color:#8ee280; |
| } |
|
|
| |
| .run-dropdown { |
| position: relative; |
| display: flex; |
| gap: 0; |
| } |
|
|
| .run-dropdown .btn-primary { |
| border-radius: 8px 0 0 8px; |
| min-width: 120px; |
| } |
|
|
| .btn-dropdown-toggle { |
| background: linear-gradient(135deg, var(--btn-start) 0%, var(--btn-end) 100%); |
| border: 2px solid var(--btn-end); |
| border-left: 1px solid rgba(var(--accent-rgb),0.2); |
| border-radius: 0 8px 8px 0; |
| color: var(--accent); |
| font-family: 'Press Start 2P', monospace; |
| font-size: 10px; |
| padding: 10px 12px; |
| cursor: pointer; |
| text-shadow: 0 1px 2px rgba(0,0,0,.5); |
| box-shadow: 0 4px 16px rgba(0,0,0,.4), inset 0 1px 0 rgba(var(--accent-rgb),.15); |
| transition: all 0.2s ease; |
| } |
|
|
| .btn-dropdown-toggle:hover { |
| background: linear-gradient(135deg, var(--btn-hover-start) 0%, var(--btn-hover-end) 100%); |
| color: #8ee280; |
| box-shadow: 0 6px 24px rgba(0,0,0,.5), inset 0 1px 0 rgba(var(--accent-rgb),.25); |
| } |
|
|
| .run-dropdown-menu { |
| position: absolute; |
| top: 100%; |
| right: 0; |
| margin-top: 8px; |
| background: linear-gradient(135deg, var(--btn-start) 0%, var(--btn-end) 100%); |
| border: 2px solid var(--btn-end); |
| border-radius: 8px; |
| min-width: 160px; |
| box-shadow: 0 8px 32px rgba(0,0,0,.6); |
| z-index: 1000; |
| overflow: hidden; |
| } |
|
|
| .run-dropdown-menu.hidden { |
| display: none; |
| } |
|
|
| .run-dropdown-item { |
| padding: 12px 20px; |
| color: var(--accent); |
| font-family: 'Press Start 2P', monospace; |
| font-size: 10px; |
| cursor: pointer; |
| transition: all 0.2s ease; |
| border-bottom: 1px solid rgba(var(--accent-rgb),0.1); |
| } |
|
|
| .run-dropdown-item:last-child { |
| border-bottom: none; |
| } |
|
|
| .run-dropdown-item:hover { |
| background: rgba(var(--accent-rgb),0.15); |
| color: #8ee280; |
| } |
|
|
| |
| .garden-wood{ border-bottom: 3px solid #3f2c20; } |
|
|
| |
| @media (max-height: 700px){ .mainCont{ padding-bottom: 10px; } } |
|
|
| |
|
|
| |
| @media (max-width: 1024px) and (min-width: 769px) { |
| .workspace { |
| gap: 8px; |
| } |
| |
| .sidebar { |
| width: 280px; |
| min-width: 200px; |
| } |
| |
| .ide-logo { |
| height: 24px; |
| } |
| |
| .side-token-table { |
| font-size: 11px; |
| } |
| } |
|
|
| |
| @media (max-width: 768px){ |
| |
| *, *::before, *::after { |
| animation-duration: 0.01s !important; |
| transition-duration: 0.15s !important; |
| } |
| |
| body::before { |
| display: none; |
| } |
| |
| .coin-badge{ font-size:10px; padding:3px 8px; } |
| |
| .workspace { |
| flex-direction: column; |
| flex: 1; |
| min-height: 0; |
| overflow-y: auto; |
| overflow-x: hidden; |
| padding: 8px; |
| gap: 8px; |
| max-width: 100vw; |
| box-sizing: border-box; |
| } |
| .sidebar { display: none !important; } |
| .sidebarResizer { display: none !important; } |
| |
| .workspace-main { |
| overflow: hidden; |
| height: auto; |
| gap: 8px; |
| max-width: 100%; |
| width: 100%; |
| } |
| |
| |
| .mainCont { |
| flex-direction: column; |
| height: auto; |
| min-height: 250px; |
| padding: 0; |
| max-width: 100%; |
| overflow: hidden; |
| } |
| |
| .textFieldCont { |
| width: 100%; |
| min-width: 100%; |
| height: 45vh; |
| min-height: 200px; |
| max-height: 350px; |
| margin-bottom: 0; |
| padding: 6px; |
| } |
| |
| .widthResizer { display: none; } |
| |
| |
| .outputCont { display:none !important; } |
| |
| |
| .terminalCont { |
| height: 35vh; |
| min-height: 180px; |
| max-height: 300px; |
| flex-shrink: 0; |
| border-radius: 6px; |
| overflow: hidden; |
| width: 100%; |
| max-width: 100%; |
| box-sizing: border-box; |
| } |
| |
| .terminal-header { |
| max-width: 100%; |
| overflow: hidden; |
| } |
| |
| .terminal-body { |
| min-height: 120px; |
| max-height: 200px; |
| padding: 8px; |
| } |
| |
| #terminal { |
| font-size: 11px; |
| line-height: 1.3; |
| } |
| |
| |
| .tokenTable { |
| font-size: 11px; |
| min-width: unset; |
| width: 100%; |
| } |
| |
| .tokenTable th { |
| font-size: 9px; |
| padding: 8px 6px; |
| letter-spacing: 0.2px; |
| } |
| |
| .tokenTable td { |
| font-size: 11px; |
| padding: 6px; |
| } |
| |
| |
| .mobile-tokens { |
| width: 95%; |
| max-width: none; |
| height: 60vh; |
| max-height: none; |
| top: 50%; |
| transform: translate(-50%, -50%); |
| border-radius: 12px; |
| } |
| |
| .mobile-tokens .tokenTable { |
| min-width: unset; |
| } |
| |
| .mobile-tokens .tokenTable tbody { |
| height: calc(60vh - 100px); |
| max-height: none; |
| } |
| |
| .mobile-tokens-header { |
| padding: 10px 12px; |
| } |
| |
| |
| .ide-titlebar { |
| height: 36px; |
| min-height: 36px; |
| padding: 0 6px; |
| gap: 6px; |
| } |
| |
| .ide-logo { |
| height: 22px; |
| } |
| |
| .ide-titlebar-center { |
| display: none; |
| } |
| |
| .ide-menu-btn { |
| padding: 4px 6px; |
| font-size: 9px; |
| flex-shrink: 0; |
| } |
| |
| |
| .mobile-lexeme-nav-toggle { |
| flex: 0 1 auto; |
| display: flex; |
| justify-content: center; |
| min-width: 0; |
| overflow: hidden; |
| } |
| |
| .btn-toggle-lexemes { |
| padding: 4px 8px; |
| font-size: 8px; |
| min-height: 28px; |
| white-space: nowrap; |
| gap: 3px; |
| overflow: hidden; |
| text-overflow: ellipsis; |
| } |
| |
| #lexeme-toggle-icon { |
| font-size: 7px; |
| } |
| |
| |
| .run-dropdown { |
| flex: 0 0 auto; |
| } |
| |
| .ide-titlebar .run-dropdown .btn-primary { |
| min-width: 60px; |
| padding: 6px 8px; |
| font-size: 8px; |
| min-height: 32px; |
| } |
| |
| .ide-run-icon { |
| display: none; |
| } |
| |
| #run-mode-text { |
| font-size: 8px; |
| } |
| |
| .ide-titlebar .btn-dropdown-toggle { |
| padding: 6px 6px; |
| font-size: 8px; |
| min-height: 32px; |
| } |
| |
| .run-dropdown-menu { |
| min-width: 140px; |
| right: 0; |
| left: auto; |
| position: fixed; |
| top: auto; |
| margin-top: 4px; |
| z-index: 9999; |
| } |
| |
| .run-dropdown-item { |
| padding: 14px 16px; |
| font-size: 10px; |
| -webkit-tap-highlight-color: rgba(var(--accent-rgb),0.3); |
| cursor: pointer; |
| } |
| |
| |
| .ide-tabbar { |
| height: 30px; |
| min-height: 30px; |
| } |
| |
| .ide-tab { |
| padding: 0 10px; |
| } |
| |
| .ide-tab-icon { |
| font-size: 11px; |
| } |
| |
| .ide-tab .current-file-name { |
| font-size: 9px; |
| max-width: 140px; |
| } |
| |
| |
| .terminal-header { |
| flex-wrap: nowrap; |
| gap: 6px; |
| padding: 6px 8px; |
| } |
| |
| .term-title { |
| font-size: 9px; |
| gap: 6px; |
| } |
| |
| .dot { |
| width: 8px; |
| height: 8px; |
| } |
| |
| .term-actions { |
| gap: 4px; |
| flex-shrink: 0; |
| } |
| |
| .term-btn { |
| padding: 6px 10px; |
| font-size: 8px; |
| min-height: 28px; |
| } |
| |
| |
| .ide-statusbar { |
| height: 22px; |
| min-height: 22px; |
| padding: 0 6px; |
| flex-shrink: 0; |
| position: fixed; |
| bottom: 0; |
| left: 0; |
| right: 0; |
| z-index: 100; |
| } |
|
|
| .ide-statusbar .status-chip { |
| font-size: 7px; |
| padding: 2px 5px; |
| } |
|
|
| .ide-status-lang { |
| font-size: 7px; |
| } |
|
|
| .mobile-status-fab { |
| display: none !important; |
| } |
|
|
| .mobile-status-popup { |
| display: none !important; |
| } |
|
|
| .mobile-status-backdrop { |
| display: none !important; |
| } |
|
|
| |
| .file-menu-wrap { |
| position: static; |
| } |
|
|
| .file-popup { |
| position: fixed; |
| top: auto; |
| bottom: 0; |
| left: 0; |
| right: 0; |
| min-width: 100vw; |
| border-radius: 16px 16px 0 0; |
| padding: 10px 0 env(safe-area-inset-bottom, 12px); |
| animation: filePopUpMobile .2s ease-out; |
| } |
|
|
| @keyframes filePopUpMobile { |
| from { opacity: 0; transform: translateY(40px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
|
|
| .file-popup-item { |
| padding: 16px 24px; |
| font-size: 13px; |
| min-height: 44px; |
| display: flex; |
| align-items: center; |
| } |
|
|
| .file-popup-divider { |
| margin: 4px 16px; |
| } |
| } |
|
|
| |
| @media (max-width: 480px) { |
| .ide-titlebar { |
| height: 32px; |
| min-height: 32px; |
| padding: 0 6px; |
| } |
| |
| .ide-logo { |
| height: 18px; |
| } |
| |
| .ide-menu-btn { |
| padding: 4px 6px; |
| font-size: 8px; |
| } |
| |
| .btn-toggle-lexemes { |
| padding: 6px 8px; |
| font-size: 8px; |
| } |
| |
| .ide-titlebar .run-dropdown .btn-primary { |
| min-width: 50px; |
| padding: 6px 6px; |
| font-size: 8px; |
| } |
| |
| .ide-titlebar .btn-dropdown-toggle { |
| padding: 6px 6px; |
| font-size: 8px; |
| } |
| |
| .ide-tabbar { |
| height: 26px; |
| min-height: 26px; |
| } |
| |
| .ide-tab { |
| padding: 0 8px; |
| } |
| |
| .ide-tab .current-file-name { |
| max-width: 100px; |
| font-size: 8px; |
| } |
| |
| .ide-tab-icon { |
| font-size: 10px; |
| } |
| |
| .ide-statusbar .status-chip { |
| font-size: 6px; |
| padding: 2px 4px; |
| } |
|
|
| .textFieldCont { |
| height: 40vh; |
| min-height: 180px; |
| padding: 4px; |
| } |
| |
| .terminalCont { |
| height: 30vh; |
| min-height: 150px; |
| } |
| |
| .mobile-tokens { |
| width: 98%; |
| height: 70vh; |
| top: 48%; |
| border-radius: 8px; |
| } |
| |
| .mobile-tokens-header { |
| padding: 8px 10px; |
| } |
| |
| .mobile-tokens-title { |
| font-size: 10px; |
| } |
| |
| .mobile-tokens-close { |
| width: 28px; |
| height: 28px; |
| font-size: 14px; |
| } |
| |
| .tokenTable th { |
| font-size: 8px; |
| padding: 6px 4px; |
| } |
| |
| .tokenTable td { |
| font-size: 10px; |
| padding: 4px; |
| } |
| |
| .term-btn { |
| padding: 4px 6px; |
| font-size: 7px; |
| } |
| |
| #terminal { |
| font-size: 10px; |
| } |
| } |
|
|
| |
| @media (max-width: 768px) and (orientation: landscape) { |
| .workspace { |
| flex: 1; |
| min-height: 0; |
| } |
| |
| .textFieldCont { |
| height: 50vh; |
| min-height: 150px; |
| max-height: 250px; |
| } |
| |
| .terminalCont { |
| height: 40vh; |
| min-height: 120px; |
| max-height: 200px; |
| } |
| |
| .mobile-tokens { |
| height: 80vh; |
| width: 90%; |
| top: 50%; |
| } |
| |
| .mobile-tokens .tokenTable tbody { |
| height: calc(80vh - 100px); |
| } |
| } |
|
|
| |
| @media (hover: none) and (pointer: coarse) { |
| |
| .ide-menu-btn, |
| .term-btn, |
| .btn, |
| .btn-primary, |
| .btn-dropdown-toggle, |
| .btn-toggle-lexemes { |
| min-height: 44px; |
| min-width: 44px; |
| } |
| |
| .run-dropdown-item { |
| padding: 14px 16px; |
| } |
| |
| |
| .ide-menu-btn:hover, |
| .term-btn:hover, |
| .btn:hover { |
| transform: none; |
| } |
|
|
| .file-popup-item { |
| min-height: 44px; |
| } |
| |
| |
| .workspace, |
| .mobile-tokens .tokenTable tbody, |
| .terminal-body { |
| -webkit-overflow-scrolling: touch; |
| scroll-behavior: smooth; |
| } |
| } |
|
|
| |
|
|
| .btn-chat-toggle { |
| display: flex; |
| align-items: center; |
| gap: 4px; |
| font-family: var(--pixel-font); |
| font-size: 11px; |
| background: linear-gradient(135deg, var(--btn-start) 0%, var(--btn-end) 100%); |
| border: 2px solid rgba(var(--btn-start-rgb),.8); |
| border-radius: 5px; |
| padding: 4px 18px; |
| cursor: pointer; |
| transition: all .3s ease; |
| box-shadow: 0 3px 8px rgba(0,0,0,.3), inset 0 1px 0 rgba(var(--accent-rgb),.15); |
| white-space: nowrap; |
| } |
| .btn-chat-toggle:hover { |
| background: linear-gradient(135deg, var(--btn-hover-start) 0%, var(--btn-hover-end) 100%); |
| border-color: rgba(var(--accent-rgb),.7); |
| transform: translateY(-2px); |
| box-shadow: 0 6px 20px rgba(0,0,0,.4), inset 0 1px 0 rgba(var(--accent-rgb),.25); |
| } |
| .btn-chat-toggle:active { |
| transform: translateY(0); |
| box-shadow: 0 2px 8px rgba(0,0,0,.3); |
| } |
| .chat-btn-text { |
| color: var(--accent); |
| font-size: 8px; |
| font-weight: 800; |
| text-shadow: 0 1px 2px rgba(0,0,0,.5); |
| } |
|
|
| |
| .chat-backdrop { |
| display: none; |
| position: fixed; |
| inset: 0; |
| background: rgba(0,0,0,.5); |
| z-index: 998; |
| } |
| .chat-backdrop.show { |
| display: block; |
| } |
|
|
| |
| .chat-panel { |
| position: fixed; |
| right: -420px; |
| top: 0; |
| bottom: 0; |
| width: 420px; |
| max-width: 100vw; |
| background: var(--bg); |
| border-left: 1px solid rgba(var(--accent-rgb),.15); |
| box-shadow: -2px 0 16px rgba(0,0,0,.4); |
| z-index: 999; |
| display: flex; |
| flex-direction: column; |
| transition: right .3s cubic-bezier(.4,0,.2,1); |
| box-sizing: border-box; |
| } |
| .chat-panel.open { |
| right: 0; |
| } |
|
|
| |
| .chat-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| padding: 12px 16px; |
| background: linear-gradient(180deg, var(--panel) 0%, rgba(24,54,29,.95) 100%); |
| border-bottom: 1px solid rgba(var(--accent-rgb),.18); |
| flex-shrink: 0; |
| min-height: 52px; |
| box-sizing: border-box; |
| } |
| .chat-header-left { |
| display: flex; |
| flex-direction: column; |
| gap: 2px; |
| } |
| .chat-title { |
| font-family: var(--pixel-font); |
| font-size: 10px; |
| color: var(--accent); |
| letter-spacing: .5px; |
| } |
| .chat-subtitle { |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 11px; |
| color: var(--muted); |
| letter-spacing: .2px; |
| opacity: .75; |
| } |
| .chat-header-actions { |
| display: flex; |
| gap: 4px; |
| } |
| .chat-header-btn { |
| background: transparent; |
| border: 1px solid transparent; |
| color: var(--muted); |
| font-size: 14px; |
| width: 28px; |
| height: 28px; |
| border-radius: 4px; |
| cursor: pointer; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| transition: all .15s ease; |
| } |
| .chat-header-btn:hover { |
| background: rgba(var(--accent-rgb),.08); |
| color: var(--ink); |
| border-color: rgba(var(--accent-rgb),.2); |
| } |
|
|
| |
| .chat-messages { |
| flex: 1 1 0; |
| min-height: 0; |
| overflow-y: auto; |
| overflow-x: hidden; |
| padding: 0; |
| display: flex; |
| flex-direction: column; |
| } |
|
|
| |
| .chat-msg { |
| padding: 12px 20px; |
| border-bottom: 1px solid rgba(var(--accent-rgb),.06); |
| display: flex; |
| gap: 12px; |
| align-items: flex-start; |
| width: 100%; |
| box-sizing: border-box; |
| animation: chatMsgIn .25s ease-out; |
| } |
| @keyframes chatMsgIn { |
| from { opacity: 0; transform: translateY(6px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
| .chat-msg.user { |
| background: rgba(var(--accent-rgb),.08); |
| border-left: 3px solid rgba(var(--accent-rgb),.25); |
| } |
| .chat-msg.assistant { |
| background: rgba(13,27,15,.3); |
| border-left: 3px solid rgba(var(--accent-rgb),.08); |
| } |
|
|
| |
| .chat-avatar { |
| width: 28px; |
| height: 28px; |
| border-radius: 6px; |
| flex-shrink: 0; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| font-size: 15px; |
| line-height: 1; |
| margin-top: 1px; |
| } |
| .chat-msg.user .chat-avatar { |
| background: rgba(var(--accent-2-rgb),.12); |
| color: var(--accent-2); |
| } |
| .chat-msg.assistant .chat-avatar { |
| background: rgba(var(--accent-rgb),.18); |
| color: var(--accent); |
| } |
|
|
| |
| .chat-bubble { |
| flex: 1; |
| min-width: 0; |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 14px; |
| line-height: 1.6; |
| color: var(--ink); |
| word-wrap: break-word; |
| overflow-wrap: break-word; |
| word-break: break-word; |
| padding: 0; |
| } |
| .chat-msg.user .chat-bubble { |
| color: var(--ink); |
| font-size: 13.5px; |
| } |
| .chat-msg.assistant .chat-bubble { |
| color: #ddf0de; |
| } |
|
|
| |
| .chat-bubble p { |
| margin: 0 0 5px 0; |
| } |
| .chat-bubble p:last-child { |
| margin-bottom: 0; |
| } |
|
|
| |
| .chat-bubble ol, |
| .chat-bubble ul { |
| margin: 4px 0; |
| padding-left: 18px; |
| } |
| .chat-bubble li { |
| margin-bottom: 2px; |
| line-height: 1.5; |
| } |
|
|
| |
| .chat-bubble .code-block-wrap { |
| position: relative; |
| margin: 6px 0; |
| border-radius: 8px; |
| overflow: hidden; |
| border: 1px solid rgba(var(--accent-rgb),.12); |
| background: #0a140c; |
| } |
| .chat-bubble .code-block-header { |
| display: flex; |
| align-items: center; |
| justify-content: space-between; |
| padding: 4px 10px; |
| background: rgba(var(--accent-rgb),.06); |
| border-bottom: 1px solid rgba(var(--accent-rgb),.08); |
| min-height: 26px; |
| } |
| .chat-bubble .code-block-lang { |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 10px; |
| color: var(--muted); |
| text-transform: uppercase; |
| letter-spacing: .5px; |
| } |
| .chat-copy-btn { |
| background: transparent; |
| border: 1px solid rgba(var(--accent-rgb),.15); |
| border-radius: 4px; |
| color: var(--muted); |
| font-size: 10.5px; |
| padding: 2px 8px; |
| cursor: pointer; |
| transition: all .15s ease; |
| font-family: 'Baloo 2', sans-serif; |
| } |
| .chat-copy-btn:hover { |
| background: rgba(var(--accent-rgb),.12); |
| color: var(--ink); |
| border-color: rgba(var(--accent-rgb),.3); |
| } |
| .chat-copy-btn.copied { |
| color: var(--accent); |
| border-color: var(--accent); |
| } |
| .chat-bubble .code-block-wrap pre { |
| margin: 0; |
| border: none; |
| border-radius: 0; |
| padding: 10px 12px; |
| background: transparent; |
| } |
| .chat-bubble pre { |
| background: #0a140c; |
| border: 1px solid rgba(var(--accent-rgb),.12); |
| border-radius: 8px; |
| padding: 10px 12px; |
| margin: 6px 0; |
| overflow-x: auto; |
| max-width: 100%; |
| box-sizing: border-box; |
| font-family: 'Consolas', 'Courier New', monospace; |
| font-size: 12.5px; |
| line-height: 1.5; |
| color: var(--accent); |
| white-space: pre; |
| position: relative; |
| } |
| |
| .chat-bubble pre::-webkit-scrollbar { |
| height: 4px; |
| } |
| .chat-bubble pre::-webkit-scrollbar-track { |
| background: transparent; |
| } |
| .chat-bubble pre::-webkit-scrollbar-thumb { |
| background: rgba(var(--accent-rgb),.12); |
| border-radius: 2px; |
| } |
| .chat-bubble pre::-webkit-scrollbar-thumb:hover { |
| background: rgba(var(--accent-rgb),.22); |
| } |
| .chat-bubble code { |
| font-family: 'Consolas', 'Courier New', monospace; |
| font-size: 12px; |
| background: rgba(var(--accent-rgb),.08); |
| padding: 2px 5px; |
| border-radius: 3px; |
| color: var(--accent); |
| } |
| .chat-bubble pre code { |
| background: transparent; |
| padding: 0; |
| font-size: 12px; |
| } |
|
|
| |
| .chat-bubble strong { |
| color: #fff; |
| font-weight: 700; |
| letter-spacing: .1px; |
| } |
| .chat-bubble em { |
| color: var(--muted); |
| } |
|
|
| |
| .chat-fallback-badge { |
| display: inline-block; |
| font-size: 10px; |
| color: #f5c842; |
| background: rgba(245, 200, 66, 0.1); |
| border: 1px solid rgba(245, 200, 66, 0.3); |
| border-radius: 4px; |
| padding: 3px 8px; |
| margin-bottom: 8px; |
| letter-spacing: 0.3px; |
| } |
|
|
| |
| .chat-msg-tags { |
| display: flex; |
| gap: 5px; |
| flex-wrap: wrap; |
| margin-bottom: 6px; |
| } |
| .chat-tag { |
| font-family: var(--pixel-font); |
| font-size: 7px; |
| padding: 2px 7px; |
| border-radius: 3px; |
| letter-spacing: .5px; |
| text-transform: uppercase; |
| font-weight: 400; |
| line-height: 1.4; |
| } |
| .chat-tag.tag-syntax { background: rgba(var(--accent-rgb),.12); color: var(--accent); border: 1px solid rgba(var(--accent-rgb),.2); } |
| .chat-tag.tag-semantic { background: rgba(var(--accent-2-rgb),.1); color: var(--accent-2); border: 1px solid rgba(var(--accent-2-rgb),.2); } |
| .chat-tag.tag-code { background: rgba(138,180,255,.1); color: #8ab4ff; border: 1px solid rgba(138,180,255,.2); } |
| .chat-tag.tag-fix { background: rgba(255,138,91,.1); color: var(--accent-3); border: 1px solid rgba(255,138,91,.2); } |
| .chat-tag.tag-info { background: rgba(166,195,169,.08); color: var(--muted); border: 1px solid rgba(166,195,169,.15); } |
|
|
| |
| .chat-actions { |
| display: flex; |
| gap: 6px; |
| flex-wrap: wrap; |
| margin-top: 8px; |
| padding-top: 8px; |
| border-top: 1px solid rgba(var(--accent-rgb),.06); |
| } |
| .chat-action-btn { |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 11px; |
| color: var(--muted); |
| background: rgba(var(--accent-rgb),.04); |
| border: 1px solid rgba(var(--accent-rgb),.12); |
| border-radius: 6px; |
| padding: 4px 10px; |
| cursor: pointer; |
| transition: all .15s ease; |
| display: flex; |
| align-items: center; |
| gap: 4px; |
| } |
| .chat-action-btn:hover { |
| background: rgba(var(--accent-rgb),.1); |
| color: var(--ink); |
| border-color: rgba(var(--accent-rgb),.3); |
| } |
| .chat-action-btn .action-icon { |
| font-size: 12px; |
| } |
|
|
| |
| .chat-msg-error .chat-bubble { |
| color: var(--accent-3); |
| } |
| .chat-error-content { |
| display: flex; |
| flex-direction: column; |
| align-items: flex-start; |
| gap: 8px; |
| } |
| .chat-error-text { |
| color: var(--accent-3) !important; |
| } |
| .chat-retry-btn { |
| height: 30px; |
| padding: 0 10px; |
| display: inline-flex; |
| align-items: center; |
| gap: 6px; |
| color: var(--accent); |
| background: rgba(var(--accent-rgb), .08); |
| border: 1px solid rgba(var(--accent-rgb), .28); |
| border-radius: 6px; |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 12px; |
| cursor: pointer; |
| transition: background .15s ease, border-color .15s ease, color .15s ease; |
| } |
| .chat-retry-btn svg { |
| width: 14px; |
| height: 14px; |
| fill: none; |
| stroke: currentColor; |
| stroke-width: 2; |
| stroke-linecap: round; |
| stroke-linejoin: round; |
| } |
| .chat-retry-btn:hover:not(:disabled) { |
| color: var(--ink); |
| background: rgba(var(--accent-rgb), .16); |
| border-color: rgba(var(--accent-rgb), .52); |
| } |
| .chat-retry-btn:disabled { |
| opacity: .42; |
| cursor: not-allowed; |
| } |
|
|
| |
| .chat-typing { |
| display: flex; |
| gap: 4px; |
| padding: 4px 0; |
| align-items: center; |
| } |
| .chat-typing span { |
| width: 6px; |
| height: 6px; |
| background: var(--accent); |
| border-radius: 50%; |
| animation: chatBounce .6s infinite alternate; |
| opacity: .4; |
| } |
| .chat-typing span:nth-child(2) { animation-delay: .2s; } |
| .chat-typing span:nth-child(3) { animation-delay: .4s; } |
| @keyframes chatBounce { |
| to { opacity: 1; transform: translateY(-3px); } |
| } |
|
|
| |
| .chat-thinking { |
| display: flex; |
| flex-direction: column; |
| gap: 6px; |
| padding: 8px 0; |
| max-width: 240px; |
| } |
| .chat-thinking-status { |
| display: flex; |
| align-items: center; |
| gap: 8px; |
| font-family: var(--pixel-font); |
| font-size: 8px; |
| color: rgba(var(--accent-rgb), .8); |
| animation: thinkFadeIn .3s ease; |
| } |
| .chat-thinking-status .think-icon { |
| width: 16px; |
| height: 16px; |
| border: 2px solid rgba(var(--accent-rgb), .3); |
| border-top-color: var(--accent); |
| border-radius: 50%; |
| animation: thinkSpin .8s linear infinite; |
| flex-shrink: 0; |
| } |
| .chat-thinking-status .think-text { |
| opacity: 1; |
| transition: opacity .3s ease; |
| } |
| .chat-thinking-status.fading .think-text { |
| opacity: 0; |
| } |
| .chat-thinking-progress { |
| height: 2px; |
| background: rgba(var(--accent-rgb), .1); |
| border-radius: 1px; |
| overflow: hidden; |
| } |
| .chat-thinking-progress-bar { |
| height: 100%; |
| background: linear-gradient(90deg, var(--accent), rgba(var(--accent-rgb), .4)); |
| border-radius: 1px; |
| width: 0%; |
| animation: thinkProgress 2s ease-out forwards; |
| } |
| @keyframes thinkSpin { |
| to { transform: rotate(360deg); } |
| } |
| @keyframes thinkFadeIn { |
| from { opacity: 0; transform: translateY(4px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
| @keyframes thinkProgress { |
| 0% { width: 0%; } |
| 30% { width: 45%; } |
| 60% { width: 70%; } |
| 90% { width: 85%; } |
| 100% { width: 95%; } |
| } |
|
|
| |
| .chat-input-area { |
| padding: 12px 16px 14px; |
| border-top: 1px solid rgba(var(--accent-rgb),.15); |
| flex-shrink: 0; |
| background: linear-gradient(0deg, var(--panel) 0%, rgba(24,54,29,.95) 100%); |
| } |
| .chat-context-hint { |
| margin-bottom: 8px; |
| } |
| .chat-context-hint label { |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 11px; |
| color: var(--muted); |
| cursor: pointer; |
| display: flex; |
| align-items: center; |
| gap: 6px; |
| } |
| .chat-context-hint input[type="checkbox"] { |
| accent-color: var(--accent); |
| } |
| .chat-input-row { |
| display: flex; |
| gap: 8px; |
| align-items: flex-end; |
| } |
| .chat-input-wrap { |
| flex: 1; |
| display: flex; |
| align-items: center; |
| background: var(--bg); |
| border: 1px solid rgba(var(--accent-rgb),.2); |
| border-radius: 8px; |
| transition: border-color .2s ease, box-shadow .2s ease; |
| min-height: 38px; |
| } |
| .chat-input-wrap:focus-within { |
| border-color: var(--accent); |
| box-shadow: 0 0 0 2px rgba(var(--accent-rgb),.12), 0 0 12px rgba(var(--accent-rgb),.08); |
| } |
| .chat-input-icon { |
| padding-left: 10px; |
| font-size: 14px; |
| opacity: .45; |
| flex-shrink: 0; |
| pointer-events: none; |
| display: flex; |
| align-items: center; |
| line-height: 1; |
| } |
| .chat-input { |
| flex: 1; |
| background: transparent; |
| border: none; |
| padding: 9px 12px 9px 8px; |
| color: var(--ink); |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 13.5px; |
| resize: none; |
| max-height: 120px; |
| outline: none; |
| box-sizing: border-box; |
| } |
| .chat-input::placeholder { |
| color: rgba(166,195,169,.4); |
| } |
| .chat-send-btn { |
| width: 38px; |
| height: 38px; |
| background: linear-gradient(135deg, #3a8f45, #2a6a32); |
| border: 1px solid rgba(var(--accent-rgb),.3); |
| border-radius: 8px; |
| color: #fff; |
| font-size: 13px; |
| cursor: pointer; |
| flex-shrink: 0; |
| transition: all .2s ease; |
| display: flex; |
| align-items: center; |
| justify-content: center; |
| } |
| .chat-send-btn:hover { |
| background: linear-gradient(135deg, #4aaf55, #3a8f45); |
| box-shadow: 0 0 12px rgba(var(--accent-rgb),.25); |
| transform: translateY(-1px); |
| } |
| .chat-send-btn:disabled { |
| opacity: .4; |
| cursor: not-allowed; |
| transform: none; |
| box-shadow: none; |
| } |
|
|
| |
| .chat-messages::-webkit-scrollbar { |
| width: 6px; |
| } |
| .chat-messages::-webkit-scrollbar-track { |
| background: transparent; |
| } |
| .chat-messages::-webkit-scrollbar-thumb { |
| background: rgba(var(--accent-rgb),.15); |
| border-radius: 3px; |
| } |
| .chat-messages::-webkit-scrollbar-thumb:hover { |
| background: rgba(var(--accent-rgb),.3); |
| } |
|
|
| |
| .chat-empty-state { |
| display: flex; |
| flex-direction: column; |
| align-items: center; |
| justify-content: center; |
| flex: 1; |
| padding: 24px 24px 20px; |
| text-align: center; |
| animation: fadeInUp .4s ease-out; |
| gap: 0; |
| } |
| @keyframes fadeInUp { |
| from { opacity: 0; transform: translateY(12px); } |
| to { opacity: 1; transform: translateY(0); } |
| } |
| .chat-watermark { |
| margin-bottom: 8px; |
| opacity: .12; |
| } |
| .chat-watermark-logo { |
| width: 180px; |
| height: 180px; |
| object-fit: contain; |
| image-rendering: pixelated; |
| filter: drop-shadow(0 0 8px rgba(var(--accent-rgb),.08)); |
| } |
| .chat-welcome-title { |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 16px; |
| font-weight: 700; |
| color: var(--ink); |
| margin-bottom: 2px; |
| } |
| .chat-welcome-sub { |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 12.5px; |
| color: var(--muted); |
| margin-bottom: 8px; |
| } |
| .chat-welcome-topics { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 6px; |
| justify-content: center; |
| margin-bottom: 16px; |
| } |
| .chat-welcome-topics span { |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 11px; |
| color: rgba(166,195,169,.7); |
| background: rgba(var(--accent-rgb),.04); |
| border: 1px solid rgba(var(--accent-rgb),.08); |
| border-radius: 20px; |
| padding: 3px 10px; |
| letter-spacing: .2px; |
| } |
|
|
| |
| .chat-suggestion-chips { |
| display: flex; |
| flex-wrap: wrap; |
| gap: 8px; |
| justify-content: center; |
| max-width: 340px; |
| } |
| .chat-chip { |
| font-family: 'Baloo 2', sans-serif; |
| font-size: 12px; |
| color: var(--accent); |
| background: rgba(var(--accent-rgb),.08); |
| border: 1px solid rgba(var(--accent-rgb),.25); |
| border-radius: 8px; |
| padding: 7px 14px; |
| cursor: pointer; |
| transition: all .2s ease; |
| white-space: nowrap; |
| font-weight: 600; |
| letter-spacing: .1px; |
| } |
| .chat-chip:hover { |
| background: rgba(var(--accent-rgb),.18); |
| border-color: rgba(var(--accent-rgb),.5); |
| box-shadow: 0 2px 12px rgba(var(--accent-rgb),.15); |
| transform: translateY(-1px); |
| color: #fff; |
| } |
|
|
| |
| @media (max-width: 768px) { |
| .chat-panel { |
| width: 100vw; |
| right: -100vw; |
| border-left: none; |
| box-shadow: none; |
| } |
| .chat-panel.open { |
| right: 0; |
| } |
|
|
| |
| .chat-panel { |
| top: 0; |
| bottom: 0; |
| height: 100vh; |
| height: 100dvh; |
| } |
|
|
| |
| .chat-header { |
| padding: 12px 14px; |
| min-height: 48px; |
| } |
| .chat-header-btn { |
| width: 36px; |
| height: 36px; |
| font-size: 16px; |
| } |
|
|
| |
| .chat-messages { |
| flex: 1 1 0; |
| min-height: 0; |
| } |
| .chat-msg { |
| padding: 12px 14px; |
| } |
| .chat-bubble { |
| font-size: 14.5px; |
| } |
| .chat-bubble pre { |
| font-size: 11px; |
| padding: 8px; |
| } |
|
|
| .chat-chip { |
| font-size: 11.5px; |
| padding: 6px 12px; |
| } |
| .chat-welcome-title { |
| font-size: 16px; |
| } |
|
|
| |
| .chat-input-area { |
| padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px)); |
| } |
| .chat-input { |
| font-size: 16px; |
| padding: 10px 12px; |
| } |
| .chat-send-btn { |
| width: 42px; |
| height: 42px; |
| font-size: 14px; |
| } |
|
|
| |
| .chat-backdrop.show { |
| display: none; |
| } |
| } |
|
|