/* ProgressSync - Customer Portal Styles */
/* Theme: dark bg=#0d1117, accent=orange, info=cyan, danger=pink, closed=slate */

:root {
  --bg:           #0d1117;
  --bg2:          #161b22;
  --bg3:          #21262d;
  --border:       rgba(255,255,255,0.08);
  --text:         #f0f6fc;
  --text-muted:   #8b949e;
  --orange:       #f97316;
  --cyan:         #22d3ee;
  --pink:         #f43f5e;
  --closed:       #94a3b8;
  --green:        #22c55e;
  --purple:       #a855f7;
  --radius:       12px;
  --radius-sm:    8px;
  --shadow:       0 8px 32px rgba(0,0,0,0.4);
}

* { margin:0; padding:0; box-sizing:border-box; font-family:'Noto Sans JP','Helvetica',sans-serif; font-weight:300; }
body { background:var(--bg); color:var(--text); min-height:100vh; overflow-x:hidden; }

/* ── Screens ─────────────────────────── */
.screen { display:none; }
.screen.active { display:block; }
.screen.active.with-sidebar { display:flex; }

/* ── Loading ─────────────────────────── */
#screen-loading { height:100vh; display:flex; align-items:center; justify-content:center; }
.spinner { width:40px; height:40px; border:3px solid var(--border); border-top-color:var(--cyan); border-radius:50%; animation:spin 0.8s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }

/* ── App Header ──────────────────────── */
#app-header {
  display:none; align-items:center; justify-content:space-between;
  background:var(--bg2); border-bottom:1px solid var(--border);
  padding:12px 24px; position:sticky; top:0; z-index:100;
}
.header-logo { height:28px; filter:brightness(0) invert(1); }
.header-center { font-size:0.95rem; color:var(--text-muted); }
.header-user { display:flex; flex-direction:column; align-items:flex-end; }
#user-name  { font-size:0.88rem; color:var(--text); }
#user-email { font-size:0.75rem; color:var(--text-muted); }
.header-right { display:flex; align-items:center; gap:12px; }

.lang-toggle { display:flex; gap:4px; background:var(--bg3); border-radius:20px; padding:4px; }
.lang-btn { background:none; border:none; color:var(--text-muted); cursor:pointer; padding:4px 10px; border-radius:16px; font-size:0.8rem; transition:all 0.2s; }
.lang-btn.lang-active { background:var(--bg2); color:var(--orange); border:1px solid var(--orange); }

.logout-btn { background:none; border:1px solid var(--border); color:var(--text-muted); border-radius:var(--radius-sm); padding:6px 14px; cursor:pointer; font-size:0.82rem; transition:all 0.2s; }
.logout-btn:hover { color:var(--text); border-color:var(--text-muted); }

/* ── Sidebar ─────────────────────────── */
#app-sidebar {
  display:none; flex-direction:column;
  width:220px; min-width:220px; background:var(--bg2);
  border-right:1px solid var(--border); position:sticky; top:57px;
  height:calc(100vh - 57px); overflow-y:auto; padding:16px 12px; gap:6px;
}
.sidebar-section { font-size:0.72rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:1px; margin:12px 0 6px 4px; }
.sidebar-back-btn {
  display:flex; align-items:center; gap:8px;
  width:100%; background:none; border:1px solid var(--border);
  color:var(--text-muted); border-radius:var(--radius-sm); padding:8px 12px;
  cursor:pointer; font-size:0.85rem; transition:all 0.2s; text-align:left;
}
.sidebar-back-btn:hover { color:var(--text); border-color:var(--text-muted); }

.filter-btn, .type-btn {
  display:block; width:100%; background:none; border:none;
  color:var(--text-muted); text-align:left; padding:8px 12px;
  border-radius:var(--radius-sm); cursor:pointer; font-size:0.88rem; transition:all 0.15s;
}
.filter-btn:hover, .type-btn:hover { background:var(--bg3); color:var(--text); }
.filter-btn.active  { color:var(--orange); background:rgba(249,115,22,0.1); }
.type-btn.active    { color:var(--cyan); background:rgba(34,211,238,0.08); }

