/* LAN Control — Ecosystem → News, Ecosystem → Events, Design → Posts & flyers (public/lan-eco.js) */
.ec-strip { display:flex; flex-wrap:wrap; align-items:center; gap:10px 18px; padding:12px 16px; margin-bottom:16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--shadow-sm); font-size:13px; color:var(--muted); }
.ec-strip b { color:var(--ink); font-weight:600; }
.ec-strip .grow { flex:1; }
.ec-strip .dot { width:8px; height:8px; border-radius:50%; display:inline-block; background:var(--ok, #2e7d32); margin-right:6px; }
.ec-strip .dot.run { background:var(--warn, #b26a00); animation:ecpulse 1s infinite alternate; }
@keyframes ecpulse { from { opacity:.35 } to { opacity:1 } }
.ec-filters { display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:12px; }
.ec-filters .search { flex:1 1 240px; }
.ec-filters select { max-width:210px; }
.ec-chips { display:flex; flex-wrap:wrap; gap:6px; margin:0 0 14px; }
.ec-chip { border:1px solid var(--line-2); background:var(--surface); color:var(--ink-2); font:inherit; font-size:12.5px; font-weight:500; padding:5px 11px; border-radius:99px; cursor:pointer; display:inline-flex; gap:6px; align-items:center; }
.ec-chip:hover { background:var(--hover); }
.ec-chip.on { background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.ec-chip i { font-style:normal; opacity:.7; font-variant-numeric:tabular-nums; }
.ec-tog { display:inline-flex; align-items:center; gap:6px; font-size:13px; color:var(--ink-2); cursor:pointer; user-select:none; }
.ec-tog input { width:16px; height:16px; padding:0; }
.ec-sum { display:flex; flex-wrap:wrap; gap:4px 16px; font-size:13px; color:var(--muted); margin:-2px 0 12px; }
.ec-sum b { color:var(--ink); }
.ec-bulk { position:sticky; top:0; z-index:5; display:none; align-items:center; gap:8px; flex-wrap:wrap; padding:10px 14px; margin-bottom:12px; background:var(--accent); color:var(--accent-ink); border-radius:12px; box-shadow:var(--shadow); font-size:13px; }
.ec-bulk.on { display:flex; }
.ec-bulk .btn { height:30px; font-size:12.5px; }
.ec-bulk b { margin-right:auto; }
.ec-list { display:flex; flex-direction:column; gap:10px; }
.ec-card { display:grid; grid-template-columns:auto 116px minmax(0, 1fr) auto; gap:14px; align-items:start; padding:14px 16px; background:var(--surface); border:1px solid var(--line); border-radius:var(--r); box-shadow:var(--shadow-sm); transition:border-color .15s, box-shadow .15s; }
.ec-card:hover { border-color:var(--line-2); box-shadow:var(--shadow); }
.ec-card.pinned { border-color:color-mix(in srgb, var(--gold, #ffa904) 70%, var(--line)); box-shadow:inset 3px 0 0 var(--gold, #ffa904), var(--shadow-sm); }
.ec-card.seen .ec-t { color:var(--ink-2); font-weight:600; }
.ec-card.dim { opacity:.62; }
.ec-card > input[type=checkbox] { width:17px; height:17px; margin-top:4px; padding:0; }
.ec-thumb { width:116px; height:78px; border-radius:10px; background:var(--soft) center/cover no-repeat; display:grid; place-items:center; color:var(--muted); overflow:hidden; }
.ec-thumb svg { width:26px; height:26px; opacity:.5; }
.ec-t { font-size:15.5px; font-weight:700; line-height:1.3; color:var(--ink); display:block; margin-bottom:4px; letter-spacing:-.01em; }
.ec-t:hover { color:var(--accent-text); text-decoration:underline; }
.ec-meta { display:flex; flex-wrap:wrap; align-items:center; gap:4px 10px; font-size:12.5px; color:var(--muted); margin-bottom:6px; }
.ec-meta .pill { font-size:11.5px; }
.ec-p { font-size:13.5px; line-height:1.5; color:var(--ink-2); margin:0 0 6px; display:-webkit-box; -webkit-line-clamp:3; -webkit-box-orient:vertical; overflow:hidden; cursor:pointer; }
.ec-p.open { -webkit-line-clamp:unset; }
.ec-why { font-size:13px; line-height:1.45; color:var(--ink); background:var(--soft); border-radius:8px; padding:6px 10px; margin:4px 0 6px; }
.ec-why b { color:var(--accent-text); font-weight:600; }
.ec-terms { font-size:11.5px; color:var(--muted); }
.ec-terms span { display:inline-block; padding:1px 7px; margin:2px 4px 0 0; border-radius:6px; background:var(--soft); }
.ec-note { font-size:12.5px; color:var(--ink-2); border-left:3px solid var(--gold, #ffa904); padding:2px 0 2px 8px; margin-top:6px; }
.ec-act { display:flex; flex-direction:column; gap:6px; align-items:stretch; }
.ec-act .row { display:flex; gap:6px; justify-content:flex-end; }
.ec-ib { width:34px; height:34px; padding:0; border-radius:9px; border:1px solid var(--line-2); background:var(--surface); color:var(--ink-2); cursor:pointer; display:grid; place-items:center; }
.ec-ib:hover { background:var(--hover); color:var(--ink); }
.ec-ib.on { background:var(--gold-soft, #fff3d6); color:var(--gold-ink, #8a5a00); border-color:var(--gold, #ffa904); }
.ec-ib svg { width:17px; height:17px; }
.ec-score { display:inline-flex; align-items:center; gap:6px; font-variant-numeric:tabular-nums; font-weight:600; color:var(--ink-2); }
.ec-score i { width:44px; height:6px; border-radius:3px; background:linear-gradient(90deg, var(--accent) var(--p), var(--soft) var(--p)); display:inline-block; }
.ec-ai { font-size:11.5px; font-weight:700; padding:2px 7px; border-radius:6px; background:var(--accent-soft); color:var(--accent-text); }
.ec-ai.lo { background:var(--soft); color:var(--muted); }
.ec-ai.hi { background:var(--ok-soft); color:var(--ok); }
.ec-week { font-size:12px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; color:var(--muted); margin:18px 0 2px; display:flex; align-items:center; gap:10px; }
.ec-week::after { content:""; flex:1; height:1px; background:var(--line); }
.ec-week:first-child { margin-top:0; }
.ec-ev { grid-template-columns:auto 82px minmax(0, 1fr) auto; }
.ec-date { width:82px; border-radius:12px; overflow:hidden; text-align:center; border:1px solid var(--line); background:var(--surface); }
.ec-date .m { display:block; background:var(--accent); color:var(--accent-ink); font-size:11.5px; font-weight:700; letter-spacing:.08em; padding:4px 0; text-transform:uppercase; }
.ec-date .d { display:block; font-size:30px; font-weight:800; line-height:1.1; color:var(--ink); padding-top:4px; }
.ec-date .w { display:block; font-size:11.5px; color:var(--muted); padding-bottom:6px; font-weight:600; }
.ec-date.today .m { background:var(--bad, #c62828); }
.ec-ev select { height:30px; font-size:12.5px; }
.ec-src { display:inline-flex; gap:4px; flex-wrap:wrap; }
.ec-src span { font-size:11px; padding:1px 7px; border-radius:6px; background:var(--soft); color:var(--ink-2); }
.ec-src span.wa { background:#dcf8c6; color:#075e54; }
.ec-cal { display:grid; grid-template-columns:repeat(7, minmax(0, 1fr)); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; background:var(--line); gap:1px; }
.ec-cal .h { background:var(--soft); font-size:11.5px; font-weight:700; color:var(--muted); text-transform:uppercase; padding:6px 8px; letter-spacing:.05em; }
.ec-cal .c { background:var(--surface); min-height:104px; padding:6px; font-size:12px; display:flex; flex-direction:column; gap:3px; }
.ec-cal .c.out { background:var(--bg); color:var(--muted); }
.ec-cal .c.now { box-shadow:inset 0 0 0 2px var(--accent); }
.ec-cal .c > b { font-size:12px; color:var(--muted); font-weight:600; }
.ec-cal .e { display:block; padding:3px 6px; border-radius:6px; background:var(--accent-soft); color:var(--accent-text); font-weight:600; font-size:11.5px; line-height:1.25; cursor:pointer; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; border:0; text-align:left; font-family:inherit; }
.ec-cal .e.attend { background:var(--ok-soft); color:var(--ok); }
.ec-cal .e.wa { background:#dcf8c6; color:#075e54; }
.ec-calnav { display:flex; align-items:center; gap:10px; margin-bottom:10px; }
.ec-calnav b { font-size:16px; min-width:170px; }
@media (max-width:760px) {
  .ec-card { grid-template-columns:auto minmax(0, 1fr); }
  .ec-thumb, .ec-card .ec-date { grid-row:span 1; }
  .ec-card .ec-thumb { display:none; }
  .ec-ev { grid-template-columns:auto 70px minmax(0, 1fr); }
  .ec-date { width:70px; }
  .ec-act { grid-column:1 / -1; }
  .ec-act .row { justify-content:flex-start; flex-wrap:wrap; }
  .ec-cal .c { min-height:70px; }
  .ec-cal .e { font-size:10.5px; }
}
/* Sources & schedule */
.ec-days { display:flex; gap:4px; flex-wrap:wrap; }
.ec-days button { width:46px; height:34px; border-radius:8px; border:1px solid var(--line-2); background:var(--surface); font:inherit; font-size:12.5px; font-weight:600; color:var(--ink-2); cursor:pointer; }
.ec-days button.on { background:var(--accent); border-color:var(--accent); color:var(--accent-ink); }
.ec-form { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap:12px 16px; padding:16px 18px; }
.ec-form label { display:flex; flex-direction:column; gap:5px; font-size:12.5px; font-weight:500; color:var(--ink-2); }
.ec-form label.full { grid-column:1 / -1; }
.ec-form .hint { font-size:12px; color:var(--muted); font-weight:400; }
.ec-bad { color:var(--bad); font-size:12px; }
.ec-src-t td { vertical-align:middle; font-size:13px; }
.ec-src-t td.u { max-width:280px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:12px; color:var(--muted); }
.ec-src-t select { height:30px; width:64px; padding:0 6px; }
.ec-sw { position:relative; width:38px; height:22px; flex:none; display:inline-block; }
.ec-sw input { opacity:0; width:0; height:0; }
.ec-sw span { position:absolute; inset:0; border-radius:22px; background:var(--line-2); cursor:pointer; transition:background .2s; }
.ec-sw span::after { content:""; position:absolute; width:16px; height:16px; left:3px; top:3px; border-radius:50%; background:#fff; transition:transform .2s; box-shadow:0 1px 2px rgba(0,0,0,.25); }
.ec-sw input:checked + span { background:var(--accent); }
.ec-sw input:checked + span::after { transform:translateX(16px); }
.ec-test { max-height:320px; overflow:auto; font-size:12.5px; border-top:1px solid var(--line); }
.ec-test div { padding:6px 18px; border-bottom:1px solid var(--line); display:flex; gap:10px; }
.ec-test div.no { color:var(--muted); }
/* Downloads */
.ec-dl { display:grid; grid-template-columns:minmax(0, 360px) minmax(0, 1fr); gap:16px; align-items:start; }
@media (max-width:900px) { .ec-dl { grid-template-columns:1fr; } }
.ec-dl ol { margin:0; padding:12px 18px 14px 36px; font-size:13px; line-height:1.45; }
.ec-dl ol li { margin-bottom:6px; }
.ec-dl ol li small { color:var(--muted); display:block; }
.ec-btns { display:flex; flex-wrap:wrap; gap:8px; padding:0 18px 16px; }
/* The studio: make a post / flyer */
.ec-modal { position:fixed; inset:0; z-index:400; background:rgba(8,6,30,.55); display:flex; align-items:stretch; justify-content:center; padding:24px; animation:ecfade .15s ease; }
@keyframes ecfade { from { opacity:0 } }
.ec-dlg { background:var(--surface); border-radius:16px; box-shadow:0 24px 70px rgba(0,0,0,.35); width:min(1280px, 100%); display:flex; flex-direction:column; overflow:hidden; }
.ec-dlg.sm { width:min(640px, 100%); margin:auto 0; max-height:100%; }
.ec-dlg-h { display:flex; align-items:center; gap:12px; padding:14px 18px; border-bottom:1px solid var(--line); }
.ec-dlg-h h2 { flex:1; margin:0; font-size:16px; }
.ec-dlg-b { flex:1; min-height:0; overflow:auto; }
.ec-studio { display:grid; grid-template-columns:320px minmax(0, 1fr) 320px; height:100%; min-height:0; }
.ec-studio > div { min-height:0; overflow:auto; }
.ec-tpls { padding:12px; display:grid; grid-template-columns:1fr 1fr; gap:10px; border-right:1px solid var(--line); align-content:start; }
.ec-tpl { border:2px solid transparent; border-radius:10px; padding:0; background:var(--soft); cursor:pointer; overflow:hidden; text-align:left; font:inherit; }
.ec-tpl svg { width:100%; height:auto; display:block; }
.ec-tpl span { display:block; font-size:11.5px; font-weight:600; padding:5px 7px; color:var(--ink-2); }
.ec-tpl.on { border-color:var(--accent); }
.ec-stage { background:repeating-conic-gradient(var(--soft) 0 25%, var(--surface) 0 50%) 0 0 / 22px 22px; display:flex; align-items:center; justify-content:center; padding:24px; }
.ec-stage svg { max-width:100%; max-height:calc(100vh - 190px); width:auto; height:auto; box-shadow:0 10px 40px rgba(0,0,0,.25); border-radius:4px; background:#fff; }
.ec-side { border-left:1px solid var(--line); padding:14px 16px; display:flex; flex-direction:column; gap:12px; }
.ec-side label { display:flex; flex-direction:column; gap:5px; font-size:12.5px; font-weight:500; color:var(--ink-2); }
.ec-side textarea { height:auto; min-height:64px; padding:8px 11px; resize:vertical; line-height:1.4; }
.ec-side .cap { min-height:150px; font-size:13px; }
.ec-side .row { display:flex; gap:8px; flex-wrap:wrap; }
.ec-side h3 { font-size:12px; text-transform:uppercase; letter-spacing:.05em; color:var(--muted); margin:6px 0 0; }
@media (max-width:1100px) {
  .ec-modal { padding:0; }
  .ec-dlg { border-radius:0; }
  .ec-studio { grid-template-columns:1fr; height:auto; }
  .ec-tpls { grid-template-columns:repeat(3, 1fr); border-right:0; border-bottom:1px solid var(--line); max-height:260px; }
  .ec-side { border-left:0; border-top:1px solid var(--line); }
  .ec-stage svg { max-height:60vh; }
}
/* Design → Posts & flyers */
.ec-gal { display:grid; grid-template-columns:repeat(auto-fill, minmax(min(100%, 250px), 1fr)); gap:16px; }
.ec-gi { background:var(--surface); border:1px solid var(--line); border-radius:var(--r); overflow:hidden; box-shadow:var(--shadow-sm); display:flex; flex-direction:column; }
.ec-gi.off { opacity:.55; }
.ec-gi .pv { background:var(--soft); padding:12px; display:flex; justify-content:center; align-items:center; min-height:200px; }
.ec-gi .pv svg { width:100%; height:auto; max-height:320px; border-radius:3px; box-shadow:0 4px 16px rgba(0,0,0,.18); }
.ec-gi .bd { padding:12px 14px; display:flex; flex-direction:column; gap:8px; flex:1; }
.ec-gi .bd b { font-size:14px; }
.ec-gi .bd p { margin:0; font-size:12.5px; color:var(--muted); line-height:1.4; }
.ec-gi .bd .row { display:flex; gap:6px; flex-wrap:wrap; align-items:center; margin-top:auto; }
.ec-gi select, .ec-gi input { height:30px; font-size:12.5px; }
.ec-strip svg { width:18px; height:18px; color:#25d366; }
.ec-filters .search { min-width:260px; }
