:root{
  --bg:#F7F7F5; --panel:#FFFFFF; --paper:#22262E; --paper-dim:#63697A; --line:#DDE0E6;
  --field-bg:#FBFBFA; --amber:#C97C1F; --teal:#1E8E76; --rose:#C0392B; --violet:#6C4FD6;
}
*{box-sizing:border-box;}
html,body{ -webkit-user-select:none; user-select:none; }
input,textarea{ -webkit-user-select:text; user-select:text; }
body{
  margin:0; min-height:100vh; background:var(--bg); color:var(--paper);
  font-family: Georgia, 'Iowan Old Style', serif; font-size:17px;
  display:flex; align-items:center; justify-content:center; padding:40px 16px;
}
.auth-card{ width:100%; max-width:440px; background:var(--panel); border:1px solid var(--line); border-radius:6px; padding:36px 34px; box-shadow:0 2px 10px rgba(0,0,0,.05); }
.brand{ font-family:'Courier New',monospace; letter-spacing:.12em; text-transform:uppercase; font-size:12px; color:var(--paper-dim); text-align:center; margin-bottom:18px; }
h1{ font-size:26px; font-weight:normal; margin:0 0 8px; text-align:center; }
.sub{ color:var(--paper-dim); font-size:16px; text-align:center; margin:0 0 26px; line-height:1.6; }
.field{ margin-bottom:16px; }
.field label{ display:block; font-family:'Courier New',monospace; font-size:13px; color:var(--paper-dim); margin-bottom:6px; }
input[type=email], input[type=password], input[type=text]{
  width:100%; background:var(--field-bg); border:1px solid var(--line); border-radius:4px;
  color:var(--paper); font-family:Georgia,serif; font-size:17px; padding:11px 13px;
}
input:focus{ outline:none; border-color:var(--teal); }
.consent-row{ display:flex; gap:8px; align-items:flex-start; font-size:14px; color:var(--paper-dim); line-height:1.55; margin:18px 0; }
.consent-row input{ margin-top:3px; }
button.primary{
  width:100%; font-family:'Courier New',monospace; font-size:14px; letter-spacing:.06em; text-transform:uppercase;
  background:var(--paper); color:#fff; border:none; border-radius:4px; padding:13px; font-weight:bold; cursor:pointer;
}
button.primary:hover{ opacity:.88; }
button.primary:disabled{ opacity:.5; cursor:not-allowed; }
.switch-mode{ text-align:center; margin-top:18px; font-size:15px; color:var(--paper-dim); }
.switch-mode a{ color:var(--teal); cursor:pointer; text-decoration:underline; }
.error-msg{ color:var(--rose); font-size:14px; margin:10px 0 0; min-height:1em; }
::placeholder{ color:#9a9daa; opacity:1; }

@media print{
  body *{ visibility:hidden !important; }
  body::after{ content:"Printing is disabled for this tool."; visibility:visible; position:fixed; top:40%; left:0; right:0; text-align:center; font-family:monospace; font-size:18px; color:#000; }
}

/* ===== App shell (app.html) ===== */
body.app-body{ display:block; padding:0; align-items:initial; justify-content:initial; }
.app-header{
  display:flex; align-items:center; justify-content:space-between; padding:16px 26px;
  background:var(--panel); border-bottom:1px solid var(--line);
}
.app-header .brand{ margin:0; text-align:left; }
.app-header .who{ font-size:14px; color:var(--paper-dim); display:flex; align-items:center; gap:16px; }
.app-header .who a{ color:var(--rose); cursor:pointer; text-decoration:underline; }
.app-header .who a#downloadReportLink{ color:var(--teal); }

.tabs{ display:flex; gap:2px; background:var(--panel); padding:0 26px; overflow-x:auto; border-bottom:1px solid var(--line); }
.tab{
  font-family:'Courier New',monospace; font-size:13.5px; letter-spacing:.03em; padding:15px 18px;
  color:var(--paper-dim); cursor:pointer; border-bottom:3px solid transparent; white-space:nowrap;
}
.tab .n{ opacity:.7; margin-right:6px; }
.tab.active{ color:var(--paper); border-bottom-color:var(--teal); font-weight:bold; }
.tab.locked{ opacity:.4; cursor:not-allowed; }
.tab.done .n::after{ content:" \2713"; color:var(--teal); }

.app-main{ max-width:780px; margin:0 auto; padding:34px 20px 80px; }
.module-card{ background:var(--panel); border:1px solid var(--line); border-radius:6px; padding:30px 28px; box-shadow:0 2px 10px rgba(0,0,0,.04); }
.module-card h1{ text-align:left; font-size:24px; }
.module-card .sub{ text-align:left; margin-bottom:24px; }
.locked-panel{ text-align:center; color:var(--paper-dim); padding:60px 20px; font-size:16px; line-height:1.7; }

/* Chat UI shared by chat-driven modules */
.chat-log{ display:flex; flex-direction:column; gap:14px; margin-bottom:18px; max-height:54vh; overflow-y:auto; padding-right:4px; }
.msg{ max-width:88%; padding:12px 16px; border-radius:5px; font-size:16.5px; line-height:1.6; }
.msg.ai{ align-self:flex-start; background:var(--field-bg); border:1px solid var(--line); }
.msg.ai p{ margin:0 0 8px; } .msg.ai p:last-child{ margin-bottom:0; }
.msg.ai ul, .msg.ai ol{ margin:0 0 8px; padding-left:22px; }
.msg.ai li{ margin-bottom:4px; }
.msg.student{ align-self:flex-end; background:var(--teal); color:#fff; white-space:pre-wrap; }
.msg.system-note{ align-self:center; color:var(--paper-dim); font-size:13px; font-family:'Courier New',monospace; }
.chat-input-row{ display:flex; gap:8px; }
.chat-input-row textarea{
  flex:1; background:var(--field-bg); border:1px solid var(--line); border-radius:4px; color:var(--paper);
  font-family:Georgia,serif; font-size:16.5px; padding:11px 13px; resize:vertical; min-height:48px;
}
.chat-input-row button{
  font-family:'Courier New',monospace; font-size:13px; text-transform:uppercase; background:var(--paper);
  color:#fff; border:none; border-radius:4px; padding:0 20px; font-weight:bold; cursor:pointer;
}
.chat-input-row button:disabled{ opacity:.5; cursor:not-allowed; }
.chat-input-row .mic-btn{
  background:var(--field-bg); color:var(--paper); border:1px solid var(--line); font-size:20px;
  padding:0 14px; border-radius:4px; cursor:pointer; flex:0 0 auto;
}
.chat-input-row .mic-btn.listening{ background:var(--rose); color:#fff; border-color:var(--rose); }
.chat-actions{ display:flex; justify-content:space-between; align-items:center; margin-top:16px; gap:10px; flex-wrap:wrap; }
.chat-actions .hint{ font-size:13.5px; color:var(--paper-dim); }
.chat-actions button.finish{
  font-family:'Courier New',monospace; font-size:13px; text-transform:uppercase; background:transparent;
  color:var(--violet); border:1px solid var(--violet); border-radius:4px; padding:10px 15px; cursor:pointer;
}
.chat-actions button.finish:disabled{ opacity:.4; cursor:not-allowed; }

.career-map{ margin-top:8px; }
.career-map .role-card{ background:var(--field-bg); border:1px solid var(--line); border-radius:5px; padding:16px 18px; margin-bottom:12px; }
.career-map .role-card h3{ margin:0 0 8px; font-size:17px; font-weight:bold; color:var(--teal); }
.career-map .role-card p{ margin:0 0 8px; font-size:15.5px; color:var(--paper-dim); line-height:1.6; }
.career-map .gaps{ font-size:15px; }
.career-map .gaps b{ color:var(--paper); }

/* Module 2 — Case Study */
.cs-form .field textarea{
  width:100%; background:var(--field-bg); border:1px solid var(--line); border-radius:4px; color:var(--paper);
  font-family:Georgia,serif; font-size:16px; padding:11px 13px; resize:vertical; min-height:70px;
}
.sources-box{ background:var(--field-bg); border:1px solid var(--line); border-radius:5px; padding:14px 16px; margin:14px 0; }
.sources-box h4{ margin:0 0 8px; font-size:13.5px; font-family:'Courier New',monospace; text-transform:uppercase; letter-spacing:.04em; color:var(--paper-dim); }
.sources-box ul{ margin:0; padding-left:20px; font-size:14.5px; }
.sources-box li{ margin-bottom:5px; }
.sources-box a{ color:var(--teal); }
.sources-warning{ background:#FBF0E4; border:1px solid var(--amber); color:#7a4a0e; border-radius:5px; padding:12px 16px; margin:14px 0; font-size:14px; line-height:1.6; }

.cs-question-card{ background:var(--field-bg); border:1px solid var(--line); border-radius:5px; padding:18px 20px; margin-bottom:16px; }
.cs-question-card .q-label{ font-family:'Courier New',monospace; font-size:12px; color:var(--paper-dim); text-transform:uppercase; margin-bottom:6px; }
.cs-question-card .q-text{ font-size:16.5px; line-height:1.6; margin-bottom:12px; }
.cs-question-card textarea{
  width:100%; background:var(--panel); border:1px solid var(--line); border-radius:4px; color:var(--paper);
  font-family:Georgia,serif; font-size:16px; padding:11px 13px; min-height:90px; resize:vertical;
}
.cs-question-card .q-actions{ display:flex; justify-content:flex-end; margin-top:10px; }
.cs-question-card .hint-btn{
  font-family:'Courier New',monospace; font-size:12px; text-transform:uppercase; background:transparent;
  color:var(--violet); border:1px solid var(--violet); border-radius:4px; padding:8px 13px; cursor:pointer;
}
.cs-question-card .hint-box{ margin-top:10px; padding:10px 14px; background:#EFEAFB; border-left:3px solid var(--violet); border-radius:3px; font-size:14.5px; line-height:1.55; }

/* Gemini own-key modal (matches ibhighway's pattern) */
.cp-key-overlay{ position:fixed; inset:0; background:rgba(0,0,0,.45); z-index:9999; display:flex; align-items:center; justify-content:center; padding:20px; }
.cp-key-card{ background:var(--panel); border:1px solid var(--line); border-radius:6px; padding:30px; max-width:460px; width:100%; box-shadow:0 8px 30px rgba(0,0,0,.15); }
.cp-key-card h2{ font-size:19px; font-weight:normal; margin:0 0 10px; }
.cp-key-card p{ font-size:15px; color:var(--paper-dim); line-height:1.6; margin:0 0 14px; }
.cp-key-card ol{ font-size:15px; color:var(--paper); line-height:1.9; margin:0 0 18px; padding-left:20px; }
.cp-key-card a{ color:var(--teal); }
.cp-key-row{ display:flex; gap:8px; }
.cp-key-row input{ flex:1; background:var(--field-bg); border:1px solid var(--line); border-radius:4px; color:var(--paper); padding:11px 13px; font-size:15px; }
.cp-key-row button{ padding:11px 18px; }
.cp-key-err{ font-size:13px; color:var(--rose); margin-top:8px; min-height:1em; }
