:root{--bg:#f7f5f1;--paper:#fffdfa;--ink:#302b29;--muted:#8b827c;--wine:#773f45;--wine-soft:#f4e8e8;--line:#e9e3dc;--amber:#a77227;--amber-soft:#fbf0de;--green:#4f7560;--green-soft:#eaf2e9;--radius:20px;--shadow:0 6px 24px #493f2f06;--content-pad-x:38px;--content-pad-top:calc(31px + env(safe-area-inset-top, 0px));--home-pad-x:10px}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;font-size:14px;line-height:1.6}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.48}button:focus-visible,a:focus-visible{outline:3px solid #af8288;outline-offset:3px}a{color:var(--wine);text-decoration:none}button{border:0;background:none;color:inherit}h1,h2,h3,p{margin:0}h1{font-size:30px;letter-spacing:-1px;line-height:1.35}h2{font-size:19px}h3{font-size:16px}small,.small{font-size:12px}.muted{color:var(--muted)}.serif{font-family:Georgia,"Songti SC",SimSun,serif}.ico{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.flex{display:flex;align-items:center;gap:12px}.between{justify-content:space-between}.wrap{flex-wrap:wrap}.gap6{gap:6px}.stack{display:grid;gap:16px}.spacer{height:20px}.pill{display:inline-flex;align-items:center;gap:6px;border-radius:100px;padding:4px 10px;font-size:11px;font-weight:500;background:#f0ece6;color:#7d7169}.pill.wine{background:var(--wine-soft);color:var(--wine)}.pill.green{background:#eaf2e9;color:var(--green)}.pill.amber{background:var(--amber-soft);color:var(--amber)}.pill.red{background:#f7e5e5;color:#a34a4a}.dot{width:6px;height:6px;background:currentColor;border-radius:100%}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:10px 17px;background:var(--paper);border:1px solid var(--line);border-radius:11px;font-size:13px;font-weight:550;white-space:nowrap;transition:.2s}.btn:hover{background:#f4eee8;transform:translateY(-1px)}.btn.primary{background:var(--wine);border-color:var(--wine);color:white}.btn.primary:hover{background:#68343b}.btn.soft{background:var(--wine-soft);border-color:transparent;color:var(--wine)}.btn.tiny{min-height:32px;padding:5px 10px;font-size:12px}.btn.ghost{background:transparent;border-color:transparent}.text-link{font-size:12px;color:var(--wine);font-weight:600}.workspace{position:relative;min-height:100vh}.brand{padding:0 12px;display:flex;align-items:center;gap:11px}.brandmark{display:grid;place-items:center;width:43px;height:43px;border-radius:13px;color:var(--wine);background:#efe3df}.brandmark .ico{width:28px;height:28px}.brand-name{font-weight:750;font-size:22px;letter-spacing:2px}.brand small{display:block;font-size:9px;letter-spacing:3px;color:#a29186}
.skeleton{display:grid;gap:13px;padding:2px 0 8px}
.sk-line{height:14px;border-radius:7px;background:linear-gradient(90deg,#efe9e2 25%,#f7f3ee 37%,#efe9e2 63%);background-size:400% 100%;animation:sk 1.4s ease infinite}
.sk-card{height:118px;border-radius:18px;background:#f4efe8}
@keyframes sk{0%{background-position:100% 50%}100%{background-position:0 50%}}
.empty{display:grid;place-items:center;gap:10px}
.empty .empty-art{width:46px;height:46px;border-radius:14px;background:#f1ece4;display:grid;place-items:center;color:#a2917f}
.me-card{display:flex;align-items:center;gap:14px;padding:18px;background:var(--paper);border:1px solid var(--line);border-radius:18px}
.me-card .avatar{width:52px;height:52px;font-size:16px;border-width:2px}
.me-list{display:grid;gap:10px}
.me-row{display:flex;align-items:center;gap:10px;width:100%;padding:14px 16px;background:var(--paper);border:1px solid var(--line);border-radius:14px;text-align:left;font-size:13px}
.me-row .ico{width:18px;height:18px;color:#9d8061}
.me-row small{color:var(--muted)}
.me-row .arrow-ico{margin-left:auto;width:16px;height:16px;color:#b6a79b}
.me-card-main{flex:1;min-width:0}
.me-card .btn{margin-left:auto}
.me-row div{flex:1;min-width:0}
.me-row small{display:block;font-size:11px;color:var(--muted);margin-top:2px}
.check-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(132px,1fr));gap:8px;max-height:196px;overflow-y:auto;padding:11px;border:1px solid var(--line);border-radius:12px;background:#fbf8f4}
.check-list .check-field{margin:0}
/* v15 E10：参与人员下拉——一行一人（头像 + 昵称），限高内滚 */
.people-picker{border:1px solid var(--line);border-radius:12px;background:#fbf8f4}
.picker-summary{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:9px 11px;font-size:12.5px;cursor:pointer;list-style:none}
.picker-summary::-webkit-details-marker{display:none}
.picker-list{max-height:196px;overflow-y:auto;padding:4px 6px 6px}
.person-row{display:flex;align-items:center;gap:8px;padding:5px 6px;border-radius:9px;font-size:13px;cursor:pointer}
.person-row:hover{background:#f4efe8}
/* 提高优先级：压过 .field input 的 width:100% */
.picker-list .person-row input{margin:0;width:15px;height:15px;flex-shrink:0}
.person-row .avatar{width:28px;height:28px;font-size:11px;border-width:0}
.person-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.person-row .muted{margin-left:auto;font-size:10px}
.check-field small{font-size:10px}.avatar{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;font-weight:650;flex-shrink:0;border:2px solid var(--paper);font-size:13px;position:relative;overflow:hidden}
.avatar img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}.a0{background:#e1e9ee;color:#58758b}.a1{background:#f1e1ba;color:#9c793d}.a2{background:#e5dceb;color:#80628d}.a3{background:#efd8d9;color:#a3676c}.a4{background:#e2ece2;color:#577a5f}.a5{background:#f0e3d3;color:#96693d}.avatars{display:flex;padding-left:6px}.avatars .avatar{margin-left:-6px;width:29px;height:29px;font-size:10px}.main{margin-left:226px}.content{padding:var(--content-pad-top) var(--content-pad-x) 44px;max-width:1370px;margin:auto;min-height:calc(100vh - 120px)}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:24px}.eyebrow{font-size:10px;letter-spacing:2.5px;color:var(--amber);margin-bottom:7px}.subtitle{color:var(--muted);font-size:13px;margin-top:9px}.panel{background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:22px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px;gap:10px}.two{display:grid;grid-template-columns:minmax(0,1fr) 308px;gap:24px}.hero{border-radius:22px;background:#eae0d1;overflow:hidden;position:relative;min-height:248px;border:1px solid #e1d5c4;display:grid;grid-template-columns:1.15fr 1fr}.hero-copy{position:relative;z-index:1;padding:28px 30px;align-self:center}.hero h2{font-size:30px;line-height:1.45;font-weight:500;margin:14px 0}.hero .subtitle{color:#8a7765;font-size:12px;max-width:300px}.hero-art{position:relative;align-self:stretch;background:#c7b59b;overflow:hidden}.hero-art svg,.hero-art img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0}.hero-footer{margin-top:22px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}.hero .btn{background:#fff9efd4}.hero .btn.primary{background:var(--wine)}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:27px 0 16px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.memory-card{background:var(--paper);border:1px solid var(--line);border-radius:17px;overflow:hidden;cursor:pointer;transition:.2s;text-align:left;width:100%}.memory-card:hover{transform:translateY(-3px);box-shadow:0 10px 25px #4b352510}.memory-art{height:155px;background:#dacbb9;position:relative;overflow:hidden}.memory-art svg,.memory-art img{width:100%;height:100%;object-fit:cover}.memory-art .pill{position:absolute;bottom:11px;left:13px;background:#fffbf0e6;color:#66584b}.memory-copy{padding:16px}.memory-copy h3{margin-bottom:6px;font-size:15px}.memory-copy .small{margin-top:7px}.memory-copy .avatars{margin:11px 0}.tag-list{display:flex;gap:6px;flex-wrap:wrap}.tag{font-size:11px;color:#9a8675;background:#f3eee7;border-radius:5px;padding:2px 7px}.filters{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin-bottom:21px}.search{display:flex;align-items:center;gap:9px;border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:var(--paper);min-width:180px;flex:1}.search .ico{width:17px;color:var(--muted)}.search input{border:0;outline:0;min-width:0;width:100%;background:none;font-size:12px}.filter{border:1px solid var(--line);border-radius:9px;padding:9px 11px;color:#7b6d61;background:var(--paper);font-size:12px;min-width:90px}.mini-stat{display:flex;gap:13px;padding:15px 0;border-bottom:1px solid #efe9e1;align-items:center}.mini-stat:last-child{border:0;padding-bottom:0}.mini-stat .num{margin-left:auto;font-size:23px;font-weight:500}.mini-stat .badge{width:38px;height:38px;display:grid;place-items:center;background:#f1ece4;border-radius:11px;color:#a18469}.quote{margin:18px 0;padding:20px;border-radius:15px;background:#f4eee7}.quote p{font-family:Georgia,SimSun,serif;font-size:18px;line-height:1.8}.quote small{display:block;color:#a08c7b;margin-top:10px}.stat-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0 24px}.stat-tile{padding:17px 20px;background:var(--paper);border:1px solid var(--line);border-radius:15px}.stat-tile .n{font-size:31px;font-weight:550;line-height:1.6;letter-spacing:-1px}.stat-tile small{font-size:10px;color:var(--muted)}.live-title{display:flex;align-items:center;gap:12px;margin-bottom:9px;flex-wrap:wrap}.drink-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:13px 15px;border:1px solid var(--line);border-radius:13px;background:#eeebe5;margin-bottom:17px}.drink-strip label{font-size:11px;color:#8a7b70;margin-right:5px}.drink-chip{font-size:12px;display:flex;align-items:center;gap:7px;padding:8px 11px;border-radius:8px;border:1px solid transparent}.drink-chip.active{background:var(--paper);border-color:#d6beb7;color:var(--wine);font-weight:600}.drink-chip small{font-size:10px;color:var(--muted)}.people-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.person-card{background:var(--paper);border:1px solid var(--line);padding:20px;border-radius:17px}.person-top{display:flex;align-items:center;gap:10px}.person-top small{display:block;color:var(--muted);font-size:10px}.person-top .more{margin-left:auto;padding:6px}.person-counter{display:flex;align-items:baseline;gap:7px;margin:17px 0 2px}.person-counter b{font-size:36px;font-weight:550;letter-spacing:-1px}.person-counter span{color:var(--muted);font-size:11px}.person-meta{font-size:10px;color:#94877b;margin:0 0 15px}.person-actions{display:flex;gap:7px}.person-actions .btn{flex:1}.debt-mark{display:flex;gap:7px;margin-top:12px;align-items:center;font-size:11px;color:var(--amber);min-height:24px}.debt-mark .ico{width:14px;height:14px}.action-row{display:flex;gap:9px;flex-wrap:wrap;margin:18px 0}.live-note{font-size:11px;color:#91877e;padding:11px 0}.timeline{display:grid;gap:0}.event{display:flex;gap:11px;padding:14px 0;border-bottom:1px solid #efeae4}.event:last-child{border:0}.event .avatar{width:29px;height:29px;font-size:10px}.event-copy{flex:1;font-size:12px}.event-copy small{display:block;color:var(--muted);font-size:10px;margin-top:3px}.event-copy strong{font-weight:600}.event-time{font-size:10px;color:#a1958a}.composer textarea{width:100%;resize:vertical;min-height:90px;border:1px solid var(--line);border-radius:12px;padding:13px;background:#faf7f2;outline-color:#ae8286;font-size:12px}.composer .flex{margin-top:11px}.games-mini{display:flex;gap:10px;padding:12px 0;align-items:center;border-bottom:1px solid #efe9e3}.games-mini .ico{color:#94775f}.games-mini:last-child{border:0}.games-mini small{color:var(--muted)}.album-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px}.photo-tile{padding:0;text-align:left;position:relative;overflow:hidden;border-radius:15px;background:#d0bfa8;aspect-ratio:1/1.15}.photo-tile svg,.photo-tile img{width:100%;height:100%;transition:transform .35s;object-fit:cover}.photo-tile:hover svg,.photo-tile:hover img{transform:scale(1.04)}.photo-tile .photo-overlay{position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#30231ac9);display:flex;justify-content:flex-end;flex-direction:column;padding:15px;color:white}.photo-tile .photo-overlay small{opacity:.65;font-size:10px}.media-badge{position:absolute;top:11px;right:11px;background:#372c2db3;color:#fff;border-radius:7px;padding:4px 7px;font-size:10px;display:flex;align-items:center;gap:5px}.media-badge .ico{width:12px;height:12px}.album-date{display:flex;align-items:baseline;gap:12px;margin:27px 0 13px}.album-date b{font-size:19px;font-weight:550}.album-date small{color:var(--muted)}.gallery-feature{display:flex;gap:17px;padding:18px;background:#eee6da;border-radius:14px;margin-bottom:20px}.detail-hero{display:grid;grid-template-columns:1fr 1fr;background:#ece1d3;border-radius:21px;overflow:hidden;margin-bottom:21px}.detail-hero .detail-copy{padding:29px}.detail-hero svg,.detail-hero img{width:100%;height:100%;min-height:230px;object-fit:cover}.detail-hero h1{font-size:29px;margin:10px 0}.detail-block{margin-bottom:20px}.person-list{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.person-summary{border:1px solid var(--line);border-radius:14px;padding:15px;text-align:center}.person-summary .avatar{margin:0 auto 8px}.person-summary b{display:block;font-size:24px}.person-summary small{color:var(--muted);font-size:10px}.focus-media{outline:3px solid #aa777c;outline-offset:4px}.game-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:19px}.game-card{padding:24px;background:var(--paper);border:1px solid var(--line);border-radius:18px}.game-symbol{width:52px;height:52px;border-radius:14px;background:#efe8dd;color:#9d8061;display:grid;place-items:center;margin-bottom:20px}.game-symbol .ico{width:29px;height:29px}.game-card h3{font-size:18px;margin-bottom:6px}.game-card p{color:var(--muted);font-size:12px;min-height:57px;margin:12px 0}.game-card .btn{margin-top:17px}.recipe-art{height:185px;position:relative;overflow:hidden;background:#d5c3a9}.recipe-art svg,.recipe-art img{width:100%;height:100%;object-fit:cover}.recipe-card .recipe-body{padding:19px}.recipe-card{border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--paper)}.recipe-body h3{font-family:Georgia,SimSun,serif;font-size:22px}.recipe-body .btn{margin-top:16px}.segmented{display:inline-flex;padding:4px;gap:2px;background:#eee9e2;border-radius:9px}.segmented button{padding:7px 14px;border-radius:6px;font-size:12px;color:var(--muted)}.segmented button.active{background:var(--paper);color:var(--wine);box-shadow:0 2px 5px #38231807}.bars{display:flex;align-items:flex-end;gap:10px;height:170px;padding-top:20px}.bar-item{flex:1;height:100%;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:7px;min-width:0}.bar{width:100%;max-width:38px;background:#dec8c4;border-radius:6px 6px 2px 2px;min-height:3px}.bar-item:last-child .bar{background:var(--wine)}.bar-item small{font-size:9px;color:var(--muted)}.bar-item b{font-size:10px;color:#846b65;font-weight:500}.leader-row{display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);padding:15px 0}.leader-row:last-child{border:0}.rank-num{width:25px;font-family:Georgia,serif;font-size:21px;color:#b6a79b}.leader-row .score{margin-left:auto;color:var(--wine);font-size:14px}.meter{height:5px;background:#eee7df;border-radius:3px;margin-top:7px;overflow:hidden}.meter span{display:block;height:100%;background:#c9a999;border-radius:3px}.empty{padding:40px;text-align:center;color:var(--muted);background:#fffdfa;border:1px dashed var(--line);border-radius:16px}.callout{background:#f0ebe3;border-left:3px solid #b69a77;border-radius:4px 11px 11px 4px;padding:14px 18px;font-size:12px;color:#806c57;margin-bottom:20px}.callout.warn{background:#f9ecdf;border-left-color:#c2884c;color:#8a6440}.flow-panel{padding:26px;background:var(--paper);border:1px solid var(--line);border-radius:20px;margin-bottom:22px;overflow:auto}.flow-panel h2{margin-bottom:5px}.node{position:relative;flex:1;min-width:100px;padding:17px 13px;border:1px solid #e5dad1;background:#f9f5ef;border-radius:13px;text-align:center}.node strong{display:block;font-size:13px;margin-bottom:5px}.node small{font-size:10px;color:#9a897b}.node.wine{background:var(--wine-soft);border-color:#d8bfc0}.node.green{background:#edf3e9;border-color:#dce5d2}.arrow{display:grid;place-items:center;color:#baa999;width:34px;flex-shrink:0;font-size:20px}.branch-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:15px;margin-top:22px}.branch{background:#f9f5ef;border:1px solid var(--line);border-radius:14px;padding:20px}.branch h3{color:var(--wine);font-size:14px;margin-bottom:12px}.branch-line{padding:9px 0;color:#8a7668;font-size:12px}.branch-line+.branch-line{border-top:1px dashed #e6dacf}.branch .math{background:var(--paper);padding:12px;border-radius:9px;margin-top:10px;font-size:12px}.rules-table{width:100%;border-collapse:collapse;font-size:12px}.rules-table th{background:#f0ebe4;text-align:left;font-weight:550;color:#8c7764;padding:12px}.rules-table td{padding:13px 12px;border-bottom:1px solid var(--line)}.rules-table tr:nth-child(even){background:#fcfaf5}.spec-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:18px}.spec-grid .panel p{font-size:12px;color:var(--muted);margin-top:10px}.spec-grid ol,.spec-grid ul{padding-left:19px;color:#83766a;font-size:12px;line-height:2.1}.footer{font-size:10px;color:#b2a79e;padding:25px 0 5px;text-align:center;line-height:1.9}.mobile-nav{display:none}.modal-backdrop{position:fixed;inset:0;background:#2e211d60;backdrop-filter:blur(5px);z-index:100;display:none;align-items:center;justify-content:center;padding:22px}.modal-backdrop.open{display:flex}.modal{background:var(--paper);width:100%;max-width:550px;max-height:90vh;overflow:auto;border-radius:23px;box-shadow:0 20px 100px #28151130;padding:27px}.modal.wide{max-width:720px}.modal-head{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:19px}.modal-head h2{font-size:22px}.close-btn{width:34px;height:34px;border-radius:50%;background:#f0ebe5;display:grid;place-items:center}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.field{display:grid;gap:7px}.field.full{grid-column:1/-1}.field>span{font-size:12px;color:#8a7667}.field input,.field select,.field textarea{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:9px;background:#faf7f2;outline-color:#bc999b;color:var(--ink);min-width:0}.field textarea{min-height:80px;resize:vertical}.form-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:23px}.checkboxes{display:flex;flex-wrap:wrap;gap:10px}.check-pill{display:flex;align-items:center;gap:7px;background:#f1ece4;padding:9px 12px;border-radius:9px}.check-pill input{accent-color:var(--wine);width:auto}.form-hint{padding:12px;background:#f5eee6;border-radius:9px;color:#9a806a;font-size:11px;margin-top:15px}.modal-art{border-radius:14px;overflow:hidden;background:#d8c5ad;aspect-ratio:1.5;margin-bottom:16px}.modal-art svg,.modal-art img{width:100%;height:100%;object-fit:cover}.modal-art video{width:100%;height:100%;object-fit:contain;background:#241c1a}.debt-row{border:1px solid var(--line);border-radius:13px;padding:15px;margin:10px 0}.debt-row .flex{flex-wrap:wrap}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,20px);padding:12px 18px;background:#3d3030;color:#fff7ed;border-radius:12px;z-index:150;font-size:12px;opacity:0;pointer-events:none;transition:.25s;display:flex;gap:15px;align-items:center;max-width:90vw}.toast.show{opacity:1;transform:translate(-50%,0);pointer-events:auto}.toast button{color:#e2b8ab;font-size:12px}.warning-note{color:#aa8468;font-size:10px}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}.calendar-day{height:60px;display:grid;place-items:center;background:#faf7f1;border-radius:9px;font-size:12px;border:1px solid transparent}.calendar-day.has{background:var(--wine-soft);color:var(--wine);border-color:#d5babc;cursor:pointer}.calendar-day .dot{margin-top:4px}.month-grid .weekday{font-size:10px;color:#a08d7b;text-align:center}.mobile-only{display:none}.auth-shell{min-height:100vh;display:grid;place-items:center;padding:28px 18px}.auth-card{width:100%;max-width:430px;background:var(--paper);border:1px solid var(--line);border-radius:22px;box-shadow:0 10px 40px #493f2f12;padding:30px}.progress{height:6px;border-radius:3px;background:#eee7df;overflow:hidden;margin-top:10px}.progress span{display:block;height:100%;background:var(--wine);transition:width .2s}.file-drop{border:1px dashed #d9cbc0;border-radius:13px;padding:18px;text-align:center;color:#9a8a7c;font-size:12px;background:#faf7f2}.file-list{display:grid;gap:8px;margin-top:12px}.file-row{display:flex;align-items:center;gap:10px;font-size:11px;border:1px solid var(--line);border-radius:10px;padding:9px 11px}.file-row .name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.quota-bar{height:8px;border-radius:4px;background:#eee7df;overflow:hidden;margin:9px 0}.quota-bar span{display:block;height:100%;background:linear-gradient(90deg,#c9a999,#773f45)}@media(min-width:1500px){.content{padding-top:38px}.hero{min-height:285px}}@media(max-width:1150px){.two{grid-template-columns:1fr}.cards{gap:13px}.sidebar{width:200px}.main{margin-left:200px}.content{padding:27px}.two>aside{display:grid;grid-template-columns:1fr 1fr;gap:18px}.two>aside .panel{margin:0}.two>aside .quote{margin:0}.game-grid{gap:13px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}

/* ===================================================================
   v2 改造：强制移动端外壳。
   html.force-mobile 把原本只在 @media(max-width:800px) 内生效的移动端
   布局规则，无条件应用到所有视口（包括 PC 宽屏），这样 PC 端看到的
   也是手机排版；.device-frame 再在宽屏下叠加一层手机边框/刘海装饰。
   =================================================================== */
html.force-mobile .workspace{height:100vh;height:100dvh;display:flex;flex-direction:column;overflow:hidden}
html.force-mobile .main{margin:0;flex:1 1 auto;min-height:0;display:flex;flex-direction:column}
html.force-mobile{--content-pad-x:16px;--content-pad-top:calc(20px + env(safe-area-inset-top, 0px))}
html.force-mobile .content{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:var(--content-pad-top) var(--content-pad-x) 26px;max-width:none;margin:0;min-height:auto;scrollbar-width:none}
html.force-mobile .content::-webkit-scrollbar{display:none}
html.force-mobile .page-head{flex-wrap:wrap}
html.force-mobile h1{font-size:26px}
html.force-mobile .two,html.force-mobile .hero,html.force-mobile .detail-hero,html.force-mobile .spec-grid,html.force-mobile .branch-grid{grid-template-columns:1fr}
html.force-mobile .hero-art{display:none}
html.force-mobile .hero-copy{padding:25px}
html.force-mobile .hero h2{font-size:28px}
html.force-mobile .cards,html.force-mobile .game-grid{grid-template-columns:1fr}
html.force-mobile .memory-card{display:grid;grid-template-columns:125px 1fr}
html.force-mobile .memory-art{height:100%}
html.force-mobile .stat-grid{grid-template-columns:repeat(2,1fr);gap:10px}
html.force-mobile .stat-tile{padding:14px}
/* v21 批3：手机视图同样用紧凑数值（网格 gap6 / 卡片 6·8 / 杯数 15px / 按钮扁 2px），与上方批3 段保持一致 */
html.force-mobile .people-grid{grid-template-columns:1fr 1fr;gap:6px;padding:8px 14px}
html.force-mobile .person-card{padding:6px 8px;border-radius:10px}
html.force-mobile .person-counter b{font-size:15px;line-height:1.1;margin:0}
html.force-mobile .person-actions .btn{padding:2px 0;font-size:11px}
html.force-mobile .person-top h3{font-size:13px}
html.force-mobile .person-top .avatar{width:29px;height:29px}
html.force-mobile .person-meta{font-size:9px}
html.force-mobile .person-list{gap:7px}
html.force-mobile .person-summary{padding:10px}
html.force-mobile .two>aside{grid-template-columns:1fr}
html.force-mobile .action-row .btn{flex:1;font-size:11px;padding:9px}
html.force-mobile .drink-strip{padding:9px;gap:3px}
html.force-mobile .drink-chip{padding:7px;font-size:11px}
html.force-mobile .drink-chip small{display:none}
html.force-mobile .filter{min-width:0;max-width:145px;font-size:11px}
html.force-mobile .filters{gap:7px}
/* 底栏（.mobile-nav）样式已迁到唯一真源 ds-nav-v3.css，此处不再定义（2026-10-24）。 */
html.force-mobile .mobile-only{display:block}
html.force-mobile .modal{padding:22px;max-height:87vh}
html.force-mobile .modal-backdrop{padding:13px}
html.force-mobile .form-grid{gap:12px}
html.force-mobile .detail-hero svg,html.force-mobile .detail-hero img{display:none}
html.force-mobile .auth-card{padding:22px}
html.force-mobile .panel{padding:18px}
html.force-mobile .recipe-card{display:block}
html.force-mobile .flow-panel{padding:18px}
html.force-mobile .footer{overflow-wrap:anywhere}
html.force-mobile .toast{bottom:96px}

/* 现场页（.live-page）紧凑排版：无条件生效，不再依赖窄屏媒体查询 */
html.force-mobile .live-page .stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin:12px 0 15px}
html.force-mobile .live-page .stat-tile{padding:9px 7px}
html.force-mobile .live-page .stat-tile .n{font-size:23px}
html.force-mobile .live-page .stat-tile small{display:none}
html.force-mobile .live-page .stat-tile .small{font-size:9px}
html.force-mobile .live-page .eyebrow{display:none}
html.force-mobile .live-page .page-head{margin-bottom:12px;gap:10px}
html.force-mobile .live-page .person-top small{display:none}
html.force-mobile .live-page .person-counter{margin:6px 0 0}
html.force-mobile .live-page .person-meta{margin-bottom:8px}
html.force-mobile .live-page .debt-mark{margin-top:6px;min-height:20px}
html.force-mobile .live-page .drink-strip label{width:100%;font-size:9px}
html.force-mobile .live-page .drink-chip .ico{width:15px;height:15px}

/* 相册瀑布流：按列瀑布排列，图片保留真实比例，不再被裁成正方形网格 */
html.force-mobile .album-grid{display:block;column-count:2;column-gap:12px}
html.force-mobile .album-grid .photo-tile{display:inline-block;width:100%;break-inside:avoid;-webkit-column-break-inside:avoid;margin:0 0 12px;aspect-ratio:auto}

/* ===== 聚会页四层框架（底栏 5 Tab · v1.1） ===== */
/* 筛选层 + 切换层整体吸顶，信息层滚动 */
/* v18 E6：topbar 与底部固定栏一样通栏——负边距出血抵消 .content 的内边距，再把内边距还给自身，
   内容位置不变但背景铺满整宽；背景改不透明，滚动时内容不会透出来 */
.home-header{position:sticky;top:0;z-index:15;margin:calc(-1 * var(--content-pad-top)) calc(-1 * var(--content-pad-x)) 0;padding:var(--content-pad-top) var(--home-pad-x) 0;background:#fcfaf6;border-bottom:1px solid var(--line)}
.home-filter{display:flex;align-items:center;gap:10px;padding:6px var(--home-pad-x)}
/* E6：圈子名不再是大号胶囊按钮，改纯文字 + 小箭头 */
.home-filter .home-crumb{display:inline-flex;align-items:center;gap:3px;max-width:52%;min-width:0;padding:0;background:none;border:0;border-radius:0;font-size:15px;font-weight:650;color:var(--ink)}
.home-filter .home-crumb b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.home-filter .home-crumb .ico{width:14px;height:14px;color:var(--muted);flex-shrink:0}
.home-filter .home-slogan{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);font-size:13px}
.home-tabs{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);gap:6px;padding:4px var(--home-pad-x) 7px}
/* E6：四个入口改为「文字 + wine 下划线」，无底色无边框 */
.home-tab{position:relative;padding:5px 1px 8px;border:0;background:none;border-radius:0;font-size:13px;color:var(--muted);transition:color .16s}
.home-tab.active{background:none;color:var(--ink);font-weight:650}
.home-tab.active::after{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;border-radius:2px;background:var(--wine)}
/* v15 E2：信息流与顶栏共用 --home-pad-x，负外边距通栏后左右与顶栏对齐 */
.home-feed{margin:0 calc(-1 * var(--content-pad-x));padding:10px var(--home-pad-x) 100px}
/* 信息层瀑布流：两列，卡片保留真实高度 */
.waterfall{display:block;column-count:2;column-gap:12px}
.waterfall>*{display:inline-block;width:100%;break-inside:avoid;-webkit-column-break-inside:avoid;margin:0 0 12px}
.people-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:12px}
.person-card{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:var(--radius)}
.person-card-main{display:flex;align-items:center;gap:6px;font-size:14px;min-width:0}
.feed-list{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
.post-card{padding:5px 10px;margin:0;min-width:0;border-radius:12px}
.post-text-toggle{display:block;width:100%;padding:0;margin-top:2px;text-align:left}
.post-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;font-size:14px;font-weight:400;line-height:1.4;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* P02-10：展开态作用在外层容器上；正文不再嵌在「展开全文」按钮内 */
.post-text-wrap.open .post-text{display:block;overflow:visible;-webkit-line-clamp:unset}
.post-author{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;line-height:20px;min-width:0}
.post-author b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px;color:var(--ink);font-weight:550}
.post-author time{white-space:nowrap;font-size:11px}
.post-author .avatar{width:20px;height:20px;font-size:10px;border-width:1px}
.post-author .pill{padding:0 5px;font-size:10px}
.post-previews{display:flex;gap:5px;margin-top:2px}
.post-preview{position:relative;width:44px;height:44px;flex:0 0 44px;padding:0;border-radius:6px;overflow:hidden;background:#ece7df;display:grid;place-content:center;font-size:10px;line-height:1.2}
.post-preview img{width:44px;height:44px;object-fit:cover;display:block}
.post-preview .ico{width:16px;height:16px;margin:auto}
.post-preview-count{position:absolute;inset:0;display:grid;place-items:center;background:#241c1a70;color:#fff;font-size:13px;font-weight:600}
.post-actions{display:flex;gap:4px;align-items:center;margin-top:0;min-height:44px}
.post-actions .btn.tiny{min-height:44px;min-width:44px;padding:2px 5px;font-size:12px}
.post-edit-actions{margin-left:auto;display:flex;gap:4px}
.post-media-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:10px}
.post-media-picker{display:flex;gap:5px;overflow-x:auto;padding:4px 0}
/* 发布表单的多图选择：缩略图芯片 + 添加按钮 */
.media-pick{display:flex;flex-wrap:wrap;gap:8px}
.media-pick:empty{display:none}
.media-chip{position:relative;width:64px;height:64px;border-radius:10px;overflow:hidden;background:#f0ece6;border:1px solid var(--line)}
.media-chip img{width:100%;height:100%;object-fit:cover;display:block}
.media-chip-x{position:absolute;top:2px;right:2px;width:18px;height:18px;border-radius:50%;background:rgba(20,16,14,.62);color:#fff;display:grid;place-items:center;padding:0}
.media-chip-x .ico{width:10px;height:10px;stroke-width:2.4}
.media-add{display:inline-flex;align-items:center;justify-content:center;gap:4px;width:64px;height:64px;border-radius:10px;border:1px dashed var(--line);color:var(--muted);font-size:11px;cursor:pointer;background:#faf7f3}
.media-add:hover{border-color:var(--wine);color:var(--wine)}
.media-add .ico{width:14px;height:14px}
.hidden{display:none!important}
.btn.danger{color:#b0432f}
.btn.danger:hover{background:#f8ebe7}
/* P4 · 圈子项、Logo 与裁剪浮层 */
/* v17 圈子行：我的圈子 / 搜索结果 / 邀请记录 共用（头像 + 名称 + 副标题 + 右侧） */
.ci{display:flex;align-items:center;gap:10px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-bottom:6px}
.ci.current{border-color:#e3cfcf;box-shadow:inset 3px 0 0 var(--wine)}
.ci.small-row{padding:6px 10px}
.ci-logo{position:relative;flex:none;border-radius:50%;overflow:hidden;display:grid;place-items:center}
.ci-logo .avatar{width:100%;height:100%;border:0;font-size:15px}
.ci-logo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ci-main{flex:1;min-width:0;display:flex;align-items:center;gap:10px;background:none;border:0;text-align:left;color:inherit;padding:0;font:inherit}
.ci-text{flex:1;min-width:0}
.ci-name{display:flex;align-items:baseline;gap:5px;font-size:14px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ci-name.sm{font-size:12.5px}
.ci-role{font-size:10px;font-weight:600;color:var(--wine);background:var(--wine-soft);border-radius:5px;padding:0 5px}
.ci-sub{display:block;font-size:11px;color:var(--muted);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ci-side{flex:none;display:flex;align-items:center;gap:4px}
.grp-title{font-size:11px;color:var(--muted);margin:14px 0 7px}
.icon-btn{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;color:var(--muted)}
.icon-btn:hover{background:var(--wine-soft);color:var(--wine)}
.icon-btn.sm{width:26px;height:26px}
.icon-btn.sm svg{width:15px;height:15px}
.icon-btn.danger{color:#b4675f}
.icon-btn.danger:hover{background:#f8ebe7;color:#b0432f}
/* v17 圈子管理弹窗 */
.idcard{display:flex;gap:12px;align-items:center;padding:2px 0 14px;border-bottom:1px solid var(--line)}
.idcard-main{min-width:0}
.idcard-name{font-size:16px;font-weight:650}
.idcard-meta{font-size:11px;color:var(--muted);margin-top:4px}
.idcard-acts{display:flex;gap:12px;margin-top:6px}
.link{background:none;border:0;padding:0;font-size:11px;font-weight:600;color:var(--wine);font-family:inherit}
.link.ghost{color:var(--muted);font-weight:500}
.row-link{display:flex;align-items:center;width:100%;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:11px 12px;font-size:13px;font-weight:600;color:inherit;font-family:inherit}
.row-link small{margin-left:auto;font-weight:500;font-size:11px;color:var(--muted);display:flex;align-items:center;gap:5px}
.row-link small svg{width:13px;height:13px}
.inv-records{margin-top:8px}
.inv-records summary{font-size:11.5px;color:var(--muted);cursor:pointer}
.inv-records .stack{margin-top:7px}
.danger-zone{margin-top:16px;border-top:1px solid var(--line);padding-top:12px}
.danger-lab{font-size:11px;color:#b4675f;letter-spacing:1px;margin-bottom:8px}
.transfer-row{display:flex;gap:8px;margin-bottom:8px}
.transfer-row select{flex:1;min-width:0;border:1px solid var(--line);border-radius:10px;padding:9px 10px;background:var(--paper);color:var(--ink);font-size:12.5px}
.logo-pick{display:flex;align-items:center;gap:10px}
.logo-pick img{width:64px;height:64px;border-radius:12px;object-fit:cover;border:1px solid var(--line)}
.logo-manage{display:flex;align-items:center;gap:12px}
.logo-preview{width:64px;height:64px;flex-shrink:0;border-radius:12px;overflow:hidden;background:#f0ece6;border:1px solid var(--line);display:grid;place-items:center;text-align:center}
.logo-preview img{width:100%;height:100%;object-fit:cover}
/* P8 排行榜：前三名突出 + 底部固定我的排名 */
/* E7：第 2 名在左、第 1 名居中最高、第 3 名在右；高度 4/5 : 1 : 3/5 */
.podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:10px;margin-top:14px;padding-top:8px}
.podium-card{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:6px;padding:14px 8px;border:1px solid var(--line);border-radius:16px;background:var(--paper);position:relative}
/* v17 E6：podium 三卡等高 96px，去掉金银铜渐变，只保留第 1 名 wine 描边 */
.podium-card.rank-1,.podium-card.rank-2,.podium-card.rank-3{min-height:96px;padding:12px 8px;border-radius:12px}
.podium-card.rank-1{border-color:var(--wine)}
.podium-card.rank-2{border-color:#dcd6ce}
.podium-card.rank-3{border-color:#e0d6cb}
.podium-medal{position:absolute;top:-8px;left:50%;transform:translateX(-50%);min-width:22px;height:22px;padding:0 6px;border-radius:11px;background:var(--wine);color:#fff;font-size:12px;line-height:22px;text-align:center}
.podium-card .avatar{width:42px;height:42px}
.podium-value{font-weight:700;color:var(--wine)}
.my-rank{position:sticky;bottom:8px;display:flex;align-items:center;gap:10px;margin-top:14px;padding:10px 14px;border-radius:14px;background:var(--wine-soft);border:1px solid var(--line)}
.my-rank b{color:var(--wine)}
.member-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:12px}
/* v17 E5：卡片只留 头像 → 昵称 → 场/杯 */
.member-card{display:flex;flex-direction:column;align-items:center;gap:5px;min-height:0;padding:10px 6px;background:var(--paper);border:1px solid var(--line);border-radius:12px;text-align:center;cursor:pointer}
.member-card:hover{border-color:#d6beb7}
.member-card:focus-visible{outline:2px solid var(--wine);outline-offset:2px}
.member-card .avatar{width:52px;height:52px;font-size:15px}
.member-card b{font-size:12.5px;line-height:1.35;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.member-card .muted{font-size:10.5px}
.vtag{font-size:9px;font-weight:400;color:#a39a90;margin-left:3px}
/* v17 E10：同名并列时的身份小字（真人 @账号名 / 虚拟成员） */
.member-who{font-size:9.5px;color:#a39a90;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-who{font-style:normal;font-size:10px;color:#a39a90;margin-left:5px}
.member-stats{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;font-size:12px;color:var(--muted)}
.member-card.virtual{background:#fbf8f4}
/* v17 E5：手机端 3 列 */
html.force-mobile .member-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:6px}
html.force-mobile .member-card{padding:10px 6px}
html.force-mobile .member-card .avatar{width:52px;height:52px;font-size:15px}
.post-grid.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:4px;margin-top:8px}
.post-grid img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:8px;background:#f0ece6}
.media-tile.video{position:relative;width:100%;aspect-ratio:1;border:0;border-radius:8px;background:#211c18;color:#fff;display:grid;place-items:center;gap:2px;font-size:11px}
.media-tile.video .ico{width:18px;height:18px;opacity:.9}
.chip-label{display:grid;place-items:center;width:100%;height:100%;background:#211c18;color:#fff;font-size:11px}
.cover-pick{display:flex;align-items:center;gap:14px;flex-wrap:wrap}
.cover-preview{width:96px;height:72px;flex-shrink:0;border-radius:12px;overflow:hidden;background:#f0ece6;border:1px solid var(--line)}
.cover-preview img,.cover-preview svg{width:100%;height:100%;object-fit:cover;display:block}
.cover-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:10px;max-height:56vh;overflow:auto}
.cover-option{padding:0;border:2px solid transparent;border-radius:12px;overflow:hidden;background:#f0ece6;aspect-ratio:4/3}
.cover-option:hover,.cover-option:focus-visible{border-color:var(--wine)}
.cover-option svg{width:100%;height:100%;display:block}
/* v17 E4：搜索框与创建加号同排，回车即搜 */
.circle-search{display:flex;align-items:center;gap:8px;margin:12px 0 4px}
.circle-search-form{flex:1;min-width:0;display:flex}
.circle-search input{flex:1;min-width:0}
.cropper-overlay{position:fixed;inset:0;z-index:200;background:rgba(24,20,18,.55);display:grid;place-items:center;padding:18px}
.cropper-box{width:min(420px,100%);background:var(--paper);border-radius:18px;padding:16px;box-shadow:0 18px 50px rgba(0,0,0,.25)}
.cropper-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.cropper-stage{width:100%;aspect-ratio:1;background:#efeae3;border-radius:14px;overflow:hidden}
.cropper-stage canvas{width:100%;height:100%;display:block;touch-action:none;cursor:grab}
.cropper-zoom{display:flex;align-items:center;gap:10px;margin-top:12px}
.cropper-zoom input{flex:1}
.cropper-foot{display:flex;justify-content:flex-end;gap:8px;margin-top:14px}
.load-more{padding:18px 0 4px;text-align:center;color:var(--muted);font-size:12px}
/* 右下角悬浮按钮：管理（管理员/圈主）+ 发布（圈内用户） */
/* v15 E3：悬浮按钮整体收小（高度 44→38，图标 18→16），留出更多信息流高度 */
.fab-group{position:fixed;right:12px;bottom:86px;z-index:20;display:flex;flex-direction:column;align-items:flex-end;gap:7px}
.fab{display:inline-flex;align-items:center;gap:5px;min-height:38px;padding:0 13px;border-radius:999px;box-shadow:var(--shadow);font-size:13px;font-weight:600}
.fab .ico{width:16px;height:16px}
.fab-primary{background:var(--wine);color:#fff}
.fab-ghost{background:var(--paper);color:var(--ink);border:1px solid var(--line)}
html.force-mobile .album-grid .photo-tile img{width:100%;height:auto;display:block;object-fit:unset}

/* 聚会权限提示条 / 加入按钮 */
.permission-bar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0 2px}
.permission-bar .pill.locked{background:#efe6e2;color:#8b827c}
.permission-bar .pill.open{background:#e8f1ea;color:var(--green)}
.permission-grid{display:flex;flex-direction:column;gap:10px}
.check-field{display:flex;align-items:flex-start;gap:9px;font-size:12px;color:var(--ink);cursor:pointer}
.check-field input{margin-top:2px;width:16px;height:16px;flex-shrink:0}
.locked-note{display:flex;align-items:center;gap:6px;padding:10px 14px;border-radius:14px;background:#faf4f2;color:var(--muted);font-size:12px;margin:10px 0}

/* 手机外壳：窄屏（真实手机）铺满；宽屏（PC/平板）显示带边框的手机视图 */
html{background:#1c1714}
body{margin:0}
.device-frame{position:relative;min-height:100vh;background:var(--bg)}
@media(min-width:661px){
  body{display:flex;justify-content:center;padding:30px 0;min-height:100vh;box-sizing:border-box}
  .device-frame{width:390px;height:844px;max-height:92vh;overflow:hidden;display:flex;flex-direction:column;border-radius:42px;border:10px solid #0f0d0c;box-shadow:0 26px 64px #00000055,0 0 0 2px #2b2420;scrollbar-width:none}
  .device-frame::-webkit-scrollbar{display:none}
  .device-frame::before{content:'';position:sticky;top:0;left:50%;transform:translateX(-50%);width:132px;height:24px;background:#0f0d0c;border-radius:0 0 18px 18px;display:block;z-index:40;margin:0 auto}
  html.force-mobile .device-frame .workspace{height:auto;flex:1 1 auto;min-height:0}
  .device-frame .auth-shell{flex:1 1 auto;min-height:0}
  .device-frame .toast,.device-frame .modal-backdrop{position:absolute}
  .device-frame .toast{bottom:96px}
}

.banner-wrap{position:relative;overflow:hidden;border-radius:16px;height:20vh;min-height:120px;background:#efe9e2;margin-bottom:12px}
.banner-track{position:relative;width:100%;height:100%}
.banner-slide{position:absolute;inset:0;opacity:0;transition:opacity .5s ease;display:grid;place-items:center}
.banner-slide.active{opacity:1}
.banner-slide img{width:100%;height:100%;object-fit:cover}
.banner-placeholder{width:100%;height:100%;background:linear-gradient(135deg,hsl(var(--hue,25) 48% 86%),hsl(var(--hue,25) 38% 72%))}
.banner-text{position:absolute;left:0;right:0;bottom:0;padding:14px 16px;color:#fff;font-size:15px;font-weight:600;text-shadow:0 1px 6px rgba(0,0,0,.45);background:linear-gradient(transparent,rgba(0,0,0,.38))}
.banner-dots{position:absolute;left:0;right:0;bottom:8px;display:flex;justify-content:center;gap:6px}
.banner-dot{width:6px;height:6px;border-radius:50%;background:#ffffff80}
.banner-dot.active{background:#fff;width:14px;border-radius:3px}
.gather-ended{position:relative}
.banner-manage{position:absolute;top:8px;right:8px;z-index:2;padding:3px 10px;border-radius:20px;font-size:11px;background:rgba(0,0,0,.42);color:#fff;border:0}
.banner-empty{margin-bottom:12px}
.pin-btn{margin-top:6px;padding:3px 10px;border-radius:20px;font-size:11px;border:1px solid var(--line);background:var(--paper);color:var(--muted)}
.pin-btn.active{background:var(--amber-soft);border-color:transparent;color:var(--amber);font-weight:600}
.post-tag{margin-top:8px}

/* E8：筛选行固定一行，任何设备都不换行；空间不足时横向滚动而不是折行 */
.filters{display:flex;flex-wrap:nowrap;gap:8px;align-items:center;overflow-x:auto;-webkit-overflow-scrolling:touch}
.filters>*{flex:0 0 auto}
.filters .search{flex:1 1 38%;min-width:110px}
.filters .filter{max-width:32%}
/* E8：聚一聚的聚会卡与看一看的动态卡保持同一最小高度 */
.memory-card,.post-card{min-height:var(--card-min,168px)}
/* E6：子页面左上角返回键 */
.page-back{position:absolute;top:calc(10px + env(safe-area-inset-top,0px));left:10px;z-index:20;display:inline-flex;align-items:center;gap:2px;padding:6px 12px 6px 8px;border:1px solid var(--line);border-radius:20px;background:var(--paper);color:var(--muted);font-size:13px}
.page-back:hover{color:var(--wine);border-color:#d6beb7}
.page-back-glyph{font-size:18px;line-height:1}
/* E4：成员图鉴筛选行固定一行 */
/* v17 成员图鉴 / 排行榜 */
.member-head{display:flex;align-items:center;gap:10px;padding:10px 4px 0}
.member-head .count{font-size:12px;color:var(--muted)}
.member-tabs,.rank-tabs{display:flex;gap:16px;margin-left:auto}
.member-tab,.rank-tab{background:none;border:0;font-size:12.5px;color:var(--muted);padding:4px 1px 6px;position:relative;font-family:inherit}
.member-tab.active,.rank-tab.active{color:var(--ink);font-weight:650}
.member-tab.active::after,.rank-tab.active::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--wine);border-radius:2px}
.rank-switch{display:flex;align-items:center;gap:10px;padding:8px 4px 0}
.rank-switch .spacer{flex:1}
.rank-list{margin-top:10px}
.rank-row{display:flex;align-items:center;gap:10px;width:100%;height:44px;padding:0 4px;background:none;border:0;border-top:1px solid #f2eee8;font-family:inherit;font-size:13px;color:inherit;text-align:left}
.rank-num{width:16px;flex:none;font-size:12px;color:var(--muted);text-align:center}
.rank-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rank-value{font-size:12.5px;font-weight:600}
.avatar-pick{display:flex;align-items:center;gap:12px}
.avatar-pick-img{position:relative;overflow:hidden;width:56px;height:56px;flex:none;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:16px;font-weight:650}
.avatar-pick-img img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border-radius:50%}
.avatar-pick-actions{display:flex;gap:8px;align-items:center}
.avatar-pick-actions label{display:inline-flex;align-items:center;gap:4px;cursor:pointer}
/* E6：聚一聚卡片整屏宽、高度锁死，排列与「查看全部」一致 */
.cards>.memory-card,.cards>.gather-ended>.memory-card{width:100%;max-height:320px;overflow:hidden}
/* E3：管理成员面板里绑定的虚拟账号用小一号字体 */
.member-sub-list{margin-top:8px;display:flex;flex-direction:column;gap:6px}
.member-sub{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:12px;color:var(--muted)}
.collapse>summary{cursor:pointer;list-style:none}
/* v15：管理成员弹窗卡片化 + 滚动懒加载 */
.mm-section{display:flex;align-items:baseline;gap:8px;margin:18px 0 8px}
.mm-section h3{font-size:14px;color:var(--muted);font-weight:600;letter-spacing:1px}
.mm-count{font-size:11px;color:#b0a79e}
/* touch-action:pan-y + overscroll-behavior 保证手指长按上下滑时滚的是列表本身，不会带动外层弹窗 */
.mm-scroll{max-height:238px;overflow-y:auto;-webkit-overflow-scrolling:touch;touch-action:pan-y;overscroll-behavior:contain}
.mm-scroll-members{max-height:470px}
.mm-scroll::-webkit-scrollbar{width:4px}
.mm-scroll::-webkit-scrollbar-thumb{background:#d8cfc4;border-radius:4px}
.mm-list{display:grid;gap:8px}
.mm-group{display:grid;gap:10px;background:#efeadf;border-radius:16px;padding:12px}
.mm-card{position:relative;background:var(--paper);border-radius:14px;padding:12px;box-shadow:0 1px 4px #493f2f0a}
.mm-badge{position:absolute;top:10px;right:12px;border-radius:999px;padding:2px 10px;font-size:11px}
.mm-badge-owner{background:var(--wine-soft);color:var(--wine);font-weight:700}
.mm-badge-admin{background:var(--amber-soft);color:var(--amber)}
.mm-badge-former{background:var(--line);color:var(--muted)}
.mm-name{display:flex;align-items:baseline;flex-wrap:wrap;gap:2px}
.mm-stats{font-size:11px;color:var(--muted);margin-left:2px;font-weight:400}
.mm-note{font-size:11px;color:var(--muted);margin-top:6px}
.mm-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.mm-claim{background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:10px 12px}
.mm-vtag{font-size:10px;border:1px solid #d8cfc4;border-radius:6px;padding:0 5px;margin-right:6px;color:#a2917f}
.mm-more{display:flex;align-items:center;justify-content:center;padding:8px 0 2px;font-size:11px;color:#b0a79e}
.mm-more.is-clickable{cursor:pointer;color:var(--wine);text-decoration:underline;text-underline-offset:3px}

/* P13 消息中心：紧凑单行卡片，未读左侧竖条 */
.msg-dot{width:8px;height:8px;border-radius:50%;background:var(--wine);flex:none}
.msg-list{display:flex;flex-direction:column;gap:6px}
.msg-row{display:flex;align-items:center;gap:10px;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:8px 10px;text-align:left;width:100%}
.msg-row.unread{border-left:3px solid #c98f3f}
.msg-row.unread .msg-text{font-weight:700}
.msg-copy{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px}
.msg-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.msg-copy small{font-size:11px;color:#a2917f}
.msg-acts{display:flex;gap:6px;flex:none}
.msg-avatar-ph{width:32px;height:32px;border-radius:50%;background:#efe7dd;flex:none}
/* P13-03：点赞消息跳过来时短暂高亮 */
.post-card.is-focused{box-shadow:0 0 0 2px var(--wine)}
.mm-add{margin:14px 0 0}
.mm-transfer{display:flex;gap:10px;margin-top:6px}
.mm-transfer select{flex:1;min-width:0;border:1px solid var(--line);border-radius:10px;padding:9px 12px;background:var(--paper);color:var(--ink);font-size:13px}

/* ===================================================================
   v16 · 聚一聚 / 看一看视觉重构
   =================================================================== */
/* F 状态条：当前状态 + 一键下一步 */
.status-strip{display:flex;align-items:center;gap:8px;margin:0 0 8px;padding:8px 12px;border-radius:12px;
  background:var(--green-soft, #eaf2e9);color:var(--green);font-size:12px}
.status-strip.idle{background:#f2eee8;color:#8b827c}
.status-strip .ico{width:15px;height:15px}
.status-strip .auto{font-size:11px;opacity:.72}
.status-strip .go{margin-left:auto;display:inline-flex;align-items:center;gap:2px;font-weight:600;color:inherit;font-size:12px}
.status-strip .go .ico{width:14px;height:14px}
/* 筛选：清除胶囊 + 结果条 */
.filter-clear{border:1px solid transparent;background:var(--wine-soft);color:var(--wine);border-radius:9px;padding:7px 10px;font-size:12px;font-weight:600}
.filter-result{display:flex;align-items:center;gap:6px;margin:8px 0 2px;padding:7px 11px;border-radius:10px;
  background:#fbf6ee;border:1px dashed #e3d6c2;font-size:11px;color:#8a7667}
.filter-result .link{margin-left:auto;color:var(--wine);font-weight:600}
/* 轻量分组行 */
.group-head{display:flex;align-items:baseline;gap:8px;margin:10px 0 5px}
.group-head h3{font-size:13px;font-weight:650;letter-spacing:.5px}
.group-head .count{font-size:11px;color:#b0a79e}
.group-head .line{flex:1;height:1px;background:var(--line)}
/* 聚会卡：卡片与操作按钮分层（按钮不能嵌在 button 内） */
/* E8 紧凑：卡片间距 10→6px，封面 104→96px */
.gather-item{position:relative;margin-bottom:6px}
/* v15 E4：开始 / 置顶改成纯图标小按钮，落在卡片框内右上角（不再溢出到框外遮挡封面） */
.float-actions{position:absolute;top:6px;right:6px;z-index:2;display:flex;gap:5px}
.float-actions .icon-act{width:26px;height:26px;display:inline-grid;place-items:center;padding:0;border-radius:50%;border:1px solid var(--line);background:#fffdfaf2;color:var(--muted);box-shadow:0 1px 4px #493f2f14;cursor:pointer}
.float-actions .icon-act .ico{width:14px;height:14px}
/* P02-29：喝酒量榜顶部的 ml 数榜 */
.rank-ml{margin-bottom:12px;border:1px solid var(--line);border-radius:12px;background:#fffdf9;padding:8px 10px}
.rank-ml-head{display:flex;align-items:center;gap:6px;margin-bottom:4px}
.rank-ml-head b{font-size:12.5px}
.rank-ml .rank-row{height:38px}
/* P02-07：封面右下角叠加参与者真实头像；无封面时用 2×2 头像拼图兜底 */
.cover-faces{position:absolute;right:6px;bottom:6px;z-index:2;display:flex;align-items:center;flex-direction:row-reverse}
.cover-faces .avatar{width:26px;height:26px;font-size:11px;border:2px solid #fff;box-shadow:0 1px 3px #493f2f33;margin-left:-8px;background:#efe9e2}
.cover-faces .avatar:first-child{margin-left:0}
.cover-face-more{font-size:10px;color:#fff;background:#0000005c;border-radius:999px;padding:1px 5px;margin-left:-6px}
.cover-mosaic{position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:1fr 1fr}
.cover-mosaic .avatar{width:100%;height:100%;border-radius:0;font-size:20px;display:grid;place-items:center}
.float-actions .icon-act.start{color:var(--wine);border-color:#e7d5d3}
.float-actions .icon-act.pin.active{background:var(--amber-soft);border-color:transparent;color:var(--amber)}
.float-actions .icon-act:disabled,.float-actions .icon-act.is-busy{opacity:.45;cursor:default}
.gather-item-actions{display:flex;gap:8px;margin-top:6px}
.gather-item-actions .pin-btn{margin-top:0}
.memory-card{width:100%}
.memory-card .memory-copy{padding:8px 10px 8px 0;min-width:0}
.memory-card .memory-copy h3{padding-right:62px}
.memory-card .memory-copy h3{font-size:15px;font-weight:650;margin-bottom:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.memory-meta{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);min-width:0}
.memory-meta .ico{width:13px;height:13px}
.memory-meta span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v15 E5：状态跟在「地点 · 时间」后面，卡片底部不再单独显示状态 pill */
.memory-status{flex:none;display:inline-flex;align-items:center;gap:3px;font-size:11px;color:var(--muted)}
.memory-status.ongoing{color:var(--green)}
.memory-status.ongoing .dot{width:5px;height:5px;border-radius:50%;background:var(--green);display:inline-block}
.memory-foot{display:flex;align-items:center;gap:6px;margin-top:8px;flex-wrap:wrap}
.memory-foot .micro{font-size:11px;color:var(--muted)}
.memory-art .pill.date{position:absolute;left:8px;bottom:8px;background:#fffbf0e6;color:#66584b}
.micro{font-size:11px;color:var(--muted)}
/* E8：删除 168px 最小高度，卡片按内容自适应；高度上限放宽但不再强行撑高 */
.memory-card,.post-card{min-height:0}
.cards>.gather-item>.memory-card{width:100%;max-height:none;overflow:visible}
html.force-mobile .memory-card{grid-template-columns:96px 1fr}
html.force-mobile .memory-art{height:96px}
/* hero 统计行 */
.hero-stats{display:flex;align-items:center;gap:12px;margin:9px 0 10px;font-size:11px;color:#8a7765;flex-wrap:wrap}
.hero-stats b{color:var(--ink);font-size:15px;font-weight:650;margin-right:2px}
/* 看一看：卡片、正文、媒体网格、操作行 */
.feed-list{display:grid;grid-template-columns:minmax(0,1fr);gap:6px}
.post-card{background:var(--paper);border:1px solid var(--line);border-radius:16px;padding:12px 13px}
.post-author{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--muted);min-width:0}
.post-author b{font-size:13px;color:var(--ink);font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:120px}
.post-author time{font-size:11px;white-space:nowrap}
/* E4：修改标注（同天只显示时分，跨天带日期） */
.p-edit{font-size:10px;color:#b0a493;white-space:nowrap;margin-left:3px}

/* ---------------- v18 · 详情页紧凑化 + 六套数据主题 ---------------- */
.detail-head{padding:12px 14px 0}
.detail-title{font-size:18px;font-weight:650;margin:6px 0 3px;line-height:1.25}
.detail-meta{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--muted);flex-wrap:wrap}
.detail-story{font-size:12.5px;color:#6b625c;margin:6px 0 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.detail-acts{display:flex;gap:7px;flex-wrap:wrap;margin-top:9px}
.detail-acts .locked-note{margin:0}
.theme-switch{font-size:11px;color:var(--wine);background:none;border:1px solid var(--line);border-radius:8px;padding:3px 8px;margin-left:auto}
.overview-row{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:10px 14px;padding:7px 10px;background:#f3efe9;border-radius:10px;font-size:11.5px;color:var(--muted)}
.overview-row b{color:var(--ink);font-weight:650;font-size:12.5px}
.overview-row .dot-sep{color:#cfc6bd}
.detail-theme-panel{margin:0 14px}

/* T1 小人赛跑（默认主题） */
.theme-race .lane{display:flex;align-items:center;gap:7px;margin-bottom:7px}
.theme-race .nm{width:52px;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.theme-race .track{flex:1;height:18px;background:#f4f0ea;border-radius:999px;position:relative}
.theme-race .run{position:absolute;left:0;top:0;height:18px;background:linear-gradient(90deg,#e7d5d5,#c98f8f);border-radius:999px}
.theme-race .who{position:absolute;top:-2px;width:14px;display:flex;flex-direction:column;align-items:center}
.theme-race .who i{width:8px;height:8px;border-radius:50%;background:var(--wine)}
.theme-race .who u{width:9px;height:10px;background:var(--wine);border-radius:2px 2px 3px 3px;margin-top:1px}
.theme-race .flag{position:absolute;right:3px;top:-4px;font-size:12px}
.theme-race .ct{width:46px;text-align:right;font-size:11px;font-weight:650}
.theme-race .g1 .run{background:linear-gradient(90deg,#f0e2c8,#d8b878)}
.theme-race .g2 .run{background:linear-gradient(90deg,#e9e9ea,#c8c8cc)}
.theme-race .g3 .run{background:linear-gradient(90deg,#eed7cd,#caa187)}

/* P06-06：所有数据主题容器统一高度 220px，装不下向下滑动（人数再多高度也一致） */
.theme{height:220px;overflow-y:auto;-webkit-overflow-scrolling:touch}

/* T2 排行榜（P06-07：紧凑 40px 行 + 头像昵称 + 奖牌色递减 金→银→铜→灰） */
.theme-rank .rank-row{display:flex;align-items:center;gap:8px;height:40px;padding:0 2px;border-top:1px solid #f2eee8;cursor:pointer}
.theme-rank .rank-row:first-child{border-top:0}
.theme-rank .bd{width:18px;height:18px;border-radius:50%;background:#f1ece5;color:#8b827c;font-size:10px;display:grid;place-items:center;font-weight:700;flex:0 0 18px}
.theme-rank .nm{flex:1;min-width:0;font-size:12.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.theme-rank .v{font-size:11px;font-weight:650;flex:0 0 auto}
.theme-rank .g1 .bd{background:linear-gradient(135deg,#F5C542,#e0a92e);color:#5a4300;animation:medal-glow 1.8s ease-in-out infinite}
@keyframes medal-glow{0%,100%{box-shadow:0 0 0 2px #f7e6b0}50%{box-shadow:0 0 0 4px #f9e8b855,0 0 8px #f5c54266}}
.theme-rank .g1{background:linear-gradient(90deg,#fdf6e3,transparent)}
.theme-rank .g1 .nm{font-weight:700;color:#8a6b1f}
.theme-rank .g2 .bd{background:linear-gradient(135deg,#e2e6ea,#b9c0c7);color:#3f4a54}
.theme-rank .g3 .bd{background:linear-gradient(135deg,#d69a6a,#b07a4e);color:#fff}
.theme-rank .g4 .bd{background:#e6e2dc;color:#9a9a9a}
.theme-rank .g4{opacity:.85}
.theme-rank .g4 .nm{font-size:12px;color:#8d8d8d}
.theme-rank .g4 .avatar{width:24px !important;height:24px !important;font-size:11px}

/* T3 酒杯矩阵 */
.theme-glass .glass-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:9px}
.theme-glass .gcard{background:#fbf8f4;border:1px solid #f0ebe4;border-radius:10px;padding:7px 6px;text-align:center}
.theme-glass .nm{font-size:10.5px;margin-bottom:5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.theme-glass .gstack{display:flex;flex-wrap:wrap;gap:2px;justify-content:center;min-height:30px;align-content:flex-start}
.theme-glass .g{width:9px;height:13px;border:1.5px solid var(--wine);border-top:none;border-radius:1px 1px 5px 5px;background:var(--wine-soft)}
.theme-glass .g.half{background:linear-gradient(180deg,transparent 50%,var(--wine-soft) 50%)}
.theme-glass .g.empty{opacity:.25}
.theme-glass .gx{font-size:10px;color:var(--wine);align-self:center}
.theme-glass .v{font-size:10.5px;font-weight:650;margin-top:4px}

/* T4 酒杯液面（P06-08：ml 口径 + 大啤酒杯；第 1 名满杯 + 泡沫溢出 + 光晕，其余按百分比） */
.theme-tube .tubes{display:flex;gap:10px;justify-content:flex-start;align-items:flex-end;padding:8px 2px 0;overflow-x:auto}
.theme-tube .beer{display:flex;flex-direction:column;align-items:center;gap:3px;flex:0 0 auto;width:76px}
.theme-tube .tb{position:relative;width:46px;height:120px;background:#f7f3ee;border:2px solid #e3dcd3;border-radius:8px 8px 14px 14px;display:flex;align-items:flex-end;overflow:visible}
.theme-tube .tb i{display:block;width:100%;background:linear-gradient(180deg,#e0a355,#b9762f);border-radius:0 0 10px 10px}
.theme-tube .g1 .tb{border-color:#f0c86a;box-shadow:0 0 12px #f5c54280}
.theme-tube .g1 .tb i{background:linear-gradient(180deg,#ffd979,#d99a2b)}
.theme-tube .g2 .tb i{background:linear-gradient(180deg,#e2e6ea,#a8b0b8)}
.theme-tube .g3 .tb i{background:linear-gradient(180deg,#d69a6a,#a9713f)}
.theme-tube .g4 .tb{border-color:#e0dedb;opacity:.9}
.theme-tube .g4 .tb i{background:linear-gradient(180deg,#dedbd6,#a8a5a0)}
.theme-tube .foam{position:absolute;top:-7px;left:-3px;right:-3px;height:15px;background:#fffaf0;border-radius:50%/60%;box-shadow:0 2px 0 #f0e9df}
.theme-tube .bubbles{position:absolute;inset:0;background-image:radial-gradient(#fff9 1px,transparent 1.6px);background-size:10px 14px;animation:bubble-up 2.4s linear infinite;opacity:.75;pointer-events:none}
@keyframes bubble-up{from{background-position-y:14px}to{background-position-y:0}}
.theme-tube .nm{font-size:10.5px;max-width:76px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.theme-tube .v{font-size:10.5px;font-weight:650}

/* T5 领奖台 */
.theme-podium .podium{display:flex;align-items:flex-end;justify-content:center;gap:8px;min-height:130px}
.theme-podium .podium div{display:flex;flex-direction:column;align-items:center;justify-content:flex-end}
.theme-podium .who{display:flex;flex-direction:column;align-items:center;margin-bottom:3px}
.theme-podium .who i{width:9px;height:9px;border-radius:50%;background:var(--wine)}
.theme-podium .who u{width:10px;height:11px;background:var(--wine);border-radius:2px 2px 3px 3px;margin-top:1px}
.theme-podium .base{width:54px;border:1px solid var(--line);background:#efe8e0;border-radius:8px 8px 0 0;display:grid;place-items:center;font-size:12px;font-weight:700;color:var(--wine)}
.theme-podium .p1 .base{height:74px;background:var(--wine-soft);border-color:#e3cdcd}
.theme-podium .p2 .base{height:56px}
.theme-podium .p3 .base{height:42px}
.theme-podium .nm{font-size:10.5px;margin-top:3px}
.theme-podium .v{font-size:10px;color:var(--muted)}
.theme-podium .feed-i{display:flex;gap:7px;font-size:11.5px;padding:5px 0;border-top:1px solid #f1ece5}
.theme-podium .feed-i .t{width:18px;color:#b0a79e}

/* T6 环形进度 */
.theme-ring .rings{display:grid;grid-template-columns:repeat(3,1fr);gap:16px 10px}
.theme-ring .ring{width:78px;height:78px;border-radius:50%;justify-self:center;background:conic-gradient(var(--wine) calc(var(--p) * 1%), #f1ece5 0);display:grid;place-items:center;position:relative}
.theme-ring .ring::after{content:'';position:absolute;inset:7px;border-radius:50%;background:var(--paper)}
.theme-ring .ring .num{position:relative;z-index:1;font-size:15px;font-weight:700}
.theme-ring .ring .nm{position:absolute;bottom:-17px;font-size:10px;white-space:nowrap;color:var(--muted)}

/* v19 实时同步：状态点 + 3s 提示条 + 数字变化高亮 */
.sync-state{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;color:var(--muted);white-space:nowrap}
.sync-state .dot{width:7px;height:7px;border-radius:50%;background:var(--green);display:inline-block}
.sync-state .dot.off{background:#c9bfb6}
.detail-head .sync-state{margin-left:6px}
#sync-notice:empty{display:none}
.sync-bar{display:flex;align-items:center;gap:7px;margin:8px 14px 0;padding:7px 10px;border-radius:10px;background:#fdf6ec;color:#8a5f16;font-size:11.5px}
.sync-bar .x{border:0;background:none;color:#b0a79e;font-size:14px;margin-left:auto;line-height:1}
.person-card.bump{border-color:var(--wine);box-shadow:0 0 0 2px #773f4522;transition:box-shadow .2s}
.person-card.bump .person-counter b{color:var(--wine)}

/* v20 E3 编辑页语义动作区：每个按钮配一句话场景说明 */
.act-card{display:flex;flex-direction:column;gap:4px;align-items:flex-start}
.act-card .btn{width:100%;justify-content:center}
.act-card .act-desc{margin:0;font-size:10.5px;line-height:1.5;color:var(--muted)}
.act-card.off .act-desc{color:#a49a92}
/* v20 E5/E10 弹窗内：酒款编辑表单、人员搜索 */
.modal-body .form-grid{margin-top:4px}
.drink-edit{background:#fdfaf6;border-radius:10px;padding:10px;margin:6px 0}
.search{width:100%;border:1px solid var(--line);background:#fbf8f4;border-radius:9px;padding:6px 9px;font-size:12.5px;margin-bottom:6px}
.modal-body .hint{margin-top:9px;font-size:10.5px;line-height:1.55;color:var(--muted)}
.confirm-text{font-size:13px;line-height:1.6;margin-bottom:14px}
/* v21 E1/E2：人员卡 ⋯ 与「本场欠酒」虚线框 */
.person-actions .person-more{padding:0 10px;font-size:16px;line-height:1}
.debts{margin:8px 14px 0;border-radius:11px;border:1px dashed #ddcfc4;background:#fdfaf6;padding:8px 10px}
.debts-head{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:650;margin-bottom:6px}
.debt{display:flex;align-items:center;gap:6px;font-size:11.5px}
.debt + .debt{margin-top:6px;padding-top:6px;border-top:1px solid #f0e8e0}
.debt .who{font-weight:650}
.debt .debt-act{margin-left:auto;display:flex;gap:5px}

/* v21 批3：酒款一行 + 人员卡紧凑（高度约为改前的 2/3） */
.drink-line{padding:6px 14px 2px}
.drink-line .line-label{display:block;font-size:10px;color:var(--muted)}
.drink-line-row{display:flex;align-items:center;gap:5px;margin-top:1px;font-size:12.5px}
.drink-chips{display:inline-flex;align-items:center;gap:5px;flex-wrap:wrap}
.drink-name{border:0;background:none;padding:0;font-size:12.5px;color:var(--muted)}
.drink-name.on{color:var(--wine);font-weight:650}
.drink-sep{color:#e0d8ce;font-size:11px}
.drink-add{border:0;background:none;color:var(--muted);font-size:13px;padding:0 2px}
.drink-line-row .edit-link{margin-left:auto;font-size:11.5px;color:var(--wine)}
.people-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;padding:8px 14px}
.person-card{display:grid;grid-template-columns:1fr auto;gap:0 6px;align-items:center;padding:6px 8px;border-radius:10px;position:relative}
.person-card h3{grid-area:1/1;font-size:12px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.person-counter{grid-area:1/2;justify-self:end}
.person-counter b{font-size:15px;line-height:1.1;margin:0}
.person-counter span{font-size:9.5px}
.person-meta{grid-area:2/1/2/3;font-size:9.5px;margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.person-actions{grid-area:3/1/3/3;display:flex;gap:4px;margin-top:4px}
.person-actions .btn{min-height:0;padding:2px 0;font-size:11px;border-radius:6px}
.debt-mark{grid-area:4/1/4/3}
/* 进一步压缩：行高与空占位（欠酒标记空时不占高度），让卡片高度落在改前的 1/2~3/4 */
.drink-line{padding:4px 14px 2px}
.drink-line .line-label{line-height:1.3}
.person-card{line-height:1.35}
.person-meta{margin-top:0}
.person-actions{margin-top:3px}
.debt-mark{margin-top:2px;min-height:0;font-size:9.5px}
html.force-mobile .live-page .debt-mark{margin-top:2px;min-height:0}

/* v21 E5：编辑页视觉与结构对齐原型 design/20261022_原型_编辑页详情页_v20.html（尺寸/间距/字号按原型数值） */
.live-head{padding:11px 14px 0}
.live-title{font-size:15.5px;font-weight:650;margin-top:3px}
.back{font-size:13px;color:var(--muted);cursor:pointer}
.iconbtn{border:1px solid var(--line);background:var(--paper);border-radius:9px;width:30px;height:30px;font-size:12px;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.person-actions .btn{flex:1;font-weight:650;border-color:var(--wine);color:var(--wine)}
.person-actions .btn.primary{background:var(--wine);border-color:var(--wine);color:#fff}
.person-actions .person-more{flex:0 0 28px;font-size:13px;color:var(--muted);border-color:var(--line)}
.person-card.bump{border-color:var(--wine)}
.person-card.bump .person-counter b{color:var(--wine)}
.timeline .event{padding:6px 0;border-top:1px solid #f1ece5}
.timeline .event-time{width:44px;flex:0 0 44px;font-size:10px;color:#b0a79e}
.timeline .event:first-child{border-top:0}

/* v20 E8/E9：合并动态流与喝酒速度图 */
.stream-item .moment-text{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.speed-chart{margin-top:4px}
.speed-legend{display:flex;gap:6px;overflow-x:auto;padding-bottom:4px;-webkit-overflow-scrolling:touch}
.speed-key{flex:0 0 auto;display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);background:#fff;border-radius:999px;padding:3px 9px;font-size:11px;color:var(--ink)}
.speed-key i{width:8px;height:8px;border-radius:50%;display:inline-block}
.speed-key.off{opacity:.38;text-decoration:line-through}
.speed-chart svg{width:100%;height:150px;margin-top:4px}
.speed-line{fill:none;stroke-linecap:round;stroke-linejoin:round}
.speed-chart circle{fill:#fff;stroke-width:1.2}
.speed-grid{stroke:#efe9e2;stroke-width:1}
.speed-ylabel,.speed-chart text{font-size:8px;fill:var(--muted)}
.speed-foot{font-size:10.5px;color:var(--muted);margin-top:2px}
.panel.fold>summary{cursor:pointer;list-style:none}
.panel.fold>summary::-webkit-details-marker{display:none}

/* v20 E1 封存条 / E6 动态媒体与记录人 */
.sealed-bar{display:flex;align-items:center;gap:6px;margin:8px 0 12px;padding:7px 10px;border-radius:10px;background:#f4f0ea;color:#7c7168;font-size:11.5px}
.event-by{color:var(--muted)}
.moment-media{display:grid;gap:4px;margin:6px 0}
.moment-media.cols-1{grid-template-columns:1fr}
.moment-media.cols-2{grid-template-columns:repeat(2,1fr)}
.moment-media.cols-3{grid-template-columns:repeat(3,1fr)}
.moment-media img,.moment-media video{width:100%;aspect-ratio:1/1;object-fit:cover;border-radius:8px;background:#efe9e2}
.moment-media video{aspect-ratio:16/9}
.moment-picked{font-size:11px;color:var(--muted);white-space:nowrap}

/* v20 E7 动态条目的删除按钮 */
.event .event-del{border:0;background:none;color:#c3b9b0;font-size:11px;padding:2px 4px;margin-left:auto}
.event .event-del:hover{color:var(--wine)}

/* v18 E9 编辑页底部工具区 */
.tool-bar{margin-top:10px;padding-top:9px;border-top:1px solid #f1ece5}
.moment-form{display:flex;gap:6px;margin-top:8px}
.moment-form input{flex:1;border:1px solid var(--line);background:var(--paper);border-radius:9px;padding:6px 9px;font-size:12.5px}
.drink-row{padding:6px 0;border-top:1px solid #f1ece5}
.post-author .tags{margin-left:auto;display:flex;gap:5px;flex-shrink:0}
.post-text{margin:8px 0 0;font-size:14px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.post-text-toggle{display:block;width:100%;padding:0;text-align:left}
/* P02-10：展开态作用在外层容器上；正文不再嵌在「展开全文」按钮内 */
.post-text-wrap.open .post-text{display:block;overflow:visible;-webkit-line-clamp:unset}
.post-expand{display:block;margin-top:3px;font-size:12px;color:var(--wine);font-weight:600}
.media-grid{display:grid;gap:5px;margin-top:9px}
.media-grid .cell{position:relative;border-radius:10px;overflow:hidden;background:#e7dccd;padding:0}
.media-grid .cell img{width:100%;height:100%;object-fit:cover;display:block}
.media-grid.n1{grid-template-columns:1fr}
.media-grid.n1 .cell{aspect-ratio:4/3}
.media-grid.n2{grid-template-columns:repeat(2,1fr)}
.media-grid.n3{grid-template-columns:repeat(3,1fr)}
.media-grid.n4{grid-template-columns:repeat(2,1fr)}
.media-grid.n9{grid-template-columns:repeat(3,1fr)}
.media-grid.n2 .cell,.media-grid.n3 .cell,.media-grid.n4 .cell,.media-grid.n9 .cell{aspect-ratio:1}
.media-grid .badge{position:absolute;left:6px;bottom:6px;display:inline-flex;align-items:center;gap:4px;background:#302b2999;color:#fff;border-radius:6px;padding:2px 6px;font-size:10px}
.media-grid .badge .ico{width:11px;height:11px}
.media-grid .more-n{position:absolute;inset:0;display:grid;place-items:center;background:#302b2959;color:#fff;font-size:15px;font-weight:650}
.post-actions{display:flex;align-items:center;gap:4px;margin-top:9px;padding-top:8px;border-top:1px solid #f3efe9;flex-wrap:wrap}
.act{display:inline-flex;align-items:center;gap:5px;padding:5px 9px;border-radius:9px;font-size:12px;color:var(--muted)}
.act .ico{width:15px;height:15px}
.act.on{color:var(--wine);background:var(--wine-soft);font-weight:600}
.act.right{margin-left:auto}
.act[disabled]{opacity:.55}
/* 触底三态 */
.load-more.loading{color:var(--wine)}
.load-more .retry{color:var(--wine);font-weight:600;font-size:12px}
/* 兼容旧结构（存档页等仍用 .gather-ended） */
.cards>.gather-ended>.memory-card{width:100%;max-height:none;overflow:visible}

/* ---------------- v19 · 相册（资产清单信息流） ---------------- */
.album-header{padding:14px 14px 0;background:var(--bg)}
.album-line1{display:flex;align-items:center;gap:8px}
.album-upload{margin-left:auto;background:none;border:0;font-size:12px;color:var(--wine);display:inline-flex;align-items:center;gap:4px;padding:4px 2px}
.album-upload .ico{width:14px;height:14px}
.album-count{margin-top:6px;font-size:11px;color:var(--muted)}
.sort-row{display:flex;gap:18px;margin-top:10px;border-bottom:1px solid var(--line)}
.sort-tab{background:none;border:0;font-size:12.5px;color:var(--muted);padding:6px 1px 9px;position:relative}
.sort-tab.active{color:var(--ink);font-weight:650}
.sort-tab.active::after{content:'';position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--wine);border-radius:2px}
.sort-tab .arw{font-size:10px;margin-left:2px}
.album-feed{padding:8px 14px 40px}
.album-date{display:flex;align-items:baseline;gap:6px;margin:12px 0 6px}
.album-date b{font-size:12px;font-weight:650}
.album-row{display:grid;grid-template-columns:56px 1fr auto;gap:10px;align-items:center;background:var(--paper);border:1px solid var(--line);border-radius:12px;padding:8px 10px;margin-bottom:6px;cursor:pointer}
.album-row.dead .album-title{color:#9b918a}
.album-thumb{width:56px;height:56px;border-radius:9px;overflow:hidden;background:#ece7e1;display:grid;place-items:center}
.album-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.album-title{font-size:13px;font-weight:650;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.album-title .album-kind{font-weight:400;color:var(--muted);font-size:11.5px;margin-left:3px}
.album-sub{font-size:11px;color:var(--muted);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.album-side{display:flex;align-items:center;gap:6px}
.album-more{background:none;border:0;color:#c3b9ae;font-size:15px;line-height:1;padding:0 2px}
.album-more.is-clickable{color:var(--wine);font-size:12px}
.album-more,.load-more{text-align:center;font-size:11.5px;color:#b6ab9d;padding:10px 0 16px}

/* ---------------- v19 · 相册管理总页 ---------------- */
.admin-head{display:flex;align-items:baseline;gap:10px;padding:16px 20px 0}
.admin-head h2{font-size:17px;font-weight:650}
.admin-who{margin-left:auto;font-size:11.5px;color:var(--muted)}
.admin-sum{padding:10px 20px 0;font-size:12px;color:var(--muted);display:flex;gap:12px;flex-wrap:wrap}
.admin-filters{display:flex;gap:8px;padding:12px 20px 0;flex-wrap:wrap;align-items:center}
.admin-filters .filter{font-size:11.5px}
.admin-wrap{padding:14px 20px 30px}
.admin-sub{font-size:11px;color:#b0a493;letter-spacing:1.5px;margin:14px 0 6px;text-transform:uppercase}
.admin-table{width:100%;border-collapse:collapse;font-size:12px}
.admin-table th{text-align:left;font-weight:600;color:var(--muted);font-size:11px;padding:6px 8px;border-bottom:1px solid var(--line)}
.admin-table td{padding:8px;border-bottom:1px solid #f1ece5;vertical-align:middle}
.admin-table td.num{text-align:right;font-variant-numeric:tabular-nums}
.admin-table tr:hover td{background:#fbf8f4}
.admin-circle{cursor:pointer}
.admin-file{display:flex;align-items:center;gap:9px}
.admin-thumb{width:32px;height:32px;border-radius:7px;object-fit:cover;flex:none;background:#ece7e1}
.admin-ops{display:flex;gap:6px}
.admin-ops button{background:none;border:0;font-size:11.5px;color:var(--wine);padding:0}
.admin-ops button:last-child{color:var(--muted)}

/* v17 E5 · 个人页：账号卡 + 分组列表 + 数据展示主题 */
.acc-card{display:flex;align-items:center;gap:12px;margin:12px 0;padding:14px;background:var(--paper);border:1px solid var(--line);border-radius:16px;box-shadow:0 2px 10px #493f2f10}
.acc-card .avatar{flex:none;box-shadow:0 0 0 2px var(--paper),0 0 0 3px var(--wine-soft)}
.acc-main{flex:1;min-width:0}
.acc-main b{display:block;font-size:16px;font-weight:650}
.acc-main .muted{display:block;font-size:11px;color:var(--muted)}
.acc-sig{margin:4px 0 0;font-size:12px;line-height:1.5;color:#6f665f;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.acc-sig.empty{color:#b0a79e}
.me-group{margin:16px 0 0}
.me-group-label{font-size:11px;color:#a89c8f;letter-spacing:1px;margin-bottom:6px}
.theme-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.theme-chip{border:1px solid var(--line);border-radius:10px;background:#fbf8f4;padding:9px 6px;font-size:11px;color:#6f665f;font-family:inherit}
.theme-chip.on{border-color:var(--wine);background:var(--wine-soft);color:var(--wine);font-weight:650}
.field-pair{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.conflict-row{display:flex;align-items:center;gap:10px;margin:10px 0;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:#fbf8f4;font-size:12.5px}
.conflict-row .avatar{flex:none;width:34px;height:34px;font-size:12px}
.conflict-copy{flex:1;min-width:0}
.conflict-row small{display:block;font-size:11px;color:var(--muted)}

/* v17 E6 · 我的主页：头图 + 大头像 + 签名金句 + 数据条；返回键进安全区不压信息 */
.person-hero{position:relative;margin:0 -14px;padding:0 16px 14px;color:#fff;overflow:hidden;
  background:linear-gradient(150deg,#5c2f36 0%,#773f45 42%,#a77227 130%)}
.person-hero::before{content:'';position:absolute;width:220px;height:220px;right:-60px;top:-70px;border-radius:50%;
  background:radial-gradient(circle at 40% 40%,#ffd9a366,transparent 62%)}
.person-hero::after{content:'';position:absolute;width:180px;height:180px;left:-40px;bottom:-80px;border-radius:50%;
  background:radial-gradient(circle at 50% 50%,#ffffff2e,transparent 60%)}
/* P12-05 看一看作者行：头像 + 昵称一起可点，进个人页 */
.author-link{display:flex;align-items:center;gap:8px;background:none;border:0;padding:0;color:inherit;font:inherit;cursor:pointer;text-align:left;flex:none}
.author-link b{font-size:14px}
button.author-link:hover b{color:var(--amber)}
/* P12-06/07 个人页头部（本人与他人同构） */
.person-head{align-items:flex-start}
.person-id{display:flex;gap:14px;align-items:flex-start;flex:1;min-width:0}
.person-id .avatar{flex:none;box-shadow:0 6px 16px #2b1c1426}
.person-id-copy{min-width:0}
.person-id-copy b{font-size:22px;display:block}
.person-id-copy small{color:var(--muted);font-size:12px}
.person-signature{margin:6px 0 0;color:var(--muted);font-size:13px}
.person-title{margin:4px 0 0;font-size:13px}
.person-chips{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}
.person-head-action{flex:none}
/* P12-10 趋势折线 */
.line-chart{position:relative}
.line-axis{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;margin-bottom:4px}
.line-chart svg{width:100%;height:120px;display:block}
.line-path{fill:none;stroke:var(--amber);stroke-width:2;stroke-linejoin:round;stroke-linecap:round}
.line-area{fill:var(--amber);opacity:.12;stroke:none}
.line-chart circle{fill:var(--amber)}
.line-labels{display:flex;justify-content:space-between;color:var(--muted);font-size:11px;margin-top:4px}
/* P12-11 限高列表：展开后解除限制 */
.clamp-list[data-clamp]{max-height:420px;overflow:hidden}
.clamp-list[data-clamp].open{max-height:none;overflow:visible}
.clamp-rest[hidden]{display:none}
.person-cal-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}
.calendar-day .tick{display:block;font-size:10px;color:var(--amber);line-height:1}
.hero-safe{height:56px}
.hero-id{display:flex;align-items:center;gap:12px;position:relative;z-index:2}
.hero-id .avatar{flex:none;box-shadow:0 0 0 3px #ffffffcc,0 8px 20px #2b1c1466}
.hero-id b{display:block;font-size:22px;font-weight:700;letter-spacing:.5px;text-shadow:0 2px 8px #2b1c1455}
.hero-id small{font-size:12px;opacity:.85}
.hero-meta{display:flex;gap:8px;margin-top:12px;position:relative;z-index:2;flex-wrap:wrap}
.hero-chip{font-size:11px;padding:3px 9px;border-radius:20px;background:#ffffff26;border:1px solid #ffffff3d}
/* P12-13：上浮量 ≤18px，不再遮挡头图内的身份行与 chip */
.person-sheet{margin:-18px 0 0;background:var(--paper);border:1px solid var(--line);border-radius:20px;padding:14px;position:relative;z-index:2;box-shadow:0 6px 20px #493f2f1a}
/* P12-12：签名最多 2 行，超出截断，不撑高卡片 */
.person-quote{font-size:15px;line-height:1.6;color:#3b332e;font-weight:600;text-align:center;padding:2px 6px 12px;border-bottom:1px dashed var(--line);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.person-quote.empty{color:#b0a79e;font-weight:400}
/* P12-12：无签名时卡片只剩数据条一行，收缩高度 */
.person-sheet.no-quote .person-metrics{padding-top:2px}
.empty-action{margin-top:10px}
/* v22 E1/E2：头图内的动作按钮 + 上浮卡的四格数据条 */
.hero-action{position:absolute;right:12px;top:calc(12px + env(safe-area-inset-top,0px));z-index:3}
.hero-action .btn{background:#ffffff2e;border:1px solid #ffffff59;color:#fff;backdrop-filter:blur(6px)}
.hero-action .btn.primary{background:#fff;border-color:#fff;color:var(--wine)}
.person-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;padding-top:12px}
.person-metric{text-align:center}
.person-metric b{display:block;font-size:19px;font-weight:700;color:var(--wine)}
.person-metric span{font-size:10.5px;color:var(--muted)}
.kv-tag{font-size:10px;color:var(--green);background:var(--green-soft);border-radius:6px;padding:1px 6px;margin-left:6px}
.hint-line{font-size:11px;color:var(--muted);line-height:1.6;margin:14px 0 0}
.auth-sso{margin-top:12px;border-top:1px solid var(--line);padding-top:12px;text-align:center}
.auth-sso .btn{width:100%}
.auth-sso small{display:block;margin-top:6px;font-size:11px}

/* ============================================================
   v100 · 聚会编辑页与详情页重构
   覆盖顺序：本段在文件末尾，优先级高于前面同名规则
   ============================================================ */

/* E5 编辑页头部：两行（行1 = 返回/状态/标题/⋯，行2 = 时间·地点·人数 + 实时点） */
.live-head{padding:10px 14px 2px}
.live-row1{display:flex;align-items:center;gap:7px}
.live-row1 .back{font-size:14px;color:var(--muted);cursor:pointer;flex:0 0 auto}
.live-row1 .pill{flex:0 0 auto}
.live-head .live-title{flex:1;min-width:0;font-size:15.5px;font-weight:650;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.live-head .iconbtn{width:28px;height:28px;font-size:13px}
.live-row2{display:flex;align-items:center;gap:8px;margin-top:3px;font-size:11px;color:var(--muted)}
.live-row2 .sync-state{margin-left:auto}

/* E7 酒款条：分段 chip（带容器、热区 ≥28px） */
.drink-line{padding:8px 14px 4px}
.drink-line .line-label{display:block;font-size:10.5px;color:var(--muted);margin-bottom:4px}
.drink-line-row{display:flex;align-items:center;gap:6px;font-size:12.5px}
.drink-chips{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.drink-name{border:1px solid var(--line);background:var(--paper);border-radius:999px;padding:0 11px;min-height:28px;display:inline-flex;align-items:center;font-size:12.5px;color:var(--muted)}
.drink-name.on{background:var(--wine);border-color:var(--wine);color:#fff;font-weight:650}
.drink-sep{display:none}
.drink-add{border:1px dashed var(--line);background:none;color:var(--muted);font-size:14px;width:28px;height:28px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;padding:0}
.drink-line-row .edit-link{margin-left:auto;font-size:11.5px;color:var(--wine)}

/* E4 人员卡：目标 108–124px，按钮 32px，明细最多 2 行 */
.people-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px;padding:8px 14px}
.person-card{display:block;padding:9px 10px;border:1px solid var(--line);border-radius:11px;background:var(--paper);position:relative}
.person-card .person-top{display:flex;align-items:center;gap:6px;min-width:0}
.person-card .person-top .avatar{width:22px;height:22px;font-size:10px;border-width:0;flex:0 0 auto}
.person-card h3{flex:1;min-width:0;font-size:12.5px;font-weight:650;margin:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.person-counter{flex:0 0 auto;display:flex;align-items:baseline;gap:2px}
.person-counter b{font-size:18px;font-weight:700;line-height:1.1;color:var(--wine)}
.person-counter span{font-size:10px;color:var(--muted)}
.person-card .person-meta{margin:5px 0 0;font-size:10px;line-height:1.45;color:var(--muted);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:14px}
.person-actions{display:flex;gap:4px;margin-top:7px}
.person-actions .btn{flex:1;min-height:32px;padding:0;font-size:12px;font-weight:650;border-radius:8px;border-color:var(--wine);color:var(--wine)}
.person-actions .btn.primary{background:var(--wine);border-color:var(--wine);color:#fff}
.person-actions .person-more{flex:0 0 30px;min-height:32px;font-size:14px;color:var(--muted);border-color:var(--line)}
.debt-mark{margin-top:4px;font-size:10px;color:var(--amber);min-height:0}
.debt-mark:empty{display:none}

/* E11 详情页头部：主题 → 元信息行（地点 - 人数 + 编辑） */
.detail-head{padding:12px 14px 4px}
.detail-top{display:flex;align-items:center;gap:8px}
.detail-top .pill{flex:0 0 auto}
.detail-title{flex:1;min-width:0;margin:0;font-size:17px;font-weight:650;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.detail-top .sync-state{flex:0 0 auto}
.detail-sub{margin-top:4px;font-size:11.5px;color:var(--muted)}
.detail-meta-row{display:flex;align-items:center;gap:10px;margin-top:8px}
.detail-place{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--ink);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.detail-place .ico,.detail-place svg{width:14px;height:14px;flex:0 0 auto}
.detail-acts{margin-left:auto;display:flex;gap:6px;flex:0 0 auto}

/* E15 精彩瞬间 */
.hl-story{margin:0 0 10px;font-size:13px;line-height:1.6;color:#3b332e;font-weight:600;text-align:center;padding:0 4px 10px;border-bottom:1px dashed var(--line)}
.hl-lines{margin-top:10px;display:flex;flex-direction:column;gap:6px}
.hl-line{display:flex;align-items:center;gap:6px;font-size:12px;line-height:1.5;padding:6px 9px;border-radius:9px;background:#fdfaf6;border:1px dashed #e6dbcf}
.hl-tag{flex:0 0 auto;font-size:10px;padding:1px 6px;border-radius:6px;background:var(--green-soft);color:var(--green);font-weight:650}
.hl-tag.amber{background:#fdf0dc;color:#8a5f16}
.hl-line b{font-weight:650}

/* E13 排行榜：只取前 4 名，前 3 领奖台 + 第 4 名台下一行 */
.theme-podium .podium{display:flex;align-items:flex-end;justify-content:center;gap:8px;min-height:132px}
.theme-podium .podium>div{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;flex:1 1 0;min-width:0}
.theme-podium .pod-empty{min-height:0}
.theme-podium .who{display:flex;flex-direction:column;align-items:center;margin-bottom:3px}
.theme-podium .who i{width:9px;height:9px;border-radius:50%;background:var(--wine)}
.theme-podium .who u{width:10px;height:11px;background:var(--wine);border-radius:2px 2px 3px 3px;margin-top:1px}
.theme-podium .base{width:100%;max-width:62px;border:1px solid var(--line);background:#efe8e0;border-radius:9px 9px 0 0;display:grid;place-items:center;font-size:13px;font-weight:700;color:var(--wine)}
.theme-podium .p1 .base{height:84px;background:var(--wine-soft);border-color:#e3cdcd}
.theme-podium .p2 .base{height:56px}
.theme-podium .p3 .base{height:40px}
.theme-podium .nm{font-size:11px;margin-top:4px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.theme-podium .v{font-size:10.5px;color:var(--muted)}
.theme-podium .pod-fourth{display:flex;align-items:center;gap:7px;margin-top:10px;padding:7px 10px;border-radius:10px;background:#fbf8f4;border:1px solid var(--line);font-size:12px}
.theme-podium .pod-fourth .t{flex:0 0 20px;height:20px;border-radius:50%;background:#efe8e0;color:var(--muted);font-size:11px;font-weight:700;display:grid;place-items:center}
.theme-podium .pod-fourth .nm{font-weight:650;margin:0}
.theme-podium .pod-fourth .v{margin-left:auto}

/* E14 环形进度：SVG 渐变描边 + 0.9s 生长动画 */
/* P06-09：1 行 3 人起排，超出横向滚动；环径与配色按名次递减 */
.theme-ring .rings{display:flex;gap:10px;justify-content:flex-start;overflow-x:auto;padding:8px 2px 0}
.ring-cell{position:relative;flex:0 0 auto;width:88px;display:flex;flex-direction:column;align-items:center}
.ring-cell.g2{width:78px}
.ring-cell.g3{width:70px}
.ring-cell.g4{width:62px;opacity:.85}
.ring-cell .ring{width:100%;height:auto;transform:rotate(-90deg);overflow:visible}
.ring-bg{fill:none;stroke:#f1ece5;stroke-width:9}
.ring-fg{fill:none;stroke-width:9;stroke-linecap:round;stroke-dasharray:var(--c);stroke-dashoffset:var(--c);
  animation:ring-grow .9s cubic-bezier(.2,.8,.2,1) var(--delay,0ms) both}
@keyframes ring-grow{to{stroke-dashoffset:calc(var(--c) * (1 - var(--p) / 100))}}
.ring-mid{position:absolute;top:0;left:0;right:0;aspect-ratio:1;display:grid;place-items:center;align-content:center;pointer-events:none}
.ring-mid b{font-size:13px;font-weight:700;color:var(--ink);line-height:1}
.ring-cell.g1 .ring-mid b{font-size:16px}
.ring-cell.g1 .ring-fg{filter:drop-shadow(0 0 4px #f5c542aa)}
.ring-cell.g2 .ring-fg{stroke-width:6}
.ring-cell.g3 .ring-fg{stroke-width:5}
/* 排名越低特效越差：灰虚线、无渐变 */
.ring-cell.g4 .ring-fg{stroke:#9A9A9A;stroke-width:4;stroke-dasharray:6 4}
.ring-mid small{font-size:9.5px;color:var(--muted);margin-top:1px}
.ring-cell .nm{font-size:11px;margin-top:5px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* v100：grid 子项默认 min-width:auto 会被「喝酒速度」的 6 个图例 chip 撑破 390px 壳，必须收缩 */
.stack > .panel{min-width:0;max-width:100%}
.speed-legend{flex-wrap:wrap}
/* P06-02：速度图曲线往下拓展（人多也能下拉看完）；点曲线上的点可显示/隐藏该人 */
.speed-chart svg{height:220px}
.speed-dot{cursor:pointer}

/* E16 动态流切换按钮 */
.stream-toggle{flex:0 0 auto;white-space:nowrap}
/* P04-08 动态栏三类内容勾选 */
.stream-filters{display:flex;align-items:center;gap:10px;margin-left:auto;flex:0 0 auto}
.stream-filters .check-field{margin:0;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:4px;white-space:nowrap}
.stream-filters .check-field input{width:14px;height:14px;margin:0}
/* P04-10：单张大图限高，不要撑成方形 */
.moment-media.cols-1 img{max-height:180px}
.panel-head .stream-toggle{margin-left:auto}
.kv-list{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:2px 14px}
.kv-row{display:flex;align-items:center;padding:9px 0;border-top:1px solid #f4efe9;font-size:12.5px}
.kv-row:first-child{border-top:0}

/* East Saibo · step 01: gathering cards only. Values mirror design/east_saibo_style/tokens.css;
   runtime stylesheet cannot fetch files outside server/public. Global tokens migrate in step 02. */
.memory-card,.gather-hero{background:var(--ds-surface,#fff);border:1px solid var(--ds-border,rgba(26,26,26,.08));border-radius:var(--ds-radius-card,20px);box-shadow:var(--ds-shadow-card,0 4px 12px rgba(0,0,0,.05))}
.memory-card{color:var(--ds-ink,#1a1a1a)}
.memory-card:hover{box-shadow:0 8px 22px rgba(0,0,0,.07)}
.memory-card:focus-visible,.gather-hero button:focus-visible{outline:2px solid var(--ds-brand,#9a2a2a);outline-offset:3px}
.memory-card .memory-art{background:var(--ds-bronze-soft,#edf1ed)}
.memory-card .memory-art.is-empty-art::after,.gather-hero .hero-art.is-empty-art::after{content:"";position:absolute;inset:0 0 0 55%;pointer-events:none;background:repeating-linear-gradient(45deg,transparent 0 22px,rgba(74,93,78,.07) 23px 24px,transparent 25px 46px),repeating-linear-gradient(-45deg,transparent 0 22px,rgba(74,93,78,.07) 23px 24px,transparent 25px 46px);mask-image:linear-gradient(to right,transparent,#000)}
/* 步骤 01 修复：模板输出 .card-date（日 + 月），此前只有旧 .pill.date 规则，日期块裸文本无样式 */
.memory-card .memory-art .card-date{position:absolute;left:10px;bottom:10px;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:40px;padding:5px 7px;border-radius:10px;background:var(--ds-brand-soft,#f7ebeb);border:1px solid rgba(154,42,42,.12);color:var(--ds-brand,#9a2a2a);line-height:1.05}
.memory-card .memory-art .card-date b{font-family:var(--ds-font-display,"Songti SC",SimSun,serif);font-size:17px;font-weight:700}
.memory-card .memory-art .card-date span{font-size:10px;letter-spacing:.04em;opacity:.85}
.memory-card .memory-art .card-date.is-text{flex-direction:row;font-size:11px;font-weight:650;padding:4px 8px}
html.force-mobile .memory-card .memory-art .card-date{left:6px;bottom:6px;min-width:34px;padding:4px 6px}
html.force-mobile .memory-card .memory-art .card-date b{font-size:15px}
.memory-card .memory-copy h3{color:var(--ds-ink,#1a1a1a);font-weight:700}
.memory-card .memory-meta,.memory-card .memory-foot .micro,.memory-card .memory-status{color:var(--ds-text-secondary,#6e6e73)}
.memory-card .memory-status.ongoing{color:var(--ds-bronze,#4a5d4e)}
.memory-card .memory-status.ongoing .dot{background:var(--ds-bronze,#4a5d4e)}
.memory-card .memory-foot .avatar,.memory-card .cover-faces .avatar,.gather-hero .avatar{border:2px solid #fff}
.memory-card.is-ended{opacity:1;filter:none}
.memory-card.is-ended .memory-art img,.memory-card.is-ended .memory-art svg{filter:saturate(.75)}
.memory-card.is-ended .memory-art.is-empty-art::after{opacity:.65}
.gather-item .float-actions .icon-act{background:#fff;color:var(--ds-text-secondary,#6e6e73);border-color:var(--ds-border,rgba(26,26,26,.08));box-shadow:0 1px 4px rgba(0,0,0,.05)}
.gather-item .float-actions .icon-act:hover,.gather-item .float-actions .icon-act.start{color:var(--ds-brand,#9a2a2a)}
.gather-item .float-actions .icon-act.pin.active{color:var(--ds-bronze,#4a5d4e);background:var(--ds-bronze-soft,#edf1ed)}
.gather-hero{overflow:hidden}
.gather-hero .hero-art{background:var(--ds-bronze-soft,#edf1ed)}
.gather-hero h2{color:var(--ds-ink,#1a1a1a);font-family:var(--ds-font-display,"Songti SC",SimSun,serif);font-weight:600}
.gather-hero .subtitle,.gather-hero .hero-stats{color:var(--ds-text-secondary,#6e6e73)}
.gather-hero .hero-stats b{color:var(--ds-ink,#1a1a1a)}
.gather-hero .pill.green{background:var(--ds-bronze-soft,#edf1ed);color:var(--ds-bronze,#4a5d4e)}
.gather-hero .btn.primary{background:var(--ds-brand,#9a2a2a);border-color:var(--ds-brand,#9a2a2a);color:#fff}
.gather-hero .btn.primary:hover{background:var(--ds-brand-hover,#802323)}
.gather-hero .btn:not(.primary){background:#fff;border-color:rgba(74,93,78,.25);color:var(--ds-bronze,#4a5d4e)}
@media(prefers-reduced-motion:reduce){.memory-card{transition:none}.memory-card:hover{transform:none}}
.kv-row span{width:74px;flex:none;color:var(--muted)}
.kv-row b{font-weight:600}