:root{--ink:#302e40;--muted:#777486;--paper:#fffdf9;--line:#e9e2d8;--purple:#6852ba;--purple-dark:#4d3a92;--teal:#1e7b76;font-family:"Microsoft YaHei","PingFang SC",system-ui,sans-serif;color:var(--ink)}
*{box-sizing:border-box}html,body{min-height:100%}body{min-width:320px;min-height:100vh;margin:0;background:var(--paper);display:flex;flex-direction:column}button,input,textarea,select{font:inherit}button{cursor:pointer}a{color:inherit}[hidden]{display:none!important}
.site-header{min-height:62px;display:flex;align-items:center;justify-content:flex-end;padding:0 max(4vw,30px);border-bottom:1px solid var(--line);background:rgba(255,253,249,.94);position:sticky;top:0;z-index:20;backdrop-filter:blur(14px)}
.account-status{display:flex;align-items:center;gap:8px;color:#817d8c;font-size:12px}.account-status strong{color:#4f4a60;font-size:13px}.status-dot{width:7px;height:7px;border-radius:50%;background:#4ead75;box-shadow:0 0 0 3px #4ead7519}.login-link,.logout-button{border:0;padding:0 0 0 8px;border-left:1px solid #ddd7cf;color:#786f8b;background:none;font-size:12px;text-decoration:none}.login-link:first-child{border-left:0;padding-left:0}.logout-button:hover,.login-link:hover{color:#59469f}.header-avatar{width:22px;height:22px;display:inline-grid;place-items:center;border-radius:50%;vertical-align:middle;object-fit:cover;background:#7e6ac4;color:#fff;font-size:11px}.user-account{display:flex;align-items:center;gap:5px}
.board-shell{width:min(1180px,calc(100% - 40px));margin:0 auto;flex:1 0 auto}.board-switcher{display:flex;justify-content:center;gap:7px;padding:24px 0 2px}.board-switcher a{padding:9px 15px;border:1px solid #e3ddd5;border-radius:999px;color:#6e6b7c;background:#fff;font-size:13px;font-weight:800;text-decoration:none;transition:.18s}.board-switcher a:hover,.board-switcher a.active{border-color:var(--purple);color:#fff;background:var(--purple);box-shadow:0 6px 14px #6852ba22}.board-pane{padding:28px 0 72px}.board-heading{display:flex;align-items:end;justify-content:space-between;gap:20px;padding-bottom:21px;border-bottom:1px solid var(--line)}.eyebrow{margin:0 0 9px;color:#8574c8;font-size:11px;font-weight:800;letter-spacing:.14em}.board-heading h1{margin:0;color:#39354d;font-size:31px;letter-spacing:-.05em}.board-heading p:not(.eyebrow){margin:8px 0 0;color:var(--muted);font-size:13px;line-height:1.7}
.publish-button{border:0;border-radius:9px;padding:11px 16px;color:#fff;background:linear-gradient(110deg,#806bd0,#5b46a9);box-shadow:0 8px 17px #6852a52d;font-size:13px;font-weight:800;transition:.2s}.publish-button:hover{transform:translateY(-2px);box-shadow:0 12px 22px #6852a23b}.publish-button:disabled{opacity:.55;cursor:not-allowed;transform:none}.tag-filter-bar{display:flex;justify-content:flex-end;margin:18px 0 13px}.tag-option-list{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.tag-filter-toggle,.tag-option{border:1px solid #e3ddd5;border-radius:999px;padding:8px 13px;color:#777384;background:#fff;font-size:12px;font-weight:800}.tag-option.active{border-color:var(--purple);color:#fff;background:#513ba5;position:relative;padding-right:28px;box-shadow:0 4px 10px #513ba526}.tag-option.active:after{content:"×";position:absolute;top:3px;right:4px;width:14px;height:14px;display:grid;place-items:center;border-radius:50%;color:#513ba5;background:#fff;font-size:12px;line-height:1}.tag-filter-toggle{color:#5f5970}.tag-filter-panel{display:flex;align-items:flex-start;gap:10px;margin:-4px 0 16px;padding:11px;border:1px solid #e5dfd6;border-radius:10px;background:#fff;box-shadow:0 9px 20px rgba(55,43,84,.05)}.tag-option{padding:7px 10px;background:#f9f7fb}.clear-tags{align-self:center;flex:0 0 auto;border:0;padding:7px 0 7px 11px;border-left:1px solid #e5dfd7;color:#70658f;background:none;font-size:11px;font-weight:800;white-space:nowrap}.clear-tags.is-placeholder{visibility:hidden;pointer-events:none}.clear-tags:hover{color:#5140a1;text-decoration:underline}
.post-grid,.tool-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.post-card{min-height:231px;display:flex;flex-direction:column;padding:17px;border:1px solid #e6e0d9;border-radius:13px;background:#fff;box-shadow:0 7px 18px rgba(47,39,72,.04);cursor:pointer}.post-card:focus-visible{outline:3px solid #b7a8ea;outline-offset:2px}.post-card.with-image{min-height:357px}.post-top,.post-card footer{display:flex;align-items:center;justify-content:space-between;gap:10px}.post-type{display:inline-flex;padding:5px 8px;border-radius:6px;color:#6857a8;background:#f0ecfb;font-size:10px;font-weight:800}.post-type.tavern{color:#a95e30;background:#fff1df}.post-top time{color:#aaa5ae;font-size:10px}.post-gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:3px;height:126px;overflow:hidden;margin:11px 0 0;border-radius:8px;background:#eee9e3}.post-gallery img{width:100%;height:100%;object-fit:cover}.post-card h2{margin:13px 0 8px;color:#3d394d;font-size:16px;line-height:1.5}.post-card>p{margin:0;color:#777485;font-size:12px;line-height:1.72}.tag-row{display:flex;flex-wrap:wrap;gap:6px;margin:13px 0 auto}.tag-row span{padding:4px 6px;border-radius:4px;color:#8d8796;background:#f7f5f1;font-size:10px}.post-card footer{margin-top:15px;padding-top:13px;border-top:1px solid #eee9e3;color:#8a8593;font-size:11px}.author-link{padding:0;background:none;font-size:11px;font-weight:800;color:#57507a;text-decoration:underline;text-decoration-color:#cdc6e7;text-underline-offset:3px}.post-stats{display:inline-flex;align-items:center;gap:9px;flex:0 0 auto;color:#77708a;font-size:11px;font-weight:700;white-space:nowrap}.board-empty{padding:35px;border:1px dashed #ddd6cb;border-radius:11px;color:#8b8791;text-align:center;font-size:12px}.trade-trust-note{display:flex;align-items:center;gap:13px;margin:18px 0;padding:13px 15px;border:1px solid #ddd6ed;border-radius:10px;color:#625d71;background:#faf8fe;font-size:12px;line-height:1.65}.note-icon{width:29px;height:29px;display:grid;place-items:center;flex:0 0 29px;border-radius:8px;color:#5d47a8;background:#ece5fb;font-weight:900}.trade-trust-note strong{display:block;margin-bottom:3px;color:#514978}
.tool-card{min-height:184px;display:flex;flex-direction:column;padding:19px;border:1px solid #dfeae7;border-radius:13px;background:linear-gradient(145deg,#f4fcfa,#fff 70%)}.tool-card.with-image{min-height:275px}.tool-gallery{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(2,1fr);gap:3px;height:118px;overflow:hidden;margin:-3px -3px 15px;border-radius:9px;background:#e4efed}.tool-gallery a{display:block;overflow:hidden}.tool-gallery img{width:100%;height:100%;object-fit:cover}.tool-icon{width:42px;height:42px;display:grid;place-items:center;border-radius:12px;color:#fff;background:linear-gradient(145deg,#3f9b95,#1d716c);box-shadow:0 8px 17px #267d7830;font-size:19px;font-weight:800}.tool-card h2{margin:15px 0 6px;color:#394e50;font-size:17px}.tool-card.with-image h2{margin-top:13px}.tool-card p{margin:0;color:#718183;font-size:12px;line-height:1.7}.tool-meta{margin-top:8px;color:#8b9899;font-size:10px}.tool-card a{align-self:flex-start;margin-top:auto;padding:13px 0 0;color:#287b76;font-size:12px;font-weight:800;text-decoration:none}
.tool-hash{display:block;max-width:100%;margin-top:5px;overflow:hidden;color:#7d8e8d;font:10px ui-monospace,Consolas,monospace;text-overflow:ellipsis;white-space:nowrap}
.site-footer{display:flex;justify-content:space-between;gap:20px;margin-top:auto;padding:25px max(4vw,30px);border-top:1px solid var(--line);color:#8d8996;font-size:11px;flex:0 0 auto}.site-footer span:first-child{color:#676075;font-weight:800}dialog{width:min(680px,calc(100% - 32px));padding:0;border:0;border-radius:16px;background:#fffdf9;box-shadow:0 28px 70px #231d3e59}dialog::backdrop{background:rgba(36,29,58,.55);backdrop-filter:blur(3px)}.dialog-shell{position:relative;max-height:calc(100dvh - 32px);overflow-y:auto;padding:27px}.dialog-close{position:absolute;top:14px;right:14px;width:30px;height:30px;border:0;border-radius:50%;color:#5d5573;background:#f0ecf7;font-size:21px;line-height:1}.dialog-shell>h2{margin:5px 0 7px;color:#39334c;font-size:24px}.dialog-shell>p{margin:0 0 20px;color:#777382;font-size:12px;line-height:1.7}.publish-form{display:grid;grid-template-columns:1fr 1fr;gap:13px}.publish-form label{display:grid;gap:6px;color:#625e6e;font-size:12px;font-weight:800}.field-hint{color:#9993a1;font-size:10px;font-weight:400}.publish-form label.full{grid-column:1/-1}.publish-form input,.publish-form textarea,.publish-form select{width:100%;padding:10px 11px;border:1px solid #ddd6e5;border-radius:8px;color:#3e3a4c;background:#fff;outline:none;font-size:13px}.publish-form textarea{min-height:92px;resize:vertical;line-height:1.55}.publish-form textarea[name="description"]{min-height:clamp(190px,28vh,270px)}.upload-box{display:flex;align-items:center;gap:10px;padding:10px;border:1px dashed #cfc4de;border-radius:8px;color:#726786;background:#faf8fe;font-size:11px}.upload-box input{width:auto;padding:0;border:0;font-size:11px}.image-previews{display:flex;flex-wrap:wrap;gap:7px}.image-previews img{width:54px;height:54px;border:1px solid #ded7e7;border-radius:7px;object-fit:cover}.form-rule{grid-column:1/-1;padding:10px 11px;border-radius:8px;color:#716b7d;background:#f5f1fb;font-size:11px;line-height:1.65}.form-actions{grid-column:1/-1;display:flex;justify-content:flex-end;gap:10px;margin-top:3px}.cancel-button{border:1px solid #ded8cf;border-radius:8px;padding:10px 13px;color:#6e6978;background:#fff;font-size:12px;font-weight:800}.form-message{grid-column:1/-1;min-height:16px;margin:0;color:#b05a5a;font-size:12px;font-weight:700}.form-message.success{color:#43815a}.detail-shell{max-height:min(88vh,850px);overflow:auto}.detail-header{display:flex;align-items:center;justify-content:space-between;padding-right:40px}.detail-title{margin:14px 0 8px;color:#39334c;font-size:24px;line-height:1.45}.detail-meta{display:flex;flex-wrap:wrap;gap:8px;color:#80798b;font-size:12px}.detail-meta a{color:#5d4ba4}.detail-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin:18px 0}.detail-gallery a{aspect-ratio:1.4;overflow:hidden;border-radius:8px;background:#eee}.detail-gallery img{width:100%;height:100%;object-fit:cover}.detail-description{white-space:pre-wrap;color:#56515f;font-size:13px;line-height:1.8}.contact-box{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:16px 0;padding:12px;border:1px solid #e4dfeb;border-radius:9px;background:#faf8fe}.contact-box small{display:block;color:#8b8596;font-size:10px}.contact-box strong{color:#4e4670;font-size:14px}.copy-button{border:1px solid #d9d1e8;border-radius:7px;padding:7px 9px;color:#625197;background:#fff;font-size:11px;font-weight:800}.comments-heading{display:flex;justify-content:space-between;align-items:center;margin-top:22px;border-top:1px solid #e9e3dc;padding-top:18px}.comments-heading h3{margin:0;font-size:15px}.comments-heading span{color:#978f9e;font-size:11px}.comments-list{display:grid;gap:9px;margin:12px 0}.comment-item{padding:10px 12px;border:1px solid #ece7e1;border-radius:8px;background:#fff}.comment-item div{display:flex;justify-content:space-between;gap:10px;color:#9a94a0;font-size:10px}.comment-item a{color:#5d4ba4;font-weight:800}.comment-item p{margin:7px 0 0;color:#605b68;font-size:12px;line-height:1.65}.comment-form textarea{width:100%;padding:9px;border:1px solid #ddd6e5;border-radius:8px;resize:vertical}.comment-form footer{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:7px;color:#958e9b;font-size:10px}.loading-copy{color:#7f7987;font-size:12px}
@media(max-width:860px){.post-grid,.tool-grid{grid-template-columns:repeat(2,1fr)}}@media(max-width:620px){.site-header{min-height:56px;padding:0 16px}.board-shell{width:min(100% - 32px,1180px)}.board-switcher{justify-content:flex-start;overflow-x:auto;padding:17px 0 0}.board-switcher a{flex:0 0 auto;padding:8px 12px;font-size:12px;white-space:nowrap}.board-pane{padding:23px 0 48px}.board-heading{display:block;padding-bottom:17px}.board-heading h1{font-size:27px}.board-heading .publish-button{margin-top:14px}.tag-filter-bar{margin:14px 0 11px}.tag-filter-panel{display:block}.tag-option-list{margin-top:9px}.clear-tags{margin-top:9px;padding:8px 0 0;border-top:1px solid #e5dfd7;border-left:0}.post-grid,.tool-grid{grid-template-columns:1fr;gap:11px}.post-card.with-image{min-height:332px}.post-gallery{height:116px}.trade-trust-note{align-items:flex-start;font-size:11px}.site-footer{display:block;padding:20px 16px;text-align:center;line-height:1.8}.site-footer span{display:block}.publish-form{grid-template-columns:1fr}.publish-form label.full,.form-rule,.form-actions,.form-message{grid-column:auto}.form-actions button{flex:1}.detail-gallery{grid-template-columns:repeat(2,1fr)}.detail-title{font-size:21px}}

/* The community home is a single-screen board. Lists change pages instead of extending the document. */
html,body{height:100%;overflow:hidden}body{height:100dvh;min-height:100dvh}.site-header{flex:0 0 auto}.board-shell{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden}.board-switcher{flex:0 0 auto}.board-pane{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;overflow:hidden;padding:20px 0 16px}.tag-filter-panel{max-height:min(170px,28vh);overflow:auto}.board-empty{margin:auto 0}.board-pagination{display:flex;align-items:center;justify-content:center;gap:13px;margin-top:auto;padding-top:15px;color:#898493;font-size:11px;font-weight:800}.board-pagination button{border:1px solid #ded7e9;border-radius:7px;padding:7px 11px;color:#625299;background:#fff;font:inherit;font-weight:800}.board-pagination button:disabled{opacity:.45;cursor:default}.board-pagination button:not(:disabled):hover{border-color:#8069c8;background:#f7f4ff}.site-footer{margin-top:0}
@media(max-width:620px){.board-pane{padding:17px 0 10px}.board-pagination{padding-top:10px}.tag-filter-panel{max-height:24vh}.board-empty{padding:24px 16px}.clear-tags.is-placeholder{display:none}}
.site-footer-title{flex:0 0 auto}.site-footer-copy{min-width:0;max-width:min(760px,70vw);max-height:3.4em;overflow:hidden;line-height:1.7;text-align:right;overflow-wrap:anywhere}.site-footer-email{color:#625299;font-weight:700;text-decoration:underline;text-underline-offset:2px}@media(max-width:620px){.site-footer-copy{max-width:none;text-align:center}}
.site-footer-open{display:none}.site-footer-dialog-copy{color:#615b69;font-size:13px;line-height:1.8;white-space:normal;overflow-wrap:anywhere}
.tool-grid{grid-template-columns:1fr}.tool-row{display:grid;grid-template-columns:minmax(180px,280px) minmax(0,1fr) auto;align-items:center;gap:18px;min-height:150px;padding:16px;border:1px solid #dfe5e3;border-radius:8px;background:#fff}.tool-row-media{display:grid;place-items:center;min-height:116px;overflow:hidden;border-radius:7px;background:#f0f5f3}.tool-row .tool-gallery{width:100%;height:116px;margin:0;border-radius:7px}.tool-row-body{min-width:0}.tool-row h2{margin:0 0 7px;color:#394e50;font-size:18px}.tool-row p{margin:0;color:#667678;font-size:13px;line-height:1.75;white-space:pre-wrap}.tool-row .tool-meta{display:block;margin-top:10px;color:#8b9899;font-size:11px;overflow-wrap:anywhere}.tool-download{display:inline-grid;place-items:center;min-width:92px;min-height:42px;border:1px solid #b8d4d0;border-radius:7px;padding:0 13px;color:#287b76;background:#f5fbf9;font-size:12px;font-weight:800;text-decoration:none;white-space:nowrap}.tool-download:hover{border-color:#45958e;background:#edf8f5}@media(max-width:620px){.tool-row{grid-template-columns:1fr;gap:12px;margin:0;border-right:0;border-left:0;border-radius:0;padding:14px 13px}.tool-row-media{min-height:92px}.tool-row .tool-gallery{height:112px}.tool-row h2{font-size:17px}.tool-download{width:100%;min-height:44px}}
.tag-option-list{display:grid;grid-template-columns:1fr;gap:12px;width:100%}.tag-category-group{min-width:0}.tag-category-group>strong,.tag-category-heading>strong{display:block;margin:0;color:#5e5870;font-size:13px}.tag-category-heading{display:flex;align-items:center;justify-content:flex-start;gap:9px;margin:0 0 8px}.tag-category-actions{display:inline-flex;align-items:center;gap:8px}.tag-category-action{border:0;padding:0;color:#756b96;background:none;font-family:inherit;font-size:12px;font-weight:700;line-height:1.35;cursor:pointer}.tag-category-action:hover:not(:disabled){color:#513ba5;text-decoration:underline}.tag-category-action:disabled{color:#b2acba;cursor:default}.tag-category-options{display:flex;flex-wrap:wrap;gap:7px}.tag-category-group .tag-option{background:#f9f7fb}.tag-category-required{display:inline-flex;padding:2px 5px;border-radius:4px;color:#8b5d19;background:#fff1d8;font-size:10px;font-weight:800}@media(max-width:620px){.tag-option-list{gap:10px}}

/* Reporting is deliberately a lightweight, secondary action in the detail view. */
.detail-actions{display:inline-flex;align-items:center;gap:9px}.report-link,.comment-report,.owner-edit-link,.owner-archive-link,.detail-like,.share-link,.card-share-link{border:0;padding:0;background:none;color:inherit;font-family:inherit;font-size:10px;font-weight:700;line-height:1.3;text-decoration:none;cursor:pointer}.report-link,.comment-report{color:#9b6572}.owner-edit-link{color:#5d4ba4}.owner-archive-link{color:#b54747}.share-link,.card-share-link{color:#65569b}.detail-like,.detail-like-count{color:#77708a;font-size:10px;font-weight:700}.detail-like.active{color:#6950b8}.report-link:hover,.comment-report:hover,.owner-edit-link:hover,.owner-archive-link:hover,.detail-like:hover,.share-link:hover,.card-share-link:hover{text-decoration:underline}.owner-archive-link:disabled,.detail-like:disabled,.share-link:disabled,.card-share-link:disabled{opacity:.5;cursor:default;text-decoration:none}.post-card-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:10px;min-width:0}.card-share-link{flex:0 0 auto}.report-shell{max-width:480px}.report-form{display:grid;gap:13px}.report-form label{display:grid;gap:6px;color:#625e6e;font-size:12px;font-weight:800}.report-form select,.report-form textarea{width:100%;padding:10px 11px;border:1px solid #ddd6e5;border-radius:8px;color:#3e3a4c;background:#fff;outline:none;font:13px inherit}.report-form textarea{resize:vertical}.report-form .form-actions,.report-form .form-message{display:flex;grid-column:auto}.report-form .form-message{min-height:16px}.comment-item .comment-report{margin-left:auto}.comment-item .comment-report+.comment-archive{margin-left:0}

/* Tags have a visible category everywhere: catalogue selection and public post
   records. This keeps category meanings clear to readers. */
.tag-display-groups{display:grid;gap:5px;margin:13px 0 auto}.tag-display-group{display:flex;align-items:baseline;flex-wrap:wrap;gap:5px;color:#7e7888;font-size:10px;line-height:1.45}.tag-display-group strong{color:#696276;font-weight:800}.tag-display-group span{padding:4px 6px;border-radius:4px;color:#8d8796;background:#f7f5f1}.detail-shell .tag-display-groups{margin:16px 0}.publish-tag-picker{grid-column:1/-1;margin:0;padding:0;border:0;min-width:0}.publish-tag-picker legend{margin:0 0 7px;padding:0;color:#625e6e;font-size:12px;font-weight:800}.publish-tag-options{display:grid;grid-template-columns:1fr;gap:12px;max-height:min(320px,38dvh);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:11px;border:1px solid #ddd6e5;border-radius:8px;background:#fff}.publish-tag-options .tag-category-group>strong{margin-bottom:8px}.publish-tag-options .tag-option{background:#f9f7fb}.tag-picker-empty{margin:0;color:#938d9b;font-size:12px;line-height:1.55}@media(max-width:620px){.publish-tag-picker{grid-column:auto}.publish-tag-options{gap:10px;max-height:min(300px,44dvh)}}

/* Resolve the URL board before deferred JavaScript starts, avoiding a tavern flash on refresh. */
html.initial-board-lezi [data-board-pane="tavern"],html.initial-board-game4399 [data-board-pane="tavern"],html.initial-board-tools [data-board-pane="tavern"]{display:none!important}
html.initial-board-lezi [data-board-pane="lezi"],html.initial-board-game4399 [data-board-pane="game4399"],html.initial-board-tools [data-board-pane="tools"]{display:flex!important}
html.initial-board-lezi [data-board-link="tavern"],html.initial-board-game4399 [data-board-link="tavern"],html.initial-board-tools [data-board-link="tavern"]{border-color:#e3ddd5;color:#6e6b7c;background:#fff;box-shadow:none}
html.initial-board-lezi [data-board-link="lezi"],html.initial-board-game4399 [data-board-link="game4399"],html.initial-board-tools [data-board-link="tools"]{border-color:var(--purple);color:#fff;background:var(--purple);box-shadow:0 6px 14px #6852ba22}
html.initial-detail-request .board-pane{visibility:hidden}

/* Keep the homepage to one viewport without hiding cards on shorter screens.
   Each board's results become the only scrollable region; board switching,
   filters, and page controls retain their stable positions. */
.board-results{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:1px 2px 10px 0;scrollbar-gutter:stable}.board-results .post-grid,.board-results .tool-grid{min-height:0}.board-results .board-empty{display:grid;place-items:center;margin:0;padding:46px 18px;min-height:150px}.board-results.is-empty{overflow-y:hidden;overscroll-behavior:auto;padding-right:0;scrollbar-gutter:auto}.board-results.is-empty .post-grid,.board-results.is-empty .tool-grid{display:none}.board-results.is-empty .board-empty{min-height:150px}

/* Overview cards keep a predictable height. Full wording is always available
   from the detail dialog, so a single long post cannot hide the paging bar. */
.post-card h2{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.post-card>p{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}.contact-actions{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:8px}.history-check-link{color:#5b4c99;font-size:11px;font-weight:800;text-decoration:none}.history-check-link:hover{text-decoration:underline}@media(max-width:620px){.contact-box{align-items:flex-start}.contact-actions{justify-content:flex-start}}

/* A categorized tag rule is more specific than the generic selected rule.
   Reinstate the selected surface here so its white text is always legible. */
.tag-category-group .tag-option.active,.publish-tag-options .tag-category-group .tag-option.active{border-color:#513ba5;background:#513ba5;color:#fff;box-shadow:0 4px 10px #513ba526}
.dialog-shell .dialog-close{position:sticky;top:0;z-index:3;display:block;margin:0 0 0 auto}.comments-pagination{display:flex;align-items:center;justify-content:center;gap:10px;margin:12px 0;color:#8a8493;font-size:11px;font-weight:800}.comments-pagination button{border:1px solid #ded7e9;border-radius:7px;padding:6px 9px;color:#625299;background:#fff;font:inherit;font-weight:800}.comments-pagination button:disabled{opacity:.45;cursor:default}.comments-pagination button:not(:disabled):hover{border-color:#8069c8;background:#f7f4ff}@media(max-height:680px){.board-pane{padding-top:12px}.tag-filter-panel{max-height:108px}.tag-option-list{gap:8px}.board-pagination{padding-top:8px}}
.tag-category-state{color:#898291;font-size:12px;font-weight:700;white-space:nowrap}.post-card footer>span{min-width:0;overflow-wrap:anywhere}.detail-button{flex:0 0 auto}.comment-item div{flex-wrap:wrap}.comment-item div>a{min-width:0;overflow-wrap:anywhere}@media(max-width:620px){.tag-category-actions{gap:7px}.tag-category-state{font-size:11px}}

.tag-filter-rule{margin:0;color:#898291;font-size:11px;line-height:1.5}.recovery-actions{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px;margin-top:12px}.recovery-action{border:1px solid #d8d1e5;border-radius:7px;padding:7px 11px;color:#61558f;background:#fff;font:700 11px inherit;cursor:pointer}.recovery-action:hover:not(:disabled){border-color:#9b8bd0;background:#f8f5ff}.recovery-action:disabled{opacity:.55;cursor:default}.recovery-primary{border-color:#6852ba;color:#fff;background:#6852ba}.recovery-primary:hover:not(:disabled){border-color:#5944a5;background:#5944a5}.detail-load-failure{display:grid;justify-items:center;gap:2px;padding:44px 12px;text-align:center}.detail-load-failure p,.comments-load-failure p{margin:0;color:#777180;font-size:13px;line-height:1.7}.comments-load-failure{display:grid;justify-items:start;gap:9px;padding:13px 0}.comments-load-failure .recovery-action{padding:6px 10px}.board-empty>span:first-child{display:block}@media(max-width:620px){.recovery-actions{align-items:stretch;flex-direction:column}.recovery-action{width:100%}.comments-load-failure{justify-items:stretch}}

/* Administrator-issued titles must stay visibly separate from a player's name
   on the public home, even though account pages load their own stylesheet. */
.player-title{display:inline-block;margin-left:10px;margin-inline-start:10px;border:1px solid currentColor;border-radius:4px;padding:1px 5px;color:var(--player-title-color,#c45a2f);font-size:.82em;font-weight:800;line-height:1.25;vertical-align:1px;white-space:nowrap}

/* Revision history stays on demand: it is visible only after a player asks
   for it, while still keeping each retained version readable on a phone. */
.revision-link{border:0;padding:0;color:#66559f;background:none;font:700 12px inherit;cursor:pointer}.revision-link:hover{text-decoration:underline}.revision-history{margin:18px 0;padding-top:16px;border-top:1px solid #e9e3dc}.revision-card{padding:13px;margin-top:9px;border:1px solid #e8e2ee;border-radius:9px;background:#fbfaff}.revision-card header{display:flex;justify-content:space-between;gap:12px;color:#867f91;font-size:11px}.revision-card header strong{color:#574b76}.revision-card h3{margin:8px 0 4px;color:#433d51;font-size:15px}.revision-card p{margin:8px 0 0;color:#625d6a;font-size:12px;line-height:1.7;white-space:pre-wrap}.revision-price{display:inline-block;color:#b35d35;font-size:11px;font-weight:800}.revision-gallery{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:10px}.revision-gallery a{height:72px;overflow:hidden;border-radius:7px;background:#eee9f3}.revision-gallery img{width:100%;height:100%;object-fit:cover}.revision-empty{margin:0;color:#88818f;font-size:12px}

.board-feedback{margin:12px 0 0}.detail-feedback{min-height:0;margin:0 0 10px}.detail-feedback:empty{display:none}

/* Ending display removes a public record from normal lists. It is an author
   action, so keep it easy to find and visually distinct from navigation. */
.post-top-actions{display:inline-flex;align-items:center;justify-content:flex-end;gap:9px;min-width:0}.owner-archive-link,.card-archive-link{color:#b7444d}.owner-archive-link:hover,.card-archive-link:hover{color:#922f39}.card-edit-link,.card-archive-link{flex:0 0 auto;font-size:10px;white-space:nowrap}@media(max-width:620px){.post-top-actions{gap:7px}.card-edit-link,.card-archive-link{font-size:10px}}

/* Image selection is reversible before publishing. File inputs themselves
   cannot be edited reliably, so the visible preview is backed by state.files. */
.publish-image-preview{position:relative;display:block;width:54px;height:54px}.publish-image-preview img{display:block;width:100%;height:100%;object-fit:cover}.remove-image-button{position:absolute;top:-5px;right:-5px;width:19px;height:19px;padding:0;border:0;border-radius:50%;color:#fff;background:#8d4652;font:18px/18px sans-serif;cursor:pointer}.remove-image-button:hover,.remove-image-button:focus-visible{background:#a73745}.compact-dialog{max-width:480px}

/* Keep author actions close together without forcing a narrow phone header
   into one unreadable row. */
@media(max-width:620px){.detail-header{align-items:flex-start;gap:8px}.detail-actions{justify-content:flex-end;flex-wrap:wrap;row-gap:6px}.detail-actions time{flex-basis:100%;text-align:right}.detail-actions .owner-edit-link,.detail-actions .owner-archive-link{white-space:nowrap}}
.share-copy-buffer{position:fixed;left:-10000px;top:0;width:1px;height:1px;opacity:0;pointer-events:none}

/* A detail header is one action row.  Time and every adjacent action must use
   the same type scale; otherwise the unstyled <time> inherits body text and
   makes the controls look misaligned. */
.detail-actions{gap:10px;color:#77708a;font-size:11px;font-weight:700;line-height:1.35}.detail-actions time,.detail-actions .share-link,.detail-actions .detail-like,.detail-actions .detail-like-count,.detail-actions .owner-edit-link,.detail-actions .owner-archive-link,.detail-actions .report-link{font-size:inherit;font-weight:inherit;line-height:inherit}.detail-actions time{color:inherit}.detail-actions .share-link,.detail-actions .owner-edit-link{color:#65569b}.detail-actions .owner-archive-link{color:#b54747}

/* A card has one navigation target, but its social controls are separate actions:
   liking never opens a detail; replying opens the same detail at its replies. */
.card-like,.card-like-count,.card-replies{border:0;padding:0;color:#77708a;background:none;font:700 10px/1.3 inherit}.card-like,.card-replies{cursor:pointer}.card-like.active{color:#6950b8}.card-like:hover,.card-replies:hover{text-decoration:underline}.card-like:disabled{opacity:.5;cursor:default;text-decoration:none}

/* Share is a short Chinese label.  Give it a fixed CJK face and a whole-pixel
   type scale instead of inheriting a mixed small-control font. */
.card-share-link{display:inline-block;color:#65569b;font-family:"Microsoft YaHei","PingFang SC",sans-serif;font-size:10px;font-weight:700;line-height:1;letter-spacing:0;font-synthesis:none}

/* Social interaction belongs with the replies it starts, not with the author's
   management controls in the detail header. */
.content-interactions{display:inline-flex;align-items:center;gap:10px;color:#77708a;font-size:11px;font-weight:700;line-height:1.35}.content-interactions .share-link,.content-interactions .detail-like,.content-interactions .detail-like-count{font:inherit}.content-interactions .share-link{color:#65569b}.content-interactions .detail-like{color:#77708a}.content-interactions .detail-like.active{color:#6950b8}.interaction-feedback{min-height:0;margin:8px 0 0}.interaction-feedback:empty{display:none}

.comments-heading{gap:12px}.comments-heading-main{display:flex;align-items:center;flex-wrap:wrap;gap:10px;min-width:0}.comment-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:7px}.comment-filter-group{display:inline-flex;overflow:hidden;border:1px solid #ded7e9;border-radius:7px;background:#fff}.comment-filter-button{min-height:28px;border:0;padding:5px 9px;color:#746d7c;background:#fff;font-family:inherit;font-size:11px;font-weight:700;line-height:1.35;cursor:pointer}.comment-filter-button+.comment-filter-button{border-left:1px solid #ded7e9}.comment-filter-button:hover:not(:disabled):not(.active){color:#5c479d;background:#f7f4ff}.comment-filter-button.active{color:#fff;background:#6950b8}.comment-toolbar[aria-busy="true"] .comment-filter-button{cursor:progress}.comment-filter-button:focus-visible{position:relative;z-index:1;outline:2px solid #8d79cc;outline-offset:-2px}@media(max-width:620px){.comments-heading{align-items:flex-start;flex-wrap:wrap}.comments-heading-main{flex:1 1 100%}.comment-toolbar{width:100%}.comments-heading>.content-interactions{margin-left:auto}}

/* Every board drawer trigger uses a real flex row.  Its arrow occupies a
   centered square rather than sitting on the text baseline. */
.tag-filter-toggle{display:inline-flex;align-items:center;justify-content:center;gap:5px}.tag-filter-toggle>span{display:inline-grid;place-items:center;width:1em;height:1em;font-size:1em;line-height:1}

/* Details expand in the selected card's own grid cell. The reusable detail
   surface moves to the next selected card, allowing the previous card to
   return to its compact summary without creating a desktop-wide panel. */
.post-grid{align-items:start}
#detail-dialog{position:static;inset:auto;grid-column:auto;align-self:start;width:100%;max-width:100%;margin:0;box-sizing:border-box;padding:0;border:1px solid #ddd6e7;border-radius:9px;background:#fffdf9;box-shadow:none;overflow:visible}
#detail-dialog::backdrop{display:none;background:transparent;backdrop-filter:none}
#detail-dialog .detail-shell{max-height:none;overflow:visible;padding:22px}
#detail-dialog .dialog-close{top:8px}
@media(min-width:621px){#detail-dialog .detail-shell{padding:17px}#detail-dialog .detail-header{align-items:flex-start;gap:8px;padding-right:30px}#detail-dialog .detail-actions{min-width:0;flex-wrap:wrap;justify-content:flex-end;gap:6px 9px}#detail-dialog .detail-title{margin:12px 0 7px;font-size:18px;line-height:1.5}#detail-dialog .detail-meta{gap:6px}#detail-dialog .detail-gallery{grid-template-columns:repeat(2,minmax(0,1fr));margin:14px 0}#detail-dialog .contact-box{align-items:flex-start;flex-direction:column}#detail-dialog .comments-heading{align-items:flex-start;flex-wrap:wrap}#detail-dialog .comments-heading>.content-interactions{margin-left:auto}#detail-dialog .comment-form footer{align-items:flex-end;flex-wrap:wrap}}
@media(max-width:620px){#detail-dialog{border-right:0;border-left:0;border-radius:0}#detail-dialog .detail-shell{padding:16px 13px 24px}}

.card-comment-preview{display:grid;gap:4px;margin:10px 0 0;padding:8px 10px;border-left:3px solid #ded6ed;background:#faf8fd;cursor:pointer}.card-comment-preview p{display:flex;min-width:0;gap:6px;margin:0;color:#716b79;font-size:11px;line-height:1.5}.card-comment-preview p>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.card-comment-preview .card-comment-more{display:block;margin-top:2px;color:#66559f;font-weight:800}.card-preview-author{flex:0 0 auto;color:#5d4f91;font-weight:800}.card-preview-author .player-title{display:none}@media(max-width:620px){.card-comment-preview{margin-top:9px;padding:8px 9px}.card-comment-preview p{font-size:12px}}
.post-summary>.card-price{display:block;margin:0 0 7px;color:#b24f2f;font-size:15px;font-weight:900;line-height:1.4}
@media(max-width:620px){#publish-dialog .publish-tag-options{max-height:none;overflow:visible;scrollbar-gutter:auto}#publish-dialog .form-actions{position:sticky;bottom:-27px;z-index:4;margin:12px -13px -27px;padding:10px 13px max(10px,env(safe-area-inset-bottom));border-top:1px solid #e7e1ea;background:#fffdf9}#publish-dialog .form-actions [data-close-dialog]{display:none}#publish-dialog .form-actions button{min-height:44px}}

.detail-visibility-notice{margin:10px 0 14px;padding:10px 12px;border:1px solid #dfcfa6;border-radius:7px;color:#735a24;background:#fff8e7;font-size:12px;line-height:1.6}.comment-compose-tools{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:6px}.character-count{color:#8f8997;font-size:11px;font-weight:700}.character-count.near-limit{color:#a96822}.character-count.at-limit{color:#b34747}.comment-image-picker{display:inline-flex;min-height:36px;align-items:center;border:1px solid #d9d1e7;border-radius:7px;padding:0 10px;color:#625197;background:#fff;font-size:11px;font-weight:800;cursor:pointer}.comment-image-picker input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0)}.comment-image-previews{display:flex;flex-wrap:wrap;gap:8px;margin-top:8px}.comment-image-preview{position:relative;display:block;width:72px;height:72px}.comment-image-preview img{display:block;width:100%;height:100%;border:1px solid #ded7e7;border-radius:7px;object-fit:cover}.comment-image-preview button{position:absolute;top:-6px;right:-6px;width:22px;height:22px;border:0;border-radius:50%;padding:0;color:#fff;background:#8d4652;font:18px/22px sans-serif;cursor:pointer}.comment-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,160px));gap:6px;margin-top:9px}.comment-gallery a{display:block;aspect-ratio:1;overflow:hidden;border-radius:7px;background:#eeeaf2}.comment-gallery img{display:block;width:100%;height:100%;object-fit:cover}@media(max-width:620px){.comment-image-picker{min-height:44px}.comment-gallery{grid-template-columns:repeat(3,minmax(0,1fr))}.comment-image-preview{width:64px;height:64px}}
.comment-item.is-pending-review{border-color:#dfcfa6;background:#fffdf5}.comment-review-status{display:inline-flex;align-items:center;min-height:22px;margin-left:7px;padding:2px 7px;border-radius:999px;color:#735a24;background:#fff1ce;font-size:10px;font-weight:800;line-height:1.35;vertical-align:middle}@media(max-width:620px){.comment-review-status{min-height:28px;margin:4px 5px 0 0;font-size:11px}}
/* Long unbroken URLs, IDs and names must never widen a desktop reading panel. */
.detail-title,.detail-description,.comment-item p,.tool-card h2,.tool-card p{overflow-wrap:anywhere}
.comment-item.is-target-comment{border-color:#7e65c4;box-shadow:0 0 0 3px #7e65c422}