/* ── Auth Screens ────────────────────── */
.auth-wrap { min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; padding:24px; }
.auth-card { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:36px 32px; width:100%; max-width:420px; box-shadow:var(--shadow); }
.auth-logo { height:44px; display:block; margin:0 auto 24px; filter:brightness(0) invert(1); }
.auth-title { font-size:1.4rem; font-weight:500; text-align:center; margin-bottom:6px; }
.auth-subtitle { font-size:0.85rem; color:var(--text-muted); text-align:center; margin-bottom:28px; }
.form-label { display:block; font-size:0.8rem; color:var(--text-muted); margin-bottom:6px; }
.form-input { width:100%; background:var(--bg); border:1px solid var(--border); border-radius:var(--radius-sm); color:var(--text); padding:11px 14px; font-size:0.95rem; outline:none; transition:border 0.2s; font-family:inherit; }
.form-input:focus { border-color:var(--cyan); }
.form-group { margin-bottom:16px; }
.btn-primary { width:100%; background:var(--cyan); color:#0d1117; border:none; border-radius:var(--radius-sm); padding:12px; font-size:1rem; font-weight:500; cursor:pointer; transition:opacity 0.2s; }
.btn-primary:hover { opacity:0.85; }
.btn-primary:disabled { opacity:0.5; cursor:not-allowed; }
.btn-secondary { width:100%; background:none; color:var(--text-muted); border:1px solid var(--border); border-radius:var(--radius-sm); padding:11px; font-size:0.9rem; cursor:pointer; transition:all 0.2s; margin-top:10px; }
.btn-secondary:hover { color:var(--text); border-color:var(--text-muted); }
.auth-link-row { text-align:center; margin-top:16px; }
.auth-link { color:var(--cyan); font-size:0.85rem; cursor:pointer; text-decoration:underline; background:none; border:none; }
.auth-lang { display:flex; justify-content:center; margin-bottom:20px; }
.confirm-icon { font-size:3rem; text-align:center; margin-bottom:12px; }
.confirm-desc { font-size:0.88rem; color:var(--text-muted); text-align:center; line-height:1.7; margin-bottom:24px; }

/* ── Dashboard ───────────────────────── */
#screen-dashboard { padding:0 0 60px; }
.dash-header { padding:24px 24px 12px; }
.dash-title { font-size:1.2rem; font-weight:500; }
.project-list { padding:0 24px; display:grid; grid-template-columns:repeat(auto-fill, minmax(320px,1fr)); gap:16px; }

.project-card {
  background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius);
  padding:20px; cursor:pointer; transition:all 0.2s;
}
.project-card:hover { border-color:var(--orange); transform:translateY(-2px); box-shadow:var(--shadow); }
.project-card-header { display:flex; align-items:center; gap:8px; margin-bottom:10px; }
.project-no { font-size:0.78rem; color:var(--text-muted); font-family:monospace; }
.project-lang-badge { font-size:0.72rem; background:var(--bg3); color:var(--cyan); border:1px solid var(--cyan); border-radius:8px; padding:2px 7px; }
.project-card-title { margin-bottom:12px; }
.project-company { font-size:1rem; font-weight:500; }
.project-sep { color:var(--text-muted); margin:0 6px; }
.project-name { font-size:0.92rem; color:var(--text-muted); }
.project-stats { display:flex; gap:12px; font-size:0.8rem; flex-wrap:wrap; }
.stat-new    strong { color:var(--orange); }
.stat-prog   strong { color:var(--cyan); }
.stat-over   strong { color:var(--pink); }
.stat-closed strong { color:var(--closed); }
.project-date { font-size:0.75rem; color:var(--text-muted); margin-top:10px; }

/* ── Status Badges ───────────────────── */
.status-badge { font-size:0.72rem; padding:2px 8px; border-radius:10px; }
.status-new         { background:rgba(249,115,22,0.15); color:var(--orange); border:1px solid var(--orange); }
.status-in-progress { background:rgba(34,211,238,0.12); color:var(--cyan);   border:1px solid var(--cyan); }
.status-overdue     { background:rgba(244,63,94,0.15);  color:var(--pink);   border:1px solid var(--pink); }
.status-closed      { background:rgba(148,163,184,0.12);color:var(--closed); border:1px solid var(--closed); }

/* ── Project Report List ─────────────── */
#screen-project-reports { display:none; flex-direction:row; min-height:calc(100vh - 57px); }
#screen-project-reports.active { display:flex; }
.reports-main { flex:1; padding:24px; overflow-y:auto; }
.reports-header { margin-bottom:16px; }
.reports-title { font-size:1.1rem; font-weight:500; }
.reports-sub { font-size:0.82rem; color:var(--text-muted); margin-top:4px; }

