/* ============================================================
   Copland OS Enterprise — Communication Console
   Late-90s OS window chrome, tinted Lain cyan (#66cddd)
   ============================================================ */

:root{
  --cyan:        #66cddd;   /* main accent — boxes & buttons */
  --cyan-soft:   #a8e6f0;   /* light bevel edge */
  --cyan-deep:   #2a6a78;   /* dark bevel edge */
  --cyan-face:   #4fb3c6;   /* button face mid */

  --navy-page:   #060c22;   /* deep page bg behind logo */
  --navy-nav:    #14256e;   /* top bar blue */
  --navy-nav2:   #0d1a4f;
  --term-bg:     #050912;   /* terminal black-blue */
  --term-text:   #79d8e6;   /* terminal cyan text */
  --term-dim:    #4a7d88;
  --user-red:    #e2564b;
  --ok-green:    #6ee08a;

  --line: rgba(102,205,221,.35);
}

*{ box-sizing:border-box; }

html,body{ height:100%; }

body{
  margin:0;
  display:flex;
  flex-direction:column;
  height:100vh;
  background:var(--navy-page);
  color:var(--cyan);
  font-family:'VT323', 'Courier New', monospace;
  overflow:hidden;
}

/* ---------- background watermark ---------- */
.bg-layer{
  position:fixed; inset:0; z-index:0;
  background:
    radial-gradient(ellipse at center, rgba(6,12,34,.55) 0%, rgba(6,12,34,.9) 78%),
    url('images/copland_os_no_text.jpg') center center / cover no-repeat,
    var(--navy-page);
  opacity:1;
}
.scanlines{
  position:fixed; inset:0; z-index:1; pointer-events:none;
  background:repeating-linear-gradient(
    to bottom, rgba(0,0,0,0) 0px, rgba(0,0,0,0) 2px, rgba(0,0,0,.18) 3px);
  mix-blend-mode:multiply;
}

/* ============================================================
   TOP NAV
   ============================================================ */
.navi-bar{
  position:relative; z-index:5;
  flex:0 0 auto;
  display:flex; align-items:center; justify-content:flex-start; gap:28px;
  padding:0 18px; height:54px;
  background:linear-gradient(180deg, rgba(8,16,38,.96) 0%, rgba(5,9,18,.96) 100%);
  border-bottom:2px solid var(--cyan);
  box-shadow:0 0 18px rgba(102,205,221,.25), inset 0 1px 0 rgba(102,205,221,.35);
}
.navi-brand{ display:flex; align-items:center; gap:10px; color:var(--cyan); }
.navi-glyph{ display:flex; filter:drop-shadow(0 0 6px rgba(102,205,221,.6)); }
.navi-name{
  font-family:'EB Garamond', Georgia, serif;
  font-style:italic; font-size:26px; letter-spacing:2px;
  color:var(--cyan-soft); text-shadow:0 0 8px rgba(102,205,221,.45);
}
.navi-links{ display:flex; gap:26px; }
.navi-links a{
  font-family:'EB Garamond', Georgia, serif;
  font-style:italic; font-size:21px; letter-spacing:.5px;
  color:var(--cyan); text-decoration:none;
  padding:4px 2px; border-bottom:1px solid transparent;
  transition:color .15s, border-color .15s, text-shadow .15s;
}
.navi-links a:hover, .navi-links a:focus-visible{
  color:var(--cyan-soft);
  border-bottom-color:var(--cyan);
  text-shadow:0 0 8px rgba(102,205,221,.6);
  outline:none;
}

/* ============================================================
   DESK / WORK AREA
   ============================================================ */
.desk{
  position:relative; z-index:4;
  flex:1 1 auto;
  display:flex;
  gap:16px; padding:16px;
  min-height:0;
}
.win-chat{ flex:0 0 40%; max-width:50%; }

