/* PULSE — tri-panel media marketplace. Dark studio default · Open Procured light one click away. */
*{box-sizing:border-box;margin:0;padding:0;}
:root{
  --font:"Open Procured Standard",ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --track:-0.15px;
  --accent:#ECECF1; --accent-ink:#17171A;
  --r-card:16px; --r-nav:9px; --r-pill:999px;
}
body{
  --bg:#0B0B0D; --panel:#141417; --panel2:#1A1A1E; --rail:#101013; --line:#232329; --line-soft:#1D1D22;
  --ink1:#F4F4F6; --ink2:#A2A2AB; --ink3:#63636D;
  --chipbg:#1D1D22; --hover:#1A1A1F;
}
body[data-theme="light"]{
  --bg:#F2EDE3; --panel:#FBF8F1; --panel2:#F6F1E7; --rail:#F7F3EA; --line:#E5DDCC; --line-soft:#ECE5D6;
  --ink1:#2E2A24; --ink2:#6E6558; --ink3:#A49883;
  --chipbg:#EFE8DA; --hover:#F1EBDE;
}
html,body{background:var(--bg);color:var(--ink1);font-family:var(--font);letter-spacing:var(--track);
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;letter-spacing:inherit;cursor:pointer;}
canvas{display:block;}

/* background patterns */
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;}
body[data-bg="dots"]::before{background-image:radial-gradient(color-mix(in srgb,var(--ink3) 32%,transparent) 1px,transparent 1px);background-size:22px 22px;}
body[data-bg="grid"]::before{background-image:linear-gradient(color-mix(in srgb,var(--ink3) 16%,transparent) 1px,transparent 1px),linear-gradient(90deg,color-mix(in srgb,var(--ink3) 16%,transparent) 1px,transparent 1px);background-size:44px 44px;}
body[data-bg="waves"]::before{background-image:repeating-radial-gradient(circle at 50% 120%,transparent 0,transparent 38px,color-mix(in srgb,var(--ink3) 14%,transparent) 39px,transparent 40px);}
body[data-bg="none"]::before{display:none;}

.app{position:relative;z-index:1;display:grid;grid-template-columns:250px minmax(0,1fr) 302px;gap:14px;
  max-width:1360px;margin:0 auto;padding:16px;min-height:100vh;align-items:start;}
.rail,.aside{position:sticky;top:16px;max-height:calc(100vh - 32px);overflow-y:auto;scrollbar-width:thin;}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--r-card);}

/* ===== LEFT RAIL ===== */
.rail{background:var(--rail);border:1px solid var(--line);border-radius:var(--r-card);padding:16px 12px;}
.brand{display:flex;align-items:center;gap:10px;padding:4px 8px 14px;}
.brand canvas{width:30px;height:30px;flex:0 0 30px;}
.brand .wordmark{font-size:17px;font-weight:700;letter-spacing:2.5px;}
.brand .sub{display:block;font-size:10px;color:var(--ink3);letter-spacing:.4px;font-weight:400;margin-top:1px;}
.navlist{display:flex;flex-direction:column;gap:1px;}
.nav-i{display:flex;align-items:center;gap:10px;font-size:14px;color:var(--ink2);
  border-radius:var(--r-nav);padding:7px 10px;cursor:pointer;}
.nav-i:hover{background:var(--hover);color:var(--ink1);}
.nav-i.active{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--ink1);}
.nav-i .ic{width:13px;height:13px;border-radius:4px;background:var(--ink3);opacity:.5;flex:0 0 13px;}
.nav-i.active .ic{background:var(--accent);opacity:1;}
.nav-i .n{margin-left:auto;font-size:10px;color:var(--ink3);border:1px solid var(--line);border-radius:var(--r-pill);padding:1px 6px;}
.sec{font-size:10px;color:var(--ink3);text-transform:uppercase;letter-spacing:1.4px;margin:18px 8px 8px;}

