@import url('/fonts.css');
:root{font-family:'Pinye Sans',sans-serif;color:#174c35;background:#f7fff8}*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0}button,input,select,textarea{font:inherit}button,a,input,select,textarea{touch-action:manipulation}a{color:#24724a}button{cursor:pointer}button:disabled{cursor:default;opacity:.5}.distribution-header{display:flex;align-items:center;gap:20px;justify-content:space-between;padding:20px 32px;border-bottom:1px solid #d5ebdb;background:#fff}.distribution-header .brand{gap:10px}.distribution-header nav{display:flex;gap:16px;align-items:center}.distribution-main{max-width:1280px;margin:auto;padding:36px 30px 80px}.distribution-intro{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:26px}.distribution-intro h1{font-size:32px;margin:8px 0}.distribution-intro p{color:#668675;margin:8px 0}.distribution-badge{padding:12px 17px;border:1px solid #d4eadb;border-radius:30px;background:#e2ffaf;white-space:nowrap}.connection-status{color:#5c7d69;min-height:22px;font-size:13px;overflow-wrap:anywhere}.connection-tabs{display:flex;gap:8px;flex-wrap:wrap;margin:20px 0}.connection-tabs button{border:1px solid #cfe8d6;border-radius:30px;padding:9px 18px;background:#fff;color:#375d46}.connection-tabs button[aria-selected=true]{background:#1a6c46;color:#fff;border-color:#1a6c46}.connection-panel{background:#fff;border:1px solid #d2eada;border-radius:22px;padding:24px}.connection-panel h2{font-size:22px;margin:0 0 10px}.connection-panel p{color:#698473;font-size:14px;line-height:1.7}.connection-list{display:grid;gap:14px;margin-top:20px}.connection-card{border:1px solid #d6eddd;border-radius:16px;padding:19px;background:#fbfffc}.connection-card:nth-child(3n+2){background:#fffdf0}.connection-card:nth-child(3n){background:#fff6ed}.connection-card h3{margin:0 0 8px;font-size:18px}.connection-card-top{display:flex;gap:12px;align-items:center;justify-content:space-between}.connection-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px}.connection-link{display:flex;gap:8px;align-items:center;margin:12px 0}.connection-link input{flex:1;min-width:0;font-size:13px;background:#fff}.connection-form{display:grid;gap:15px;margin:20px 0;background:#f3fcf5;border-radius:16px;padding:20px}.connection-form label{display:grid;gap:6px;font-size:13px;font-weight:650}.connection-form input,.connection-form select,.connection-form textarea,.connection-link input{width:100%;padding:10px 12px;border:1px solid #cbe5d3;border-radius:10px;color:#254f35}.connection-form textarea{resize:vertical;min-height:68px}.connection-form input[type=checkbox]{width:auto}.connection-form .check-label{display:flex;align-items:center;gap:8px}.connection-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:15px}.connection-note{background:#fff5ce;padding:12px 16px;border-radius:12px;font-size:13px;line-height:1.7;color:#72613b}.connection-error{color:#b24225;white-space:pre-wrap;font-size:14px}.connection-actions .danger{color:#b34229}.connection-empty{padding:24px;color:#6b8878;text-align:center}.connection-pill{border-radius:20px;padding:3px 10px;background:#def6e6;font-size:12px}.connection-pill.withdrawn{background:#ffecd7;color:#996530}.viewer-body{background:#f7fff9}.viewer-header{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:12px;padding:12px 18px;background:#ffffffed;border-bottom:1px solid #d9eedd;backdrop-filter:blur(10px);font-size:13px}.viewer-header .brand{gap:6px;flex-shrink:0}.viewer-header .brand:after{display:none}#viewer-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.viewer-actions{margin-left:auto;display:flex;align-items:center;gap:15px;white-space:nowrap}.viewer-main{padding:16px;max-width:2640px;margin:auto}.viewer-main .connection-status{margin:0 2px 13px}.viewer-main #viewer-update{position:sticky;top:74px;z-index:4;margin-bottom:16px}.viewer-empty{text-align:center;padding:50px 12px}.viewer-empty h2{font-size:24px}.viewer-empty p{color:#6a8472}.integration-sample{white-space:pre-wrap;overflow-wrap:anywhere;border:1px solid #d3e9da;border-radius:12px;background:#f5faf6;padding:16px;color:#31513d;font-size:13px}.integration-preview{min-height:180px;margin-top:20px;border:1px solid #d3eadb;border-radius:16px;overflow:hidden}.archive-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px}.archive-grid .connection-card{margin:0}.archive-grid a{text-decoration:none}.archive-feed-select{padding:9px 12px;border:1px solid #cee5d5;border-radius:20px;background:white}.connection-help{font-size:12px;color:#718d7b}.protocol-table{width:100%;border-collapse:collapse;font-size:13px}.protocol-table td,.protocol-table th{text-align:left;border-bottom:1px solid #e0efe4;padding:10px;overflow-wrap:anywhere}@media(max-width:650px){.distribution-header{padding:15px;gap:10px}.distribution-header nav{gap:10px;font-size:12px}.distribution-main{padding:22px 15px 50px}.distribution-intro{align-items:flex-start}.distribution-intro h1{font-size:26px}.distribution-badge{font-size:12px;padding:8px 12px}.connection-panel{padding:17px}.connection-form-grid{grid-template-columns:1fr}.connection-link{flex-wrap:wrap}.connection-link input{flex-basis:100%}.viewer-header{padding:10px;gap:8px}.viewer-header .brand b{display:none}.viewer-actions{gap:9px;font-size:12px}.viewer-main{padding:12px}.connection-card-top{align-items:flex-start}.connection-card-top h3{overflow-wrap:anywhere}.distribution-header .brand-subtitle{display:none}}

/* Embedded cards own only the board; regular web/issue readers keep their chrome. */
.viewer-pending .viewer-header,.viewer-pending #viewer-tag-picker,.viewer-pending #viewer-state,.viewer-pending #viewer-update,.viewer-cards-only .viewer-header,.viewer-cards-only #viewer-tag-picker,.viewer-cards-only #viewer-state,.viewer-cards-only #viewer-update{display:none!important}
.viewer-cards-only{background:transparent}.viewer-cards-only .viewer-main{padding:0}
/* Natural board height is independent of the iframe viewport. The parent
   scrolls the board; the existing reader dialog follows the visible viewport. */
html.viewer-content-size{scrollbar-gutter:auto}
.viewer-content-size .viewer-main{max-width:none;width:100%;min-width:0}
.viewer-content-size .reader-dialog{position:fixed;top:calc(var(--pinye-viewport-top,0px) + 16px);bottom:auto;margin:0 auto;height:calc(var(--pinye-viewport-height,600px) - 32px);max-height:calc(var(--pinye-viewport-height,600px) - 32px)}
