@font-face{font-family:'Cinzel';src:url(/fonts/Cinzel-var.woff2) format('woff2');font-weight:400 900;font-display:swap}
@font-face{font-family:'EB Garamond';src:url(/fonts/EBGaramond-400.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'EB Garamond';src:url(/fonts/EBGaramond-500.woff2) format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:'EB Garamond';src:url(/fonts/EBGaramond-600.woff2) format('woff2');font-weight:600 700;font-display:swap}
@font-face{font-family:'EB Garamond';src:url(/fonts/EBGaramond-400i.woff2) format('woff2');font-weight:400;font-style:italic;font-display:swap}
:root{--bg:#18110b;--bg2:#211810;--card:#2a2017;--card2:#33271b;--line:#4d3b26;--gold:#d6ad56;--gold2:#f0d28a;--parch:#efe2c2;--parch2:#e2cf9f;--ink:#2b1d10;--text:#efe4cc;--mute:#b4a283;--red:#c8442f;--green:#7f9a4b;--blue:#5b7fb0;
--st:env(safe-area-inset-top,0px);--sb:env(safe-area-inset-bottom,0px);--hh:58px;--tb:62px}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font-family:'EB Garamond',Georgia,serif;font-size:17px;overscroll-behavior:none}
body{position:fixed;inset:0;overflow:hidden}
button,input,select,textarea{font:inherit;color:inherit}
h1,h2,h3,.cz{font-family:'Cinzel',serif;letter-spacing:.04em}
#app{position:absolute;inset:0;display:flex;flex-direction:column}
.top{flex:none;padding:calc(var(--st) + 8px) 16px 8px;height:calc(var(--hh) + var(--st));display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#120c07,#1d150d);border-bottom:2px solid rgba(214,173,86,.55);z-index:30;position:relative}
.brand{display:flex;align-items:center;gap:10px}
.brand-ico{width:34px;height:34px;border-radius:9px;box-shadow:0 0 0 1px rgba(214,173,86,.5)}
.top h1{margin:0;font-size:21px;font-weight:800;color:var(--gold2);line-height:1.05}
.top .sub{font-family:'Cinzel';font-size:10.5px;letter-spacing:.22em;color:var(--gold);text-transform:uppercase}
.top-right{font-size:13.5px;color:var(--mute);text-align:right;max-width:46%;line-height:1.2}
.top-right b{color:var(--parch);font-weight:600;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#views{flex:1;position:relative;overflow:hidden}
.view{position:absolute;inset:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:16px 16px calc(28px);}
#v-mapa{padding:0;overflow:hidden}
.tabs{flex:none;display:flex;background:#120c07;border-top:2px solid rgba(214,173,86,.45);padding:0 4px var(--sb);height:calc(var(--tb) + var(--sb));z-index:30}
.tabs button{flex:1;background:none;border:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:#9b8a6c;font-family:'Cinzel';font-size:10.5px;letter-spacing:.06em;position:relative;padding:0}
.tabs svg{width:25px;height:25px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linejoin:round;stroke-linecap:round}
.tabs button.on{color:var(--gold2)}
.tabs button.on::before{content:'';position:absolute;top:-2px;left:22%;right:22%;height:3px;background:var(--gold2);border-radius:0 0 3px 3px}
.badge{position:absolute;top:7px;left:56%;min-width:17px;height:17px;border-radius:9px;background:var(--red);color:#fff;font:600 11px/17px system-ui;font-style:normal;padding:0 4px}
/* map */
.map{position:absolute;inset:0;overflow:hidden;touch-action:none;background:#2c2618;cursor:grab}
.map-layer{position:absolute;left:0;top:0;width:1915px;height:1830px;transform-origin:0 0;will-change:transform}
.map-layer img{display:block;width:1915px;height:1830px;user-select:none;-webkit-user-select:none;-webkit-user-drag:none;pointer-events:none}
.map::after{content:'';position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 60px rgba(0,0,0,.55)}
#pins{position:absolute;inset:0}
.pin{position:absolute;width:0;height:0}
.pin-in{position:absolute;left:0;top:0;transform:scale(var(--inv,1));transform-origin:0 0}
.pin button{position:absolute;left:0;top:0;transform:translate(-50%,-50%);background:none;border:0;padding:0;display:flex;align-items:center;gap:0;cursor:pointer}
.medal{width:30px;height:30px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#fff2c8,#d6ad56 55%,#8a6526);box-shadow:0 2px 6px rgba(0,0,0,.6),0 0 0 2px #2a1c0e;display:grid;place-items:center;position:relative;flex:none}
.medal::after{content:'';width:10px;height:10px;border-radius:50%;background:#2a1c0e}
.pin.seat .medal{width:40px;height:40px}
.pin.seat .medal::after{display:none}
.medal svg{width:24px;height:24px;fill:#2a1c0e}
.lbl{position:absolute;left:50%;transform:translateX(-50%);top:24px;white-space:nowrap;background:linear-gradient(#f5ead0,#e3cf9f);color:var(--ink);border:1.5px solid #7b5a2a;border-radius:6px;padding:3px 10px 4px;box-shadow:0 3px 8px rgba(0,0,0,.5);text-align:center;line-height:1.05}
.pin.seat .lbl{top:28px;padding:4px 12px 5px;border-color:var(--gold);background:linear-gradient(#2b1f12,#1a120a);color:var(--gold2)}
.lbl .n{font-family:'Cinzel';font-weight:700;font-size:15px;letter-spacing:.03em;display:block}
.pin.seat .lbl .n{font-size:17px}
.lbl .s{font-family:'Cinzel';font-size:9.5px;letter-spacing:.12em;text-transform:uppercase;color:#7b3b22;display:block;margin-top:2px}
.pin.seat .lbl .s{color:var(--gold)}
.lbl .s.red{color:#b12d1b;font-weight:700}
.pulse{position:absolute;left:50%;top:50%;width:30px;height:30px;margin:-15px 0 0 -15px;border-radius:50%;border:3px solid var(--red);animation:pulse 2s ease-out infinite;pointer-events:none}
.pulse.p2{animation-delay:1s}
@keyframes pulse{0%{transform:scale(.8);opacity:.95}100%{transform:scale(3.4);opacity:0}}
.pin.has-svolani .medal{background:radial-gradient(circle at 40% 35%,#ffd2c2,#d2513a 55%,#7d2416)}
.dotc{position:absolute;right:-6px;top:-6px;min-width:18px;height:18px;border-radius:9px;background:#2a1c0e;color:var(--gold2);border:1.5px solid var(--gold);font:700 11px/15px system-ui;text-align:center;padding:0 3px}
.map-tools{position:absolute;right:10px;bottom:170px;display:flex;flex-direction:column;gap:8px;z-index:5}
.mt-btn{width:42px;height:42px;border-radius:10px;border:1.5px solid rgba(214,173,86,.6);background:rgba(24,17,11,.82);color:var(--gold2);font:600 22px/1 'Cinzel';display:grid;place-items:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.map-banner{position:absolute;left:10px;right:10px;top:10px;z-index:5;background:rgba(122,32,20,.92);border:1.5px solid #e08a6c;color:#fff1e6;border-radius:12px;padding:8px 12px;font-size:15px;line-height:1.25;box-shadow:0 4px 14px rgba(0,0,0,.4)}
.map-banner b{font-family:'Cinzel';font-size:12px;letter-spacing:.1em;display:block;color:#ffd2bf}
.peek{position:absolute;left:0;right:0;bottom:0;z-index:6;background:linear-gradient(rgba(24,17,11,.0),rgba(24,17,11,.92) 18px,#18110b 40px);padding:22px 12px 10px}
.peek-h{display:flex;justify-content:space-between;align-items:baseline;margin:0 4px 6px}
.peek-h h3{margin:0;font-size:13px;letter-spacing:.16em;color:var(--gold);text-transform:uppercase}
.peek-h button{background:none;border:0;color:var(--gold2);font-size:15px;padding:6px 0 6px 10px}
.mini{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:9px 12px;margin-top:6px;width:100%;text-align:left;min-height:52px}
.mini .t{font-weight:600;font-size:16px;line-height:1.15;color:var(--parch);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini .m{font-size:13.5px;color:var(--mute);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mini>div{min-width:0;flex:1}
.seal{flex:none;width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font:700 13px 'Cinzel';color:#fff;box-shadow:inset 0 0 0 2px rgba(255,255,255,.25),0 1px 3px rgba(0,0,0,.5)}
.k-svolani{background:radial-gradient(circle at 40% 35%,#e46a50,#a42a17)}
.k-oznameni{background:radial-gradient(circle at 40% 35%,#f0cf7f,#a77a2a);color:#2a1c0e}
.k-obchod{background:radial-gradient(circle at 40% 35%,#a9c06d,#5e7530)}
.k-hleda{background:radial-gradient(circle at 40% 35%,#89a6d1,#3f5f8f)}
.empty-mini{background:var(--card);border:1px dashed var(--line);border-radius:12px;padding:12px;color:var(--mute);font-size:15px;text-align:center}
.empty-mini button{margin-top:6px}
/* general */
.h2{font-size:20px;color:var(--gold2);margin:4px 2px 4px;font-weight:700}
.lead{color:var(--mute);margin:0 2px 14px;font-size:16px;line-height:1.35}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:46px;padding:0 18px;border-radius:12px;border:1.5px solid var(--gold);background:linear-gradient(#e2bf6e,#b88a3a);color:#24170a;font-family:'Cinzel';font-weight:700;font-size:15px;letter-spacing:.04em}
.btn.ghost{background:transparent;color:var(--gold2)}
.btn.danger{background:transparent;border-color:#a54b3a;color:#f0a08c}
.btn.block{width:100%}
.btn:disabled{opacity:.55}
.row{display:flex;gap:10px;align-items:center}
.sp{flex:1}
.chips{display:flex;gap:8px;overflow-x:auto;margin:0 -16px 12px;padding:2px 16px;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;min-height:38px;padding:0 14px;border-radius:19px;border:1.5px solid var(--line);background:var(--card);color:var(--text);font-size:15px}
.chip.on{border-color:var(--gold);background:#3a2b18;color:var(--gold2)}
.note{background:linear-gradient(#f3e7c9,#e6d3a6);color:var(--ink);border-radius:6px;padding:14px 14px 12px;margin:0 0 14px;box-shadow:0 6px 16px rgba(0,0,0,.45);position:relative;border:1px solid #9a7a45}
.note::before{content:'';position:absolute;top:-6px;left:50%;width:14px;height:14px;margin-left:-7px;border-radius:50%;background:radial-gradient(circle at 35% 35%,#ddd,#6b5a44);box-shadow:0 2px 3px rgba(0,0,0,.5)}
.note .kind{font-family:'Cinzel';font-size:11px;letter-spacing:.16em;text-transform:uppercase;font-weight:700}
.note.k1 .kind{color:#a42a17}.note.k2 .kind{color:#7a5617}.note.k3 .kind{color:#4d6424}.note.k4 .kind{color:#36557f}
.note h3{margin:3px 0 4px;font-size:19px;line-height:1.15;font-weight:700;color:#24170a;letter-spacing:.02em}
.note .when{font-weight:600;color:#7b2a17;font-size:16px}
.note p{margin:6px 0 8px;font-size:17px;line-height:1.35;white-space:pre-wrap;overflow-wrap:anywhere}
.note .foot{display:flex;align-items:center;gap:8px;font-size:14px;color:#6c5638;border-top:1px dashed rgba(90,60,30,.35);padding-top:7px}
.note .foot .del{margin-left:auto;background:none;border:1px solid rgba(120,50,30,.5);color:#8c2e1a;border-radius:8px;padding:5px 10px;font-size:14px}
.note.k1{border-left:5px solid #a42a17}
.empty{text-align:center;padding:30px 18px;color:var(--mute);border:1px dashed var(--line);border-radius:16px;background:rgba(42,32,23,.5)}
.empty .big{font-family:'Cinzel';color:var(--gold2);font-size:18px;margin-bottom:6px}
.card{background:var(--card);border:1px solid var(--line);border-radius:16px;padding:16px;margin-bottom:14px}
label.f{display:block;margin:0 0 12px}
label.f>span{display:block;font-family:'Cinzel';font-size:12px;letter-spacing:.12em;color:var(--gold);text-transform:uppercase;margin:0 2px 5px}
.in{width:100%;min-height:48px;border-radius:11px;border:1.5px solid var(--line);background:#16100a;color:var(--parch);padding:10px 12px;font-size:17px;outline:none;-webkit-appearance:none;appearance:none}
.in:focus{border-color:var(--gold)}
textarea.in{min-height:96px;resize:vertical;line-height:1.35}
.hint{font-size:14px;color:var(--mute);margin:-6px 2px 12px}
.seg{display:flex;background:#16100a;border:1.5px solid var(--line);border-radius:12px;padding:3px;margin-bottom:14px}
.seg button{flex:1;min-height:40px;border:0;background:none;border-radius:9px;color:var(--mute);font-family:'Cinzel';font-size:13px}
.seg button.on{background:#3a2b18;color:var(--gold2)}
.kinds{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}
.kinds button{min-height:46px;border-radius:12px;border:1.5px solid var(--line);background:#16100a;display:flex;align-items:center;gap:8px;padding:0 10px;font-size:16px}
.kinds button .seal{width:22px;height:22px}
.kinds button.on{border-color:var(--gold);background:#3a2b18;color:var(--gold2)}
.places{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:14px}
.places button{min-height:52px;border-radius:12px;border:1.5px solid var(--line);background:#16100a;text-align:left;padding:6px 12px;line-height:1.1}
.places button b{font-family:'Cinzel';font-size:15px;display:block;color:var(--parch)}
.places button small{color:var(--mute);font-size:13px}
.places button.on{border-color:var(--gold);background:#3a2b18}
.places button.on b{color:var(--gold2)}
.two{display:grid;grid-template-columns:1.2fr 1fr;gap:10px}
.listina{background:linear-gradient(#f3e7c9,#e2cd9b);color:var(--ink);border-radius:8px;padding:20px 18px 18px;margin-bottom:16px;box-shadow:0 8px 20px rgba(0,0,0,.5);border:1px solid #9a7a45;position:relative;text-align:center}
.listina .lt{font-family:'Cinzel';font-size:11px;letter-spacing:.24em;color:#7b5a2a;text-transform:uppercase}
.listina .nm{font-family:'Cinzel';font-weight:800;font-size:26px;margin:8px 0 2px;color:#24170a;line-height:1.1;overflow-wrap:anywhere}
.listina .tt{font-style:italic;font-size:18px;color:#5b4024}
.listina .pl{margin-top:10px;font-size:16px}
.listina .wax{position:absolute;right:14px;bottom:-14px;width:46px;height:46px;border-radius:50%;background:radial-gradient(circle at 38% 35%,#d65c46,#8e2413 70%);box-shadow:0 3px 6px rgba(0,0,0,.45);display:grid;place-items:center;color:#f7d2c4;font:800 18px 'Cinzel'}
.grp{margin-bottom:16px}
.grp-h{display:flex;align-items:baseline;justify-content:space-between;border-bottom:1px solid var(--line);padding:4px 2px 6px;margin-bottom:6px}
.grp-h h3{margin:0;font-size:16px;color:var(--gold2)}
.grp-h span{color:var(--mute);font-size:14px}
.person{display:flex;align-items:center;gap:12px;padding:8px 2px;min-height:50px}
.person .ini{width:38px;height:38px;border-radius:50%;background:#3a2b18;border:1.5px solid var(--gold);display:grid;place-items:center;font:700 15px 'Cinzel';color:var(--gold2);flex:none}
.person .pn{font-size:17px;font-weight:600;color:var(--parch);line-height:1.15}
.person .pt{font-size:14.5px;color:var(--mute);font-style:italic}
.person.me .pn::after{content:' · ty';color:var(--gold);font-style:normal;font-weight:400;font-size:14px}
.muted{color:var(--mute)}
.steps{margin:6px 0 0;padding-left:22px;line-height:1.45}
.steps li{margin-bottom:6px}
.vers{font-size:13px;color:#7d6c52;text-align:center;margin-top:18px}
/* sheet */
.sheet-wrap{position:fixed;inset:0;z-index:50}
.sheet-bg{position:absolute;inset:0;background:rgba(0,0,0,.5);animation:fade .2s}
.sheet{position:absolute;left:0;right:0;bottom:0;max-height:88%;overflow-y:auto;-webkit-overflow-scrolling:touch;background:var(--bg2);border-top:2px solid var(--gold);border-radius:22px 22px 0 0;padding:6px 16px calc(20px + var(--sb));animation:up .25s cubic-bezier(.2,.8,.3,1);box-shadow:0 -10px 30px rgba(0,0,0,.6)}
.grab{width:54px;height:5px;border-radius:3px;background:rgba(214,173,86,.6);margin:6px auto 12px}
@keyframes up{from{transform:translateY(100%)}to{transform:none}}
@keyframes fade{from{opacity:0}}
.pl-head{display:flex;align-items:center;gap:12px;margin-bottom:6px}
.pl-head .medal{width:46px;height:46px}
.pl-head h2{margin:0;font-size:24px;color:var(--gold2)}
.pl-head .ty{font-family:'Cinzel';font-size:11px;letter-spacing:.18em;color:var(--gold);text-transform:uppercase}
.flav{font-style:italic;color:#d9c9a8;font-size:17px;line-height:1.38;margin:6px 0 12px}
.status{border-radius:12px;padding:10px 12px;margin-bottom:12px;font-size:16px;line-height:1.3}
.status.red{background:rgba(164,42,23,.22);border:1px solid #a54b3a}
.status.calm{background:rgba(127,154,75,.14);border:1px solid #5d6f3a;color:#cfdcb2}
.sec{font-family:'Cinzel';font-size:12px;letter-spacing:.16em;color:var(--gold);text-transform:uppercase;margin:16px 2px 8px}
.toast{position:fixed;left:50%;top:calc(var(--st) + var(--hh) + 12px);transform:translateX(-50%);background:#2e2215;border:1.5px solid var(--gold);color:var(--parch);padding:10px 16px;border-radius:12px;z-index:80;max-width:88%;text-align:center;box-shadow:0 6px 18px rgba(0,0,0,.5);font-size:16px}
.toast.err{border-color:#c8442f}
.offline{display:block;font-size:12px;color:#e7a28d}
@media (min-width:700px){.view{padding-left:max(16px,calc(50% - 300px));padding-right:max(16px,calc(50% - 300px))}.sheet{max-width:600px;margin:0 auto}.peek{max-width:600px;margin:0 auto}}
