:root{
  --lime:#D2FF37; --lime-deep:#8fbf00; --lime-soft:#eaffbf;
  --ink:#0f1115; --ink-2:#3a3f4a; --muted:#7b8290; --faint:#aab0bb;
  --bg:#ffffff; --panel:#ffffff; --wash:#f6f7f4; --line:#e7e9e4; --line-2:#eef0ea;
  --good:#12a150; --good-bg:#e9f8ee; --warn:#c98a00; --warn-bg:#fdf4e0;
  --bad:#e5484d; --bad-bg:#fdecec; --blue:#2f6bff;
  --shadow:0 1px 2px rgba(15,17,21,.04), 0 8px 24px rgba(15,17,21,.05);
  --radius:16px; --radius-sm:11px;
}
*{box-sizing:border-box}
html,body{margin:0}
body{
  font-family:'Outfit',system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  background:var(--wash); color:var(--ink);
  font-size:15px; line-height:1.5; -webkit-font-smoothing:antialiased;
}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{margin:0;font-weight:700;letter-spacing:-.02em;line-height:1.2}
p{margin:0 0 .6em}
button{font-family:inherit}

/* ---------- topbar ---------- */
.topbar{
  position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:22px;
  height:60px;padding:0 22px;background:rgba(255,255,255,.86);backdrop-filter:saturate(1.5) blur(10px);
  border-bottom:1px solid var(--line);
}
.brand{display:flex;align-items:center;gap:10px;font-weight:800;letter-spacing:-.03em;font-size:18px}
.brand-dot{width:16px;height:16px;border-radius:6px;background:var(--lime);box-shadow:0 0 0 4px rgba(210,255,55,.22)}
.brand-name{color:var(--ink)}
.brand-sub{color:var(--faint);font-weight:600}
.tabs{display:flex;gap:4px;margin-left:6px}
.tab{padding:8px 14px;border-radius:10px;color:var(--muted);font-weight:600;font-size:14.5px;transition:.15s}
.tab:hover{background:var(--wash);color:var(--ink)}
.tab.on{background:var(--ink);color:#fff}
.topbar-right{margin-left:auto;display:flex;align-items:center;gap:12px}
.who{display:flex;align-items:center;gap:8px;color:var(--ink-2);font-weight:600;font-size:14px}
.avatar{width:26px;height:26px;border-radius:50%;background:var(--lime);color:var(--ink);
  display:grid;place-items:center;font-weight:800;font-size:13px}

/* ---------- layout ---------- */
.wrap{max-width:1080px;margin:0 auto;padding:30px 22px 90px}
.page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:22px}
.page-head h1{font-size:30px;font-weight:800}
.page-head .lede{color:var(--muted);margin-top:6px;max-width:60ch}
.kicker{font-size:12px;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--lime-deep)}
.crumbs{display:flex;gap:8px;align-items:center;color:var(--muted);font-size:13.5px;margin-bottom:14px}
.crumbs a:hover{color:var(--ink)}

/* ---------- cards ---------- */
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.card.pad{padding:22px}
.grid{display:grid;gap:16px}
.grid.stats{grid-template-columns:repeat(4,1fr)}
.stat{padding:18px}
.stat .n{font-size:28px;font-weight:800;letter-spacing:-.03em}
.stat .l{color:var(--muted);font-size:13px;margin-top:2px;font-weight:500}
.stat.accent{background:var(--ink);color:#fff;border-color:var(--ink)}
.stat.accent .l{color:#c9cdd6}
.stat.lime{background:var(--lime);border-color:var(--lime)}

/* ---------- buttons / chips ---------- */
.btn{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--ink);background:var(--ink);color:#fff;
  padding:9px 15px;border-radius:10px;font-weight:600;font-size:14px;cursor:pointer;transition:.15s}
.btn:hover{transform:translateY(-1px)}
.btn.lime{background:var(--lime);border-color:var(--lime);color:var(--ink)}
.btn.lime:hover{background:var(--lime-deep);border-color:var(--lime-deep)}
.btn-ghost{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line);background:#fff;color:var(--ink-2);
  padding:9px 14px;border-radius:10px;font-weight:600;font-size:14px;cursor:pointer;transition:.15s}
.btn-ghost:hover{border-color:var(--ink);color:var(--ink)}
.btn.sm,.btn-ghost.sm{padding:6px 11px;font-size:13px;border-radius:9px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12.5px;font-weight:600;
  background:var(--wash);color:var(--ink-2);border:1px solid var(--line)}
