diff --git a/index.html b/index.html index 746d402..1848853 100644 --- a/index.html +++ b/index.html @@ -174,26 +174,46 @@ opacity: 0.7; } - /* Single Dot Window Close Control */ + /* Remade Minimalist Terminal Navigation Dot */ .window-controls { display: flex; align-items: center; + justify-content: center; } .win-dot-close { - width: 9px; - height: 9px; - background: rgba(255, 255, 255, 0.35); - border: 1px solid rgba(255, 255, 255, 0.6); + width: 14px; + height: 14px; + border: 1px solid rgba(255, 255, 255, 0.22); + background: rgba(255, 255, 255, 0.03); cursor: pointer; - transition: all 0.15s ease; - display: inline-block; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.16s ease; + position: relative; + } + + .win-dot-close::before { + content: ''; + width: 4px; + height: 4px; + background: rgba(255, 255, 255, 0.55); + box-shadow: 0 0 4px rgba(255, 255, 255, 0.35); + transition: all 0.16s ease; } .win-dot-close:hover { + border-color: #ffffff; + background: rgba(255, 255, 255, 0.16); + box-shadow: 0 0 10px rgba(255, 255, 255, 0.45); + } + + .win-dot-close:hover::before { background: #ffffff; - box-shadow: 0 0 8px rgba(255, 255, 255, 0.9); - transform: scale(1.2); + width: 6px; + height: 6px; + box-shadow: 0 0 8px #ffffff; } /* Window Body */ @@ -207,23 +227,19 @@ color: #d0d0d0; } - /* Squared Monochrome Scrollbars */ + /* Complete scrollbar removal (clean invisible scrolling) */ + * { + scrollbar-width: none !important; + -ms-overflow-style: none !important; + } + *::-webkit-scrollbar, .window-body::-webkit-scrollbar, - .terminal-body::-webkit-scrollbar { - width: 5px; - height: 5px; - } - .window-body::-webkit-scrollbar-track, - .terminal-body::-webkit-scrollbar-track { - background: rgba(0, 0, 0, 0.5); - } - .window-body::-webkit-scrollbar-thumb, - .terminal-body::-webkit-scrollbar-thumb { - background: rgba(255, 255, 255, 0.2); - } - .window-body::-webkit-scrollbar-thumb:hover, - .terminal-body::-webkit-scrollbar-thumb:hover { - background: rgba(255, 255, 255, 0.5); + .terminal-body::-webkit-scrollbar, + body::-webkit-scrollbar, + .desktop::-webkit-scrollbar { + display: none !important; + width: 0 !important; + height: 0 !important; } /* ── Terminal Styling ────────────────────────────────────────────────────── */ @@ -963,29 +979,29 @@ const H = window.innerHeight - 36; // leave room for taskbar if (W >= 1500) { - // High-res desktop (3 columns, generous spacing) - setWinPos('win-about', 40, 40, 340, 240); - setWinPos('win-skills', 310, 40, 340, 320); - setWinPos('win-websites', 40, 420, 360, 290); - setWinPos('win-links', 360, 420, 360, 270); - setWinPos('win-term', 40, 820, Math.min(760, W - 860), 380); - setWinPos('win-viz', 450, 820, Math.min(760, W - 860), 300); - } else if (W >= 1100) { - // Medium desktop (spacious 3-column / 2-column distribution) - setWinPos('win-about', 30, 30, 320, 230); - setWinPos('win-skills', 280, 30, 320, 300); - setWinPos('win-websites', 30, 380, 330, 270); - setWinPos('win-links', 320, 380, 330, 260); - setWinPos('win-term', 30, 740, W - 770, 340); - setWinPos('win-viz', 400, 740, W - 770, 270); + // Broad monitor: terminals breathe and fill the desktop naturally + setWinPos('win-about', 26, 28, 335, 230); + setWinPos('win-skills', 276, 42, 330, 310); + setWinPos('win-websites', 52, 390, 355, 290); + setWinPos('win-links', 362, 402, 345, 260); + setWinPos('win-term', 26, 772, Math.min(840, W - 802), 415); + setWinPos('win-viz', 465, 788, Math.min(824, W - 818), 305); + } else if (W >= 1150) { + // Standard laptop / desktop + setWinPos('win-about', 22, 24, 315, 225); + setWinPos('win-skills', 268, 34, 315, 295); + setWinPos('win-websites', 44, 358, 335, 280); + setWinPos('win-links', 344, 368, 330, 255); + setWinPos('win-term', 22, 714, W - 738, 370); + setWinPos('win-viz', 415, 728, W - 752, 280); } else if (W >= 800) { - // Compact desktop - setWinPos('win-about', 20, 20, 320, 230); - setWinPos('win-skills', 270, 20, 320, 280); - setWinPos('win-websites', 20, 360, 320, 270); - setWinPos('win-links', 310, 360, 320, 240); - setWinPos('win-term', 570, 20, W - 40, 300); - setWinPos('win-viz', 890, 20, W - 40, 250); + // Tablet / compact + setWinPos('win-about', 18, 18, 300, 220); + setWinPos('win-skills', 258, 26, 300, 280); + setWinPos('win-websites', 34, 336, 315, 270); + setWinPos('win-links', 324, 346, 315, 245); + setWinPos('win-term', 560, 18, W - 36, 310); + setWinPos('win-viz', 890, 26, W - 44, 260); } restoreAllWindows(); @@ -1343,7 +1359,7 @@ let audioCtx, analyser, source, vizAnimId; let vizConnected = false; - const vizModes = ['spectrum bars', 'waveform beam', 'mirror pulse']; + const vizModes = ['spectrum bars', 'mirror pulse']; let currentVizModeIdx = 0; function setupAudio() { @@ -1507,34 +1523,8 @@ vizCtx.lineTo(W, baseY); vizCtx.stroke(); - } else if (mode === 'waveform beam') { - // Mode 2: Oscilloscope Waveform Beam in Glowing White - const timeData = new Uint8Array(analyser.fftSize); - analyser.getByteTimeDomainData(timeData); - - vizCtx.lineWidth = 2; - vizCtx.strokeStyle = '#ffffff'; - vizCtx.shadowColor = 'rgba(255, 255, 255, 0.85)'; - vizCtx.shadowBlur = 12; - vizCtx.beginPath(); - - const sliceW = W / timeData.length; - let x = 0; - - for (let i = 0; i < timeData.length; i++) { - const v = timeData[i] / 128.0; - const y = (v * H) / 2; - if (i === 0) vizCtx.moveTo(x, y); - else vizCtx.lineTo(x, y); - x += sliceW; - } - - vizCtx.lineTo(W, H / 2); - vizCtx.stroke(); - vizCtx.shadowBlur = 0; - } else if (mode === 'mirror pulse') { - // Mode 3: Symmetric Center-Out Pulse + // Mode 2: Symmetric Center-Out Pulse const barCount = 18; const center = W / 2; const barW = (W / 2) / (barCount + 1);