:root{--bg:#060b16;--paper:rgba(17,27,47,.82);--paper2:rgba(255,255,255,.05);--ink:#e9eef6;--mute:#8e9db5;--mute2:#b6c2d4;--hair:rgba(255,255,255,.08);--gold:#e7c37a;--lift:0 0 0 1px rgba(255,255,255,.07),0 10px 28px rgba(0,0,0,.35);--c:#e8857a}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{background:var(--bg);color:var(--ink);font-family:-apple-system,"PingFang SC","Hiragino Sans GB","Noto Sans SC",sans-serif;min-height:100vh}
.jp,.kana,.sign b,.wd b{font-family:"Hiragino Maru Gothic ProN","Hiragino Sans","Noto Sans JP",sans-serif}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:rgba(6,11,22,.72);backdrop-filter:blur(8px);border-bottom:1px solid var(--hair)}
.brand{display:flex;align-items:center;gap:8px;font-size:16px}
.logo{width:30px;height:30px;border-radius:50%;background:#2f2b28;color:#fff;display:grid;place-items:center;font-weight:900;font-size:15px;box-shadow:inset 0 0 0 3px #fff,0 0 0 2px #2f2b28}
.hbtn{font-size:13px;font-weight:700;background:var(--paper);padding:6px 12px;border-radius:999px;box-shadow:var(--lift)}
main{max-width:560px;margin:0 auto;padding:16px 16px 30px}
h2{font-size:22px;font-weight:900;margin:4px 0 12px}
h3{font-size:16px;font-weight:900;margin:22px 0 10px;display:flex;align-items:center;gap:8px}
.card{background:var(--paper);border-radius:18px;box-shadow:var(--lift);padding:16px}
/* IC 卡 */
.ic{position:relative;overflow:hidden;border-radius:20px;padding:18px 20px;color:#fff;background:linear-gradient(135deg,#3d8f7a,#5fb39a 60%,#8fd0b8);box-shadow:0 10px 24px rgba(40,110,90,.28);cursor:pointer;user-select:none}
.ic:before{content:'';position:absolute;right:-40px;top:-40px;width:170px;height:170px;border-radius:50%;background:rgba(255,255,255,.12)}
.ic:after{content:'';position:absolute;right:30px;bottom:-60px;width:140px;height:140px;border-radius:50%;background:rgba(255,255,255,.08)}
.ic small{font-size:12px;opacity:.85;letter-spacing:1px}
.ic .ic-n{font-size:15px;font-weight:900;letter-spacing:2px;margin-top:2px}
.ic .ic-row{display:flex;gap:22px;margin-top:16px;position:relative;z-index:1}
.ic .ic-row b{display:block;font-size:26px;font-weight:900;line-height:1.1}
.ic .ic-tap{position:absolute;right:18px;top:18px;z-index:1;font-size:12px;font-weight:800;background:rgba(255,255,255,.22);padding:5px 10px;border-radius:999px}
.ic.done .ic-tap{background:var(--paper);color:#3d8f7a}
.ic.pi{animation:pi .45s}@keyframes pi{30%{transform:scale(.97)}}
.week{display:flex;gap:6px;margin-top:12px;position:relative;z-index:1}
.week span{flex:1;text-align:center;font-size:11px;opacity:.9}
.week i{display:block;margin:4px auto 0;width:24px;height:24px;border-radius:50%;border:1.5px dashed rgba(255,255,255,.6);font-style:normal;line-height:21px;font-size:12px;font-weight:900}
.week i.ok{background:var(--paper);color:#3d8f7a;border:0;line-height:24px}
/* 时刻表 */
.tt{margin-top:14px;background:#22262b;color:var(--paper2);border-radius:16px;padding:12px 14px;box-shadow:0 8px 20px rgba(0,0,0,.15)}
.tt-h{display:flex;justify-content:space-between;font-size:12px;color:#f7c84a;font-weight:800;letter-spacing:1px;border-bottom:1px solid #3a3f46;padding-bottom:8px;margin-bottom:4px}
.tt a{display:grid;grid-template-columns:52px 64px 1fr auto;align-items:center;gap:6px;padding:9px 0;border-bottom:1px dashed #3a3f46;font-size:14px}
.tt a:last-child{border:0}
.tt time{font-family:ui-monospace,Menlo,monospace;color:#f7c84a;font-weight:800}
.tt .ln{font-size:11px;font-weight:900;color:#fff;border-radius:6px;padding:2px 6px;text-align:center}
.tt em{font-style:normal;font-size:12px;color:#9aa3ab}
.tt .go{color:#7fe0b8;font-weight:800;font-size:12px}
/* 路线图 */
.line{margin-top:14px;background:var(--paper);border-radius:18px;box-shadow:var(--lift);padding:14px 14px 10px}
.line-h{display:flex;align-items:center;gap:10px}
.badge{width:34px;height:34px;border-radius:50%;border:5px solid var(--c);display:grid;place-items:center;font-weight:900;font-size:14px;background:var(--paper);flex:none}
.line-h b{font-size:16px;font-weight:900}
.line-h small{display:block;font-size:12px;color:var(--mute)}
.line-h .pct{margin-left:auto;font-size:12px;font-weight:800;color:var(--c)}
.route{display:flex;overflow-x:auto;padding:22px 4px 0;scrollbar-width:none;scroll-snap-type:x proximity}
.route::-webkit-scrollbar{display:none}
.stn{position:relative;flex:none;width:64px;text-align:center;scroll-snap-align:center}
.stn:before{content:'';position:absolute;left:0;right:0;top:15px;height:7px;background:var(--c);opacity:.35}
.stn:first-child:before{left:50%}.stn:last-child:before{right:50%}
.stn.ok:before{opacity:1}
.stn i{position:relative;display:block;margin:0 auto;width:30px;height:30px;border-radius:50%;background:var(--paper);border:4px solid var(--c);font-style:normal;font-size:10px;font-weight:900;line-height:22px;color:var(--ink)}
.stn.ok i{background:var(--c);color:#fff}
.stn.cur i{box-shadow:0 0 0 5px color-mix(in srgb,var(--c) 30%,transparent)}
.stn.cur:after{content:'🚃';position:absolute;left:50%;top:-20px;transform:translateX(-50%);font-size:18px;animation:bob 1.4s infinite}
@keyframes bob{50%{transform:translate(-50%,-3px)}}
.stn span{display:block;font-size:12.5px;font-weight:800;margin-top:6px}
.stn small{display:block;font-size:10px;color:#e3a948;height:14px;letter-spacing:-1px}
.line.off{opacity:.55}.line.off .stn i{border-style:dashed}
.xfer{display:inline-block;font-size:10px;font-weight:900;color:#fff;background:#2f2b28;border-radius:4px;padding:1px 4px;margin-top:2px}
/* 站名标 */
.sign{position:relative;background:var(--paper);border-radius:14px;box-shadow:var(--lift);overflow:hidden;text-align:center;padding:16px 12px 0}
.sign .num{position:absolute;left:12px;top:12px;width:40px;height:40px;border-radius:9px;border:4px solid var(--c);font-weight:900;font-size:11px;line-height:1.05;display:grid;place-items:center;align-content:center}
.sign .num em{font-style:normal;font-size:16px}
.sign b{display:block;font-size:40px;font-weight:900;letter-spacing:4px;line-height:1.15}
.sign .yomi{margin:0;font-size:14px;letter-spacing:4px;color:var(--ink);font-weight:700}
.sign .theme{font-style:normal;color:var(--c);font-weight:900}
.stn .th{color:var(--mute);font-size:10px;height:auto}
.sign small{display:block;font-size:13px;color:var(--mute);letter-spacing:3px;margin-bottom:12px}
.sign .band{margin:0 -12px;display:flex;justify-content:space-between;align-items:center;background:var(--c);color:#fff;font-size:13px;font-weight:800;padding:8px 12px}
.sign .band a{display:flex;align-items:center;gap:4px;max-width:45%}
.ann{display:flex;align-items:center;gap:10px;margin:12px 0;background:#22262b;color:var(--paper2);border-radius:12px;padding:10px 12px;font-size:13.5px}
.ann button{flex:none;width:34px;height:34px;border-radius:50%;background:#f7c84a;font-size:15px}
.ann .jp{font-size:15px;font-weight:700;color:#fff}
.ann small{display:block;color:#9aa3ab;font-size:11.5px}
.kgrid{display:grid;grid-template-columns:repeat(5,1fr);gap:8px}
.kc{background:var(--paper);border-radius:14px;box-shadow:var(--lift);padding:10px 0 8px;text-align:center}
.kc .kana{font-size:34px;font-weight:700;line-height:1.15}
.kc small{display:block;font-size:12px;color:var(--mute);font-weight:700}
.kc:active{transform:translateY(2px)}
.kc.on{background:color-mix(in srgb,var(--c) 18%,#fff)}
.wd{display:flex;justify-content:flex-start;align-items:center;gap:12px;background:var(--paper);border-radius:14px;box-shadow:var(--lift);padding:10px 14px;margin-bottom:8px;width:100%;text-align:left}
.wd .pl{flex:none;width:34px;height:34px;border-radius:50%;background:var(--c);color:#fff;display:grid;place-items:center;font-size:13px}
.wd b{font-size:19px}
.wd span{margin-left:auto;font-size:14px;color:var(--mute)}
.btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;height:52px;border-radius:16px;font-weight:900;font-size:17px;background:var(--paper);box-shadow:var(--lift);margin-top:12px}
.btn.go{background:var(--c);color:#fff;box-shadow:0 4px 0 color-mix(in srgb,var(--c) 70%,#000)}
.btn.go:active{transform:translateY(3px);box-shadow:0 1px 0 color-mix(in srgb,var(--c) 70%,#000)}
.back{display:inline-flex;align-items:center;gap:4px;font-size:13.5px;color:var(--mute);margin-bottom:10px}
/* 小测 */
.qtop{display:flex;justify-content:space-between;font-size:13px;font-weight:800;color:var(--mute)}
.bar{height:8px;background:var(--hair);border-radius:9px;margin:10px 0 16px;overflow:hidden}.bar i{display:block;height:100%;background:var(--c);border-radius:9px;transition:width .3s}
.qbox{background:var(--paper);border-radius:20px;box-shadow:var(--lift);min-height:170px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px}
.qbox .kana{font-size:64px;font-weight:700}
.qbox .spk{width:86px;height:86px;border-radius:50%;background:color-mix(in srgb,var(--c) 20%,#fff);font-size:36px}
.qbox small{color:var(--mute);font-size:13px}
.opts{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.opt{height:70px;border-radius:16px;background:var(--paper);box-shadow:var(--lift);font-size:26px;font-weight:800}
.opt.r{font-size:20px}
.opt.ok{background:rgba(127,199,154,.18);box-shadow:0 2px 0 #7fb27a}.opt.no{background:rgba(232,133,122,.18);box-shadow:0 2px 0 #e8857a}
/* 到站 */
.arrive{text-align:center;padding-top:6px}
.arrive h2{margin-top:6px}
.stars{font-size:38px;letter-spacing:6px;margin:6px 0}
.stars i{font-style:normal;color:#e0d6c4}.stars i.on{color:#f2b33d}
.stamp{width:190px;height:190px;margin:18px auto 6px;border-radius:50%;border:5px double var(--c);color:var(--c);display:flex;flex-direction:column;align-items:center;justify-content:center;transform:rotate(-8deg);background:color-mix(in srgb,var(--c) 6%,#fff);position:relative}
.stamp.new{animation:stamp .5s cubic-bezier(.2,1.6,.5,1)}
@keyframes stamp{0%{transform:rotate(-8deg) scale(2.2);opacity:0}100%{transform:rotate(-8deg) scale(1);opacity:1}}
.stamp .kana{font-size:52px;font-weight:900;line-height:1}
.stamp b{font-size:16px;font-weight:900;letter-spacing:2px;margin-top:4px}
.stamp small{font-size:10.5px;font-weight:800;letter-spacing:1px;margin-top:2px}
.stamp:before{content:'';position:absolute;inset:10px;border-radius:50%;border:1.5px solid currentColor;opacity:.5}
.sbook{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.sbook .stamp{width:100%;height:auto;aspect-ratio:1;margin:0;border-width:3px}
.sbook .stamp .kana{font-size:30px}.sbook .stamp b{font-size:11px}.sbook .stamp small{font-size:8.5px}
.sbook .stamp.no{color:#cfc4b2;border-color:#ddd3c2;border-style:dashed;background:none;transform:none}
.cr{max-width:528px;margin:10px auto 30px;padding:12px 14px;border:1.5px dashed #d9cdb8;border-radius:12px;text-align:center;font-size:12px;line-height:1.7;color:var(--mute)}
.cr b{display:block;color:#cf6c61;font-size:13.5px}
.toast{position:fixed;left:50%;top:70px;transform:translateX(-50%);background:#2f2b28;color:#fff;font-weight:800;padding:10px 18px;border-radius:999px;z-index:20;font-size:14px;animation:tst 1.8s forwards}
@keyframes tst{0%{opacity:0;transform:translate(-50%,-8px)}15%,80%{opacity:1;transform:translate(-50%,0)}100%{opacity:0}}
/* 首页大地图 */
#bigmap{margin:-16px -16px 16px}
.mapwrap{position:relative;height:min(118vw,640px);overflow:hidden;background:var(--paper2);touch-action:none}
.mapwrap svg{width:100%;height:100%;display:block;cursor:grab}
.mapwrap .sea{fill:var(--paper2)}.mapwrap .dust{fill:#d9cfbd;opacity:.5}
.mapwrap .ln{fill:none;stroke:var(--c);stroke-width:12;stroke-linecap:round;stroke-linejoin:round}
.mapwrap .loop{fill:none;stroke:var(--c);stroke-width:14}
.mapwrap .st{fill:#fff;stroke:var(--c);stroke-width:3.5}
.mapwrap .st.off{stroke-width:2.2}
.mapwrap .st.on{fill:var(--c)}
.mapwrap .sk{font:700 14px "Hiragino Maru Gothic ProN",sans-serif;text-anchor:middle;fill:var(--ink);pointer-events:none}.mapwrap .sk.on{fill:#fff}
.mapwrap .sn{font:800 13px -apple-system,"PingFang SC",sans-serif;text-anchor:middle;fill:#6b625a;pointer-events:none}
.mapwrap .xf{fill:#fff;stroke:#2f2b28;stroke-width:2.5}
.mapwrap .lbadge circle{fill:#fff;stroke:var(--c);stroke-width:6}.mapwrap .lbadge text{font:900 13px -apple-system,sans-serif;text-anchor:middle;fill:var(--ink)}
.mapwrap .loopname{font:900 30px "Hiragino Mincho ProN",serif;text-anchor:middle;fill:var(--ink);letter-spacing:3px}
.mapwrap .loopsub{font:700 14px "Hiragino Maru Gothic ProN",sans-serif;text-anchor:middle;fill:#8a8178;letter-spacing:2px}
/* 夜景 */
.mapwrap.night{background:#0a101c}
.mapwrap.night .sea{fill:url(#city)}.mapwrap.night .dust{fill:#ffe9b0;opacity:.35}
.mapwrap.night .ln{opacity:.95}

.mapwrap.night .st{fill:#121a2a}.mapwrap.night .st.off{fill:#0f1624;opacity:.85}
.mapwrap.night .st.on{fill:#fff6d6;stroke:#ffd36b}
@keyframes twk{50%{opacity:.75}}
.mapwrap.night .sk{fill:#e9e2d6}.mapwrap.night .sk.on{fill:#3a2a00}
.mapwrap.night .sn{fill:#9aa6b8}
.mapwrap.night .xf{fill:#0a101c;stroke:#fff}
.mapwrap.night .lbadge circle{fill:#0a101c}.mapwrap.night .lbadge text{fill:#fff}
.mapwrap.night .loopname{fill:#fff6e6}.mapwrap.night .loopsub{fill:#9aa6b8}
.mhead{position:absolute;left:16px;top:14px;pointer-events:none;color:var(--ink)}
.mhead small{font-size:10.5px;letter-spacing:2px;opacity:.7;font-weight:700}
.mhead b{display:block;font:900 30px "Hiragino Mincho ProN","Songti SC",serif;letter-spacing:3px;margin:2px 0}
.mhead span{font-size:12px;opacity:.85}
.night .mhead{color:#fff6e6;text-shadow:0 0 12px rgba(255,210,120,.35)}
.mstat{position:absolute;left:12px;right:12px;bottom:12px;display:flex;gap:8px;pointer-events:none}
.mstat div{flex:1;background:rgba(255,255,255,.85);border-radius:12px;padding:7px 8px;font-size:11px;font-weight:700;text-align:center;color:#6b625a}
.mstat b{display:block;font-size:18px;font-weight:900;color:var(--ink)}
.night .mstat div{background:rgba(16,24,40,.72);color:#9aa6b8;border:1px solid rgba(255,255,255,.08)}
.night .mstat b{color:#ffd36b}
.mtool{position:absolute;right:12px;top:14px;display:flex;flex-direction:column;gap:6px}
.mtool button{width:34px;height:34px;border-radius:10px;background:rgba(255,255,255,.9);font-weight:900;font-size:16px;box-shadow:0 2px 6px rgba(0,0,0,.12)}
.night .mtool button{background:rgba(16,24,40,.8);color:#fff;border:1px solid rgba(255,255,255,.12)}

.mapwrap .bay{fill:#e3ecf2}.mapwrap .river{fill:none;stroke:#e3ecf2;stroke-width:5}
.mapwrap .bayname{font:700 14px "Hiragino Mincho ProN",serif;fill:#9fb3c2;letter-spacing:6px}
.mapwrap.night .bay{fill:#0d1a2e}.mapwrap.night .river{stroke:#13243d}.mapwrap.night .bayname{fill:#3d5878}
.mapwrap .ln{stroke-width:5}
.mapwrap .ln.off{opacity:.85}
.mapwrap .st{stroke-width:1.6}
.mapwrap .sk{font-size:6px}
.mapwrap .sn{font-size:6px;font-weight:700;text-anchor:start;opacity:0}
.mapwrap .sn.big{font-size:7.5px;opacity:1}
.mapwrap svg.zin .sn{opacity:1}
.mapwrap .xf{stroke-width:1.4}
.mapwrap.night .xf.on{fill:#fff6d6}
.mapwrap .lbadge rect{fill:var(--c)}.mapwrap .lbadge text{font:900 8px -apple-system,sans-serif;text-anchor:middle;fill:#fff}
.mapwrap.night .lbadge rect{fill:var(--c)}.mapwrap.night .lbadge text{fill:#fff}

.mapwrap .lnglow,.mapwrap .halo{display:none}
.mapwrap.night .lnglow{display:inline;fill:none;stroke:var(--c);stroke-width:13;opacity:.22;stroke-linecap:round;stroke-linejoin:round}
.mapwrap.night .halo{display:inline;fill:#ffd36b;opacity:.28}

.vw{display:grid;grid-template-columns:34px 1fr auto;grid-template-rows:auto auto;column-gap:12px;align-items:center;width:100%;text-align:left;background:var(--paper);border-radius:14px;box-shadow:var(--lift);padding:10px 12px;margin-bottom:8px}
.vw .pl{grid-row:1/3;width:34px;height:34px;border-radius:50%;background:var(--c);color:#fff;display:grid;place-items:center;font-size:13px}
.vw-w b{font-size:19px;font-weight:800;margin-right:8px}.vw-w small{font-size:12.5px;color:var(--mute)}
.vw-zh{grid-column:2;font-size:14px;color:var(--mute2)}
.hot{grid-column:3;grid-row:1/3;font-style:normal;font-size:11px;font-weight:800;color:var(--gold);background:rgba(231,195,122,.16);border-radius:999px;padding:3px 8px;white-space:nowrap}
.hot.h{color:#fff;background:#e8857a}

.gm{background:var(--paper);border-radius:16px;box-shadow:var(--lift);padding:14px;margin-bottom:10px;border-left:5px solid var(--c)}
.gm-h{display:flex;align-items:center;gap:8px}.gm-h b{font-size:18px;font-weight:900}.gm-h .hot{margin-left:auto}
.gm-m{font-size:15px;font-weight:700;margin:4px 0 6px}
.gm-how{font-size:12.5px;color:var(--mute2);background:var(--paper2);border-radius:8px;padding:5px 8px}.gm-how span{font-weight:900;color:var(--c);margin-right:6px}
.gm-ex{display:flex;gap:10px;align-items:flex-start;width:100%;text-align:left;margin-top:8px}
.gm-ex .pl{flex:none;width:30px;height:30px;border-radius:50%;background:var(--c);color:#fff;display:grid;place-items:center;font-size:12px;margin-top:6px}
.gm-ex .jp{display:block;font-size:16.5px;line-height:2}.gm-ex small{display:block;font-size:13px;color:var(--mute)}
rt{font-size:.5em;color:var(--mute)}

.vw-ex{grid-column:2/4;text-align:left;margin-top:6px;padding:6px 10px;border-radius:10px;background:var(--paper2)}
.vw-ex .jp{display:block;font-size:15px;line-height:1.9}.vw-ex .jp:before{content:'🔊 ';font-size:11px}
.vw-ex small{display:block;font-size:12.5px;color:var(--mute)}

/* 毕业考 */
.ex-intro{text-align:center;padding:26px 18px}.ex-intro p{color:var(--mute);font-size:14px;line-height:1.7}
.ex-box{display:flex;flex-direction:column;gap:4px;background:var(--paper2);border-radius:12px;padding:12px;margin:14px 0 4px;font-size:13.5px}.ex-box b{font-size:15px}
.ex-best{margin-top:8px;font-weight:800;color:var(--c)!important}
.ex-h{font-size:13.5px;font-weight:800;color:var(--mute2);background:var(--paper2);border-radius:10px;padding:8px 10px;margin-bottom:10px;line-height:1.8}
.ex-ps{background:var(--paper);border-radius:14px;box-shadow:var(--lift);padding:10px 14px;margin-bottom:10px}
.ex-ps summary{font-size:13px;font-weight:800;color:var(--c);cursor:pointer}.ex-ps .jp{font-size:15.5px;line-height:2.1;margin-top:6px}
.ex-tb{background:var(--paper);border-radius:14px;box-shadow:var(--lift);padding:10px 12px;margin-bottom:10px;font-size:13px;line-height:1.9}
.ex-tb b{display:block;margin-bottom:6px}.ex-tb div{display:grid;grid-template-columns:1.3fr 1fr 1fr 1fr;gap:4px;border-top:1px dashed var(--hair);padding:4px 0}
.ex-q{background:var(--paper);border-radius:16px;box-shadow:var(--lift);padding:16px;font-size:17.5px;line-height:2.2;font-weight:600}
.ex-q u{text-decoration:none;border-bottom:2px solid #2f2b28}
.ex-o{display:grid;gap:8px;margin-top:12px}
.ex-o .opt{height:auto;min-height:54px;padding:10px 14px;text-align:left;font-size:16px;font-weight:600;line-height:1.9;display:flex;gap:10px;align-items:center}
.ex-o .opt em{font-style:normal;flex:none;width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.08);display:grid;place-items:center;font-size:13px;font-weight:900}
.ex-why{margin-top:12px;border-radius:14px;padding:12px 14px;font-size:14px;line-height:1.7}.ex-why.g{background:rgba(127,199,154,.14)}.ex-why.b{background:rgba(232,133,122,.14)}
.ex-why b{font-size:15px}

.mapwrap .lab1 text,.mapwrap .lab2 text{font-family:-apple-system,"PingFang SC",sans-serif;font-weight:700;fill:#4a433d;paint-order:stroke;stroke:var(--paper2);stroke-width:2.2px;stroke-linejoin:round}
.mapwrap.night .lab1 text,.mapwrap.night .lab2 text{fill:#d7dee8;stroke:#0b1220}
.mapwrap .lab2{display:none}.mapwrap svg.zin .lab2{display:inline}.mapwrap svg.zin .lab1{display:none}
.mapwrap .lab2 text{stroke-width:1.2px}

.mapwrap .mhead,.mapwrap .mstat{transition:opacity .2s}
.mapwrap.zin .mhead{opacity:0}
.mapwrap svg.zin .ln{stroke-width:3}.mapwrap svg.zin .lnglow{stroke-width:7}
.mapwrap svg.zin .lbadge{display:none}
.mapwrap svg.zin .st{stroke-width:1.1}
/* 全日本夜景 */
.jpmap .star{fill:#fff;opacity:.35}
.jpmap .land{fill:url(#land)}.jpmap .shore{fill:none;stroke:#5d7ba6;stroke-width:1.2;opacity:.55}
.jpmap .lt{fill:#ffd88a;opacity:.55}
.jpmap .ln{stroke-width:4.5}.jpmap .ln.off{opacity:.55;stroke-dasharray:1 0}
.jpmap .lnglow{display:inline;fill:none;stroke:var(--c);stroke-width:14;opacity:.18;stroke-linecap:round;stroke-linejoin:round}
.jpmap .st{fill:#0d1626;stroke:var(--c);stroke-width:1.8}.jpmap .st.on{fill:#fff6d6;stroke:#ffd36b}
.jpmap .tkglow{fill:#ffdf9a;opacity:.25}.jpmap .tkring{fill:#0d1626;stroke:var(--c);stroke-width:4;opacity:.6}
.jpmap .tkpro{fill:none;stroke:#ffd36b;stroke-width:4;transform:rotate(-90deg);transform-box:fill-box;transform-origin:center}
.jpmap .tkt{font:900 6.5px "Hiragino Mincho ProN",serif;fill:#fff;text-anchor:middle}
.jpmap .lbadge rect{fill:rgba(8,14,26,.8);stroke:var(--c);stroke-width:2}
.jpmap .lbadge text{font:900 12px -apple-system,sans-serif;fill:var(--c);text-anchor:middle}.jpmap .lbadge .lbn{font-size:8.5px;fill:#dfe6f0;font-weight:700}
.jpmap .lab1 text,.jpmap .lab2 text{fill:#e5ebf3;stroke:#08101e;stroke-width:3px}
.jpmap svg.zin .lbadge{display:inline}

.mhead b em{font-style:normal;background:linear-gradient(180deg,#ffe7a8,#e0b25a);-webkit-background-clip:text;background-clip:text;color:transparent}

/* 真题库 */
.bk-entry{display:flex;align-items:center;gap:12px;margin-top:14px;background:linear-gradient(135deg,#1b2a48,#0d1628);color:#fff;border-radius:18px;padding:16px;box-shadow:0 8px 20px rgba(10,20,40,.25)}
.bk-entry span{font-size:30px}.bk-entry b{font-size:17px;display:block}.bk-entry small{font-size:12.5px;color:#c9d3e3}.bk-entry i{margin-left:auto;font-style:normal;font-size:22px;color:#ffd36b}
.bk-tabs{display:flex;gap:8px;margin:12px 0}.bk-tabs a{flex:1;text-align:center;padding:8px 0;border-radius:12px;background:var(--paper);box-shadow:var(--lift);font-weight:900;font-size:16px}
.bk-tabs a small{display:block;font-size:11px;font-weight:700;color:var(--mute)}.bk-tabs a.on{background:var(--c);color:#fff}.bk-tabs a.on small{color:#fff}
.bk-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.bk-card{background:var(--paper);border-radius:16px;box-shadow:var(--lift);padding:14px;border-top:4px solid var(--c)}
.bk-card small{font-size:12px;color:var(--mute);font-weight:700}.bk-card b{display:block;font-size:20px;font-weight:900;margin:4px 0}
.bk-card em{font-style:normal;font-size:12px;font-weight:800;color:var(--c)}.bk-card em.new{color:var(--mute)}
.bk-mode{display:block;width:100%;text-align:left;background:var(--paper);border-radius:18px;box-shadow:var(--lift);padding:16px;margin-top:12px;border-left:5px solid #c9a24a}
.bk-mode.g{border-left-color:#5fb39a}.bk-mode em{font-style:normal;font-size:12px;font-weight:900;color:var(--gold);background:rgba(231,195,122,.16);border-radius:6px;padding:2px 8px}
.bk-mode.g em{color:#2f7f66;background:#dcf0e8}.bk-mode b{display:block;font-size:18px;font-weight:900;margin:6px 0 4px}.bk-mode span{font-size:13.5px;color:var(--mute2);line-height:1.6}
.bk-nav{display:grid;grid-template-columns:1fr 1.6fr;gap:10px}.bk-nav .btn:disabled{opacity:.4}
.opt.sel{background:rgba(127,159,214,.2);box-shadow:0 2px 0 #7f9fd6}
.ex-q small{color:var(--mute);font-weight:800}
.ow{margin-top:8px;display:grid;gap:6px}.ow div{display:flex;gap:8px;font-size:13.5px;line-height:1.6;background:rgba(255,255,255,.6);border-radius:8px;padding:6px 8px}
.ow div em{font-style:normal;flex:none;width:20px;height:20px;border-radius:50%;background:rgba(255,255,255,.08);display:grid;place-items:center;font-size:11px;font-weight:900}.ow div.ok em{background:#7fb27a;color:#fff}

/* 知识库入口 */
.kb{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.kb a{background:linear-gradient(145deg,#1b2a48,#0d1628);color:#fff;border-radius:16px;padding:14px;box-shadow:0 8px 18px rgba(10,20,40,.22);border:1px solid rgba(255,211,107,.18)}
.kb span{font-size:22px;color:#ffd36b}.kb b{display:block;font-size:16px;margin-top:4px}.kb small{font-size:12px;color:#b9c4d6}
/* 单词星系 */
.wl-hide{display:flex;align-items:center;gap:8px;margin:10px 0;font-size:13px}.wl-hide button,.wl-f button{background:var(--paper);box-shadow:var(--lift);border-radius:10px;padding:6px 12px;font-size:13px;font-weight:700}
.wl-hide button.on,.wl-f button.on{background:#c9a24a;color:#fff}
.wl-kw{width:100%;border:0;border-radius:12px;padding:12px 14px;font:inherit;font-size:15px;background:var(--paper);box-shadow:var(--lift);margin-bottom:10px}
.wl-f{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.wl-f select{margin-left:auto;font:inherit;font-size:13px;border:0;background:var(--paper);border-radius:10px;padding:6px 8px;box-shadow:var(--lift)}
.wl-n{font-size:12px;color:var(--mute);margin:10px 0 6px}
.wl-r{display:grid;grid-template-columns:1fr auto;gap:2px 10px;background:var(--paper);border-radius:14px;box-shadow:var(--lift);padding:10px 14px;margin-bottom:8px;position:relative}
.wl-w b{font-size:18px;font-weight:800;margin-right:8px}.wl-w small{font-size:12.5px;color:var(--mute)}.wl-zh{grid-column:1;font-size:13.5px;color:var(--mute2)}
.wl-s{grid-column:2;grid-row:1/3;align-self:center;text-align:right;font-size:11.5px;color:var(--mute);font-weight:700}.wl-s .lv{display:block;font-style:normal;color:var(--gold)}
.wl-k{position:absolute;right:8px;top:6px;font-style:normal;color:#5fb39a;font-weight:900}
.hide-ja .wl-w{filter:blur(6px)}.hide-zh .wl-zh{filter:blur(6px)}
.wn{background:linear-gradient(160deg,#16233d,#0c1424);color:#fff;border-radius:20px;padding:18px;box-shadow:0 10px 24px rgba(10,20,40,.3)}
.wn-h{display:flex;align-items:center;gap:10px}.wn-h span{width:38px;height:38px;border-radius:12px;background:rgba(127,199,154,.15);color:#7fc79a;display:grid;place-items:center;font-size:18px}
.wn-h small{font-size:10px;letter-spacing:3px;color:#9fb0c8}.wn-h b{display:block;font-size:15px}.wn-h em{margin-left:auto;font-style:normal;font-size:12px;font-weight:900;color:#7fc79a;border:1px solid #7fc79a;border-radius:999px;padding:2px 10px}
.wn-w{font-size:46px;font-weight:700;margin-top:14px;font-family:"Hiragino Mincho ProN","Songti SC",serif}.wn-r{color:#b9c4d6;font-size:15px}
.wn-zh{background:rgba(255,255,255,.06);border-radius:12px;padding:12px;margin:12px 0;font-size:17px}.wn-zh small{display:block;font-size:11px;color:#9fb0c8;margin-bottom:4px}
.wn-b{display:grid;grid-template-columns:1fr 1fr;gap:8px}.wn-b button{border:1px solid rgba(255,255,255,.15);border-radius:12px;padding:11px;color:#fff;font-weight:800}.wn-b button.on{background:#c9a24a;border-color:#c9a24a}
.wn-g{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:rgba(255,255,255,.08);border-radius:12px;overflow:hidden;margin-top:12px}.wn-g div{background:#111b2e;padding:10px}.wn-g small{display:block;font-size:11px;color:#9fb0c8}.wn-g b{font-size:16px}
.wc{background:var(--paper);border-radius:14px;box-shadow:var(--lift);padding:12px 14px;margin-bottom:8px}.wc small{font-size:11.5px;color:var(--mute);font-weight:700}
.wc .jp{font-size:15.5px;line-height:1.9;margin:4px 0}.wc mark{background:#fbe8b8;border-radius:3px;padding:0 2px}.wc a{font-size:12.5px;font-weight:800;color:var(--gold)}
.wc-tag{display:inline-block;background:rgba(231,195,122,.16);color:var(--gold);font-weight:800;border-radius:999px;padding:5px 12px;font-size:13px}
.kn{margin-top:10px;display:flex;flex-wrap:wrap;gap:6px}.kn small{width:100%;font-size:11.5px;color:var(--mute);font-weight:700}
.kn a{font-size:13px;background:var(--paper2);border-radius:999px;padding:4px 10px;font-weight:700}
/* 数据看板 */
.db-k{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:12px}.db-k div{background:#111b2e;color:#9fb0c8;border-radius:12px;padding:8px 4px;text-align:center;font-size:10.5px}
.db-k b{display:block;font-size:17px;color:#ffd36b}
.db{margin-bottom:12px}.db h3{margin-top:0}
.db-r{display:grid;grid-template-columns:86px 1fr 30px;align-items:center;gap:8px;font-size:13px;padding:3px 0}.db-r i{height:12px;border-radius:6px}.db-r b{font-size:12px;color:var(--mute)}
.db-l{display:flex;justify-content:space-between;padding:6px 0;border-bottom:1px dashed var(--hair);font-size:14px}

.kn a.g{background:rgba(217,138,168,.18);color:#a4476e}
.mk{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.mk small{width:100%;font-size:11.5px;color:var(--mute);font-weight:700}
.mk button{background:var(--paper);box-shadow:var(--lift);border-radius:10px;padding:6px 12px;font-size:13px;font-weight:700}.mk button.on{background:rgba(231,195,122,.16);color:var(--gold)}
.wc-a{font-size:12.5px;font-weight:800;color:var(--gold)}

.au{background:linear-gradient(135deg,#1b2a48,#0d1628);border-radius:16px;padding:12px;margin-bottom:10px;color:#c9d3e3;font-size:12.5px}
.au span{display:block;margin-bottom:6px;font-weight:700}.au audio{width:100%}
.bk-l{display:block;font-size:11.5px;color:#5f8fd0;font-weight:800;margin-bottom:2px}

/* 首页主视觉 */
.hero{margin:-16px -16px 0;min-height:min(178vw,860px);background:#050a15 url(img/hero.jpg) center top/cover no-repeat;position:relative;display:flex;align-items:flex-end;color:#fff}
.hero:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(5,10,21,.15) 0%,rgba(5,10,21,0) 35%,rgba(5,10,21,.7) 72%,#050a15 100%)}
.hero-in{position:relative;z-index:1;padding:0 22px 26px;width:100%;text-align:center}
.hero small{font-size:11.5px;letter-spacing:3px;color:#e9d39a}
.hero h1{font:400 42px/1.15 "Hiragino Mincho ProN","Songti SC",serif;letter-spacing:4px;margin:8px 0 4px;text-shadow:0 0 18px rgba(0,0,0,.6)}
.hero h1 em{font-style:normal;background:linear-gradient(180deg,#fff1c4,#e0b25a);-webkit-background-clip:text;background-clip:text;color:transparent}
.hero-en{font-size:9.5px;letter-spacing:3px;color:#b9c4d6}
.hero-t{font:600 19px/1.6 "Songti SC",serif;margin:16px 0 6px}.hero-s{font-size:12.5px;color:#c9d3e3;margin-bottom:16px}
.hero-b{display:block;margin:10px auto 0;max-width:320px;border-radius:999px;padding:13px;font-weight:800;font-size:15.5px;background:rgba(16,24,40,.6);border:1px solid rgba(255,255,255,.2);backdrop-filter:blur(6px)}
.hero-b.w{background:var(--paper);color:#0b1220}.hero-b.g{border-color:rgba(255,211,107,.5);color:#ffd36b}
.hero-k{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin-top:18px}.hero-k div{background:rgba(16,24,40,.62);border:1px solid rgba(255,255,255,.08);border-radius:12px;padding:7px 2px;font-size:10.5px;color:#9fb0c8}
.hero-k b{display:block;font-size:17px;color:#ffd36b}
#bigmap{margin-top:0}
/* 车站插画 */
.st-hero{height:220px;border-radius:18px 18px 0 0;background:center/cover no-repeat;margin-bottom:-24px;box-shadow:var(--lift)}
.stamp.pic{background:center/cover no-repeat;color:#fff;border-color:#fff3c4;text-shadow:0 1px 6px rgba(0,0,0,.8)}.stamp.pic:before{border-color:#fff3c4;opacity:.8}
/* 列车种别 */
.tr{background:var(--paper);border-radius:18px;box-shadow:var(--lift);overflow:hidden;margin-top:14px}
.tr-img{height:170px;background:center/cover no-repeat;display:flex;flex-direction:column;justify-content:flex-end;padding:12px 16px;color:#fff;text-shadow:0 1px 8px rgba(0,0,0,.8)}
.tr-img b{font:700 24px "Hiragino Mincho ProN",serif;letter-spacing:3px}.tr-img span{font-size:13px;color:#ffe3a1;font-weight:700}
.tr p{font-size:13.5px;color:var(--mute2);padding:10px 16px 0}
.tr-lv{display:flex;gap:8px;padding:10px 16px 14px}.tr-lv a{flex:1;text-align:center;border-radius:10px;padding:8px 0;font-weight:900;background:var(--c);color:#fff}

/* ===== 夜空统一风格 + 电脑宽屏 ===== */
body{background:#060b16 radial-gradient(1200px 700px at 70% -10%,rgba(80,110,190,.22),transparent 60%),radial-gradient(900px 600px at 0% 40%,rgba(120,80,170,.14),transparent 60%);background-attachment:fixed;color:var(--ink)}
body:before{content:'';position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;background-image:radial-gradient(1px 1px at 12% 18%,#fff,transparent),radial-gradient(1px 1px at 72% 34%,#fff,transparent),radial-gradient(1px 1px at 38% 72%,#fff,transparent),radial-gradient(1.5px 1.5px at 88% 82%,#ffe9b0,transparent),radial-gradient(1px 1px at 22% 88%,#fff,transparent),radial-gradient(1px 1px at 55% 12%,#fff,transparent);background-size:420px 420px}
header,main,footer{position:relative;z-index:1}
header{background:rgba(6,11,22,.72);border-bottom:1px solid rgba(255,255,255,.06)}
.brand b{color:#fff;font-family:"Hiragino Mincho ProN","Songti SC",serif;letter-spacing:2px}
.logo{background:linear-gradient(135deg,#f6e2a8,#c9a24a);color:#0b1220;box-shadow:none}
.hbtn{background:rgba(255,255,255,.08);color:#fff;box-shadow:none;border:1px solid rgba(255,255,255,.12)}
main{max-width:1180px}
h2,h3{color:#fff}
.back{color:var(--mute)}
.btn{color:var(--ink)}
.cr{border-color:rgba(255,255,255,.12);color:var(--mute)}.cr b{color:var(--gold)}
/* 主视觉、地图铺满屏幕宽度 */
.hero,#bigmap{width:100vw;margin-left:calc(50% - 50vw)!important;margin-right:0}
.hero{margin-top:-16px;background-position:center 30%}
.mapwrap{height:min(118vw,760px)}
/* 首页下面的内容 */
.hrow{display:grid;gap:14px;margin-top:18px}
.lines{display:grid;gap:0 14px}
.ic{margin-top:0}
.tt{margin-top:0;background:var(--paper);border:1px solid rgba(255,255,255,.07)}
.kb a{background:linear-gradient(145deg,rgba(32,48,82,.85),rgba(12,20,36,.9))}
.sign{background:rgba(255,255,255,.96);color:#1c2333}.sign small{color:#6b7385}.sign .yomi{color:#1c2333}
.kc .kana,.wd b,.vw-w b{color:#fff}
.opt{color:var(--ink)}
.wl-kw{color:var(--ink)}.wl-kw::placeholder{color:var(--mute)}
.wl-f select{color:var(--ink)}
.db-k div,.wn{border:1px solid rgba(255,255,255,.07)}
.ex-q,.qbox,.gm,.vw,.wc,.wl-r,.bk-card,.bk-mode,.tr,.line,.card,.kc,.wd{border:1px solid rgba(255,255,255,.06)}
.stamp{background:rgba(255,255,255,.04)}
.mk button,.wl-hide button,.wl-f button{color:var(--ink)}
u.kw{color:inherit}
rt{color:var(--mute2)}
@media (min-width:860px){
  main{padding:24px 32px 40px}
  .hero{min-height:92vh;margin-top:-24px;align-items:center}
  .hero-in{max-width:820px;margin:0 auto;padding-top:120px}
  .hero h1{font-size:64px}.hero-t{font-size:24px}
  .hero-b{display:inline-block;margin:10px 6px 0;min-width:220px;max-width:none}
  .hero-k{max-width:640px;margin:26px auto 0}.hero-k b{font-size:24px}
  .mapwrap{height:82vh}
  .mhead{left:48px;top:32px}.mhead b{font-size:44px}
  .mstat{left:auto;right:32px;bottom:32px;width:420px}
  .hrow.top{grid-template-columns:1fr 1fr}
  .kb{grid-template-columns:repeat(3,1fr)}
  .kb a{padding:22px}.kb b{font-size:19px}
  .lines{grid-template-columns:1fr 1fr}
  .bk-grid{grid-template-columns:repeat(4,1fr)}
  .tr-wrap{display:grid;grid-template-columns:1fr 1fr;gap:16px}
  .wl{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}
  .vgrid2{display:grid;grid-template-columns:1fr 1fr;gap:0 10px}
  .st-hero{height:360px}
  .ex-wrap{max-width:820px;margin:0 auto}
}

@media (min-width:860px){#app.narrow{max-width:820px;margin:0 auto}}

.hero-b.w{background:#fff!important;color:#0b1220!important}

/* 登录 */
.hero.login{min-height:100vh;align-items:center}.lg{display:flex;gap:8px;max-width:420px;margin:18px auto 0}
.lg input{flex:1;border:1px solid rgba(255,255,255,.25);background:rgba(10,16,30,.7);color:#fff;border-radius:999px;padding:13px 18px;font:inherit;font-size:16px;letter-spacing:2px;text-transform:uppercase}
.lg button{background:#fff;color:#0b1220;border-radius:999px;padding:0 22px;font-weight:900}.lg-m{font-size:13px;color:#c9d3e3;margin-top:12px}
/* AI 站长 */
.ai-fab{position:fixed;right:16px;bottom:18px;z-index:20;display:flex;align-items:center;gap:6px;background:linear-gradient(135deg,#f6e2a8,#c9a24a);color:#0b1220;font-weight:900;border-radius:999px;padding:10px 16px;font-size:20px;box-shadow:0 8px 24px rgba(0,0,0,.4)}
.ai-fab span{font-size:14px}
.ai-h{display:flex;gap:12px;align-items:center;margin:6px 0 12px}.ai-h span{font-size:38px}.ai-h b{font-size:22px;color:#fff;display:block}.ai-h small{color:var(--mute);font-size:12.5px}
.ai-tabs{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:12px}.ai-tabs a{text-align:center;padding:9px 0;border-radius:12px;background:var(--paper);font-weight:800;font-size:13px;border:1px solid rgba(255,255,255,.07)}
.ai-tabs a.on{background:linear-gradient(135deg,#f6e2a8,#c9a24a);color:#0b1220}
.chat-l{max-height:58vh;overflow:auto;display:flex;flex-direction:column;gap:8px;padding:4px}
.msg{max-width:86%;padding:10px 13px;border-radius:14px;font-size:14.5px;line-height:1.7}.msg.a{background:var(--paper);border:1px solid rgba(255,255,255,.07);align-self:flex-start}
.msg.u{background:rgba(231,195,122,.2);align-self:flex-end}.msg small{color:var(--mute)}
.chat-in{display:flex;gap:8px;margin-top:10px}.chat-in textarea{flex:1;border-radius:12px;border:1px solid rgba(255,255,255,.12);background:var(--paper);color:var(--ink);padding:10px;font:inherit}
.chat-in button{background:var(--gold);color:#0b1220;border-radius:12px;padding:0 18px;font-weight:900}
.ai-c p,.ai-r p{font-size:14px;line-height:1.7;color:var(--mute2);margin:6px 0}.ai-c b{font-size:17px;color:#fff}
.ai-f{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:10px 0}.ai-f label{font-size:12.5px;color:var(--mute);display:flex;flex-direction:column;gap:4px}
.ai-f select,.ai-f input{background:rgba(255,255,255,.06);color:var(--ink);border:1px solid rgba(255,255,255,.12);border-radius:10px;padding:9px;font:inherit}.ai-f .ck{flex-direction:row;align-items:center;grid-column:1/3}
.ai-w{text-align:center;color:var(--mute);margin:30px 0}
.ai-r{margin-top:12px}.ai-r small{color:var(--mute);font-size:12px}.ai-r h4{margin:12px 0 4px;font-size:14px;color:#fff}.ai-r ul{padding-left:18px;font-size:14px;line-height:1.8;color:var(--mute2)}
.ai-lv{display:grid;grid-template-columns:auto 1fr auto 1fr;gap:6px 10px;align-items:center;margin:8px 0}.ai-lv span{font-size:12px;color:var(--mute)}.ai-lv b{font-size:26px;color:var(--gold)}
.ai-s{font-weight:700;color:#fff!important}.ai-d{background:rgba(231,195,122,.1);border-radius:10px;padding:8px 10px}
.ph{border-left:3px solid var(--gold);padding:6px 0 6px 12px;margin:12px 0}.ph-h{display:flex;justify-content:space-between}.ph-h b{color:#fff}.ph-h span{font-size:12px;color:var(--mute)}
.ai-k{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin:8px 0}.ai-k div{background:rgba(255,255,255,.05);border-radius:10px;padding:8px;font-size:11.5px;color:var(--mute);text-align:center}.ai-k b{display:block;font-size:18px;color:var(--gold)}
.ai{--c:#c9a24a}.ai .btn.go{color:#0b1220}
/* ICONS */
[class^=gi-]{display:inline-block;width:1.1em;height:1.1em;vertical-align:-.18em;background:var(--gold,#e7c37a);-webkit-mask:var(--m) center/contain no-repeat;mask:var(--m) center/contain no-repeat;flex:none}
.btn.go [class^=gi-],.ai-tabs a.on [class^=gi-],.hero-b.w [class^=gi-],.ai-fab [class^=gi-]{background:currentColor}
.zz{display:inline-block;width:1.5em;height:1.5em;vertical-align:-.4em;border-radius:50%;background:#0d1628 url(img/zz_s.jpg) center/cover;box-shadow:0 0 0 1.5px #e7c37a;flex:none}
.ai-h .zz{width:84px;height:84px;box-shadow:0 0 0 2px #e7c37a,0 0 24px rgba(231,195,122,.35);background-image:url(img/zz.jpg)}
.ai-fab .zz{width:34px;height:34px;box-shadow:0 0 0 2px #0b1220}
.gi-train{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%224%22%20y%3D%223%22%20width%3D%2216%22%20height%3D%2213%22%20rx%3D%223%22/%3E%3Cpath%20d%3D%22M4%2010h16M12%203v7M8%2019l-2%203M16%2019l2%203M8%2013h.01M16%2013h.01%22/%3E%3C/svg%3E")}
.gi-ticket{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M2%209a3%203%200%200%201%200%206v2a2%202%200%200%200%202%202h16a2%202%200%200%200%202-2v-2a3%203%200%200%201%200-6V7a2%202%200%200%200-2-2H4a2%202%200%200%200-2%202Z%22/%3E%3Cpath%20d%3D%22M13%205v2M13%2011v2M13%2017v2%22/%3E%3C/svg%3E")}
.gi-luggage{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%226%22%20y%3D%227%22%20width%3D%2212%22%20height%3D%2213%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22M9%207V4h6v3M10%2011v5M14%2011v5M8%2020v1.5M16%2020v1.5%22/%3E%3C/svg%3E")}
.gi-volume{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M11%205%206%209H2v6h4l5%204z%22/%3E%3Cpath%20d%3D%22M15.5%208.5a5%205%200%200%201%200%207M19%205a10%2010%200%200%201%200%2014%22/%3E%3C/svg%3E")}
.gi-station{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%2021h18M5%2021V11M19%2021V11M9%2021v-6h6v6M12%203l9%205H3z%22/%3E%3C/svg%3E")}
.gi-target{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%225%22/%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%221.5%22/%3E%3C/svg%3E")}
.gi-sparkles{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203l1.9%205.1L19%2010l-5.1%201.9L12%2017l-1.9-5.1L5%2010l5.1-1.9z%22/%3E%3Cpath%20d%3D%22M19%2015l.7%201.8%201.8.7-1.8.7-.7%201.8-.7-1.8-1.8-.7%201.8-.7z%22/%3E%3C/svg%3E")}
.gi-bookopen{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M2%204h6a4%204%200%200%201%204%204v13a3%203%200%200%200-3-3H2zM22%204h-6a4%204%200%200%200-4%204v13a3%203%200%200%201%203-3h7z%22/%3E%3C/svg%3E")}
.gi-book{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M4%2019.5A2.5%202.5%200%200%201%206.5%2017H20V2H6.5A2.5%202.5%200%200%200%204%204.5zM4%2019.5A2.5%202.5%200%200%200%206.5%2022H20v-5%22/%3E%3C/svg%3E")}
.gi-signpost{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%203v18M5%206h11l3%203-3%203H5zM9%2021h6%22/%3E%3C/svg%3E")}
.gi-route{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%226%22%20cy%3D%2219%22%20r%3D%222.5%22/%3E%3Ccircle%20cx%3D%2218%22%20cy%3D%225%22%20r%3D%222.5%22/%3E%3Cpath%20d%3D%22M8.5%2019h8a3.5%203.5%200%200%200%200-7h-9a3.5%203.5%200%200%201%200-7h8%22/%3E%3C/svg%3E")}
.gi-chart{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%203v18h18M7%2015l4-4%203%203%206-6%22/%3E%3C/svg%3E")}
.gi-x{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22/%3E%3Cpath%20d%3D%22M15%209l-6%206M9%209l6%206%22/%3E%3C/svg%3E")}
.gi-check{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22/%3E%3Cpath%20d%3D%22M8%2012l3%203%205-6%22/%3E%3C/svg%3E")}
.gi-repeat{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M17%202l4%204-4%204M3%2011v-1a4%204%200%200%201%204-4h14M7%2022l-4-4%204-4M21%2013v1a4%204%200%200%201-4%204H3%22/%3E%3C/svg%3E")}
.gi-headphones{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M3%2014h3a2%202%200%200%201%202%202v3a2%202%200%200%201-2%202H5a2%202%200%200%201-2-2v-7a9%209%200%200%201%2018%200v7a2%202%200%200%201-2%202h-1a2%202%200%200%201-2-2v-3a2%202%200%200%201%202-2h3%22/%3E%3C/svg%3E")}
.gi-calendar{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%223%22%20y%3D%224%22%20width%3D%2218%22%20height%3D%2218%22%20rx%3D%222%22/%3E%3Cpath%20d%3D%22M16%202v4M8%202v4M3%2010h18%22/%3E%3C/svg%3E")}
.gi-pencil{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M17%203a2.85%202.85%200%201%201%204%204L7.5%2020.5%202%2022l1.5-5.5z%22/%3E%3C/svg%3E")}
.gi-grad{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M22%2010%2012%205%202%2010l10%205%2010-5zM6%2012v5c3%203%209%203%2012%200v-5%22/%3E%3C/svg%3E")}
.gi-file{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M14%202H6a2%202%200%200%200-2%202v16a2%202%200%200%200%202%202h12a2%202%200%200%200%202-2V8zM14%202v6h6M9%2013h6M9%2017h4%22/%3E%3C/svg%3E")}
.gi-flame{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M8.5%2014.5A2.5%202.5%200%200%200%2011%2012c0-1.4-.5-2-1-3-1.1-2.1-.2-4%202-6%20.5%202.5%202%204.9%204%206.5%202%201.6%203%203.5%203%205.5a7%207%200%201%201-14%200c0-1.2.4-2.3%201-3a2.5%202.5%200%200%200%202.5%202.5z%22/%3E%3C/svg%3E")}
.gi-message{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M21%2015a2%202%200%200%201-2%202H7l-4%204V5a2%202%200%200%201%202-2h14a2%202%200%200%201%202%202z%22/%3E%3C/svg%3E")}
.gi-clipboard{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Crect%20x%3D%228%22%20y%3D%222%22%20width%3D%228%22%20height%3D%224%22%20rx%3D%221%22/%3E%3Cpath%20d%3D%22M16%204h2a2%202%200%200%201%202%202v14a2%202%200%200%201-2%202H6a2%202%200%200%201-2-2V6a2%202%200%200%201%202-2h2M9%2013l2%202%204-4%22/%3E%3C/svg%3E")}
.gi-up{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M22%207l-8.5%208.5-5-5L2%2017M16%207h6v6%22/%3E%3C/svg%3E")}
.gi-down{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M22%2017l-8.5-8.5-5%205L2%207M16%2017h6v-6%22/%3E%3C/svg%3E")}
.gi-compass{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2212%22%20cy%3D%2212%22%20r%3D%229%22/%3E%3Cpath%20d%3D%22M16.2%207.8l-2.1%206.3-6.3%202.1%202.1-6.3z%22/%3E%3C/svg%3E")}
.gi-search{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Ccircle%20cx%3D%2211%22%20cy%3D%2211%22%20r%3D%227%22/%3E%3Cpath%20d%3D%22M21%2021l-4.3-4.3%22/%3E%3C/svg%3E")}
.gi-pin{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M12%2017v5M9%2010.8a2%202%200%200%201-1.1%201.8l-1.8.9A2%202%200%200%200%205%2015.2V17h14v-1.8a2%202%200%200%200-1.1-1.8l-1.8-.9A2%202%200%200%201%2015%2010.8V7a1%201%200%200%201%201-1%202%202%200%200%200%200-4H8a2%202%200%200%200%200%204%201%201%200%200%201%201%201z%22/%3E%3C/svg%3E")}
.gi-alert{--m:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20viewBox%3D%220%200%2024%2024%22%20fill%3D%22none%22%20stroke%3D%22black%22%20stroke-width%3D%221.7%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%3E%3Cpath%20d%3D%22M10.3%203.9%201.8%2018a2%202%200%200%200%201.7%203h17a2%202%200%200%200%201.7-3L13.7%203.9a2%202%200%200%200-3.4%200zM12%209v4M12%2017h.01%22/%3E%3C/svg%3E")}
