:root{color:#17221d;background:#f4f6f4;font-family:system-ui,-apple-system,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;font-size:16px;line-height:1.5;font-synthesis:none;text-rendering:optimizeLegibility;--ink: #17221d;--muted: #66736d;--muted-strong: #46534d;--canvas: #f4f6f4;--surface: #ffffff;--surface-soft: #f8faf8;--line: #d8e0db;--line-strong: #b8c5bd;--accent: #176b4f;--accent-strong: #0f533c;--accent-soft: #e6f2ec;--amber: #9b5c08;--amber-soft: #fff3dc;--blue: #285f89;--blue-soft: #e7f0f7;--danger: #a12d3d;--danger-soft: #fbe9eb;--shadow: 0 8px 24px rgba(23, 34, 29, .08)}*{box-sizing:border-box}html,body,#root{min-height:100%;margin:0}body{min-width:320px;background:var(--canvas);color:var(--ink)}button,input,textarea,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:var(--accent-strong);text-decoration:none}a:hover{text-decoration:underline}button{color:inherit}img{display:block;max-width:100%}code{font-family:SFMono-Regular,Consolas,Liberation Mono,monospace;font-size:.82em}.app-shell{display:flex;min-height:100vh;flex-direction:column}.site-header{border-bottom:1px solid var(--line);background:#fffffff0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.site-header-inner{display:flex;width:min(1180px,calc(100% - 32px));min-height:68px;align-items:center;justify-content:space-between;gap:24px;margin:0 auto}.brand{display:inline-flex;min-width:0;align-items:center;gap:10px;color:var(--ink)}.brand:hover{text-decoration:none}.brand-mark{display:inline-flex;width:36px;height:36px;flex:0 0 36px;align-items:center;justify-content:center;border:1px solid rgba(23,107,79,.24);border-radius:8px;background:var(--accent-soft);color:var(--accent-strong)}.brand>span:last-child{display:grid;min-width:0}.brand strong{overflow:hidden;font-size:15px;text-overflow:ellipsis;white-space:nowrap}.brand small{overflow:hidden;color:var(--muted);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.site-nav{display:flex;align-items:center;gap:4px}.site-nav-link{display:inline-flex;min-height:38px;align-items:center;gap:7px;padding:0 11px;border-radius:8px;color:var(--muted-strong);font-size:14px;font-weight:600}.site-nav-link:hover,.site-nav-link.is-active{background:var(--accent-soft);color:var(--accent-strong);text-decoration:none}.mobile-nav-toggle{display:none}.site-main{width:min(1180px,calc(100% - 32px));flex:1;margin:0 auto;padding:34px 0 52px}.site-footer{display:flex;width:min(1180px,calc(100% - 32px));justify-content:space-between;gap:20px;margin:0 auto;padding:22px 0 30px;border-top:1px solid var(--line);color:var(--muted);font-size:12px}.page-stack{display:grid;gap:24px}.page-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:28px}.compact-heading h1{margin:2px 0 6px;font-size:clamp(28px,4vw,42px);line-height:1.12}.page-heading p{max-width:700px;margin:0;color:var(--muted)}.eyebrow{color:var(--accent);font-size:12px;font-weight:750;text-transform:uppercase}.button{display:inline-flex;min-height:40px;align-items:center;justify-content:center;gap:7px;padding:0 14px;border:1px solid transparent;border-radius:8px;font-size:14px;font-weight:680;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,transform .12s ease}.button:hover:not(:disabled){text-decoration:none;transform:translateY(-1px)}.button:disabled{cursor:not-allowed;opacity:.48}.button-primary{background:var(--accent);color:#fff}.button-primary:hover:not(:disabled){background:var(--accent-strong)}.button-secondary{border-color:var(--line-strong);background:var(--surface);color:var(--ink)}.button-secondary:hover:not(:disabled),.button-quiet:hover:not(:disabled){background:var(--surface-soft)}.button-quiet{border-color:var(--line);background:transparent;color:var(--muted-strong)}.icon-button{display:inline-flex;width:38px;height:38px;flex:0 0 38px;align-items:center;justify-content:center;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted-strong);cursor:pointer}.icon-button:hover:not(:disabled){border-color:var(--line-strong);color:var(--ink)}.text-link,.text-button{display:inline-flex;align-items:center;gap:5px;color:var(--accent-strong);font-size:13px;font-weight:650}.text-button{padding:0;border:0;background:transparent;cursor:pointer}.board-card{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:18px;padding:22px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);box-shadow:var(--shadow)}.board-card:hover{border-color:var(--line-strong);text-decoration:none}.board-card-icon{display:inline-flex;width:48px;height:48px;align-items:center;justify-content:center;border-radius:8px;background:var(--accent-soft);color:var(--accent-strong)}.board-card-main{min-width:0}.board-card-title{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.board-card h2{margin:0;font-size:22px}.board-card-title span,.board-card p{color:var(--muted);font-size:13px}.board-card p{margin:5px 0 13px}.board-counts{display:flex;flex-wrap:wrap;gap:8px 18px;color:var(--muted-strong);font-size:13px}.board-counts strong{color:var(--ink)}.section-block,.detail-panel,.comment-panel,.form-panel,.admin-list-panel,.admin-detail-panel{border:1px solid var(--line);border-radius:8px;background:var(--surface)}.section-block,.detail-panel,.comment-panel,.form-panel{padding:24px}.section-heading-row{display:flex;align-items:flex-start;justify-content:space-between;gap:20px}.section-heading-row h2,.detail-section h2,.admin-description h3,.admin-timeline h3{display:flex;align-items:center;gap:7px;margin:0;font-size:17px}.section-heading-row p{margin:4px 0 0;color:var(--muted);font-size:13px}.issue-list{display:grid;gap:10px;margin-top:18px}.issue-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px;padding:16px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink)}.issue-row:hover{border-color:var(--line-strong);background:var(--surface-soft);text-decoration:none}.issue-row-main{min-width:0}.issue-row-title{display:flex;min-width:0;align-items:center;gap:9px}.issue-row-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.issue-row-main p{overflow:hidden;margin:7px 0 0;color:var(--muted);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.issue-row-meta{display:grid;align-content:center;justify-items:end;gap:5px;color:var(--muted);font-size:12px}.status-badge,.hidden-badge,.event-status-change{display:inline-flex;min-height:24px;align-items:center;gap:5px;padding:0 8px;border:1px solid transparent;border-radius:999px;font-size:12px;font-weight:700;white-space:nowrap}.status-pending{border-color:#e5c486;background:var(--amber-soft);color:#704000}.status-in_progress{border-color:#a8c8df;background:var(--blue-soft);color:#204f74}.status-resolved{border-color:#a9d0bc;background:var(--accent-soft);color:var(--accent-strong)}.status-closed{border-color:#c9cfcc;background:#eef1ef;color:#57615c}.hidden-badge{border-color:#d3b4ba;background:var(--danger-soft);color:var(--danger)}.toolbar,.filter-toolbar{display:flex;align-items:center;gap:9px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.toolbar select,.filter-toolbar select,.admin-filter select,.field select{min-height:40px;padding:0 34px 0 11px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--ink)}.search-field{display:flex;min-width:240px;flex:1;align-items:center;gap:8px;padding:0 11px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--muted)}.search-field input{width:100%;min-height:40px;border:0;outline:0;background:transparent;color:var(--ink)}.result-summary{color:var(--muted);font-size:13px}.pagination{display:flex;align-items:center;justify-content:center;gap:6px}.page-number{min-width:36px;height:36px;border:1px solid var(--line);border-radius:8px;background:var(--surface);cursor:pointer}.page-number.is-active{border-color:var(--accent);background:var(--accent);color:#fff}.page-state,.empty-panel,.notice{display:flex;align-items:center;justify-content:center;gap:8px;padding:24px;border:1px dashed var(--line-strong);border-radius:8px;background:var(--surface-soft);color:var(--muted);text-align:center}.notice{justify-content:flex-start;border-style:solid;text-align:left}.notice-error{border-color:#e6b7bf;background:var(--danger-soft);color:var(--danger)}.notice-info{border-color:#b7cddd;background:var(--blue-soft);color:#204f74}.spin{animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.detail-topline{display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--muted)}.detail-header{padding-bottom:20px;border-bottom:1px solid var(--line)}.detail-title-line{display:flex;align-items:flex-start;gap:12px}.detail-title-line h1{margin:0;font-size:clamp(25px,4vw,38px);line-height:1.2}.detail-location{margin:13px 0 8px;color:var(--muted-strong)}.detail-dates{display:flex;flex-wrap:wrap;gap:6px 18px;color:var(--muted);font-size:12px}.detail-section{padding:24px 0;border-bottom:1px solid var(--line)}.detail-section:last-child{border-bottom:0;padding-bottom:0}.detail-section h2{margin-bottom:14px}.preserve-lines{margin:0;white-space:pre-wrap;overflow-wrap:anywhere}.attachment-grid,.admin-attachments{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}.attachment-grid a{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft)}.attachment-grid a:hover{border-color:var(--line-strong);text-decoration:none}.attachment-grid img{width:100%;aspect-ratio:16 / 10;object-fit:cover;background:#e9eeeb}.attachment-grid span{display:block;padding:8px 10px;color:var(--muted);font-size:12px}.timeline{display:grid;gap:0}.timeline-event{position:relative;display:grid;grid-template-columns:18px minmax(0,1fr);gap:12px;padding-bottom:18px}.timeline-event:last-child{padding-bottom:0}.timeline-event:before{position:absolute;top:14px;bottom:-2px;left:6px;width:1px;background:var(--line);content:""}.timeline-event:last-child:before{display:none}.timeline-marker{position:relative;z-index:1;width:13px;height:13px;margin-top:3px;border:3px solid var(--surface);border-radius:50%;background:var(--accent);box-shadow:0 0 0 1px var(--accent)}.event-hidden .timeline-marker{background:var(--danger);box-shadow:0 0 0 1px var(--danger)}.timeline-content{padding:13px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft)}.timeline-meta{display:flex;align-items:baseline;justify-content:space-between;gap:16px}.timeline-meta strong{font-size:14px}.timeline-meta time{color:var(--muted);font-size:12px}.timeline-content p{margin:8px 0 0}.event-status-change{margin-top:8px;background:var(--blue-soft);color:#204f74}.comment-form{display:grid;gap:10px;margin-top:18px}.comment-form input,.comment-form textarea,.admin-reply textarea,.field input,.field textarea,.merge-box input{width:100%;padding:10px 11px;border:1px solid var(--line-strong);border-radius:8px;outline:0;background:var(--surface);color:var(--ink)}.comment-form input{max-width:260px}.comment-form textarea,.field textarea,.admin-reply textarea{resize:vertical}input:focus,textarea:focus,select:focus,button:focus-visible,a:focus-visible{outline:3px solid rgba(23,107,79,.25);outline-offset:1px}.form-actions,.form-submit-row{display:flex;align-items:center;justify-content:space-between;gap:18px;color:var(--muted);font-size:12px}.form-panel{display:grid;gap:0}.form-section{padding:6px 0 28px;border-bottom:1px solid var(--line);margin-bottom:28px}.form-section:last-of-type{border-bottom:0}.form-section-heading{display:grid;grid-template-columns:34px minmax(0,1fr);gap:12px;margin-bottom:20px}.form-section-heading>span{display:inline-flex;width:28px;height:28px;align-items:center;justify-content:center;border-radius:8px;background:var(--accent-soft);color:var(--accent-strong);font-size:12px;font-weight:750}.form-section-heading h2{margin:0;font-size:17px}.form-section-heading p{margin:3px 0 0;color:var(--muted);font-size:13px}.selector-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.combobox-field,.field{position:relative;display:grid;gap:6px;min-width:0}.combobox-field>label,.field>span{color:var(--muted-strong);font-size:13px;font-weight:680}.field-label-row{display:flex;align-items:center;justify-content:space-between;gap:12px}.combobox-control{display:grid;grid-template-columns:auto minmax(0,1fr) auto;min-height:42px;align-items:center;gap:8px;padding:0 11px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);color:var(--muted)}.combobox-control.is-open{border-color:var(--accent);box-shadow:0 0 0 3px #176b4f1f}.combobox-control.is-disabled{background:#eff2f0;color:#9ba49f}.combobox-control input{width:100%;min-height:40px;border:0;outline:0;background:transparent;color:var(--ink);text-overflow:ellipsis}.combobox-control.is-disabled input{color:#969f9a}.combobox-menu{position:absolute;z-index:20;top:calc(100% + 5px);right:0;left:0;max-height:320px;overflow:auto;padding:5px;border:1px solid var(--line-strong);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.combobox-option{display:flex;width:100%;min-height:44px;align-items:center;justify-content:space-between;gap:10px;padding:7px 9px;border:0;border-radius:6px;background:transparent;text-align:left;cursor:pointer}.combobox-option.is-active{background:var(--surface-soft)}.combobox-option[aria-selected=true]{color:var(--accent-strong)}.combobox-option-copy{display:grid;min-width:0}.combobox-option-copy strong,.combobox-option-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.combobox-option-copy strong{font-size:13px}.combobox-option-copy small,.combobox-state,.field-hint,.field small{color:var(--muted);font-size:12px}.combobox-state{margin:0;padding:12px}.combobox-state.is-error{color:var(--danger)}.field small{justify-self:end}.inline-note{display:flex;align-items:flex-start;gap:7px;margin:16px 0 0;color:var(--muted);font-size:12px}.upload-drop{display:grid;min-height:150px;place-items:center;padding:20px;border:1px dashed var(--line-strong);border-radius:8px;background:var(--surface-soft);color:var(--muted-strong);text-align:center;cursor:pointer}.upload-drop:hover{border-color:var(--accent)}.upload-drop input{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;clip-path:inset(50%)}.upload-drop strong{margin-top:7px;color:var(--ink)}.upload-drop span{font-size:12px}.upload-list{display:grid;gap:8px;margin-top:14px}.upload-item{display:grid;grid-template-columns:70px minmax(0,1fr) auto;align-items:center;gap:12px;padding:8px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.upload-item img{width:70px;height:52px;border-radius:6px;object-fit:cover;background:#e7ece9}.upload-item div{display:grid;min-width:0}.upload-item strong,.upload-item span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.upload-item strong{font-size:13px}.upload-item span{color:var(--muted);font-size:12px}.admin-login-wrap{display:grid;min-height:55vh;place-items:center}.admin-login-card{display:grid;width:min(430px,100%);gap:16px;padding:24px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.admin-login-heading{display:flex;align-items:flex-start;gap:11px}.admin-login-heading h1{margin:0;font-size:22px}.admin-login-heading p{margin:3px 0 0;color:var(--muted);font-size:13px}.admin-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.admin-stat{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.admin-stat strong{font-size:20px}.admin-workspace{display:grid;grid-template-columns:minmax(290px,.8fr) minmax(0,1.5fr);gap:16px;align-items:start}.admin-list-panel,.admin-detail-panel{min-width:0;padding:16px}.admin-filter{display:grid;grid-template-columns:minmax(0,1fr) 120px auto;gap:8px}.admin-issue-list{display:grid;max-height:720px;gap:7px;margin-top:12px;overflow:auto}.admin-issue-item{display:grid;gap:6px;padding:12px;border:1px solid var(--line);border-radius:8px;background:var(--surface);text-align:left;cursor:pointer}.admin-issue-item:hover,.admin-issue-item.is-active{border-color:var(--accent);background:var(--accent-soft)}.admin-issue-item>div{display:flex;align-items:center;gap:7px}.admin-issue-item strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.admin-issue-item small,.admin-issue-item time{overflow:hidden;color:var(--muted);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.admin-detail-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding-bottom:16px;border-bottom:1px solid var(--line)}.admin-detail-heading h2{margin:8px 0 4px;font-size:22px}.admin-detail-heading code{color:var(--muted)}.admin-location{display:grid;gap:4px;margin:15px 0;color:var(--muted-strong);font-size:13px}.admin-location code{color:var(--muted);overflow-wrap:anywhere}.admin-actions-grid{display:grid;grid-template-columns:180px minmax(0,1fr);gap:14px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft)}.merge-box{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:8px}.admin-description,.admin-timeline{padding-top:20px}.admin-description>p{margin:10px 0 0}.admin-attachments{margin-top:12px}.admin-attachments img{width:100%;aspect-ratio:16 / 10;border:1px solid var(--line);border-radius:8px;object-fit:cover}.admin-event{display:grid;gap:6px;padding:12px 0;border-bottom:1px solid var(--line)}.admin-event.is-hidden{opacity:.6}.admin-event>div{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px}.admin-event time{color:var(--muted);font-size:12px}.admin-event p{margin:0}.admin-reply{display:grid;gap:9px;margin-top:16px}.admin-reply .button{justify-self:end}@media(max-width:900px){.admin-workspace{grid-template-columns:1fr}.admin-issue-list{max-height:360px}}@media(max-width:760px){.site-header-inner,.site-main,.site-footer{width:min(100% - 22px,1180px)}.mobile-nav-toggle{display:inline-flex}.site-nav{position:absolute;z-index:40;top:61px;right:11px;left:11px;display:none;padding:7px;border:1px solid var(--line);border-radius:8px;background:var(--surface);box-shadow:var(--shadow)}.site-nav.is-open{display:grid}.site-nav-link{min-height:44px}.site-main{padding-top:22px}.site-footer{flex-direction:column}.page-heading{align-items:stretch;flex-direction:column;gap:16px}.page-heading .button{align-self:flex-start}.board-card{grid-template-columns:auto minmax(0,1fr)}.board-card>svg{display:none}.board-card-title{align-items:flex-start;flex-direction:column;gap:3px}.issue-row{grid-template-columns:1fr;gap:10px}.issue-row-meta{justify-items:start}.filter-toolbar{align-items:stretch;flex-wrap:wrap}.search-field{min-width:100%}.filter-toolbar select{flex:1}.selector-grid{grid-template-columns:1fr}.detail-title-line{flex-direction:column}.form-submit-row{align-items:stretch;flex-direction:column}.form-submit-row .button{width:100%}.admin-stats{grid-template-columns:repeat(2,minmax(0,1fr))}.admin-actions-grid{grid-template-columns:1fr}}@media(max-width:480px){.section-block,.detail-panel,.comment-panel,.form-panel,.admin-list-panel,.admin-detail-panel,.board-card{padding:16px}.board-card-icon{width:40px;height:40px}.pagination{justify-content:flex-start;overflow-x:auto;padding-bottom:4px}.admin-filter{grid-template-columns:1fr auto}.admin-filter .search-field{grid-column:1 / -1}.merge-box{grid-template-columns:1fr}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
