/* Naadova app: the sound console. A brass-and-lacquer receiver on the left, a jukebox catalogue on the right. */
:root{
  --black:#000; --lacquer:#0E0C09; --wood:#1A140D; --brass:#B8914F; --brass-hi:#E7C98A; --brass-lo:#6E5228;
  --amber:#FFB55E; --amber-lo:#7A4A16; --glass:#1B1006; --bone:#F2ECE2; --smoke:#9A9286; --card:#F4EBDA; --card-ink:#1D150B;
  --line:rgba(242,236,226,.12);
  --serif:"Cormorant Garamond",Garamond,serif; --sans:"Sora","Avenir Next","Helvetica Neue",Arial,sans-serif; --deva:"Tiro Devanagari Sanskrit",serif;
  --on-gilt:#000;
  box-sizing:border-box; padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px); color-scheme:dark;
}
*,*::before,*::after{box-sizing:inherit}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:#000;color:var(--bone);font-family:var(--sans);font-size:15px;line-height:1.5;font-weight:300;-webkit-font-smoothing:antialiased}
button,select,input{font:inherit;color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--brass-hi);outline-offset:2px}
.deva{font-family:var(--deva)}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
code{font-size:.9em;color:var(--brass-hi)}

/* top bar */
.topbar{display:flex;align-items:center;gap:18px;height:62px;padding:0 clamp(14px,2.5vw,28px);border-bottom:1px solid var(--line);background:#000;position:sticky;top:env(safe-area-inset-top,0px);z-index:20}
.topbar img{height:26px;width:auto}
.topbar .t{font-size:.86rem;color:var(--smoke);flex:1}
.topbar a.lnk{color:var(--bone);text-decoration:none;font-size:.88rem;padding:6px 12px;border-radius:999px;border:1px solid var(--line)}
.topbar a.lnk:hover{border-color:var(--brass)}
.modes{display:inline-flex;border:1px solid var(--line);border-radius:999px;padding:3px;background:#0b0b0b}
.modes button{border:0;background:transparent;padding:6px 14px;border-radius:999px;font-size:.84rem;color:var(--smoke)}
.modes button[aria-pressed="true"]{background:var(--brass);color:#000;font-weight:500}

/* layout */
.app{display:grid;grid-template-columns:minmax(380px,460px) minmax(0,1fr);gap:0;min-height:calc(100svh - 62px)}
.sanctum{position:sticky;top:62px;height:calc(100svh - 62px);overflow:auto;padding:18px;background:
  radial-gradient(120% 60% at 50% 0%,rgba(184,145,79,.12),transparent 60%),linear-gradient(180deg,#14100B,#070604);border-right:1px solid #2A2116}
.deck{padding:clamp(18px,3vw,40px) clamp(16px,3vw,44px) 60px;min-width:0}

/* receiver cabinet */
.cabinet{border-radius:28px;padding:16px;background:linear-gradient(180deg,#1E1810,#0C0A07);border:1px solid #3A2E1C;box-shadow:inset 0 1px 0 rgba(255,236,200,.08),0 30px 60px -30px rgba(0,0,0,.9)}
.brand{display:none}
.speaker{position:relative;aspect-ratio:1;border-radius:50%;margin:4px auto 0;width:min(100%,330px);
  background:radial-gradient(circle,#0A0806 0 58%,transparent 59%),repeating-radial-gradient(circle,rgba(184,145,79,.18) 0 1px,transparent 1px 6px),radial-gradient(circle at 35% 30%,#3A2E1C,#0B0906 70%);
  box-shadow:0 0 0 3px #2A2116,0 0 0 5px var(--brass-lo),0 0 0 6px #000,inset 0 0 40px #000}
.bowlwrap{position:absolute;inset:6%;}
#viz{width:100%;height:100%;display:block;border-radius:50%;cursor:pointer}
.tapnote{text-align:center;font-size:.78rem;color:var(--smoke);margin:10px 0 2px}

/* amber dial glass */
.now{position:relative;margin-top:14px;border-radius:14px;padding:30px 16px 14px;background:radial-gradient(120% 140% at 50% 0%,#3B230B,var(--glass) 70%);border:1px solid #5A3B16;box-shadow:inset 0 0 30px rgba(255,150,40,.12);min-height:150px;overflow:hidden}
.now::before{content:"";position:absolute;left:14px;right:14px;top:10px;height:12px;background:repeating-linear-gradient(90deg,rgba(255,200,130,.55) 0 1px,transparent 1px 8px);-webkit-mask:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.now .needle{position:absolute;top:4px;height:24px;width:2px;background:#FF7A2E;box-shadow:0 0 10px #FF7A2E,0 0 2px #fff;left:10%;transition:left .9s cubic-bezier(.2,.7,.2,1)}
.now h2{margin:0;font-family:var(--serif);font-weight:400;font-size:1.65rem;line-height:1.1;color:#FFE2B0;text-shadow:0 0 18px rgba(255,170,70,.45)}
.now .stage{font-size:.82rem;color:var(--amber);display:flex;justify-content:space-between;gap:8px;margin-top:6px}
.now p{margin:6px 0 0;font-size:.88rem;color:#E9C99A;line-height:1.45}
.progress{height:3px;background:rgba(255,190,110,.15);border-radius:3px;margin-top:10px;overflow:hidden}
.progress span{display:block;height:100%;width:0;background:var(--amber);box-shadow:0 0 8px var(--amber)}
.layerline{font-size:.74rem;color:#B98C55;margin-top:8px}

/* push-button presets and tuning dial */
.presetrow{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;margin-top:14px}
.pkey{height:44px;border:0;border-radius:6px;background:linear-gradient(180deg,#F4E6C6,#C6A66C);box-shadow:0 4px 0 #5E4520,inset 0 1px 0 #fff8e6;color:#2A1C08;font-size:.68rem;font-weight:600;line-height:1.1;padding:2px;transition:transform .08s,box-shadow .08s}
.pkey:active,.pkey[aria-pressed="true"]{transform:translateY(3px);box-shadow:0 1px 0 #5E4520,inset 0 1px 0 #fff8e6;background:linear-gradient(180deg,#E7C98A,#A27A3E)}
.tune{margin-top:16px;display:flex;align-items:center;gap:12px}
.tune .knob{width:58px;height:58px;flex:none;border-radius:50%;background:radial-gradient(circle at 35% 30%,#5A4A32,#14110D 70%);border:1px solid #6E5228;box-shadow:0 6px 14px rgba(0,0,0,.7);position:relative}
.tune .knob::after{content:"";position:absolute;left:50%;top:6px;width:3px;height:14px;margin-left:-1.5px;border-radius:2px;background:var(--brass-hi)}
.tune .stn{flex:1;min-width:0}
.tune .stn small{display:block;font-size:.72rem;color:var(--smoke)}
.tune .stn b{display:block;font-weight:400;font-family:var(--serif);font-size:1.2rem;color:var(--bone);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tune input[type=range]{width:100%}

/* analogue VU meters */
.vus{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.vu{border-radius:10px;background:linear-gradient(180deg,#F3E4C2,#D7BF8C);border:2px solid #3A2E1C;box-shadow:inset 0 0 12px rgba(120,80,20,.35)}
.vu canvas{display:block;width:100%;height:78px}

/* transport */
.transport{margin-top:16px}
.tp-row{display:flex;align-items:center;gap:10px}
.play{width:64px;height:64px;border-radius:50%;border:0;background:radial-gradient(circle at 35% 30%,#F0D49A,#A27A3E 60%,#5E4520);color:#140E06;display:grid;place-items:center;box-shadow:0 6px 16px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.4)}
.play svg{width:28px;height:28px}
.ghost{border:1px solid #4A3A24;background:#120F0A;border-radius:999px;padding:9px 16px;font-size:.86rem;color:var(--bone)}
.ghost:hover{border-color:var(--brass)}
.clock{margin-left:auto;font-variant-numeric:tabular-nums;font-size:1.7rem;font-weight:300;color:var(--amber);text-shadow:0 0 12px rgba(255,160,60,.5);letter-spacing:.04em}
.tp-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.tp-grid label{display:flex;flex-direction:column;gap:4px;font-size:.74rem;color:var(--smoke)}
.tp-grid select{background:#0D0B08;border:1px solid #3A2E1C;border-radius:8px;padding:8px;font-size:.86rem;color:var(--bone)}
.vol{grid-column:1/-1}
input[type=range]{-webkit-appearance:none;appearance:none;height:22px;background:transparent;width:100%}
input[type=range]::-webkit-slider-runnable-track{height:4px;border-radius:4px;background:linear-gradient(90deg,var(--brass-lo),#3A2E1C)}
input[type=range]::-moz-range-track{height:4px;border-radius:4px;background:#3A2E1C}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:18px;height:18px;margin-top:-7px;border-radius:4px;background:linear-gradient(180deg,#F0D49A,#8A6530);border:1px solid #2A1C08;box-shadow:0 2px 4px rgba(0,0,0,.6)}
input[type=range]::-moz-range-thumb{width:18px;height:18px;border-radius:4px;background:#C9A35E;border:1px solid #2A1C08}

.record{margin-top:16px;display:flex;align-items:center;gap:12px;padding:12px;border-radius:12px;border:1px solid #3A2E1C;background:#0D0B08}
.record .disc{width:46px;height:46px;flex:none;border-radius:50%;background:repeating-radial-gradient(circle,#111 0 2px,#1d1d1d 2px 3px);position:relative;box-shadow:0 0 0 1px #333}
.record .disc::after{content:"";position:absolute;inset:36%;border-radius:50%;background:var(--brass)}
.record.on .disc{animation:spin 1.8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.record b{display:block;font-weight:400;font-size:.92rem}
.record small{color:var(--smoke);font-size:.74rem}

/* deck: jukebox selector keys */
.tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 2px 14px;scrollbar-width:none;border-bottom:1px solid var(--line);margin-bottom:26px}
.tabs::-webkit-scrollbar{display:none}
.tabs button{flex:none;display:flex;flex-direction:column;align-items:flex-start;gap:2px;min-width:118px;padding:12px 14px 10px;border-radius:10px;border:1px solid #2E2518;background:linear-gradient(180deg,#17130D,#0A0806);color:var(--bone);font-size:.92rem;text-align:left;box-shadow:0 3px 0 #000}
.tabs button::before{content:attr(data-key);font-size:.7rem;color:var(--brass);font-weight:500}
.tabs button[aria-selected="true"]{border-color:var(--brass);background:linear-gradient(180deg,#2A1F11,#120D07);box-shadow:0 0 0 1px var(--brass),0 0 24px -6px rgba(231,201,138,.5);transform:translateY(2px)}
body.simple .tabs,body.simple .studio-only{display:none}
.panel{display:none}
.panel.on{display:block;animation:fadein .35s ease}
@keyframes fadein{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
h3{font-family:var(--serif);font-weight:300;font-size:clamp(2rem,1.4rem + 2vw,3rem);margin:0 0 6px;line-height:1.05}
h4{font-family:var(--sans);font-weight:500;font-size:1rem;margin:30px 0 12px;color:var(--brass-hi)}
.lede{font-size:1.02rem;color:#CFC7BA;max-width:62ch;margin:0 0 18px}
.hint{font-size:.82rem;color:var(--smoke)}
.row{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.chip{border:1px solid #3A2E1C;background:#0D0B08;border-radius:999px;padding:7px 14px;font-size:.86rem;color:var(--bone)}
.chip:hover{border-color:var(--brass)}
.chip[aria-pressed="true"]{background:var(--brass);border-color:var(--brass);color:#000;font-weight:500}
.seg{display:inline-flex;border:1px solid #3A2E1C;border-radius:999px;padding:3px;background:#0D0B08;flex-wrap:wrap}
.seg button{border:0;background:transparent;border-radius:999px;padding:6px 12px;font-size:.84rem;color:var(--smoke)}
.seg button[aria-pressed="true"]{background:var(--brass);color:#000;font-weight:500}
.settings{display:flex;flex-wrap:wrap;gap:12px 22px;padding:16px;border:1px solid var(--line);border-radius:14px;background:#0A0806;margin-bottom:8px}
.settings .field>span,.field>span{display:block;font-size:.74rem;color:var(--smoke);margin-bottom:6px}
.btn{border:1px solid var(--brass);background:var(--brass);color:#000;border-radius:999px;padding:10px 18px;font-weight:500;font-size:.9rem}
.btn:hover{background:var(--brass-hi)}
.btn.line{background:transparent;color:var(--bone);border-color:#4A3A24}
.btn.line:hover{border-color:var(--brass)}
.btn.small{padding:6px 12px;font-size:.8rem}
select.inp,input.inp{background:#0D0B08;border:1px solid #3A2E1C;border-radius:10px;padding:10px 12px;color:var(--bone)}

/* feelings: the request desk */
.feel{border:1px solid #3A2E1C;border-radius:18px;padding:20px;background:radial-gradient(120% 120% at 0% 0%,rgba(184,145,79,.14),transparent 60%),#0A0806;margin-bottom:30px}
.feel h4{margin:0 0 2px;font-family:var(--serif);font-weight:400;font-size:1.7rem;color:var(--bone)}
.feel .row{margin-top:14px}

/* journeys as jukebox title strips */
.filters{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}
.filters .lbl{font-size:.74rem;color:var(--smoke);width:64px}
.jlist{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;counter-reset:j}
.journey{counter-increment:j;position:relative;text-align:left;border:0;border-radius:8px;padding:30px 16px 14px;background:var(--card);color:var(--card-ink);display:flex;flex-direction:column;gap:4px;box-shadow:0 1px 0 #fff inset,0 10px 24px -14px rgba(0,0,0,.9);overflow:hidden;transition:transform .15s}
.journey::before{content:"A" counter(j);position:absolute;left:0;right:0;top:0;height:22px;padding:3px 12px;font-size:.72rem;font-weight:600;color:#fff;background:linear-gradient(90deg,var(--jc,#A27A3E),color-mix(in srgb,var(--jc,#A27A3E) 60%,#000));letter-spacing:.04em}
.journey:hover{transform:translateY(-2px)}
.journey.playing{box-shadow:0 0 0 2px var(--amber),0 0 30px -6px var(--amber)}
.journey b{font-family:var(--serif);font-size:1.45rem;font-weight:500;line-height:1.1}
.journey .len{position:absolute;right:12px;top:3px;font-size:.7rem;color:#fff;font-weight:500}
.journey .ln{font-size:.84rem;color:#4A3D2A}
.journey .tags{font-size:.72rem;color:#7A6A50;margin-top:4px}
.cueonly{display:flex;gap:10px;align-items:flex-start;margin-top:22px;padding:14px;border:1px dashed #4A3A24;border-radius:12px;font-size:.88rem;color:#CFC7BA}
.cueonly input{accent-color:var(--brass);margin-top:4px}

/* bowl and instrument tiles as cartridges */
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.tile{position:relative;border-radius:14px;padding:14px 12px 12px;background:linear-gradient(180deg,#17130D,#0A0806);border:1px solid #2E2518;min-height:150px;display:flex;flex-direction:column;gap:2px;overflow:hidden}
.tile::after{content:"";position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--c,#A27A3E);opacity:.7}
.tile.on{border-color:var(--c,#A27A3E);box-shadow:0 0 0 1px var(--c,#A27A3E),0 0 28px -8px var(--c,#A27A3E)}
.tile .hit{position:absolute;inset:0;border:0;background:transparent;border-radius:inherit}
.tile .hit:focus-visible{outline:2px solid var(--brass-hi);outline-offset:-3px}
.tile .dot{width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--c,#A27A3E) 70%,#fff),var(--c,#A27A3E) 60%,#000);box-shadow:0 0 14px -2px var(--c,#A27A3E);margin-bottom:6px}
.tile .bija{position:absolute;right:12px;top:8px;font-family:var(--deva);font-size:1.5rem;color:var(--c,#A27A3E);opacity:.9}
.tile b{font-weight:500;font-size:.95rem;position:relative;pointer-events:none}
.tile .sub{font-size:.76rem;color:var(--smoke);position:relative;pointer-events:none}
.tile .acts{margin-top:auto;padding-top:8px;position:relative;z-index:1;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.tile .acts button{border:1px solid #4A3A24;background:#000;border-radius:999px;padding:4px 12px;font-size:.76rem;color:var(--bone)}
.tile .acts button[aria-pressed="true"]{background:var(--c,#A27A3E);border-color:var(--c,#A27A3E);color:#000;font-weight:600}
.tile input[type=range]{position:relative;z-index:1}
.tile.flash{animation:flash .9s ease}
@keyframes flash{0%{box-shadow:0 0 0 2px var(--c,#A27A3E),0 0 40px var(--c,#A27A3E)}100%{box-shadow:none}}
.builder{border:1px solid var(--line);border-radius:14px;padding:16px;background:#0A0806}
.builder .row>span{font-size:.78rem;color:var(--smoke);min-width:80px}

/* brainwaves */
.bands{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}
.band{text-align:left;border:1px solid #2E2518;background:#0A0806;border-radius:14px;padding:14px;display:flex;flex-direction:column;gap:2px}
.band[aria-pressed="true"]{border-color:var(--amber);box-shadow:0 0 24px -8px var(--amber)}
.band b{font-family:var(--serif);font-weight:400;font-size:1.5rem}
.band span{font-size:.76rem;color:var(--smoke)}
.band .ln{color:#CFC7BA}
.bigval{font-variant-numeric:tabular-nums;font-size:2rem;font-weight:300;color:var(--amber)}

/* mixer: console strips */
.master{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:14px;padding:18px;border-radius:16px;border:1px solid #3A2E1C;background:linear-gradient(180deg,#15110B,#080705)}
.master label,.strip label{display:block;font-size:.72rem;color:var(--smoke);margin-bottom:2px}
.xf{grid-column:1/-1}
.xf .ends{display:flex;justify-content:space-between;font-size:.7rem;color:var(--smoke)}
.strips{display:flex;flex-direction:column;gap:8px}
.strip{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr)) auto;gap:14px;align-items:center;padding:12px 14px;border-radius:12px;border:1px solid #2E2518;background:#0A0806;border-left:3px solid var(--c,#A27A3E)}
.strip .nm{display:flex;gap:10px;align-items:center;min-width:0}
.strip .nm i{width:10px;height:10px;border-radius:50%;background:var(--c,#A27A3E);box-shadow:0 0 10px var(--c,#A27A3E);flex:none}
.strip .nm span{font-size:.9rem;min-width:0}
.strip .nm small{display:block;font-size:.72rem;color:var(--smoke)}
.strip .ms{display:flex;gap:4px}
.strip .ms button{width:30px;height:30px;border-radius:6px;border:1px solid #4A3A24;background:#000;font-size:.74rem;color:var(--bone)}
.strip .ms button[aria-pressed="true"]{background:var(--amber);color:#000;border-color:var(--amber)}
.empty{padding:24px;border:1px dashed #3A2E1C;border-radius:12px;color:var(--smoke);font-size:.9rem}
.saved{display:flex;flex-direction:column;gap:6px;margin-top:12px}
.saved div{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px 12px;border:1px solid #2E2518;border-radius:10px;background:#0A0806}
.saved div span{font-size:.9rem}

/* library */
.libwrap{overflow-x:auto;border:1px solid var(--line);border-radius:12px}
table{border-collapse:collapse;width:100%;min-width:620px;font-size:.84rem}
th,td{text-align:left;padding:9px 12px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--smoke);font-weight:500}
td code,pre{font-size:.8rem}
pre{background:#0A0806;border:1px solid var(--line);border-radius:12px;padding:14px;overflow:auto;color:#E9C99A}
.ok{color:#9FD3A8}
.prose{max-width:68ch;color:#CFC7BA}
.prose p{margin:0 0 10px}
.banner{display:none;align-items:center;justify-content:space-between;gap:12px;padding:12px 16px;border-radius:12px;background:var(--brass);color:#000;margin-bottom:18px}
.banner.on{display:flex}
.toast{position:fixed;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 24px);transform:translateX(-50%);background:var(--bone);color:#000;padding:11px 20px;border-radius:999px;font-weight:500;font-size:.9rem;opacity:0;pointer-events:none;transition:opacity .25s;z-index:50}
.toast.on{opacity:1}
footer{margin-top:48px;padding-top:22px;border-top:1px solid var(--line)}
footer p{font-size:.76rem;color:var(--smoke);margin:0 0 8px;max-width:80ch}

@media (max-width:980px){
  .app{grid-template-columns:1fr}
  .sanctum{position:relative;top:0;height:auto;border-right:0;border-bottom:1px solid #2A2116}
  .speaker{width:min(70vw,280px)}
  .transport .tp-grid{display:none}
  .transport.open .tp-grid{display:grid}
  .strip{grid-template-columns:1fr 1fr}
  .strip .nm{grid-column:1/-1}
  .topbar .t{display:none}
}
@media (max-width:520px){.presetrow{grid-template-columns:repeat(3,1fr)}.tabs button{min-width:100px}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@media (max-width:520px){.topbar a.lnk{display:none}}
