/* ─── Linux Terminal Widget v1.1 ─── */
@import url('https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;700&display=swap');

/* ── Themes ──────────────────────────────────────────────────────────── */
.ltw-terminal {
    --ltw-bg:          #0d1117;
    --ltw-bg-header:   #161b22;
    --ltw-border:      #30363d;
    --ltw-text:        #c9d1d9;
    --ltw-comment:     #6e7681;
    --ltw-prompt:      #58a6ff;
    --ltw-hostname:    #3fb950;
    --ltw-path:        #79c0ff;
    --ltw-success:     #3fb950;
    --ltw-error:       #f85149;
    --ltw-warning:     #d29922;
    --ltw-output:      #c9d1d9;
    --ltw-cursor:      #58a6ff;
    --ltw-header-text: #8b949e;
    --ltw-radius:      8px;
    --ltw-font-size:   14px;
    --ltw-glow-color:  rgba(88,166,255,.15);
    --ltw-font:        'JetBrains Mono','Fira Code','Cascadia Code','Consolas',monospace;
}
.ltw-theme-green {
    --ltw-bg:#0a0f0a; --ltw-bg-header:#0d150d; --ltw-border:#1a3a1a;
    --ltw-text:#33ff33; --ltw-comment:#1a8a1a; --ltw-prompt:#00ff00;
    --ltw-hostname:#00cc00; --ltw-path:#66ff66; --ltw-success:#00ff66;
    --ltw-error:#ff3333; --ltw-warning:#ffcc00; --ltw-output:#33ff33;
    --ltw-cursor:#00ff00; --ltw-header-text:#1a8a1a; --ltw-glow-color:rgba(0,255,0,.2);
}
.ltw-theme-amber {
    --ltw-bg:#0f0a00; --ltw-bg-header:#1a1100; --ltw-border:#3d2a00;
    --ltw-text:#ffb300; --ltw-comment:#7a5500; --ltw-prompt:#ffcc00;
    --ltw-hostname:#ff9500; --ltw-path:#ffd54f; --ltw-success:#ff9500;
    --ltw-error:#ff3d00; --ltw-warning:#ff6d00; --ltw-output:#ffb300;
    --ltw-cursor:#ffcc00; --ltw-header-text:#7a5500; --ltw-glow-color:rgba(255,179,0,.2);
}
.ltw-theme-dracula {
    --ltw-bg:#282a36; --ltw-bg-header:#21222c; --ltw-border:#44475a;
    --ltw-text:#f8f8f2; --ltw-comment:#6272a4; --ltw-prompt:#bd93f9;
    --ltw-hostname:#50fa7b; --ltw-path:#8be9fd; --ltw-success:#50fa7b;
    --ltw-error:#ff5555; --ltw-warning:#f1fa8c; --ltw-output:#f8f8f2;
    --ltw-cursor:#f8f8f2; --ltw-header-text:#6272a4; --ltw-glow-color:rgba(189,147,249,.15);
}
.ltw-theme-nord {
    --ltw-bg:#2e3440; --ltw-bg-header:#242933; --ltw-border:#3b4252;
    --ltw-text:#d8dee9; --ltw-comment:#4c566a; --ltw-prompt:#88c0d0;
    --ltw-hostname:#a3be8c; --ltw-path:#81a1c1; --ltw-success:#a3be8c;
    --ltw-error:#bf616a; --ltw-warning:#ebcb8b; --ltw-output:#d8dee9;
    --ltw-cursor:#d8dee9; --ltw-header-text:#4c566a; --ltw-glow-color:rgba(136,192,208,.12);
}
.ltw-theme-solarized {
    --ltw-bg:#002b36; --ltw-bg-header:#00212b; --ltw-border:#073642;
    --ltw-text:#839496; --ltw-comment:#586e75; --ltw-prompt:#268bd2;
    --ltw-hostname:#2aa198; --ltw-path:#859900; --ltw-success:#859900;
    --ltw-error:#dc322f; --ltw-warning:#b58900; --ltw-output:#839496;
    --ltw-cursor:#268bd2; --ltw-header-text:#586e75; --ltw-glow-color:rgba(38,139,210,.12);
}
.ltw-theme-cyberpunk {
    --ltw-bg:#05010d; --ltw-bg-header:#0d0520; --ltw-border:#ff007a;
    --ltw-text:#f0e6ff; --ltw-comment:#5a3a7a; --ltw-prompt:#ff007a;
    --ltw-hostname:#00ffe7; --ltw-path:#7b00ff; --ltw-success:#00ffe7;
    --ltw-error:#ff2244; --ltw-warning:#ffe600; --ltw-output:#f0e6ff;
    --ltw-cursor:#ff007a; --ltw-header-text:#5a3a7a; --ltw-glow-color:rgba(255,0,122,.25);
}

/* ── Base ─────────────────────────────────────────────────────────── */
.ltw-terminal {
    font-family:  var(--ltw-font);
    font-size:    var(--ltw-font-size);
    background:   var(--ltw-bg);
    border:       1px solid var(--ltw-border);
    border-radius:var(--ltw-radius);
    overflow:     hidden;
    display:      inline-block;
    width:        100%;
    box-shadow:   0 8px 32px rgba(0,0,0,.45), 0 0 0 1px var(--ltw-border);
    position:     relative;
    box-sizing:   border-box;
}