/* playground */
.pg{padding:2px 8px 4px;display:flex;flex-direction:column;gap:9px;}
.pg-row{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
.pg-lbl{font-size:11px;color:var(--ink3);width:100%;}
.pg-btn{font-size:11px;color:var(--ink2);background:transparent;border:1px solid var(--line);
  border-radius:var(--r-pill);padding:3px 10px;}
.pg-btn.active{border-color:var(--accent);color:var(--ink1);background:color-mix(in srgb,var(--accent) 14%,transparent);}
.swatch{width:18px;height:18px;border-radius:50%;border:2px solid transparent;padding:0;}
.swatch.active{border-color:var(--ink1);}
.pg input[type=range]{width:100%;accent-color:var(--accent);}
.rail-foot{font-size:11px;color:var(--ink3);padding:14px 10px 2px;border-top:1px solid var(--line);margin-top:16px;line-height:1.6;}
.rail-foot b{color:var(--ink2);}

/* ===== CENTER ===== */
.main{display:flex;flex-direction:column;gap:14px;min-width:0;}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 2px;}
.crumb{font-size:13px;color:var(--ink3);}
.crumb b{color:var(--ink1);font-weight:600;}
.chip{font-size:11px;color:var(--ink3);border:1px solid var(--line);border-radius:var(--r-pill);padding:3px 10px;background:var(--panel);}
.view{display:none;flex-direction:column;gap:14px;}
.view.active{display:flex;}

.hero{padding:34px 30px 30px;position:relative;overflow:hidden;}
.hero .heroOrb{width:132px;height:132px;margin:0 auto 6px;}
.hero .state{text-align:center;font-size:12px;color:var(--ink3);height:16px;letter-spacing:.3px;}
.hero h1{font-size:31px;font-weight:700;letter-spacing:-0.6px;text-align:center;margin:10px 0 8px;line-height:1.18;}
.hero .sub{font-size:14px;color:var(--ink2);text-align:center;max-width:52ch;margin:0 auto;line-height:1.6;}
.cta-row{display:flex;gap:10px;justify-content:center;margin-top:18px;flex-wrap:wrap;}
.btn{font-size:13px;border-radius:var(--r-pill);padding:9px 18px;border:1px solid var(--line);
  background:transparent;color:var(--ink1);}
.btn:hover{background:var(--hover);}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink,#fff);font-weight:600;}
.btn.primary:hover{filter:brightness(1.08);}
.btn.sm{font-size:12px;padding:6px 13px;}

.block{padding:20px 22px;}
.block h2{font-size:15px;font-weight:600;margin-bottom:4px;}
.block .h-sub{font-size:12.5px;color:var(--ink3);margin-bottom:14px;}

/* card grid */
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(205px,1fr));gap:12px;}
.card{background:var(--panel2);border:1px solid var(--line-soft);border-radius:calc(var(--r-card) - 4px);
  padding:12px;display:flex;flex-direction:column;gap:9px;cursor:pointer;transition:border-color .15s, transform .15s;}
.card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));transform:translateY(-1px);}
.card.selected{border-color:var(--accent);}
.art{height:86px;border-radius:10px;background:color-mix(in srgb,var(--accent) 7%,var(--panel));
  border:1px solid var(--line-soft);display:grid;place-items:center;overflow:hidden;position:relative;}