/* ---------- generic window chrome (Win9x-style bevel) ---------- */
.win{
  display:flex; flex-direction:column; min-height:0;
  background:rgba(8,16,38,.86);
  border:2px solid;
  border-color:var(--cyan-soft) var(--cyan-deep) var(--cyan-deep) var(--cyan-soft);
  box-shadow:0 0 0 1px rgba(0,0,0,.5), 0 6px 26px rgba(0,0,0,.55),
             0 0 22px rgba(102,205,221,.14);
}
.title-bar{
  flex:0 0 auto;
  display:flex; align-items:center; gap:0;
  padding:3px 8px;
  background:linear-gradient(180deg, var(--cyan) 0%, var(--cyan-face) 55%, var(--cyan-deep) 100%);
  border-bottom:2px solid var(--cyan-deep);
  user-select:none;
}
.title-label{
  flex:0 0 auto;
  padding:0 6px;
  font-size:20px; line-height:1; color:#04222a; font-weight:700;
  letter-spacing:1px; text-shadow:0 1px 0 rgba(255,255,255,.35);
}
.title-fill{
  flex:1 1 0; min-width:0; overflow:hidden;
  white-space:nowrap;
  font-size:20px; line-height:1; color:#04222a; opacity:.5;
  letter-spacing:1px; text-shadow:0 1px 0 rgba(255,255,255,.35);
}
.title-fill:first-of-type{ padding-left:6px; }
.title-controls{ flex:0 0 auto; display:flex; gap:4px; }
.title-controls i{
  display:grid; place-items:center;
  width:18px; height:16px; font-style:normal; font-size:13px; color:#04222a;
  background:var(--cyan-soft);
  border:1px solid;
  border-color:#dffafe var(--cyan-deep) var(--cyan-deep) #dffafe;
}

.win-body{ flex:1 1 auto; min-height:0; overflow:auto; }

/* ---------- terminal body ---------- */
.term-body{
  background:var(--term-bg);
  color:var(--term-text);
  padding:12px 14px;
  font-size:19px; line-height:1.25;
  text-shadow:0 0 5px rgba(121,216,230,.35);
}
.term-body p{ margin:0; }
.t-bright{ color:#bdf4ff; }
.t-dim{ color:var(--term-dim); }
.t-ok{ color:var(--ok-green); text-shadow:0 0 6px rgba(110,224,138,.4); }

.ascii-logo{
  margin:0 0 10px; font-size:25px; line-height:1.05;
  color:var(--cyan); opacity:.85; white-space:pre; overflow:hidden;
  text-align:left;
  text-shadow:0 0 6px rgba(102,205,221,.4);
}
.term-head{ border-bottom:1px dashed var(--line); padding-bottom:8px; margin-bottom:8px; }

/* ---------- chat messages ---------- */
.messages .msg{ margin:6px 0; word-wrap:break-word; }
.messages .tag{ font-weight:700; }
.messages .tag-user{ color:var(--user-red); text-shadow:0 0 6px rgba(226,86,75,.4); }
.messages .tag-lain{ color:var(--cyan); text-shadow:0 0 6px rgba(102,205,221,.5); }
.messages .body{ color:var(--term-text); }
.messages .body.pending{ color:var(--term-dim); animation:blink 1s steps(1) infinite; }
.cursor{ display:inline-block; width:9px; height:18px; background:var(--cyan);
  margin-left:2px; vertical-align:-3px; animation:blink 1s steps(1) infinite; }
@keyframes blink{ 50%{ opacity:0; } }

/* ---------- chat input row ---------- */
.chat-input{
  flex:0 0 auto;
  display:flex; align-items:stretch; gap:6px;
  padding:8px; background:rgba(8,16,38,.95);
  border-top:2px solid var(--cyan-deep);
}
#chatField{
  flex:1 1 auto; resize:none;
  background:var(--term-bg); color:var(--term-text);
  border:2px solid; border-color:var(--cyan-deep) var(--cyan-soft) var(--cyan-soft) var(--cyan-deep);
  font-family:'VT323', monospace; font-size:20px; line-height:1.2;
  padding:8px 10px; outline:none;
}
#chatField::placeholder{ color:var(--term-dim); }
#chatField:focus{ box-shadow:0 0 10px rgba(102,205,221,.4) inset; }