.chip.type-th{background:#eef4ff;color:#2f5bd0;border-color:#dce7ff}
.chip.type-fl{background:#f3edff;color:#6b3fd0;border-color:#e6dcff}
.chip.type-cr{background:#fff2e6;color:#c06a10;border-color:#ffe3c9}
.badge{display:inline-flex;align-items:center;gap:6px;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:700}
.badge.pending{background:var(--warn-bg);color:var(--warn)}
.badge.approved{background:var(--good-bg);color:var(--good)}
.badge.rejected{background:var(--bad-bg);color:var(--bad)}
.badge.up{background:var(--lime);color:var(--ink)}
.badge.ghost{background:var(--wash);color:var(--muted)}

/* ---------- analytics ---------- */
.section-title{display:flex;align-items:center;gap:10px;margin:34px 0 14px;font-size:19px;font-weight:800}
.section-title .rule{flex:1;height:1px;background:var(--line)}
.prose{color:var(--ink-2)}
.prose h1,.prose h2,.prose h3{color:var(--ink);margin:1.1em 0 .5em}
.prose h2{font-size:20px} .prose h3{font-size:16px}
.prose ul,.prose ol{margin:.3em 0 1em;padding-left:1.2em}
.prose li{margin:.28em 0}
.prose strong{color:var(--ink)}
.prose code{background:var(--wash);border:1px solid var(--line);border-radius:6px;padding:1px 6px;font-size:.9em}
.prose table{border-collapse:collapse;width:100%;margin:.6em 0;font-size:14px}
.prose th,.prose td{border:1px solid var(--line);padding:7px 10px;text-align:left}
.prose th{background:var(--wash)}
.prose blockquote{margin:.6em 0;padding:10px 16px;border-left:3px solid var(--lime);background:var(--wash);border-radius:0 10px 10px 0;color:var(--ink-2)}

.scenarios{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.scn{padding:18px 20px;border-radius:var(--radius);border:1px solid var(--line);background:#fff;position:relative;overflow:hidden}
.scn::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--lime)}
.scn .n{position:absolute;right:16px;top:14px;font-size:34px;font-weight:800;color:var(--line-2)}
.scn h4{font-size:16px} .scn .win{color:var(--lime-deep);font-weight:700;font-size:12.5px;margin:3px 0 8px}
.scn .body{color:var(--ink-2);font-size:14px}
.scn .body ul{margin:.2em 0;padding-left:1.1em}

/* ---------- content plan ---------- */
.batch-head{display:flex;align-items:center;gap:10px;margin:30px 0 14px}
.batch-head h2{font-size:18px}
.topic{margin-bottom:16px;overflow:hidden}
.topic-top{padding:18px 20px;display:flex;gap:16px;align-items:flex-start;border-bottom:1px solid var(--line-2)}
.topic-top .meta{flex:1}
.topic-top h3{font-size:18px}
.topic-cat{color:var(--lime-deep);font-weight:700;font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.topic-sum{color:var(--muted);margin-top:5px;font-size:14px}
.why{margin-top:10px;padding:10px 12px;background:var(--wash);border-radius:10px;font-size:13.5px;color:var(--ink-2)}
.why b{color:var(--ink)}
.items{display:grid;grid-template-columns:repeat(3,1fr)}
.item-cell{padding:16px 18px;border-right:1px solid var(--line-2);display:flex;flex-direction:column;gap:9px;min-height:150px;transition:.15s;cursor:pointer}
.item-cell:last-child{border-right:0}
.item-cell:hover{background:var(--wash)}
.item-cell .row{display:flex;align-items:center;justify-content:space-between;gap:8px}
.item-cell .hook{font-weight:600;font-size:14.5px;line-height:1.35;color:var(--ink);flex:1}
.item-cell .foot{margin-top:auto;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dur{color:var(--muted);font-size:12.5px;font-weight:600}
.empty-cell{color:var(--faint);font-size:13px;display:grid;place-items:center;min-height:150px;border-right:1px solid var(--line-2)}

/* ---------- schedule ---------- */
.day{margin-bottom:14px}
.day-head{display:flex;align-items:center;gap:12px;padding:8px 4px;position:sticky;top:60px;background:var(--wash);z-index:5}
.day-head .d{font-size:16px;font-weight:800}
.day-head .c{color:var(--muted);font-size:13px}
.day-head .rule{flex:1;height:1px;background:var(--line)}
.sched-row{display:flex;align-items:center;gap:14px;padding:12px 16px;background:#fff;border:1px solid var(--line);
  border-radius:12px;margin-bottom:8px;transition:.12s;cursor:pointer}
.sched-row:hover{border-color:var(--ink);transform:translateX(2px)}
.sched-row .t{flex:1;font-weight:600}
.sched-row .tp-topic{color:var(--muted);font-weight:500;font-size:13px}

/* ---------- item page ---------- */
.item-hero{padding:22px 24px}
.item-hero .hook-big{font-size:22px;font-weight:800;letter-spacing:-.02em;margin:6px 0 12px}
.item-hero .controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-top:6px}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:10px;overflow:hidden}
.seg button{border:0;background:#fff;padding:8px 14px;font-weight:600;font-size:13.5px;cursor:pointer;color:var(--muted);border-right:1px solid var(--line)}
.seg button:last-child{border-right:0}
.seg button.on.approved{background:var(--good);color:#fff}
.seg button.on.rejected{background:var(--bad);color:#fff}
.seg button.on.pending{background:var(--warn);color:#fff}
.cols{display:grid;grid-template-columns:1fr 320px;gap:18px;margin-top:18px;align-items:start}
@media(max-width:900px){.cols{grid-template-columns:1fr}.grid.stats{grid-template-columns:repeat(2,1fr)}.items{grid-template-columns:1fr}.scenarios{grid-template-columns:1fr}.item-cell{border-right:0;border-bottom:1px solid var(--line-2)}}
.side{display:flex;flex-direction:column;gap:14px}
.panel{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px}
.panel h4{font-size:13px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:12px}
.toggle{display:flex;align-items:center;gap:10px;cursor:pointer;user-select:none}
.toggle input{display:none}
.switch{width:44px;height:26px;border-radius:999px;background:var(--line);position:relative;transition:.18s;flex:none}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.18s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.toggle input:checked + .switch{background:var(--lime-deep)}
.toggle input:checked + .switch::after{transform:translateX(18px)}

/* versions & diff */
.vlist{display:flex;flex-direction:column;gap:6px}
.vrow{display:flex;align-items:center;gap:10px;padding:8px 10px;border-radius:9px;font-size:13.5px}
.vrow:hover{background:var(--wash)}
.vrow .vno{font-weight:800;background:var(--ink);color:#fff;border-radius:6px;padding:1px 7px;font-size:12px}
.vrow .vmeta{color:var(--muted);font-size:12.5px}
.vrow.cur .vno{background:var(--lime-deep)}
.diff{border:1px solid var(--line);border-radius:12px;overflow:hidden;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;background:#fff}
.dl{display:flex;gap:0;white-space:pre-wrap;word-break:break-word}
.dl .sign{width:22px;text-align:center;flex:none;color:var(--faint);user-select:none}
.dl .txt{padding:1px 8px 1px 0;flex:1}
.dl.add{background:#e9f8ee}.dl.add .sign{color:var(--good)}
.dl.del{background:#fdecec}.dl.del .sign{color:var(--bad)}
.dl.ctx{color:var(--ink-2)}

/* comments */
.comment{display:flex;gap:11px;padding:12px 0;border-top:1px solid var(--line-2)}
.comment:first-child{border-top:0}
.comment .av{width:30px;height:30px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700;font-size:13px;flex:none}
.comment .c-body{flex:1}
.comment .c-head{display:flex;gap:8px;align-items:baseline}
.comment .c-name{font-weight:700}
.comment .c-time{color:var(--faint);font-size:12px}
.comment .c-text{color:var(--ink-2);margin-top:2px;white-space:pre-wrap}

/* attachments */
.att{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid var(--line);border-radius:10px;margin-bottom:7px}
.att .ic{width:30px;height:30px;border-radius:8px;background:var(--wash);display:grid;place-items:center}
.att .an{flex:1;font-weight:600;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.att .asz{color:var(--faint);font-size:12px}

/* forms */
textarea,input[type=text],input[type=password],input[type=number],input[type=date],select{
  width:100%;font-family:inherit;font-size:14.5px;color:var(--ink);background:#fff;
  border:1px solid var(--line);border-radius:10px;padding:10px 12px;outline:none;transition:.15s}
textarea:focus,input:focus,select:focus{border-color:var(--ink);box-shadow:0 0 0 3px rgba(15,17,21,.06)}
textarea{resize:vertical;line-height:1.55;font-family:ui-monospace,Menlo,monospace;font-size:13.5px}
label.fld{display:block;margin-bottom:12px}
label.fld > span{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:5px}
.form-row{display:flex;gap:12px}.form-row>*{flex:1}
details.editor{margin-top:14px}
details.editor > summary{cursor:pointer;font-weight:600;color:var(--muted);list-style:none;display:inline-flex;gap:6px;align-items:center}
details.editor > summary::-webkit-details-marker{display:none}

/* login */
.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:24px;background:
  radial-gradient(1000px 500px at 80% -10%,rgba(210,255,55,.16),transparent 60%),var(--wash)}
.auth-card{width:100%;max-width:400px;background:#fff;border:1px solid var(--line);border-radius:20px;
  padding:34px 30px;box-shadow:var(--shadow)}
.auth-card .brand{font-size:22px;margin-bottom:4px}
.auth-card h1{font-size:22px;margin:14px 0 2px}
.auth-card .sub{color:var(--muted);margin-bottom:20px;font-size:14px}
.auth-card .btn{width:100%;justify-content:center;margin-top:6px;padding:11px}
.auth-alt{margin-top:16px;text-align:center;color:var(--muted);font-size:14px}
.auth-alt a{color:var(--lime-deep);font-weight:700}
.err{background:var(--bad-bg);color:var(--bad);border:1px solid #f6c9cb;border-radius:10px;padding:9px 12px;font-size:13.5px;font-weight:600;margin-bottom:14px}

.muted{color:var(--muted)} .small{font-size:13px} .mt{margin-top:14px} .mb{margin-bottom:14px}
.hr{height:1px;background:var(--line);margin:16px 0}
.empty{padding:60px 20px;text-align:center;color:var(--muted)}
.empty .big{font-size:17px;font-weight:700;color:var(--ink-2);margin-bottom:6px}
.flex{display:flex;align-items:center;gap:10px}.between{justify-content:space-between}.wrap-g{flex-wrap:wrap}