.art canvas{width:100%;height:100%;position:absolute;inset:0;}
.art .glyph{font-size:44px;font-weight:700;color:var(--ink1);position:relative;}
.art .wavebars{display:flex;align-items:flex-end;gap:3px;height:46px;position:relative;}
.art .wavebars i{display:block;width:4px;border-radius:2px;background:var(--accent);opacity:.85;animation:bar 1.6s ease-in-out infinite;}
.art .swgrid{display:grid;grid-template-columns:repeat(3,16px);gap:6px;position:relative;}
.art .swgrid i{display:block;width:16px;height:16px;border-radius:5px;background:var(--accent);}
.art .swgrid i:nth-child(2){opacity:.65}.art .swgrid i:nth-child(3){opacity:.4}
.art .swgrid i:nth-child(4){opacity:.55}.art .swgrid i:nth-child(5){opacity:.3}.art .swgrid i:nth-child(6){opacity:.75}
@keyframes bar{0%,100%{transform:scaleY(.45)}50%{transform:scaleY(1)}}
.card .nm{font-size:13.5px;font-weight:600;line-height:1.3;}
.card .by{font-size:11.5px;color:var(--ink3);}
.card .ds{font-size:12px;color:var(--ink2);line-height:1.5;flex:1;}
.card .row{display:flex;align-items:center;gap:7px;margin-top:2px;}
.badge{font-size:9.5px;font-weight:600;letter-spacing:1px;text-transform:uppercase;border-radius:var(--r-pill);padding:2px 8px;}
.badge.live{color:#6B8F5E;background:rgba(107,143,94,.12);border:1px solid rgba(107,143,94,.32);}
.badge.coming{color:var(--ink3);background:var(--chipbg);border:1px solid var(--line);}
.price{margin-left:auto;font-size:13px;font-weight:600;}
.card .acts{display:flex;gap:6px;}
.card .acts .btn{flex:1;padding:6px 4px;font-size:12px;}

/* pulses feed */
.feed{display:flex;flex-direction:column;}
.pulse-i{display:flex;align-items:baseline;gap:10px;padding:10px 2px;border-top:1px solid var(--line-soft);font-size:13px;color:var(--ink2);}
.pulse-i:first-child{border-top:0;}
.pulse-i .dot{width:7px;height:7px;border-radius:50%;background:var(--ink3);flex:0 0 7px;align-self:center;}
.pulse-i.live .dot{background:#6B8F5E;}
.pulse-i .when{margin-left:auto;font-size:11px;color:var(--ink3);white-space:nowrap;}

/* type tester */
.tester .preview{font-size:34px;line-height:1.25;padding:18px 0 8px;min-height:64px;word-break:break-word;font-family:var(--font);}
.tester input[type=text]{width:100%;background:var(--panel2);border:1px solid var(--line);border-radius:10px;
  color:var(--ink1);font-family:var(--font);font-size:14px;padding:10px 12px;outline:none;}
.tester input[type=text]:focus{border-color:var(--accent);}
.tester .t-row{display:flex;align-items:center;gap:12px;margin-top:12px;font-size:11px;color:var(--ink3);}
.tester input[type=range]{flex:1;accent-color:var(--accent);}

/* filters */
.filters{display:flex;gap:6px;flex-wrap:wrap;align-items:center;}
.f-chip{font-size:12px;color:var(--ink2);background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill);padding:5px 13px;}
.f-chip.active{border-color:var(--accent);color:var(--ink1);background:color-mix(in srgb,var(--accent) 14%,transparent);}
.search{margin-left:auto;background:var(--panel);border:1px solid var(--line);border-radius:var(--r-pill);
  color:var(--ink1);font-family:var(--font);font-size:13px;padding:7px 14px;outline:none;min-width:170px;}
.search:focus{border-color:var(--accent);}
.empty{font-size:13px;color:var(--ink3);padding:26px;text-align:center;}

/* steps (sell) */
.steps{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;}
.step{background:var(--panel2);border:1px solid var(--line-soft);border-radius:12px;padding:16px;}
.step .k{font-size:11px;color:var(--accent);font-weight:700;letter-spacing:1.5px;}
.step b{display:block;font-size:14px;margin:7px 0 5px;}
.step p{font-size:12px;color:var(--ink2);line-height:1.55;}

/* cmd row */
.cmd{display:flex;align-items:center;gap:8px;background:var(--panel2);border:1px solid var(--line);
  border-radius:10px;padding:8px 12px;font-size:12px;color:var(--ink2);font-family:ui-monospace,Menlo,Consolas,monospace;}
.cmd button{margin-left:auto;font-size:11px;color:var(--ink2);background:transparent;border:1px solid var(--line);border-radius:var(--r-pill);padding:3px 10px;}
.cmd button:hover{color:var(--ink1);border-color:var(--accent);}

/* ===== RIGHT RAIL ===== */
.aside{display:flex;flex-direction:column;gap:14px;}
.aside .panel{padding:16px;}
.aside h4{font-size:12px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;color:var(--ink3);margin-bottom:11px;}
.crate-i{display:flex;align-items:center;gap:9px;font-size:13px;padding:7px 0;border-top:1px solid var(--line-soft);}
.crate-i:first-of-type{border-top:0;}
.crate-i .x{margin-left:auto;background:none;border:none;color:var(--ink3);font-size:14px;padding:2px 5px;}
.crate-i .x:hover{color:var(--ink1);}
.crate-i .p{font-size:12px;color:var(--ink2);white-space:nowrap;}
.crate-total{display:flex;justify-content:space-between;font-size:13px;font-weight:600;padding:11px 0 4px;border-top:1px solid var(--line);margin-top:8px;}
.crate-note{font-size:11px;color:var(--ink3);line-height:1.55;margin-top:9px;}
.crate-empty{font-size:12.5px;color:var(--ink3);line-height:1.6;}
#crateBtn{width:100%;margin-top:11px;}

.kv{display:flex;justify-content:space-between;font-size:12.5px;padding:5px 0;color:var(--ink2);}
.kv span:last-child{color:var(--ink1);}
#detailBody .d-name{font-size:14.5px;font-weight:600;margin-bottom:2px;}
#detailBody .d-by{font-size:12px;color:var(--ink3);margin-bottom:9px;}
#detailBody .d-desc{font-size:12.5px;color:var(--ink2);line-height:1.6;margin-bottom:11px;}
#detailBody .acts{display:flex;gap:7px;flex-wrap:wrap;}

.eco p{font-size:12.5px;color:var(--ink2);line-height:1.65;}
.eco .mini{font-size:11px;color:var(--ink3);margin-top:10px;line-height:1.6;}
.eco a{color:var(--accent);}

/* membership checkout — lives in the Details panel */
.checkout-note{margin-top:12px;padding:10px 11px;border-radius:var(--r-nav);background:var(--panel2);border:1px solid var(--line-soft);font-size:12px;color:var(--ink2);line-height:1.55;}
.checkout-powered{margin-top:12px;font-size:11px;color:var(--ink3);line-height:1.5;}
#detailPanel.is-checkout{border-color:color-mix(in srgb,var(--accent) 35%,var(--line));box-shadow:0 0 0 1px color-mix(in srgb,var(--accent) 12%,transparent);}

/* toast */
#toast{position:fixed;left:50%;bottom:26px;transform:translateX(-50%) translateY(80px);z-index:50;
  background:var(--panel);border:1px solid var(--accent);color:var(--ink1);font-size:13px;
  border-radius:var(--r-pill);padding:10px 20px;opacity:0;transition:all .25s ease;pointer-events:none;box-shadow:0 8px 30px rgba(0,0,0,.35);}