.report-row {
  display:grid; grid-template-columns:14px 80px 90px 120px 1fr 80px 100px;
  align-items:center; gap:12px; padding:12px 16px;
  background:var(--bg2); border:1px solid var(--border);
  border-radius:var(--radius-sm); margin-bottom:6px;
  cursor:pointer; transition:all 0.15s;
}
.report-row:hover { border-color:var(--cyan); background:var(--bg3); }

.status-dot { width:10px; height:10px; border-radius:50%; flex-shrink:0; }
.status-dot.status-new         { background:var(--orange); }
.status-dot.status-in-progress { background:var(--cyan); }
.status-dot.status-overdue     { background:var(--pink); }
.status-dot.status-closed      { background:var(--closed); }

.report-no-cell   { font-size:0.78rem; color:var(--text-muted); font-family:monospace; }
.report-date-cell { font-size:0.78rem; color:var(--text-muted); }
.report-preview   { font-size:0.88rem; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }

.type-tag { font-size:0.72rem; padding:2px 7px; border-radius:8px; white-space:nowrap; }
.type-mecha       { background:rgba(168,85,247,0.15); color:#c084fc; border:1px solid #a855f7; }
.type-electrical  { background:rgba(34,211,238,0.1);  color:var(--cyan);   border:1px solid var(--cyan); }
.type-software    { background:rgba(34,197,94,0.1);   color:var(--green);  border:1px solid var(--green); }
.type-other       { background:rgba(148,163,184,0.1); color:var(--closed); border:1px solid var(--closed); }

.imp-badge { font-size:0.72rem; padding:2px 7px; border-radius:8px; text-align:center; font-weight:500; }
.imp-required { background:rgba(244,63,94,0.2);    color:var(--pink);   border:1px solid var(--pink); }
.imp-a        { background:rgba(249,115,22,0.15);  color:var(--orange); border:1px solid var(--orange); }
.imp-b        { background:rgba(34,211,238,0.1);   color:var(--cyan);   border:1px solid var(--cyan); }
.imp-c        { background:rgba(148,163,184,0.1);  color:var(--closed); border:1px solid var(--closed); }

.report-status-badge { font-size:0.72rem; padding:3px 8px; border-radius:10px; white-space:nowrap; text-align:center; }

/* ── Report Detail ───────────────────── */
#screen-report-detail { display:none; flex-direction:row; min-height:calc(100vh - 57px); }
#screen-report-detail.active { display:flex; }
.detail-main { flex:1; padding:24px; overflow-y:auto; max-width:1000px; }

.detail-header { display:flex; align-items:flex-start; gap:16px; margin-bottom:24px; flex-wrap:wrap; }
.detail-report-no { font-size:1.2rem; font-weight:500; font-family:monospace; }
.detail-badges { display:flex; gap:8px; flex-wrap:wrap; }
.detail-meta { font-size:0.8rem; color:var(--text-muted); margin-top:4px; }

.detail-section { margin-bottom:24px; }
.detail-section-title { font-size:0.82rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:1px; margin-bottom:10px; padding-bottom:6px; border-bottom:1px solid var(--border); }

/* Bilingual content boxes */
.bilingual-box { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.bilingual-col { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius-sm); padding:14px; }
.bilingual-label { font-size:0.72rem; color:var(--text-muted); margin-bottom:8px; text-transform:uppercase; letter-spacing:0.5px; }
.bilingual-text { font-size:0.92rem; line-height:1.7; white-space:pre-wrap; }

/* Photos */
.photo-grid { display:flex; gap:12px; flex-wrap:wrap; }
.detail-photo { width:160px; height:120px; object-fit:cover; border-radius:var(--radius-sm); border:1px solid var(--border); cursor:pointer; transition:transform 0.2s; }
.detail-photo:hover { transform:scale(1.05); }

/* Attachment */
.attachment-box { display:flex; align-items:center; gap:12px; background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius-sm); padding:14px; }
.attachment-icon { font-size:1.8rem; }
.attachment-info { flex:1; }
.attachment-name { font-size:0.92rem; word-break:break-all; }
.attachment-size { font-size:0.78rem; color:var(--text-muted); }
.attachment-dl { background:var(--cyan); color:#0d1117; border:none; border-radius:var(--radius-sm); padding:8px 16px; cursor:pointer; font-size:0.88rem; text-decoration:none; display:inline-block; }

/* ── Comment Section ─────────────────── */
.comment-section { margin-top:24px; }
.comment-section-title { font-size:0.82rem; color:var(--text-muted); text-transform:uppercase; letter-spacing:1px; margin-bottom:10px; padding-bottom:6px; border-bottom:1px solid var(--border); }

#comment-container {
  background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius-sm);
  padding:16px; min-height:200px; max-height:480px; overflow-y:auto; margin-bottom:16px;
}