.ico-btn{
  flex:0 0 auto; width:46px; display:grid; place-items:center; cursor:pointer;
  color:#04222a;
  background:linear-gradient(180deg, var(--cyan-soft) 0%, var(--cyan) 60%, var(--cyan-deep) 100%);
  border:2px solid; border-color:#dffafe var(--cyan-deep) var(--cyan-deep) #dffafe;
}
.ico-btn:hover{ filter:brightness(1.1); }
.ico-btn:active{
  border-color:var(--cyan-deep) #dffafe #dffafe var(--cyan-deep);
  transform:translateY(1px);
}

/* clear — black background, cyan icon */
#btnClear{
  background:#04060d;
  color:var(--cyan);
  border-color:var(--cyan-deep) #000 #000 var(--cyan-deep);
}
#btnClear:hover{ filter:brightness(1.6); }

/* send — labelled text button */
.ico-send{
  width:auto; padding:0 18px;
  font-family:'VT323', monospace; font-size:21px; font-weight:700;
  letter-spacing:2px; text-transform:uppercase; color:#04222a;
  background:linear-gradient(180deg,#9be9f4 0%, var(--cyan) 55%, var(--cyan-deep) 100%);
}

/* ============================================================
   RIGHT STACK
   ============================================================ */
.side-stack{
  position:relative; flex:1 1 auto; min-height:0;
}
/* free-floating, draggable windows — confined to this right-side canvas */
.side-stack .win{ position:absolute; }
.side-stack .title-bar{ cursor:move; }
.win-video{   left:30px;  top:10px;  width:400px; height:350px; }
.win-console{ left:120px; top:282px; width:360px; height:150px; }
.win-wave{    left:55px;  top:450px; width:380px; height:150px; }

/* video */
.video-body{
  background:#02060f; display:grid; place-items:center; padding:0; overflow:hidden;
}
.video-body img{ width:100%; height:100%; object-fit:cover; display:block; }
.video-placeholder{
  display:flex; flex-direction:column; align-items:center; gap:6px;
  color:var(--term-dim); font-size:18px; letter-spacing:1px;
  background:
    repeating-linear-gradient(45deg, rgba(102,205,221,.04) 0 8px, transparent 8px 16px);
  width:100%; height:100%; justify-content:center;
}
.rec-dot{ width:9px; height:9px; border-radius:50%; background:var(--user-red);
  box-shadow:0 0 8px var(--user-red); animation:blink 1.4s steps(1) infinite; }
.video-text{ color:var(--cyan); font-size:22px; }
.video-sub{ font-size:15px; }

/* console */
.console-body{ font-size:18px; }
#consoleTick{ margin-top:6px; }

/* wave */
.wave-body{
  position:relative; background:var(--term-bg); padding:0; overflow:hidden;
  display:block;
}
#waveCanvas{ width:100%; height:100%; display:block; }
.wave-label{
  position:absolute; left:10px; bottom:8px;
  font-size:16px; color:var(--term-dim); letter-spacing:2px; text-transform:uppercase;
}

/* ============================================================
   STATUS BAR
   ============================================================ */
.status-bar{
  position:relative; z-index:5;
  flex:0 0 50px; height:50px;
  display:grid; grid-template-columns:repeat(3,1fr);
  background:linear-gradient(180deg, rgba(8,16,38,.96) 0%, rgba(5,9,18,.96) 100%);
  border-top:2px solid var(--cyan);
}
.status-cell{
  display:flex; align-items:center; padding:0 18px;
  font-size:20px; color:var(--cyan); letter-spacing:1px;
  border-right:1px solid rgba(102,205,221,.22);
}
.status-cell:last-child{ border-right:none; }
.status-cell b{ color:var(--cyan-soft); margin-left:6px; }
#connCell b{ color:var(--ok-green); }

/* ============================================================
   RESPONSIVE
   ============================================================ */
@media (max-width:880px){
  .desk{ flex-direction:column; overflow:auto; }
  .win-chat{ flex:none; width:100%; max-width:100%; height:64vh; }
  .side-stack{ position:static; height:auto; display:flex; flex-direction:column; gap:16px; }
  .side-stack .win{ position:static; width:auto; height:auto; min-height:180px; }
  .side-stack .title-bar{ cursor:default; }
  .navi-links{ gap:16px; }
  .navi-links a{ font-size:18px; }
}

@media (prefers-reduced-motion:reduce){
  .cursor, .rec-dot{ animation:none; }
}