#toast.on{opacity:1;transform:translateX(-50%) translateY(0);}

/* responsive */
@media (max-width:1080px){
  .app{grid-template-columns:220px minmax(0,1fr);}
  .aside{position:static;max-height:none;grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;}
  .aside .panel{flex:1 1 260px;}
}
@media (max-width:760px){
  .app{grid-template-columns:1fr;padding:10px;}
  .rail{position:static;max-height:none;}
  .hero h1{font-size:24px;}
  .search{min-width:120px;flex:1;}
}

/* ENOK Font Foundry — drop 001 (real TTFs served from this app) */
@font-face{font-family:"KPX";src:url("https://lovable-crab-328.convex.cloud/api/storage/9a75111f-7d53-49a4-8b83-560de424b77c") format("truetype");font-weight:400;font-display:swap;}
@font-face{font-family:"Milton Leroy";src:url("https://lovable-crab-328.convex.cloud/api/storage/70681310-e476-4126-bfef-1ad18586ed4f") format("truetype");font-weight:400;font-display:swap;}
@font-face{font-family:"Milton Leroy Classic";src:url("https://lovable-crab-328.convex.cloud/api/storage/c2d21ce3-97cc-4b6a-8587-457354b2a568") format("truetype");font-weight:400;font-display:swap;}

