/* 我的清单 — house tokens, small and self-contained. */
.ml-main{max-width:1120px;margin:0 auto;padding:38px 20px 80px;color:#26201C}
.ml-sub{max-width:640px}
.ml-head h1{font-size:26px;font-weight:700;color:#5A1420}
.ml-sub{margin-top:10px;color:#6B5F58;font-size:13.5px;line-height:1.75;max-width:56ch}
.ml-tools{display:flex;gap:10px;margin:22px 0 6px}
.ml-btn{display:inline-block;border:1px solid #A67F33;color:#7E5E1F;border-radius:8px;padding:6px 16px;font-size:13.5px;background:#FFFDF9;cursor:pointer;text-decoration:none}
.ml-btn:hover{background:#A67F33;color:#fff}
.ml-btn-quiet{border-color:#E9E0D3;color:#6B5F58}
.ml-btn-quiet:hover{background:#E9E0D3;color:#26201C}
.ml-list{margin-top:14px;border-top:1px solid #E9E0D3}
/* G1 cards (owner ruling 2026-08-23): two per row, four grouped fact
   lines (录取/成果/费用/规模), emblem rail — crest opens the virtual tour,
   socials beneath. Un-hearting removes; no separate remove button. */
#lia-mylist{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
@media(max-width:840px){#lia-mylist{grid-template-columns:1fr}}
.ml-item{min-width:0}
.mlcard{--tint:#7C2230;--ttx:#7C2230;display:grid;grid-template-columns:112px 1fr;background:#FFFDF9;border:1px solid #E9E0D3;border-radius:14px;overflow:hidden;min-height:140px}
.mlcard:hover{border-color:#D9CBB8;box-shadow:0 6px 18px rgba(90,20,32,.07)}
.mlphoto{background-size:cover;background-position:center;position:relative;background-color:#EDE7DC;min-height:140px}
.mlphoto-none{background:linear-gradient(150deg,#5A1420,#7C2230 55%,#8a3040)}
.mlchip{position:absolute;top:8px;left:9px;background:rgba(38,32,28,.62);color:#FBF2E9;font-size:10.5px;font-weight:600;border-radius:99px;padding:2px 9px}
.mlheart{position:absolute;bottom:8px;right:9px;width:26px;height:26px;border-radius:50%;background:#FFFDF9;border:0;display:flex;align-items:center;justify-content:center;color:var(--tint,#7C2230);cursor:pointer;box-shadow:0 1px 5px rgba(38,32,28,.3);padding:0}
.mlheart:hover{transform:scale(1.1)}
.mlheart[aria-pressed="true"] .hh path{fill:currentColor;stroke:currentColor}
/* The crack keeps its own paper stroke — the pressed-fill rule must never
   repaint it, or the broken heart is indistinguishable from the whole one
   (exactly what shipped, invisibly, on 08-23). */
.mlheart .hb path:first-child{fill:currentColor}
.mlheart .hb path:last-child{fill:none;stroke:#FFFDF9}
.mlmain{padding:8px 13px 7px;min-width:0;display:flex;flex-direction:column}
.mlhead{display:flex;align-items:baseline;gap:8px;border-bottom:1px solid #E9E0D3;padding-bottom:5px;min-width:0}
.mlzh{font-size:15px;font-weight:700;color:var(--ttx,#7C2230);white-space:nowrap;text-decoration:none}
.mlzh:hover{text-decoration:none}
.mlen{font-style:italic;font-family:Georgia,'Times New Roman',serif;font-size:10.5px;color:#6B5F58;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.mlcity{font-size:10.5px;color:#6B5F58;white-space:nowrap;margin-left:auto}
.mlbody{display:grid;grid-template-columns:1fr 84px;gap:0 12px;flex:1}
.mllines{min-width:0}
.mlline{display:block;line-height:2.05;font-size:11.8px;border-bottom:1px dotted #EFE7DA}
.mlitems{display:flex;flex-wrap:wrap;gap:0 9px;min-width:0}
.mlline:last-child{border-bottom:0}
.mlline span{white-space:nowrap}
.mlline i{font-style:normal;color:#6B5F58}
.mlline .mlq{font-size:9px;color:#6B5F58}
.mlline b{font-variant-numeric:tabular-nums;font-weight:650}
.mlrail{border-left:1px solid #E9E0D3;padding:7px 0 3px 12px;display:flex;flex-direction:column;align-items:center;justify-content:space-between;gap:4px}
.mlcrest{display:block;width:44px;height:44px;border-radius:50%;overflow:hidden;border:1px solid #E9E0D3;background:#fff}
.mlcrest img{width:100%;height:100%;object-fit:cover;display:block}
.mlcrest-ph{display:flex;width:100%;height:100%;align-items:center;justify-content:center;font-weight:700;color:#7E5E1F;background:#F7F3EC}
.mlsocs{display:flex;gap:7px}
.mlsoc{width:22px;height:22px;border-radius:50%;border:1px solid #E9E0D3;background:#FFFDF9;display:inline-flex;align-items:center;justify-content:center;color:#6B5F58;text-decoration:none}
.mlsoc:hover{color:#7C2230;border-color:#D9CBB8}
/* ≥8-school compact table (D view) */
.mldense{background:#FFFDF9;border:1px solid #E9E0D3;border-radius:14px;overflow:hidden;grid-column:1/-1}
.mldrow{display:grid;grid-template-columns:44px minmax(180px,1.4fr) repeat(6,minmax(66px,1fr)) 44px;gap:10px;align-items:center;padding:9px 16px;border-bottom:1px solid #E9E0D3;font-size:12.5px}
.mldrow:last-child{border-bottom:0}
.mldrow.h{background:#F7F3EC;color:#6B5F58;font-size:11px;letter-spacing:.05em;padding:7px 16px}
.mldrow .dc{width:32px;height:32px;border-radius:50%;border:1px solid #E9E0D3;background:#F7F3EC;overflow:hidden}
.mldrow .dc img{width:100%;height:100%;object-fit:cover;display:block}
.mldrow .dn b{display:block;font-size:13.5px;color:#7C2230}
.mldrow .dn i{font-style:italic;font-family:Georgia,serif;font-size:10px;color:#6B5F58}
.mldrow .dv{font-variant-numeric:tabular-nums;font-weight:600;text-align:right}
.mldrow .heart{position:static;width:24px;height:24px;box-shadow:none;border:1px solid #E9E0D3}
@media(max-width:760px){.mldrow{grid-template-columns:32px 1fr 64px 64px 44px}.mldrow :nth-child(n+5):not(:last-child){display:none}}
.ml-viewtoggle{font:inherit;font-size:13px;color:#7C2230;background:#FFFDF9;border:1.5px solid #E9E0D3;border-radius:999px;padding:8px 18px;cursor:pointer}
.ml-viewtoggle:hover{border-color:#7C2230}

/* Map (test.lia.us layout: map above the list; tiles via first-party /osmt/ proxy). */
.ml-map{height:380px;border:1px solid #E9E0D3;border-radius:14px;margin:6px 0 18px;overflow:hidden;background:#EDE7DC}
.lia-pin{display:block;position:relative;background:#7C2230;border:2px solid #FFFDF9;border-radius:50% 50% 50% 0;width:22px;height:22px;transform:rotate(-45deg);box-shadow:0 2px 6px rgba(38,32,28,.35)}
.lia-pin i{position:absolute;inset:5px;background:#FFFDF9;border-radius:50%}
.leaflet-popup-content{font:13px/1.6 -apple-system,"PingFang SC",sans-serif}
.leaflet-popup-content a{color:#7C2230;font-weight:650;text-decoration:none}
@media(max-width:639px){.ml-map{height:280px}}
.ml-note{font-size:11.5px;color:#9C8F85;line-height:1.8;margin:0 0 14px}
/* Un-hearting removes — hovering a PRESSED heart shows the break before
   the click does it (owner order 2026-08-23). */
[data-mylist-heart] .hb{display:none}
[data-mylist-heart][aria-pressed="true"]:hover .hh,[data-mylist-heart][aria-pressed="true"]:focus-visible .hh{display:none}
[data-mylist-heart][aria-pressed="true"]:hover .hb,[data-mylist-heart][aria-pressed="true"]:focus-visible .hb{display:block}

/* --- 我的清单 offcanvas -------------------------------------------------
   mylist.js builds .lia-oc and appends it to <body>; these rules are what
   make it a slide-in panel — without them it renders in normal flow at the
   page bottom (the 2026-08-23 bug). Triggered only by the dossier's
   收藏院校 button, and dossiers enqueue this file. */
.lia-oc{position:fixed;inset:0;z-index:1200;visibility:hidden;pointer-events:none}
.lia-oc.open{visibility:visible;pointer-events:auto}
.oc-veil{position:absolute;inset:0;background:rgba(38,32,28,.42);opacity:0;transition:opacity .22s ease}
.lia-oc.open .oc-veil{opacity:1}
.oc-panel{position:absolute;top:0;right:0;bottom:0;width:min(400px,92vw);background:#FFFDF9;border-left:1px solid #E9E0D3;box-shadow:-18px 0 44px rgba(38,32,28,.22);display:flex;flex-direction:column;transform:translateX(105%);transition:transform .26s cubic-bezier(.2,.7,.2,1);outline:none}
.lia-oc.open .oc-panel{transform:none}
.oc-head{display:flex;justify-content:space-between;align-items:center;padding:15px 18px;border-bottom:1px solid #E9E0D3;font-size:15px;font-weight:800;color:#7C2230}
.oc-count{display:inline-block;min-width:20px;text-align:center;background:#7C2230;color:#F7F3EC;border-radius:999px;font-size:11.5px;line-height:20px;padding:0 6px;margin-left:6px;vertical-align:1px}
.oc-x{border:0;background:none;color:#6B5F58;font-size:22px;line-height:1;cursor:pointer;padding:2px 6px;border-radius:8px}
.oc-x:hover{color:#7C2230;background:#F7F3EC}
.oc-list{flex:1;overflow-y:auto;padding:6px 18px 10px}
.oc-empty{font-size:13px;color:#6B5F58;margin:14px 0}
.oc-card{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:11px 0;border-bottom:1px dotted #E9E0D3}
.oc-card:last-child{border-bottom:0}
.oc-name{text-decoration:none;min-width:0}
.oc-name b{display:block;font-size:13.5px;font-weight:700;color:#26201C;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oc-name i{display:block;font-style:normal;font-size:11px;color:#6B5F58;line-height:1.5;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.oc-name:hover b{color:#7C2230}
.oc-rm{flex:none;border:1px solid #E9E0D3;background:none;color:#6B5F58;font-size:11.5px;line-height:1;padding:6px 10px;border-radius:999px;cursor:pointer}
.oc-rm:hover{border-color:#B4433A;color:#B4433A}
.oc-foot{display:flex;align-items:center;gap:14px;padding:13px 18px;border-top:1px solid #E9E0D3;background:#F7F3EC}
.oc-foot a{text-decoration:none;font-size:12.5px;font-weight:650}
.oc-cta{background:#7C2230;color:#F7F3EC;padding:9px 14px;border-radius:999px}
.oc-cta:hover{background:#5A1420}
.oc-assess,.oc-all{color:#7E5E1F}
.oc-assess:hover,.oc-all:hover{color:#7C2230}
.oc-panel:focus-visible{box-shadow:-18px 0 44px rgba(38,32,28,.22),inset 0 0 0 2px #A67F33}
html.oc-lock{overflow:hidden}
@media (prefers-reduced-motion:reduce){.oc-veil,.oc-panel{transition:none}}
