/* ============================================================
   OLOGY EXPLORER — shared engine styles (Kull OS)
   Layers on top of kw.css. One engine, many disciplines.
   Discipline accent is exposed as --ac (set per app).
   ============================================================ */
:root{ --ac:#c0473a; --ac-soft:rgba(192,71,58,.12); }

/* Toolbar search */
.ol-tools{flex:none;display:flex;align-items:center;gap:10px;padding:9px 14px;
  background:var(--paper-2);border-bottom:1px solid var(--line);}
.ol-search{flex:1;max-width:440px;display:flex;align-items:center;gap:8px;height:36px;padding:0 12px;
  background:var(--paper);border:1px solid var(--line-2);border-radius:10px;}
.ol-search:focus-within{border-color:var(--ac);box-shadow:0 0 0 3px var(--ac-soft);}
.ol-search input{flex:1;border:none;background:none;outline:none;font:inherit;font-size:13.5px;color:var(--ink);}
.ol-search .mag{opacity:.6;font-size:14px;}
.ol-tbtn{height:36px;padding:0 13px;border:1px solid var(--line-2);background:var(--paper-2);border-radius:9px;
  font-size:13px;font-weight:600;color:var(--ink);display:inline-flex;align-items:center;gap:7px;}
.ol-tbtn:hover{background:var(--paper-3);}
.ol-tbtn--ac{background:var(--ac);border-color:var(--ac);color:#fff;}
.ol-tbtn--ac:hover{filter:brightness(1.08);}
.ol-count{margin-left:auto;font-family:var(--mono);font-size:11.5px;color:var(--faint);}

/* Sidebar discipline header */
.ol-hero{padding:18px 16px 14px;border-bottom:1px solid var(--line);}
.ol-hero .mk{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font-size:23px;
  background:var(--ac);color:#fff;box-shadow:var(--shadow);}
.ol-hero .nm{font-size:17px;font-weight:800;margin-top:10px;letter-spacing:-.01em;}
.ol-hero .tg{font-size:12px;color:var(--muted);margin-top:1px;line-height:1.4;}
.side-i.active{box-shadow:inset 3px 0 0 var(--ac);}
.side-i .ct{margin-left:auto;font-family:var(--mono);font-size:10.5px;color:var(--faint);}

/* Gallery */
.ol-content{flex:1;min-width:0;overflow:auto;background:var(--paper);}
.ol-head{padding:22px 26px 6px;}
.ol-head h2{font-size:21px;letter-spacing:-.01em;margin:0;display:flex;align-items:center;gap:10px;}
.ol-head .sub{color:var(--muted);font-size:13px;margin:3px 0 0;}
.gal{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:16px;padding:18px 26px 36px;}
.gcard{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--paper-2);
  box-shadow:var(--shadow);cursor:pointer;transition:transform .13s,border-color .13s,box-shadow .13s;display:flex;flex-direction:column;}
.gcard:hover{transform:translateY(-4px);border-color:var(--ac);box-shadow:var(--shadow-lg);}
.gcard .ph{height:140px;background:var(--paper-3);background-size:cover;background-position:center;position:relative;}
.gcard .ph.fallback{display:grid;place-items:center;background:
  linear-gradient(150deg,var(--ac-soft),var(--paper-3));}
.gcard .ph.fallback .gl{font-size:40px;opacity:.7;}
.gcard .ph .load{position:absolute;inset:0;display:grid;place-items:center;color:var(--faint);font-size:12px;font-family:var(--mono);}
.gcard .cap{padding:11px 13px 13px;}
.gcard .cap .t{font-size:14px;font-weight:700;line-height:1.2;letter-spacing:-.01em;}
.gcard .cap .d{font-size:11.5px;color:var(--muted);margin-top:4px;line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:32px;}
.gcard .cap .src{margin-top:8px;font-family:var(--pixel);font-size:8px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ac);}

/* Detail overlay */
.ov{position:absolute;inset:0;z-index:50;background:rgba(20,11,33,.55);backdrop-filter:blur(6px);
  display:none;align-items:center;justify-content:center;padding:30px;}
.ov.open{display:flex;animation:ovin .2s ease;}
@keyframes ovin{from{opacity:0;}to{opacity:1;}}
.ov-card{width:min(900px,100%);max-height:100%;background:var(--paper-2);border-radius:18px;overflow:hidden;
  box-shadow:var(--shadow-lg);display:flex;flex-direction:column;animation:ovrise .26s cubic-bezier(.2,.8,.2,1);}
@keyframes ovrise{from{transform:translateY(16px) scale(.98);opacity:0;}to{transform:none;opacity:1;}}
.ov-top{display:flex;min-height:0;}
@media(max-width:680px){.ov-top{flex-direction:column;}}
.ov-img{width:46%;flex:none;background:var(--ink);background-size:cover;background-position:center;min-height:320px;}
@media(max-width:680px){.ov-img{width:100%;height:200px;min-height:0;}}
.ov-img.fallback{display:grid;place-items:center;background:linear-gradient(150deg,var(--ac),var(--ink));}
.ov-img.fallback .gl{font-size:80px;opacity:.85;}
.ov-body{flex:1;min-width:0;padding:26px 28px;overflow:auto;}
.ov-eyebrow{font-family:var(--pixel);font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--ac);}
.ov-body h2{font-size:25px;letter-spacing:-.015em;margin:7px 0 2px;}
.ov-desc{font-size:13px;color:var(--muted);font-style:italic;margin-bottom:14px;}
.ov-extract{font-size:14.5px;line-height:1.65;color:var(--ink-2);}
.ov-links{display:flex;flex-wrap:wrap;gap:9px;margin-top:20px;}
.lk{display:inline-flex;align-items:center;gap:7px;height:38px;padding:0 15px;border-radius:10px;
  font-size:13px;font-weight:600;border:1px solid var(--line-2);background:var(--paper);color:var(--ink);transition:.12s;}
.lk:hover{border-color:var(--ac);background:var(--paper-3);}
.lk.primary{background:var(--ac);border-color:var(--ac);color:#fff;}
.lk.primary:hover{filter:brightness(1.08);background:var(--ac);}
.lk .i{font-size:14px;}
.ov-foot{flex:none;display:flex;align-items:center;gap:12px;padding:13px 20px;border-top:1px solid var(--line);
  background:var(--paper);font-size:12px;color:var(--faint);}
.ov-close{width:34px;height:34px;border-radius:9px;border:1px solid var(--line-2);background:var(--paper-2);
  font-size:16px;color:var(--muted);display:grid;place-items:center;}
.ov-close:hover{background:var(--paper-3);color:var(--ink);}
.ov-foot .sp{margin-left:auto;}
.ov-nav{display:flex;gap:7px;}
.ov-nav button{width:34px;height:34px;border-radius:9px;border:1px solid var(--line-2);background:var(--paper-2);font-size:15px;color:var(--ink);}
.ov-nav button:hover{background:var(--paper-3);}

/* loading shimmer */
@keyframes shim{0%{opacity:.5;}50%{opacity:1;}100%{opacity:.5;}}
.shim{animation:shim 1.1s ease-in-out infinite;}
.ol-empty{padding:60px 26px;text-align:center;color:var(--faint);}
.ol-empty .gl{font-size:48px;opacity:.5;} .ol-empty p{margin-top:10px;font-size:14px;}