/* ===== product modal — fixed shell, scroll body, in-app preview ===== */
.modal{position:fixed;inset:0;z-index:40;display:none;align-items:center;justify-content:center;padding:16px;}
.modal.on{display:flex;}
.modal .backdrop{position:absolute;inset:0;background:transparent;}
.modal-card{position:relative;display:flex;flex-direction:column;width:min(720px,94vw);height:min(780px,92vh);
  overflow:hidden;background:var(--panel);border:1px solid var(--line);border-radius:calc(var(--r-card) + 4px);
  box-shadow:0 22px 64px rgba(28,23,17,.22), 0 6px 18px rgba(28,23,17,.12), 0 1px 3px rgba(28,23,17,.08);
  opacity:0;transform:translateY(10px) scale(.98);transition:opacity .14s ease,transform .14s cubic-bezier(.2,.9,.25,1),width .14s ease,height .14s ease;}
.modal-card.expand{width:min(1100px,98vw);height:96vh;}
body[data-theme="dark"] .modal-card{box-shadow:0 22px 64px rgba(0,0,0,.5), 0 6px 18px rgba(0,0,0,.34), 0 0 0 1px rgba(255,255,255,.03);}
.modal.show .modal-card{opacity:1;transform:translateY(0) scale(1);}
.modal-tools{position:absolute;top:12px;right:12px;display:flex;gap:6px;z-index:3;}
.modal-tool{background:var(--panel2);border:1px solid var(--line);border-radius:50%;width:30px;height:30px;
  color:var(--ink2);font-size:14px;line-height:1;display:grid;place-items:center;}
.modal-tool:hover{color:var(--ink1);border-color:var(--accent);}
.modal-scroll{flex:1;min-height:0;overflow-y:auto;padding:24px;scrollbar-width:thin;}
.modal-card .art.m-art{height:150px;margin-bottom:16px;cursor:zoom-in;}
.modal-card .art.m-art:hover{border-color:color-mix(in srgb,var(--accent) 50%,var(--line));}
.modal-card .m-art .glyph{font-size:72px;}
.m-name{font-size:20px;font-weight:700;letter-spacing:-.3px;padding-right:72px;}
.m-by{font-size:12.5px;color:var(--ink3);margin:2px 0 10px;}
.m-desc{font-size:13.5px;color:var(--ink2);line-height:1.65;}
.m-sec{font-size:10.5px;color:var(--ink3);text-transform:uppercase;letter-spacing:1.3px;margin:16px 0 8px;}
.m-row{display:flex;align-items:center;gap:8px;margin:10px 0 2px;}
.v-row{display:flex;gap:7px;flex-wrap:wrap;}
.v-chip{font-size:12px;color:var(--ink2);background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-pill);padding:6px 13px;cursor:pointer;}
.v-chip:hover{border-color:var(--accent);color:var(--ink1);}
.v-chip.disabled{opacity:.55;cursor:default;}
.g-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(78px,1fr));gap:8px;}
.g-cell{background:var(--panel2);border:1px solid var(--line-soft);border-radius:10px;padding:8px 6px;text-align:center;cursor:zoom-in;}
.g-cell:hover{border-color:var(--accent);}
.g-cell img{width:40px;height:40px;object-fit:contain;display:block;margin:0 auto 5px;}
.g-cell span{font-size:10.5px;color:var(--ink3);}
.m-tester input{width:100%;background:var(--panel2);border:1px solid var(--line);border-radius:10px;color:var(--ink1);
  font-size:24px;padding:12px 14px;outline:none;font-family:inherit;}
