:root{
  --bg:#0b0c10;
  --bg2:#14161c;
  --text:#111827;
  --muted:#64748b;
  --line:#e5e7eb;
  --card:#ffffff;
  --soft:#f6f8fb;
  --orange:#f47a20;
  --orange-soft:#fff1e7;
  --radius:26px;
  --shadow:0 18px 40px rgba(2,6,23,.07);
}
*{box-sizing:border-box}
a{color:#111827}
body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:linear-gradient(180deg,#f8fafc 0%,#ffffff 100%)}
img{max-width:100%;display:block}
.container{width:min(1080px, calc(100% - 32px));margin:0 auto}

/* Header */
.portal-header{background:linear-gradient(180deg,var(--bg) 0%, var(--bg2) 100%);border-bottom:1px solid rgba(255,255,255,.08);color:#fff;padding:18px 0}
.portal-header .container{display:flex;align-items:center;justify-content:space-between;gap:20px}
.portal-brand{display:flex;align-items:center;gap:14px}
.portal-brand img{
  width:clamp(170px, 18vw, 240px);
  max-width:100%;
  height:auto;
}
.portal-brand-text .eyebrow{display:inline-flex;align-items:center;gap:8px;font-size:.76rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:#f59e0b}
.portal-brand-text .title{font-size:1rem;font-weight:700;color:#fff}
.portal-nav{display:flex;align-items:center;gap:16px}
.portal-nav a{color:#cbd5e1;text-decoration:none;font-weight:600;font-size:.92rem}
.portal-nav a:hover{color:#f59e0b}
.portal-nav .btn-logout{background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:8px 16px;color:#fff;font-weight:700;font-size:.88rem;cursor:pointer}
.portal-nav .btn-logout:hover{background:rgba(255,255,255,.18)}

/* Auth */
.auth-page{display:flex;align-items:center;justify-content:center;min-height:calc(100vh - 80px);padding:40px 16px}
.auth-card{background:var(--card);border:1px solid var(--line);border-radius:28px;box-shadow:var(--shadow);padding:36px;width:100%;max-width:420px}
.auth-card h1{font-size:1.6rem;letter-spacing:-.03em;margin:0 0 8px}
.auth-card p{color:var(--muted);line-height:1.7;margin:0 0 24px}
.auth-card label{display:block;margin-bottom:16px}
.auth-card label span{display:block;font-weight:700;font-size:.93rem;margin-bottom:8px;color:#334155}
.auth-card input{width:100%;border:1px solid #dbe2ea;border-radius:14px;background:#fff;padding:12px 14px;font:inherit;color:#111827}
.auth-card input:focus{outline:2px solid rgba(244,122,32,.2);border-color:#f59e0b}
.auth-card .btn-primary{width:100%;border:none;border-radius:14px;padding:14px;font:inherit;font-weight:700;cursor:pointer;background:#111827;color:#fff;font-size:1rem;margin-top:8px}
.auth-card .btn-primary:hover{background:#1f2937}
.auth-status{margin-top:12px;font-size:.9rem;color:var(--muted)}
.auth-error{color:#dc2626}

/* Portal content */
.portal-page{padding:34px 0 48px}
.portal-welcome{margin-bottom:28px}
.portal-welcome h1{font-size:clamp(1.6rem,3vw,2.4rem);letter-spacing:-.03em;margin:0 0 8px}
.portal-welcome p{color:var(--muted);line-height:1.8;max-width:700px}

/* Cards */
.portal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:18px}
.portal-board-wrap{display:block}
.portal-card{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);padding:20px;transition:transform .15s ease}
.portal-card:hover{transform:translateY(-2px)}
.portal-card-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.portal-card-header strong{font-size:1rem}
.portal-card-lane{color:var(--muted);font-size:.9rem;margin-bottom:8px}
.portal-card-summary{color:#334155;line-height:1.7;font-size:.92rem;margin-bottom:10px}
.portal-card-meta{color:#94a3b8;font-size:.82rem}

/* Status badges */
.status-badge{display:inline-block;padding:4px 10px;border-radius:10px;font-size:.78rem;font-weight:700;text-transform:uppercase;letter-spacing:.06em}
.status-badge.new{background:#dbeafe;color:#1e40af}
.status-badge.new_request{background:#dbeafe;color:#1e40af}
.status-badge.reviewing{background:#fef3c7;color:#92400e}
.status-badge.waiting_customer{background:#fed7aa;color:#9a3412}
.status-badge.quoted{background:#d1fae5;color:#065f46}
.status-badge.live{background:#e0e7ff;color:#3730a3}
.status-badge.in_transit{background:#dcfce7;color:#166534}
.status-badge.delivered{background:#fef3c7;color:#92400e}
.status-badge.closed{background:#e5e7eb;color:#374151}
.status-badge.canceled{background:#fee2e2;color:#b91c1c}

/* Messages */
.messages-panel{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);padding:20px;margin-top:20px}
.messages-panel h3{margin:0 0 14px;font-size:1.1rem}
.message-list{display:grid;gap:10px;max-height:400px;overflow-y:auto;padding-right:8px}
.message-bubble{border-radius:16px;padding:12px 16px;line-height:1.7;font-size:.92rem;max-width:85%}
.message-bubble.from-customer{background:#f0f4ff;border:1px solid #dbeafe;justify-self:end}
.message-bubble.from-rlg{background:#f0fdf4;border:1px solid #bbf7d0;justify-self:start}
.message-bubble .message-meta{font-size:.78rem;color:#94a3b8;margin-top:4px}
.message-compose{display:flex;gap:10px;margin-top:14px}
.message-compose input{flex:1;border:1px solid #dbe2ea;border-radius:14px;padding:12px 14px;font:inherit;color:#111827}
.message-compose input:focus{outline:2px solid rgba(244,122,32,.2);border-color:#f59e0b}
.message-compose button{border:none;border-radius:14px;padding:12px 20px;font:inherit;font-weight:700;cursor:pointer;background:#111827;color:#fff;white-space:nowrap}

/* Actions bar */
.portal-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:20px}
.btn{display:inline-flex;align-items:center;justify-content:center;border:none;border-radius:14px;padding:10px 18px;font:inherit;font-weight:700;cursor:pointer;font-size:.92rem;text-decoration:none}
.btn-primary{background:#111827;color:#fff}
.btn-secondary{background:#f1f5f9;color:#334155}
.portal-filters{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.portal-summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:20px}
.portal-summary-card{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow)}
.portal-summary-card .label{font-size:.8rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#64748b}
.portal-summary-card .value{font-size:1.55rem;font-weight:800;margin-top:8px}
.portal-chip-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.portal-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;background:#f8fafc;border:1px solid #e2e8f0;color:#334155;font-size:.76rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase}
.board-table-scroll{
  width:100%;
  overflow:auto;
  border:1px solid var(--line);
  border-radius:18px;
  background:#fff;
  box-shadow:var(--shadow);
}
.board-table{
  width:max(1800px,100%);
  border-collapse:collapse;
  font-size:.86rem;
}
.board-table th{
  background:#f8fafc;
  border-bottom:1px solid var(--line);
  color:#475569;
  font-size:.75rem;
  letter-spacing:.05em;
  text-transform:uppercase;
  text-align:left;
  padding:10px 12px;
  white-space:nowrap;
}
.board-table td{
  border-bottom:1px solid #eef2f7;
  padding:10px 12px;
  vertical-align:top;
  color:#0f172a;
  white-space:nowrap;
}
.board-table tbody tr:hover{
  background:#f8fafc;
}
.portal-actions .btn-primary{background:#111827;color:#fff}
.portal-actions .btn-secondary{background:#f1f5f9;color:#334155}
.btn-primary:hover{background:#1f2937}
.btn-secondary:hover{background:#e2e8f0}

.options-resources-card{
  margin-bottom:20px;
}
.options-resources-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(240px,1fr));
  gap:12px;
  margin-bottom:14px;
}
.resource-link-card{
  display:block;
  border:1px solid #dbe2ea;
  border-radius:16px;
  background:#f8fafc;
  padding:14px 16px;
  text-decoration:none;
}
.resource-link-card strong{
  display:block;
  margin-bottom:4px;
}
.resource-link-card span{
  display:block;
  color:#64748b;
  font-size:.9rem;
}
.resource-link-card:hover{
  border-color:#cbd5e1;
  background:#f1f5f9;
}
.cabo-resource-panel{
  border:1px solid #dbe2ea;
  border-radius:16px;
  background:#f8fafc;
  padding:14px 16px;
}
.btn-small{
  border:1px solid #cbd5e1;
  border-radius:10px;
  background:#fff;
  color:#334155;
  padding:4px 8px;
  font:inherit;
  font-size:.78rem;
  font-weight:700;
  cursor:pointer;
}
.btn-small:hover{background:#f1f5f9}
.cabo-launch-btn{
  display:inline-block;
  margin-top:12px;
  text-decoration:none;
  padding:10px 20px;
  background:#111827;
  color:#fff;
  border-radius:14px;
  font-weight:700;
}

/* Helper */
.helper-text{color:#94a3b8;font-size:.9rem;line-height:1.7;margin-top:6px}
.success-box{margin-top:12px;background:#ecfdf5;border:1px solid #a7f3d0;color:#065f46;border-radius:18px;padding:14px;line-height:1.7}
.warning-box{margin-top:12px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;border-radius:18px;padding:14px;line-height:1.7}
.empty-state{text-align:center;padding:48px 20px;color:var(--muted)}
.empty-state h2{font-size:1.4rem;color:var(--text);margin:0 0 8px}

@media (max-width: 720px){
  .container{width:min(100% - 20px, 1080px)}
  .portal-header .container{flex-direction:column;align-items:flex-start}
  .portal-brand img{width:150px}
  input{font-size:16px}
  .portal-filters{grid-template-columns:1fr}
  .portal-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}


.portal-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:24px}
.portal-bullets h4{margin:0 0 8px;font-size:1rem}
.portal-bullets ul{margin:0;padding-left:18px;color:#334155;line-height:1.8}
.portal-note{color:var(--muted);line-height:1.7}
.comments-panel{background:var(--card);border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);padding:20px}
.comments-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}
.comments-header h2{margin:0 0 8px;font-size:1.35rem}
.comments-header p{margin:0;color:var(--muted);line-height:1.7}
.comment-list{display:grid;gap:14px;margin-bottom:18px}
.comment-card{background:#f8fafc;border:1px solid #e5e7eb;border-radius:18px;padding:14px}
.comment-card-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px;color:#64748b;font-size:.84rem}
.comment-card-body{color:#334155;line-height:1.8}
.comment-compose label{display:block}
.comment-compose label span{display:block;font-weight:700;font-size:.93rem;margin-bottom:8px;color:#334155}
.comment-compose textarea{width:100%;border:1px solid #dbe2ea;border-radius:14px;background:#fff;padding:12px 14px;font:inherit;color:#111827;resize:vertical}
.comment-compose textarea:focus{outline:2px solid rgba(244,122,32,.2);border-color:#f59e0b}
.comment-actions{display:flex;justify-content:flex-end;margin-top:12px}
.portal-card-clickable:hover{transform:translateY(-2px)}
.quote-link{display:inline-flex;align-items:center;font-weight:700;text-decoration:none}
.quote-link:hover{color:#f47a20}
@media (max-width: 900px){
  .portal-detail-grid{grid-template-columns:1fr}
}
@media (max-width: 640px){
  .portal-summary-grid{grid-template-columns:1fr}
}
