:root{
  --bg:#f4f5f7; --card:#ffffff; --border:#dfe3e8; --text:#1f2430; --muted:#6b7280;
  --accent:#3454d1; --accent-dark:#2740a8; --accent-soft:#eaeefc;
  --danger:#c0392b; --danger-soft:#fdecea;
  --ok:#1f8a4c; --ok-soft:#e8f6ee;
  --warn:#a56b00; --warn-soft:#fff3dd;
  --locked:#6b21a8; --locked-soft:#f1e6fb;
  --del:#8a8f98; --del-soft:#eceef1;
  --star:#c98a00;
}
*{box-sizing:border-box;}
body{
  margin:0; font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg); color:var(--text); font-size:14px;
}
.wrap{max-width:1220px; margin:0 auto; padding:24px 20px 60px;}
header{display:flex; align-items:center; justify-content:space-between; margin-bottom:16px; gap:16px; flex-wrap:wrap;}
h1{font-size:20px; margin:0; letter-spacing:.2px;}
h1 span{color:var(--accent); font-weight:800;}
.role-box{display:flex; align-items:center; gap:8px; font-size:13px; color:var(--muted);}
select, input[type=text], input[type=number], input[type=url], input[type=password], textarea{
  font-family:inherit; font-size:13px; padding:7px 9px; border:1px solid var(--border); border-radius:6px; background:#fff; color:var(--text);
}
select:focus, input:focus, textarea:focus{outline:2px solid var(--accent-soft); border-color:var(--accent);}
.card{background:var(--card); border:1px solid var(--border); border-radius:10px; padding:18px 20px; margin-bottom:20px; box-shadow:0 1px 2px rgba(20,20,43,.03);}

