/* iPod UI — SINGLE SOURCE OF TRUTH.
 * Consumed by BOTH surfaces:
 *   - the in-game BeamNG app  (build-src.ps1 inlines this into app.js as IPOD_CSS, because
 *     BeamNG CEF 404s external css/font files from a mod)
 *   - the LAN web player       (tools/ipod_web serves this file directly)
 * Edit here, then rebuild the mod. Never edit the generated IPOD_CSS block in app.js.
 */
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:200 900;font-display:swap;src:url("/modules/apps/beamIpod/fonts/SourceSans3-VF.woff2") format("woff2"),url("/ui/modules/apps/beamIpod/fonts/SourceSans3-VF.woff2") format("woff2"),url("modules/apps/beamIpod/fonts/SourceSans3-VF.woff2") format("woff2"),url("ui/modules/apps/beamIpod/fonts/SourceSans3-VF.woff2") format("woff2"),url("fonts/SourceSans3-VF.woff2") format("woff2");}
.ipod{font-family:"Source Sans 3",-apple-system,"Helvetica Neue",Helvetica,Arial,sans-serif;width:100%;height:100%;box-sizing:border-box;display:flex;flex-direction:column;align-items:center;padding:13.8% 8.9% 13.3%;color:#111;user-select:none;background:linear-gradient(150deg,#fbfbfb,#e2e4e7 55%,#cfd2d6);border-radius:20px;overflow:hidden;box-shadow:inset 0 1px 0 #fff,inset 0 -2px 6px rgba(0,0,0,.12);}
.screen{width:100%;flex:none;aspect-ratio:4/3;min-height:0;background:#fff;border-radius:6px;border:1px solid #2a2a2a;color:#000;position:relative;box-shadow:0 1px 2px rgba(0,0,0,.4),inset 0 0 0 2px #0c0c0c;overflow:hidden;display:flex;flex-direction:column;}
.sbar{display:flex;align-items:center;height:22px;padding:0 7px;flex:none;background:linear-gradient(to bottom,#fff 0%,#f2f2f2 45%,#e6e6e6 50%,#d9d9d9 100%);border-bottom:1px solid #999;box-shadow:inset 0 1px 0 #fff;}
.sbar .lt{flex:none;min-width:24px;display:flex;align-items:center;}
.sbar .ttl{flex:1;text-align:center;font-size:12px;font-weight:700;letter-spacing:-.3px;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sbar .rt{display:flex;align-items:center;justify-content:flex-end;gap:6px;flex:none;min-width:24px;}
.piplay{width:0;height:0;border-style:solid;border-width:5px 0 5px 8px;border-color:transparent transparent transparent #0a72d6;}
.pipause{display:inline-flex;gap:2px;}
.pipause:before,.pipause:after{content:"";width:3px;height:10px;background:#0a72d6;}
.bat{position:relative;width:22px;height:11px;border:1px solid #7a7a7a;border-radius:2px;background:linear-gradient(to bottom,#fff,#e0e0e0);}
.bat:after{content:"";position:absolute;right:-3px;top:3px;width:2px;height:5px;background:#7a7a7a;border-radius:0 1px 1px 0;}
.bat>i{position:absolute;left:1px;top:1px;bottom:1px;width:70%;background:linear-gradient(to bottom,#ccff99,#296108);border-radius:1px;transition:width .4s;}
.bat>i.low{background:linear-gradient(to bottom,#ffb0b0,#c0392b);}
.bat .batq{position:absolute;left:0;right:0;top:-1px;text-align:center;font-size:9px;line-height:12px;font-weight:800;color:#555;}
.sbody{flex:1;min-height:0;overflow:hidden;position:relative;}
.scrollhint{position:absolute;right:4px;bottom:3px;font-size:8px;color:#9aa0a6;background:rgba(255,255,255,.7);padding:0 3px;border-radius:3px;pointer-events:none;}
.mi{display:flex;align-items:center;gap:6px;height:23px;padding:0 8px;font-size:13px;font-weight:600;letter-spacing:-.3px;color:#000;border-bottom:1px solid #eee;cursor:pointer;}
.mi .ic{width:15px;text-align:center;font-size:11px;}
.mi .t{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.mi .t .sub{color:#9aa0a6;font-weight:500;}
.mi .chev{font-size:15px;color:#b0b0b0;margin-right:-2px;}
.mi.sel{color:#fff;border-bottom-color:transparent;background:linear-gradient(to bottom,#4a8df3 0%,#2f7cf1 45%,#186bf0 50%,#155dd5 100%);}
.mi.sel .ic,.mi.sel .chev{color:#fff;}
.mi.sel .t .sub{color:#dbe8ff;}
.np{display:flex;flex-direction:column;height:100%;box-sizing:border-box;padding:6px 9px 8px;color:#111;}
.npcount{font-size:11px;font-weight:700;color:#333;margin:0 0 4px 1px;flex:none;}
.npcount .shufb{margin-left:6px;font-size:9px;}
.nprow{display:flex;gap:9px;align-items:center;flex:1 1 auto;min-height:0;margin-bottom:5px;}
.art{flex:none;width:70px;height:70px;display:flex;align-items:center;justify-content:center;font-size:32px;background:linear-gradient(135deg,#eef0f3,#c7ccd3);border:1px solid #b6bcc4;border-radius:3px;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.npmeta{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;justify-content:center;gap:3px;}
.npn{font-size:14px;font-weight:700;color:#000;white-space:nowrap;overflow:hidden;}
.npn .mq{display:inline-block;will-change:transform;}
.npn .mq.run{animation:mq linear infinite;}
@keyframes mq{0%,12%{transform:translateX(0)}
48%,60%{transform:translateX(var(--mqx,0))}
96%,100%{transform:translateX(0)}
}
.npa{font-size:11px;font-weight:500;color:#222;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.npb{font-size:10px;color:#888;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.volbar{display:flex;align-items:center;gap:6px;margin:8px 0 2px;color:#888;font-size:10px;}
.volbar .vb{flex:1;height:7px;border-radius:4px;background:#d7d7d7;border:1px solid #b9b9b9;overflow:hidden;box-shadow:inset 0 1px 2px rgba(0,0,0,.15);}
.volbar .vb>div{height:100%;background:linear-gradient(to bottom,#8bbef7,#2f7cf1);}
.volbar .pct{width:30px;text-align:right;}
.pbar{height:7px;border-radius:4px;background:#d7d7d7;border:1px solid #b9b9b9;margin:9px 0 3px;overflow:hidden;cursor:pointer;box-shadow:inset 0 1px 2px rgba(0,0,0,.15);}
.pbar>div{height:100%;background:linear-gradient(to bottom,#8bbef7,#2f7cf1);}
.ptime{display:flex;justify-content:space-between;font-size:9px;color:#888;}
.qual{display:flex;align-items:center;gap:5px;margin-top:7px;font-size:9px;color:#888;}
.qbar{flex:1;height:4px;border-radius:3px;background:#e0e0e0;overflow:hidden;}
.qbar>div{height:100%;background:linear-gradient(90deg,#ffb454,#57c26e);}
.vol{display:flex;align-items:center;gap:6px;margin-top:8px;color:#999;font-size:11px;}
.vol input[type=range]{-webkit-appearance:none;appearance:none;flex:1;height:5px;border-radius:3px;background:#c9c9c9;outline:none;cursor:pointer;}
.vol input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:#fff;border:1px solid #888;box-shadow:0 1px 2px rgba(0,0,0,.3);cursor:pointer;}
.vol .pct{width:30px;text-align:right;}
.npa .shufb{margin-left:6px;color:#2f7cf1;font-size:9px;}
.pbar.scrub{height:10px;box-shadow:inset 0 1px 2px rgba(0,0,0,.15),0 0 0 2px rgba(47,124,241,.45);}
.pglbl{font-size:8px;font-weight:800;letter-spacing:1px;color:#2f7cf1;}
.nphint{font-size:9px;color:#999;text-align:center;margin-top:12px;line-height:1.4;}
.seg{display:inline-flex;border:1px solid #bbb;border-radius:6px;overflow:hidden;}
.seg button{border:0;border-left:1px solid #ccc;background:linear-gradient(to bottom,#fff,#ececec);color:#333;font-size:10px;font-weight:700;padding:5px 8px;cursor:pointer;}
.seg button:first-child{border-left:0;}
.seg button.on{color:#fff;background:linear-gradient(to bottom,#5a9bf6,#2f7cf1);}
.segf{display:flex;width:100%;}
.segf button{flex:1;padding:7px 0;}
.npseg{margin-top:12px;}
.npstars{text-align:center;margin-top:12px;font-size:26px;letter-spacing:6px;color:#c9c9c9;cursor:pointer;}
.npstars span.on{color:#f5b31f;}
.flashmsg{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);max-width:90%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background:rgba(20,20,20,.86);color:#fff;font-size:11px;font-weight:700;padding:5px 12px;border-radius:14px;box-shadow:0 2px 8px rgba(0,0,0,.4);pointer-events:none;}
.set{padding:8px 10px;font-size:12px;color:#111;height:100%;overflow-y:auto;box-sizing:border-box;}
.set label{display:block;font-size:9px;text-transform:uppercase;letter-spacing:.4px;color:#888;margin:8px 0 3px;}
.set input[type=text]{width:100%;box-sizing:border-box;background:#fff;border:1px solid #bbb;border-radius:4px;color:#111;font-size:11px;padding:6px 7px;}
.btnrow{display:flex;gap:6px;margin-top:6px;}
.btn{flex:1;padding:6px;border-radius:5px;border:1px solid #2f6fd8;color:#fff;font-weight:700;font-size:11px;cursor:pointer;background:linear-gradient(to bottom,#5a9bf6,#2f7cf1);}
.btn.sec{border-color:#aaa;color:#333;background:linear-gradient(to bottom,#fff,#e6e6e6);}
.srow{display:flex;align-items:center;gap:8px;margin-top:11px;cursor:pointer;}
.srow input{width:16px;height:16px;}
.yrsim{display:flex;gap:6px;margin-top:6px;align-items:center;}
.yrsim .yb{flex:none;padding:6px 9px;}
.yrsim .yrin{flex:1;text-align:center;}
.yrsim .yrin::placeholder{color:#aaa;}
.hint{font-size:9px;color:#999;margin-top:10px;line-height:1.35;}
.err{color:#c0392b;}
.btn[disabled]{opacity:.5;cursor:default;}
.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;padding:12px;text-align:center;color:#fff;background:radial-gradient(circle at 50% 32%,#5a6b85,#333e52 55%,#1c2431);}
.syncicon{width:66px;height:66px;flex:none;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:36px;color:#5a3d00;background:radial-gradient(circle at 50% 32%,#ffe9a6,#f5b31f 52%,#b97b00);animation:spin 1.1s linear infinite;margin-bottom:14px;box-shadow:0 3px 10px rgba(0,0,0,.55),inset 0 1px 3px rgba(255,255,255,.7),inset 0 -3px 6px rgba(120,70,0,.5);}
@keyframes spin{to{transform:rotate(360deg)}
}
.ltitle{font-size:16px;font-weight:800;letter-spacing:.2px;text-shadow:0 1px 1px rgba(0,0,0,.5);}
.lsub{font-size:10px;color:#b9c2d0;margin-top:2px;}
.lcount{font-size:14px;font-weight:800;color:#ffd76a;margin-top:12px;}
.lrecent{font-size:9px;color:#9aa6b6;margin-top:6px;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.lstop{flex:none;margin-top:16px;padding:6px 20px;}
/* --ta/--tx/--ty drive the press "tilt": the side under your finger sinks, the far side lifts and
   throws a longer shadow. Defaults are a no-op, so surfaces that don't script it look unchanged. */
.wheel{position:relative;width:79.9%;aspect-ratio:1/1;margin:15% 0 0;border-radius:50%;flex:none;background:radial-gradient(circle at 50% 42%,#f4f4f4,#d2d4d7 72%,#c2c4c8);box-shadow:0 2px 6px rgba(0,0,0,.3),inset var(--tsx,0px) var(--tsy,0px) var(--tsb,0px) rgba(0,0,0,.38),inset 0 1px 2px #fff,inset 0 -2px 4px rgba(0,0,0,.15);transform:perspective(760px) rotate3d(var(--tx,0),var(--ty,1),0,var(--ta,0deg));transform-style:preserve-3d;transition:transform .13s ease-out,box-shadow .13s ease-out;will-change:transform;}
/* The centre button sits at the tilt's pivot, so counter-rotating it keeps it perfectly flat and
   stationary while the ring rocks underneath; translateZ keeps it painted on top. It should only
   change appearance when actually clicked (see :active). */
.wheel .ctr{position:absolute;left:50%;top:50%;width:34.5%;height:34.5%;transform:translate(-50%,-50%) rotate3d(var(--tx,0),var(--ty,1),0,calc(-1 * var(--ta,0deg))) translateZ(4px);transition:transform .13s ease-out;border-radius:50%;cursor:pointer;background:radial-gradient(circle at 50% 40%,#fff,#dcdee1 80%,#cfd1d5);box-shadow:inset 0 1px 2px #fff,0 1px 2px rgba(0,0,0,.25);}
.wheel .ctr:active{filter:brightness(.93);box-shadow:inset 0 2px 6px rgba(0,0,0,.3),0 0 1px rgba(0,0,0,.25);}
.wheel .wb{position:absolute;color:#6b6f75;font-weight:800;cursor:pointer;letter-spacing:.5px;}
.wheel .wb:hover{color:#222;}
.wtop{top:6.2%;left:50%;transform:translateX(-50%);font-size:14px;}
.wbot{bottom:5.4%;left:50%;transform:translateX(-50%);font-size:20px;}
.wleft{left:8.5%;top:50%;transform:translateY(-50%);font-size:20px;}
.wright{right:8.5%;top:50%;transform:translateY(-50%);font-size:20px;}
.setbar{position:relative;width:100%;height:22px;margin-top:8px;cursor:pointer;display:flex;align-items:center;}
.setbar:before{content:"";position:absolute;left:0;right:0;height:8px;border-radius:5px;background:linear-gradient(to bottom,#cfd5de,#c2c9d3);box-shadow:inset 0 1px 2px rgba(0,0,0,.15);}
.setbar-fill{position:absolute;left:0;height:8px;border-radius:5px;background:linear-gradient(to bottom,#8bbef7,#2f7cf1);pointer-events:none;}
.setbar-thumb{position:absolute;width:18px;height:18px;margin-left:-9px;border-radius:50%;background:radial-gradient(circle at 50% 35%,#5a9bf6,#2f7cf1 70%,#2367d6);border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.4);pointer-events:none;}
.pulltab{flex:none;width:100%;height:16px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;margin:-2px 0 2px;}
.pulltab .grip{width:42px;height:5px;border-radius:3px;background:#b7bcc4;box-shadow:inset 0 1px 1px rgba(0,0,0,.15);transition:background .2s;}
.pulltab:hover .grip{background:#8f959e;}
.pulltab .ph{font-size:11px;font-weight:700;color:#6b7078;letter-spacing:.3px;}
.ipodbody{flex:1;width:100%;min-height:0;display:flex;flex-direction:column;align-items:center;transition:transform .34s cubic-bezier(.4,0,.2,1),opacity .28s;}
.ipodbody.tucked{transform:translateY(118%);opacity:0;pointer-events:none;}
.ipod.hidden{background:transparent!important;border-color:transparent!important;box-shadow:none!important;}
.ipod.hidden .pulltab .grip{background:#e6e8ec;box-shadow:0 1px 3px rgba(0,0,0,.5);}
.ipod.hidden .pulltab .ph{color:#e6e8ec;text-shadow:0 1px 3px rgba(0,0,0,.6);}
.calbox{margin-top:10px;padding:9px;border-radius:8px;background:rgba(0,0,0,.05);border:1px solid rgba(0,0,0,.08);}
.ipod.black .calbox{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.09);}
.calhd{font-size:10px;font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:#555;display:flex;justify-content:space-between;align-items:center;margin-bottom:5px;}
.ipod.black .calhd{color:#c7ccd3;}
.calrst{font-size:9px;font-weight:700;color:#888;background:rgba(0,0,0,.08);border:none;border-radius:6px;padding:2px 7px;cursor:pointer;}
.calrow{display:flex;align-items:center;gap:6px;margin-top:4px;font-size:11px;color:#333;}
.ipod.black .calrow{color:#d7dbe0;}
.calrow span{flex:1;color:#888;}
.ipod.black .calrow span{color:#9aa0a6;}
.calrow b{min-width:38px;text-align:center;font-variant-numeric:tabular-nums;font-weight:700;}
.calrow button{width:24px;height:22px;border-radius:6px;border:1px solid rgba(0,0,0,.15);background:#eef0f3;color:#333;font-weight:800;cursor:pointer;line-height:1;}
.ipod.black .calrow button{background:#2c2f35;border-color:#3a3d44;color:#e6e8ec;}
.calrow button:active{filter:brightness(.92);}
.grid{position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;mix-blend-mode:multiply;background-image:repeating-linear-gradient(0deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.55) 1px,transparent 1px,transparent 2px),repeating-linear-gradient(90deg,rgba(0,0,0,.55) 0,rgba(0,0,0,.55) 1px,transparent 1px,transparent 2px);background-size:2px 2px;}
.dim{position:absolute;left:0;top:0;right:0;bottom:0;pointer-events:none;background:#000;}
.ipod.black{background:linear-gradient(150deg,#3c3f45,#26282c 55%,#161719);box-shadow:inset 0 1px 0 rgba(255,255,255,.14),inset 0 -2px 6px rgba(0,0,0,.45);}
.ipod.black .wheel{background:radial-gradient(circle at 50% 42%,#4c4f55,#2d2f34 72%,#212327);box-shadow:0 2px 6px rgba(0,0,0,.5),inset var(--tsx,0px) var(--tsy,0px) var(--tsb,0px) rgba(0,0,0,.55),inset 0 1px 2px rgba(255,255,255,.12),inset 0 -2px 4px rgba(0,0,0,.4);}
.ipod.black .wheel .ctr{background:radial-gradient(circle at 50% 40%,#56595f,#35373c 80%,#2a2c30);box-shadow:inset 0 1px 2px rgba(255,255,255,.15),0 1px 2px rgba(0,0,0,.4);}
.ipod.black .wheel .wb{color:#c7cad0;}
.ipod.black .wheel .wb:hover{color:#fff;}
.ipod.black .screen{background:#15171b;color:#e6e8ec;border-color:#000;box-shadow:0 1px 2px rgba(0,0,0,.5),inset 0 0 0 2px #000;}
.ipod.black .sbar{background:linear-gradient(to bottom,#3a3d44,#2a2c31 50%,#1c1e22);border-bottom-color:#000;box-shadow:inset 0 1px 0 rgba(255,255,255,.06);}
.ipod.black .sbar .ttl{color:#e6e8ec;}
.ipod.black .mi{color:#e6e8ec;border-bottom-color:#282b31;}
.ipod.black .mi .chev{color:#6b7078;}
.ipod.black .mi .t .sub{color:#8b929c;}
.ipod.black .np{color:#e6e8ec;}
.ipod.black .npn{color:#fff;}
.ipod.black .npa{color:#c7ccd4;}
.ipod.black .npb{color:#8b929c;}
.ipod.black .npcount{color:#b6bcc6;}
.ipod.black .scrollhint{background:rgba(20,22,26,.7);color:#7a828d;}
.ipod.black .set{color:#e6e8ec;}
.ipod.black .set label{color:#8b929c;}
.ipod.black .hint{color:#8b929c;}
.ipod.black .set input[type=text]{background:#23262c;border-color:#3a3d44;color:#e6e8ec;}
.ipod.black .seg{border-color:#3a3d44;}
.ipod.black .seg button{background:linear-gradient(to bottom,#2c2f35,#23262b);color:#c7ccd4;border-left-color:#3a3d44;}
.ipod.black .seg button.on{background:linear-gradient(to bottom,#3d7ce6,#2f6fd6);color:#fff;}
.ipod.black .setbar:before{background:linear-gradient(to bottom,#3a3d44,#2c2f35);}
.ipod.black .wheel{background:radial-gradient(circle at 50% 42%,#3a3d43,#212327 72%,#151619);}
.ipod.black .wheel .ctr{background:radial-gradient(circle at 50% 40%,#44474d,#292b2f 80%,#1e2023);}

/* no text selection / tap-flash anywhere on the device — it is a control surface, not a document.
 * Dragging the wheel or double-tapping a button must never highlight a label. Real text inputs
 * (the folder path field) keep normal selection. */
.ipod,.ipod *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;}
.ipod input,.ipod textarea{-webkit-user-select:text;-moz-user-select:text;-ms-user-select:text;user-select:text;}
.ipod img{-webkit-user-drag:none;user-select:none;pointer-events:none;}
.wheel,.wheel *{-webkit-user-drag:none;}