/* ── Header ───────────────────────────────────────────────────────── */
.ltw-header {
    background:    var(--ltw-bg-header);
    border-bottom: 1px solid var(--ltw-border);
    padding:       10px 16px;
    display:       flex;
    align-items:   center;
    gap:           12px;
    user-select:   none;
}
.ltw-dots { display:flex; gap:6px; flex-shrink:0; }
.ltw-dot  { width:13px; height:13px; border-radius:50%; display:block; transition:filter .2s; }
.ltw-terminal:hover .ltw-dot { filter:brightness(1.2); }
.ltw-dot-red    { background:#ff5f57; box-shadow:0 0 0 1px rgba(0,0,0,.15); }
.ltw-dot-yellow { background:#ffbd2e; box-shadow:0 0 0 1px rgba(0,0,0,.15); }
.ltw-dot-green  { background:#28c840; box-shadow:0 0 0 1px rgba(0,0,0,.15); }
.ltw-title {
    flex:1; text-align:center; color:var(--ltw-header-text);
    font-size:12px; letter-spacing:.04em;
    overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
}
.ltw-btn-replay {
    background:transparent; border:1px solid var(--ltw-border);
    color:var(--ltw-header-text); padding:2px 8px; border-radius:4px;
    cursor:pointer; font-size:13px; font-family:var(--ltw-font);
    transition:all .2s; line-height:1.4;
}
.ltw-btn-replay:hover { color:var(--ltw-text); border-color:var(--ltw-prompt); background:rgba(255,255,255,.04); }

/* ── Body ─────────────────────────────────────────────────────────── */
.ltw-body {
    padding:    18px 20px 22px;
    min-height: 60px;
    background: var(--ltw-bg);
    position:   relative;
    overflow-x: auto;
}
.ltw-output { display:flex; flex-direction:column; gap:1px; }

/* ── Lines ────────────────────────────────────────────────────────── */
.ltw-line {
    display:    flex;
    align-items:baseline;
    line-height:1.75;
    min-height: 1.75em;
    opacity:    0;
    transform:  translateY(3px);
    animation:  ltw-appear .12s ease forwards;
}
.ltw-line.ltw-visible { opacity:1; transform:none; }
@keyframes ltw-appear { to { opacity:1; transform:translateY(0); } }

.ltw-line-content { white-space:pre-wrap; word-break:break-all; flex:1; }

/* Prompt prefix */
.ltw-prompt-prefix {
    display:     inline-flex;
    align-items: baseline;
    gap:         2px;
    flex-shrink: 0;
    margin-right:8px;
    white-space: nowrap;
}
.ltw-prompt-user { color:var(--ltw-hostname); font-weight:700; }
.ltw-prompt-at   { color:var(--ltw-comment); }
.ltw-prompt-host { color:var(--ltw-path); }
.ltw-prompt-sym  { color:var(--ltw-prompt); font-weight:700; margin-left:3px; }

/* Line type colors */
.ltw-line-command .ltw-line-content { color:var(--ltw-text); }
.ltw-line-output  .ltw-line-content { color:var(--ltw-output); opacity:.88; }
.ltw-line-comment .ltw-line-content { color:var(--ltw-comment); font-style:italic; }
.ltw-line-error   .ltw-line-content { color:var(--ltw-error); }
.ltw-line-warning .ltw-line-content { color:var(--ltw-warning); }
.ltw-line-success .ltw-line-content { color:var(--ltw-success); }
.ltw-line-blank                     { height:.5em; min-height:.5em; }

/* Output/response lines: indent to separate visually from commands */
.ltw-line-output,
.ltw-line-success,
.ltw-line-error,
.ltw-line-warning,
.ltw-line-comment { padding-left:20px; }

/* ── Cursor ───────────────────────────────────────────────────────── */
.ltw-cursor {
    display:    inline-block;
    color:      var(--ltw-cursor);
    animation:  ltw-blink 1s step-end infinite;
    margin-left:1px;
    vertical-align:baseline;
}
.ltw-cursor-block .ltw-cursor {
    background:     var(--ltw-cursor);
    color:          var(--ltw-bg);
    width:          .6em;
    height:         1.1em;
    vertical-align: text-bottom;
    display:        inline-block;
}
.ltw-cursor-line .ltw-cursor::before      { content:'|'; }
.ltw-cursor-underscore .ltw-cursor::before{ content:'_'; }
@keyframes ltw-blink { 0%,100%{opacity:1} 50%{opacity:0} }

/* ── Glow ─────────────────────────────────────────────────────────── */
.ltw-glow .ltw-body { text-shadow:0 0 6px var(--ltw-glow-color),0 0 12px var(--ltw-glow-color); }
.ltw-glow.ltw-theme-green .ltw-body    { text-shadow:0 0 8px rgba(51,255,51,.5),0 0 16px rgba(51,255,51,.25); }
.ltw-glow.ltw-theme-amber .ltw-body    { text-shadow:0 0 8px rgba(255,179,0,.5),0 0 16px rgba(255,179,0,.25); }
.ltw-glow.ltw-theme-cyberpunk .ltw-body{ text-shadow:0 0 8px rgba(255,0,122,.5),0 0 16px rgba(0,255,231,.3); }

/* ── Scanlines ────────────────────────────────────────────────────── */
.ltw-scanlines .ltw-body::after {
    content:''; position:absolute; inset:0; pointer-events:none; z-index:2;
    background:repeating-linear-gradient(0deg,transparent,transparent 2px,rgba(0,0,0,.12) 2px,rgba(0,0,0,.12) 4px);
}
.ltw-scanlines.ltw-theme-green,.ltw-scanlines.ltw-theme-amber { animation:ltw-flicker 8s linear infinite; }
@keyframes ltw-flicker { 0%,98%,100%{opacity:1} 99%{opacity:.97} 99.5%{opacity:1} }

/* ── Responsive ───────────────────────────────────────────────────── */
@media(max-width:600px) {
    .ltw-terminal { font-size:12px; }
    .ltw-body     { padding:12px 14px 16px; }
}
