@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Libre+Franklin:wght@400;600;700;800&display=swap');
:root{--ink:#17120f;--cream:#f1e9da;--paper:#fbf7ef;--wood:#5a2f1c;--wood2:#2b1710;--brass:#c8a35d;--amber:#f6c66b;--red:#b94736;--green:#7aa27b;--muted:#7c7268;--line:#d8ccba;--shadow:0 22px 60px rgba(41,25,16,.18)}*{box-sizing:border-box}body{margin:0;background:radial-gradient(circle at 20% 0,#fffdf7 0,#f0e7d7 45%,#ddd0bd 100%);color:var(--ink);font-family:'Libre Franklin',system-ui,sans-serif;min-height:100vh}.page-shell{max-width:1440px;margin:auto;padding:20px 30px 40px}.topbar{display:flex;justify-content:space-between;align-items:center;padding:6px 0 24px}.brand{display:flex;gap:12px;align-items:center}.brand-mark{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;background:var(--ink);color:var(--amber);font:700 24px Georgia}.brand strong{letter-spacing:.18em;font-size:14px}.brand small{display:block;letter-spacing:.25em;color:var(--muted);font-size:9px;margin-top:4px}.top-actions{display:flex;align-items:center;gap:18px}.live-pill{font:500 10px 'DM Mono';letter-spacing:.12em}.live-pill i{display:inline-block;width:7px;height:7px;background:#7d9c76;border-radius:50%;box-shadow:0 0 0 4px rgba(125,156,118,.13);margin-right:7px}.ghost-link{color:var(--ink);text-decoration:none;font-size:11px;font-weight:800;letter-spacing:.12em}.radio-stage{padding:12px 0 36px}.radio-cabinet{max-width:1120px;margin:auto;background:linear-gradient(145deg,#6a3b25,#4c281a 52%,#2e190f);border:10px solid #28150e;border-radius:32px;box-shadow:0 30px 70px rgba(37,20,12,.35),inset 0 0 0 3px #936143;padding:30px;position:relative}.radio-cabinet:after{content:'';position:absolute;inset:8px;border:1px solid rgba(255,255,255,.09);border-radius:18px;pointer-events:none}.cabinet-top{display:grid;grid-template-columns:.85fr 1.6fr;gap:34px}.speaker-panel{display:flex;flex-direction:column;justify-content:center}.speaker-grille{aspect-ratio:1.1;background:repeating-linear-gradient(90deg,#2b1d18 0 3px,#6a554a 3px 5px),repeating-linear-gradient(#2b1d18 0 3px,#6a554a 3px 5px);border:9px solid #25140e;border-radius:50%;display:grid;place-items:center;box-shadow:inset 0 0 45px #000}.speaker-center{width:92px;height:92px;border-radius:50%;background:#17100d;border:4px solid #9f7e48;display:grid;place-items:center;color:#bfa873;font:700 28px Georgia;letter-spacing:.08em}.speaker-label{text-align:center;color:#c7b39a;font:500 9px 'DM Mono';letter-spacing:.18em;margin-top:14px}.glass{background:linear-gradient(180deg,#25251d,#12140f);border:6px solid #d4b675;border-radius:14px;box-shadow:inset 0 0 30px rgba(244,188,83,.14),0 6px 0 #27150c;padding:18px;color:#f3d992}.glass-header{display:flex;justify-content:space-between;font:500 11px 'DM Mono';letter-spacing:.16em;border-bottom:1px solid rgba(246,198,107,.25);padding-bottom:10px}.station-screen{display:grid;grid-template-columns:88px 1fr;gap:18px;align-items:center;padding:22px 0}.station-logo{width:82px;height:82px;border:1px solid rgba(246,198,107,.35);border-radius:10px;display:grid;place-items:center;font-size:38px;overflow:hidden;background:#181a14}.station-logo img{width:100%;height:100%;object-fit:cover}.station-copy h1{margin:0;font-size:clamp(23px,3vw,38px);letter-spacing:-.04em;color:#ffe5a7}.station-copy p{margin:7px 0 12px;color:#af9b73;font-size:13px}.codec-line{display:flex;gap:14px;font:500 10px 'DM Mono';color:#7f8d6b}.vu-wrap{padding-top:5px}.vu-scale{display:flex;justify-content:space-between;font:9px 'DM Mono';color:#826f50}.vu-meter{height:40px;border-bottom:1px solid #b18d4c;position:relative;overflow:hidden}.vu-meter i{display:block;position:absolute;width:2px;height:54px;background:#ca5d47;left:50%;bottom:-27px;transform-origin:bottom center;transform:rotate(-42deg);transition:transform .13s ease}.dial-wrap{margin-top:18px}.dial-scale{height:24px;position:relative;color:#dfca96;font:9px 'DM Mono'}.dial-scale span{position:absolute;transform:translateX(-50%)}.dial-track{height:22px;border:2px solid #aa8f5c;background:repeating-linear-gradient(90deg,transparent 0 24px,rgba(236,207,147,.2) 24px 25px),#171711;position:relative}.dial-needle{position:absolute;top:-6px;bottom:-6px;width:3px;background:#df6047;box-shadow:0 0 10px #e0664d;transition:left .2s}.frequency-row{text-align:center;color:#eccd85;margin-top:10px}.frequency-row strong{font:500 31px 'DM Mono'}.frequency-row span{font:10px 'DM Mono';margin-left:6px}.knob-row{display:flex;align-items:end;justify-content:space-between;margin-top:25px;padding:0 12px}.knob-unit{text-align:center;color:#bdaa8e;font:9px 'DM Mono';letter-spacing:.12em}.knob{width:66px;height:66px;border-radius:50%;border:7px solid #16100c;background:radial-gradient(circle at 35% 30%,#d7c4a5,#83745d 45%,#3a3128 70%);box-shadow:0 5px 0 #140b07;position:relative;cursor:pointer}.knob span{position:absolute;width:4px;height:18px;background:#2b1a11;left:50%;top:7px;transform:translateX(-50%);border-radius:3px}.knob-unit label{display:block;margin-top:9px}.transport{display:flex;gap:8px}.transport button{border:1px solid #8b6547;background:#271711;color:#d7bb81;border-radius:50%;width:40px;height:40px;cursor:pointer}.transport .play{width:54px;height:54px;background:#c59b53;color:#21140e;border-color:#e1c88f}.volume-wrap{height:70px;display:flex;align-items:center}.volume-wrap input{width:78px;accent-color:#c19b57}.console{max-width:1120px;margin:auto}.search-panel,.list-card,.info-card{background:rgba(255,252,246,.82);border:1px solid rgba(142,120,91,.28);box-shadow:var(--shadow);backdrop-filter:blur(10px)}.search-panel{border-radius:18px;padding:22px}.section-title{display:flex;justify-content:space-between;align-items:end}.section-title small,.info-card>small,.admin-hero small{font:500 9px 'DM Mono';letter-spacing:.2em;color:#9a6f44}.section-title h2{margin:5px 0 0;font-size:25px}.filters{display:grid;grid-template-columns:1.4fr 1fr 1fr auto;gap:12px;margin-top:18px}.filters label,.dialog-form label,.stack label{font:700 10px 'DM Mono';letter-spacing:.06em;color:#796c60}.filters input,.filters select,.dialog-form input,.dialog-form select,.stack input{display:block;width:100%;margin-top:7px;border:1px solid #d7c9b8;background:#fffdfa;border-radius:9px;padding:12px;color:var(--ink);font:500 13px 'Libre Franklin'}.btn{border:0;border-radius:9px;padding:12px 16px;font:800 10px 'Libre Franklin';letter-spacing:.08em;cursor:pointer;text-decoration:none;text-align:center}.primary{background:var(--ink);color:#fff}.scan{background:#e8ddcc;color:#3d3026}.content-grid{display:grid;grid-template-columns:1fr 290px;gap:18px;margin-top:18px}.list-card,.info-card{border-radius:18px}.tabs{display:flex;border-bottom:1px solid var(--line);padding:0 20px}.tab{border:0;background:transparent;padding:17px 14px;font:800 10px 'Libre Franklin';letter-spacing:.08em;color:#8f8276;cursor:pointer;border-bottom:2px solid transparent}.tab.active{color:var(--ink);border-bottom-color:var(--ink)}.list-status{padding:14px 22px 6px;color:#8a7b6d;font-size:11px}.station-list{padding:8px 12px 16px;max-height:590px;overflow:auto}.station-row{width:100%;border:0;background:transparent;display:grid;grid-template-columns:46px 1fr 80px;gap:12px;align-items:center;text-align:left;padding:12px;border-radius:11px;cursor:pointer;color:var(--ink)}.station-row:hover{background:#f0e7d9}.row-logo{width:42px;height:42px;border-radius:8px;background:#e4d5c2;display:grid;place-items:center;overflow:hidden}.row-logo img{width:100%;height:100%;object-fit:cover}.row-main strong{display:block;font-size:13px}.row-main span{display:block;font-size:10px;color:#8e8175;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.row-tech{text-align:right}.row-tech strong{display:block;font:500 13px 'DM Mono'}.row-tech span{font:500 8px 'DM Mono';color:#9b6c45}.info-card{padding:22px;align-self:start;position:sticky;top:20px}.info-card h3{margin:7px 0 5px;font-size:22px}.info-card>p{font-size:12px;color:#85786b}.info-stat{border-top:1px solid var(--line);padding:13px 0;display:flex;justify-content:space-between;align-items:center}.info-stat span{font:700 9px 'DM Mono';color:#9a8b7d}.info-stat strong{font-size:12px}.info-card .btn{display:block;width:100%;margin-top:8px}.favorite{background:#efe2d0;color:#573724}.favorite.is-fav{background:#a54536;color:#fff}.outline{border:1px solid #beac98;color:var(--ink)}.hint{font-size:10px!important;line-height:1.45;margin-top:15px}footer{text-align:center;padding:34px 0 0;font:500 9px 'DM Mono';letter-spacing:.15em;color:#9b8d80}.radio-off .glass{filter:brightness(.35)}.radio-off .dial-needle{opacity:.2}.admin-body{background:#eee6da}.admin-header{display:flex;justify-content:space-between;padding:18px 4vw;border-bottom:1px solid #d7cabb}.mini-logo{font-weight:900;letter-spacing:.14em}.mini-logo span{color:#a2603c}.admin-header nav{display:flex;gap:18px}.admin-header a,.back-link{color:var(--ink);font-size:12px;text-decoration:none}.admin-wrap{max-width:1180px;margin:40px auto;padding:0 22px}.admin-hero{display:flex;justify-content:space-between;align-items:end;margin-bottom:20px}.admin-hero h1{margin:6px 0;font-size:35px}.admin-hero p{margin:0;color:#766a60}.admin-card{background:#fffaf3;border:1px solid #d8cbbd;border-radius:16px;padding:20px;box-shadow:var(--shadow)}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:13px;border-bottom:1px solid #e3d9ce;font-size:12px}th{font:800 9px 'DM Mono';color:#89786a}td small{display:block;color:#998a7e;margin-top:4px}.status{font-size:10px;padding:5px 8px;border-radius:99px}.status.on{background:#dfe9dc;color:#3f673c}.status.off{background:#eadeda;color:#815048}.icon-btn{border:1px solid #cfbfae;background:transparent;border-radius:8px;padding:7px 9px;cursor:pointer}dialog{border:0;border-radius:18px;padding:0;box-shadow:0 30px 90px rgba(0,0,0,.28);width:min(720px,92vw)}dialog::backdrop{background:rgba(25,18,14,.55)}.dialog-form{padding:24px}.dialog-title{display:flex;justify-content:space-between;align-items:center}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:18px}.span2{grid-column:1/-1}.check{display:flex;align-items:center;gap:8px}.check input{width:auto;margin:0}.dialog-actions{display:flex;justify-content:space-between;margin-top:22px}.danger{background:#a34839;color:#fff}.login-card{width:min(420px,92vw);margin:10vh auto;background:#fffaf3;border:1px solid #d7cabb;border-radius:18px;padding:30px;box-shadow:var(--shadow)}.login-card h1{margin-bottom:5px}.login-card p{color:#7d7167}.stack{display:grid;gap:14px;margin:24px 0}.stack .btn{width:100%}.error-box{background:#f4ded8;color:#873e32;padding:10px;border-radius:8px;font-size:12px}@media(max-width:850px){.cabinet-top{grid-template-columns:1fr}.speaker-panel{display:none}.filters{grid-template-columns:1fr 1fr}.filters .btn{grid-column:1/-1}.content-grid{grid-template-columns:1fr}.info-card{position:static}.radio-cabinet{padding:18px}.page-shell{padding:12px}.knob-row{gap:7px}.knob{width:54px;height:54px}.transport button{width:34px;height:34px}.transport .play{width:45px;height:45px}}@media(max-width:520px){.filters{grid-template-columns:1fr}.station-screen{grid-template-columns:60px 1fr}.station-logo{width:58px;height:58px}.station-copy h1{font-size:22px}.knob-row{flex-wrap:wrap}.top-actions .live-pill{display:none}.form-grid{grid-template-columns:1fr}.span2{grid-column:auto}}

/* RetroRadio v3: controles de sintonía más intuitivos */
.dial-track{cursor:ew-resize;touch-action:none;user-select:none}
.dial-track:hover{box-shadow:0 0 0 2px rgba(246,198,107,.16),inset 0 0 16px rgba(246,198,107,.08)}
.knob.tuning{touch-action:none;user-select:none;transition:transform .08s linear,filter .15s,box-shadow .15s}
.knob.tuning:hover,.knob.tuning:focus-visible{filter:brightness(1.12);box-shadow:0 5px 0 #140b07,0 0 0 3px rgba(246,198,107,.22);outline:none}
.knob.tuning.dragging{filter:brightness(1.2);box-shadow:0 4px 0 #140b07,0 0 18px rgba(246,198,107,.4)}
.tuning-help{display:block;margin-top:5px;font:500 7px 'DM Mono';letter-spacing:.04em;color:#d1b989;white-space:nowrap}
.frequency-row .tune-preview{display:block;margin-top:6px;font:500 8px 'DM Mono';letter-spacing:.08em;color:#9f8b65;min-height:11px}

/* V4 - presets e importador */
.preset-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:14px}
.preset-btn{border:1px solid rgba(213,171,83,.45);background:rgba(12,13,10,.62);color:#e7c570;padding:8px 9px;border-radius:7px;cursor:pointer;min-width:0;text-align:left;transition:.18s ease;box-shadow:inset 0 0 0 1px rgba(255,255,255,.02)}
.preset-btn:hover{transform:translateY(-1px);background:rgba(34,28,16,.9);border-color:#d5ab53}
.preset-btn strong{display:block;font-size:11px;letter-spacing:.08em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.preset-btn span{display:block;font-size:10px;opacity:.72;margin-top:2px}
.admin-actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.admin-country{padding:10px 12px;border-radius:8px;border:1px solid rgba(80,60,35,.25);background:#fff9ee;font:inherit}
@media(max-width:800px){.preset-strip{grid-template-columns:repeat(2,minmax(0,1fr))}}