.tabbar{display:flex; gap:4px; margin-bottom:14px; border-bottom:1px solid var(--border);}
.tab-btn{background:none; border:none; padding:10px 16px; font-size:13px; font-weight:700; color:var(--muted); cursor:pointer; border-bottom:2px solid transparent; margin-bottom:-1px;}
.tab-btn.active{color:var(--accent-dark); border-bottom-color:var(--accent);}
.tab-btn .count{display:inline-block; background:#eef0f4; color:#555; font-size:10.5px; font-weight:700; border-radius:10px; padding:1px 6px; margin-left:5px;}
.tab-panel{display:none;}
.tab-panel.active{display:block;}
.settings-tab-panel{display:none;}
.settings-tab-panel.active{display:block;}
.fetch-mode-panel{display:none; flex-direction:column; gap:10px;}
.fetch-mode-panel.active{display:flex;}

.week-nav{display:flex; align-items:center; gap:8px; background:var(--accent-soft); border-radius:8px; padding:6px 10px;}
.week-nav button{background:none; border:none; cursor:pointer; font-size:15px; color:var(--accent-dark); padding:2px 6px; border-radius:4px;}
.week-nav button:hover{background:rgba(52,84,209,.15);}
.week-label{font-weight:600; min-width:220px; text-align:center;}

.toolbar{display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:14px;}
.spacer{flex:1;}
button.btn{
  border:1px solid var(--border); background:#fff; color:var(--text); padding:8px 14px; border-radius:7px; font-size:13px;
  cursor:pointer; font-weight:600; transition:background .12s, border-color .12s; white-space:nowrap;
}
button.btn:hover{background:#f6f7fb;}
button.btn.primary{background:var(--accent); border-color:var(--accent); color:#fff;}
button.btn.primary:hover{background:var(--accent-dark);}
button.btn.danger{color:var(--danger);}
button.btn.danger:hover{background:var(--danger-soft); border-color:var(--danger);}
button.btn.ghost{color:var(--muted);}
button.btn.small{padding:5px 10px; font-size:12px;}
button.btn:disabled{opacity:.45; cursor:not-allowed;}

table{width:100%; border-collapse:collapse; font-size:13px;}
th{text-align:left; font-size:11.5px; text-transform:uppercase; letter-spacing:.04em; color:var(--muted); border-bottom:2px solid var(--border); padding:8px 10px; white-space:nowrap;}
td{border-bottom:1px solid var(--border); padding:9px 10px; vertical-align:top;}
tr:hover td{background:#fafbfd;}
.title-cell{font-weight:600; max-width:210px;}
.text-cell{color:#444; max-width:260px;}
.text-cell .clamp{display:block; max-height:38px; overflow:hidden;}
.url-cell a{color:var(--accent); text-decoration:none; font-size:12px;}
.url-cell a:hover{text-decoration:underline;}
.section-tag{display:inline-block; font-size:11px; font-weight:600; padding:3px 8px; border-radius:20px; background:#eef0f4; color:#444; white-space:nowrap;}
.status-pill{display:inline-block; font-size:11px; font-weight:700; padding:3px 9px; border-radius:20px; white-space:nowrap; border:none; cursor:default;}
button.status-pill{cursor:pointer;}
button.status-pill:hover{filter:brightness(.95);}
.status-candidate{background:#eef0f4; color:#555;}
.status-selected{background:var(--ok-soft); color:var(--ok);}
.status-saved{background:var(--warn-soft); color:var(--warn);}
.status-deleted{background:var(--del-soft); color:var(--del);}
.status-published{background:var(--locked-soft); color:var(--locked);}
.row-actions{display:flex; gap:4px; align-items:center;}
.row-actions button{border:none; background:none; cursor:pointer; font-size:13px; color:var(--muted); padding:3px 6px; border-radius:5px;}
.row-actions button:hover{background:#eee; color:var(--text);}
.row-actions button.del:hover{color:var(--danger); background:var(--danger-soft);}
.pick-check{accent-color:var(--ok); width:16px; height:16px; cursor:pointer;}
.pick-check:disabled{cursor:not-allowed;}
.empty-row td{text-align:center; color:var(--muted); padding:30px; font-style:italic;}
.toast{
  position:fixed; bottom:20px; right:20px; background:#20242f; color:#fff; padding:10px 16px; border-radius:8px;
  font-size:13px; box-shadow:0 6px 20px rgba(0,0,0,.25); opacity:0; transform:translateY(8px); transition:all .25s; pointer-events:none; max-width:340px; z-index:100;
}
.toast.show{opacity:1; transform:translateY(0);}
.panel-title{font-size:14px; font-weight:700; margin:0 0 12px;}
.field{margin-bottom:10px; display:flex; flex-direction:column; gap:4px;}
.field label{font-size:11.5px; font-weight:700; color:var(--muted); text-transform:uppercase; letter-spacing:.03em;}
.field textarea{min-height:70px; resize:vertical;}
.badge-note{font-size:11px; color:var(--muted); margin-top:2px;}
.modal-backdrop{position:fixed; inset:0; background:rgba(20,20,30,.5); display:none; align-items:center; justify-content:center; z-index:50; padding:30px;}
.modal-backdrop.open{display:flex;}
.modal{background:#fff; max-width:760px; width:100%; max-height:85vh; overflow:auto; border-radius:10px; position:relative; padding:0;}
.modal.narrow{max-width:480px;}
.modal .modal-body{padding:26px 26px 22px;}
.modal-close{position:absolute; top:10px; right:14px; font-size:20px; background:none; border:none; cursor:pointer; color:#888; z-index:2;}
.cfg-row{display:grid; grid-template-columns:1fr 110px; gap:10px; align-items:center; padding:6px 0; border-bottom:1px solid var(--border);}
.cfg-row:last-child{border-bottom:none;}
.log-line{padding:6px 0; border-bottom:1px solid #eee; font-size:12.5px; color:#444;}
.log-line .w{color:var(--muted); font-size:11px;}
footer.note{margin-top:26px; font-size:12px; color:var(--muted); line-height:1.6; background:#fff; border:1px dashed var(--border); border-radius:8px; padding:14px 16px;}
footer.note code{background:#eef0f4; padding:1px 5px; border-radius:4px;}

/* login screen */
.login-wrap{max-width:340px; margin:80px auto; background:#fff; border:1px solid var(--border); border-radius:10px; padding:28px 26px; box-shadow:0 1px 2px rgba(20,20,43,.03);}
.login-wrap h1{margin-bottom:4px;}
.login-wrap p.sub{color:var(--muted); font-size:12.5px; margin:0 0 20px;}
.login-wrap .field{margin-bottom:14px;}
.login-wrap input{width:100%; padding:9px 10px;}
.login-error{color:var(--danger); font-size:12.5px; margin-bottom:10px; min-height:16px;}
.hidden{display:none !important;}

.preview-frame{width:100%; height:70vh; border:1px solid var(--border); border-radius:8px;}
.draft-banner{background:#c0392b; color:#fff; text-align:center; font-weight:700; letter-spacing:1px; padding:8px; border-radius:8px 8px 0 0; font-size:12px;}