.comment-item { margin-bottom:16px; }
.comment-admin { padding-left:0; }
.comment-customer { padding-left:24px; }
.comment-meta { display:flex; gap:10px; align-items:center; margin-bottom:6px; }
.comment-sender { font-size:0.78rem; font-weight:500; color:var(--cyan); }
.comment-item.comment-customer .comment-sender { color:var(--orange); }
.comment-time { font-size:0.72rem; color:var(--text-muted); }
.comment-original   { font-size:0.9rem; line-height:1.7; white-space:pre-wrap; background:var(--bg3); padding:10px 12px; border-radius:var(--radius-sm); }
.comment-translated { font-size:0.88rem; line-height:1.7; white-space:pre-wrap; color:var(--text-muted); background:var(--bg); padding:8px 12px; border-radius:var(--radius-sm); margin-top:4px; border-left:2px solid var(--border); }

/* Comment Input */
.comment-input-area { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.comment-input-col { display:flex; flex-direction:column; gap:6px; }
.comment-col-label { font-size:0.75rem; color:var(--text-muted); }
.comment-lang-hint { font-size:0.72rem; color:var(--cyan); }
textarea.form-input { resize:vertical; min-height:80px; line-height:1.6; }

.comment-actions { display:flex; gap:10px; align-items:center; flex-wrap:wrap; }
.btn-send { background:var(--cyan); color:#0d1117; border:none; border-radius:var(--radius-sm); padding:10px 20px; cursor:pointer; font-size:0.9rem; font-weight:500; transition:opacity 0.2s; }
.btn-send:hover { opacity:0.85; }
.btn-send:disabled { opacity:0.5; cursor:not-allowed; }
.btn-translate { background:none; border:1px solid var(--cyan); color:var(--cyan); border-radius:var(--radius-sm); padding:9px 16px; cursor:pointer; font-size:0.88rem; transition:all 0.2s; }
.btn-translate:hover { background:rgba(34,211,238,0.1); }

.btn-cancel-active {
  border:2px solid var(--orange) !important; color:var(--orange) !important;
  background:rgba(249,115,22,0.08) !important; animation:pulse-orange 1s ease-in-out infinite;
}
@keyframes pulse-orange { 0%,100%{border-color:var(--orange);} 50%{border-color:rgba(249,115,22,0.4);} }
.btn-disabled { background:none; border:1px solid var(--border); color:var(--text-muted); border-radius:var(--radius-sm); padding:9px 16px; cursor:not-allowed; font-size:0.88rem; }

/* ── Toast ───────────────────────────── */
.toast { position:fixed; bottom:24px; right:24px; background:var(--bg3); border:1px solid var(--border); border-radius:var(--radius-sm); padding:12px 20px; font-size:0.88rem; opacity:0; transform:translateY(8px); transition:all 0.3s; z-index:9999; max-width:320px; }
.toast.show { opacity:1; transform:translateY(0); }
.toast-info    { border-color:var(--cyan); }
.toast-success { border-color:var(--green); }
.toast-warning { border-color:var(--orange); }
.toast-error   { border-color:var(--pink); }

/* ── Utilities ───────────────────────── */
.empty-msg   { color:var(--text-muted); font-size:0.9rem; text-align:center; padding:40px 24px; }
.loading-msg { color:var(--text-muted); font-size:0.88rem; text-align:center; padding:20px; }

/* ── Responsive ──────────────────────── */
@media (max-width: 768px) {
  #app-sidebar { width:100%; height:auto; position:relative; flex-direction:row; flex-wrap:wrap; }
  .report-row { grid-template-columns:14px 1fr auto; }
  .report-date-cell, .report-type-cell { display:none; }
  .bilingual-box { grid-template-columns:1fr; }
  .comment-input-area { grid-template-columns:1fr; }
  .project-list { grid-template-columns:1fr; }
}