.m-tester input:focus{border-color:var(--accent);}
.m-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px;position:sticky;bottom:0;padding-top:10px;
  background:linear-gradient(180deg,transparent,var(--panel) 28%);}
.preview-pane{border:1px solid var(--line);border-radius:14px;overflow:hidden;background:var(--panel2);}
.preview-bar{display:flex;align-items:center;gap:8px;padding:8px 12px;border-bottom:1px solid var(--line-soft);
  font-size:11px;color:var(--ink3);letter-spacing:.4px;text-transform:uppercase;}
.preview-bar .preview-expand{margin-left:auto;font-size:11px;color:var(--ink2);background:transparent;border:1px solid var(--line);
  border-radius:var(--r-pill);padding:3px 10px;}
.preview-bar .preview-expand:hover{color:var(--ink1);border-color:var(--accent);}
.preview-frame{display:block;width:100%;height:min(420px,46vh);border:0;background:var(--bg);}
.modal-card.expand .preview-frame{height:min(560px,58vh);}
.preview-pane.preview-open{display:flex;align-items:center;gap:16px;padding:16px;}
.preview-open-art{width:96px;height:96px;flex:0 0 96px;border-radius:12px;}
.preview-open-copy{display:flex;flex-direction:column;gap:8px;min-width:0;}
.preview-open-title{font-size:14px;font-weight:600;color:var(--ink1);}
.preview-open-copy p{font-size:12.5px;color:var(--ink2);line-height:1.5;}
body.modal-open,body.lightbox-open{overflow:hidden;}
.lightbox{position:fixed;inset:0;z-index:60;display:none;align-items:center;justify-content:center;padding:18px;}
.lightbox.on{display:flex;}
.lightbox-bg{position:absolute;inset:0;background:rgba(18,16,12,.55);opacity:0;transition:opacity .14s ease;}
body[data-theme="dark"] .lightbox-bg{background:rgba(0,0,0,.72);}
.lightbox.show .lightbox-bg{opacity:1;}
.lightbox-stage{position:relative;z-index:1;width:min(1200px,96vw);height:min(860px,92vh);
  display:grid;place-items:center;opacity:0;transform:scale(.985);transition:opacity .14s ease,transform .14s cubic-bezier(.2,.9,.25,1);}
.lightbox.show .lightbox-stage{opacity:1;transform:scale(1);}
.lightbox-stage img,.lightbox-stage iframe{width:100%;height:100%;border:0;border-radius:14px;background:var(--panel);
  box-shadow:0 24px 70px rgba(0,0,0,.35);object-fit:contain;}
.lightbox-x{position:absolute;top:16px;right:16px;z-index:2;width:34px;height:34px;border-radius:50%;
  background:var(--panel);border:1px solid var(--line);color:var(--ink2);font-size:16px;}
.lightbox-x:hover{color:var(--ink1);border-color:var(--accent);}
@media (prefers-reduced-motion: reduce){
  .modal-card,.lightbox-bg,.lightbox-stage{transition:none;}
}

/* notify morph — Notify me becomes the capture itself */
.notify-wrap{display:flex;flex-direction:column;gap:7px;width:100%;animation:notifyIn .22s ease;}
@keyframes notifyIn{from{opacity:0;transform:translateY(4px);}to{opacity:1;transform:none;}}
.notify-hint{font-size:11px;color:var(--ink3);letter-spacing:.3px;}
.notify-row{display:flex;gap:7px;}
.notify-input{flex:1;min-width:0;background:var(--panel2);border:1px solid var(--line);border-radius:var(--r-pill);
  padding:9px 15px;color:var(--ink1);font-family:var(--font);font-size:13.5px;outline:none;transition:border-color .15s;}
.notify-input:focus{border-color:var(--accent);}
.notify-input::placeholder{color:var(--ink3);}
.notify-alt{font-size:11px;color:var(--ink3);}
.notify-alt a{color:var(--accent);}
