*{box-sizing:border-box;padding:0;margin:0}body,html{max-width:100vw;overflow-x:hidden;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;background:#f8f7f4;color:#1a1a1a}.header{background:#fff;border-bottom:1px solid #e8e4dc;padding:0 2rem;height:56px;display:flex;align-items:center;position:-webkit-sticky;position:sticky;top:0;z-index:100}.header-title{font-size:1.25rem;font-weight:700;color:#2d6a35;letter-spacing:.02em;text-decoration:none}.main{max-width:1100px;margin:0 auto;padding:2rem 1.5rem}.page-heading{margin-bottom:1.5rem}.page-heading h1{font-size:1.5rem;font-weight:700;color:#1a1a1a}.page-heading p{font-size:.9rem;color:#888;margin-top:.25rem}.filters{display:flex;gap:.75rem;flex-wrap:wrap;margin-bottom:1.5rem;background:#fff;border:1px solid #e8e4dc;border-radius:10px;padding:1rem 1.25rem}.filter-group{display:flex;flex-direction:column;gap:.3rem}.filter-group label{font-size:.75rem;font-weight:600;color:#666;text-transform:uppercase;letter-spacing:.05em}.filter-group input,.filter-group select{border:1px solid #ddd;border-radius:6px;padding:.4rem .75rem;font-size:.9rem;background:#fff;color:#1a1a1a;min-width:130px;outline:none;transition:border-color .15s}.filter-group input:focus,.filter-group select:focus{border-color:#2d6a35}.filter-reset{align-self:flex-end;padding:.4rem 1rem;border:1px solid #ddd;border-radius:6px;background:#fff;color:#666;font-size:.875rem;cursor:pointer;transition:background .15s,color .15s}.filter-reset:hover{background:#f0f0f0;color:#333}.results-meta{font-size:.85rem;color:#888;margin-bottom:1rem}.race-list{display:flex;flex-direction:column;gap:.75rem}.race-card{background:#fff;border:1px solid #e8e4dc;border-radius:10px;padding:1rem 1.25rem;display:grid;grid-template-columns:90px 1fr auto;grid-gap:0 1.25rem;gap:0 1.25rem;align-items:start;transition:border-color .15s,box-shadow .15s}.race-card:hover{border-color:#b3d4b8;box-shadow:0 2px 8px rgba(45,106,53,.08)}.race-date{display:flex;flex-direction:column;align-items:center;padding-top:.1rem}.race-date-month{font-size:.75rem;color:#888;text-transform:uppercase}.race-date-day{font-size:2rem;font-weight:700;line-height:1;color:#2d6a35}.race-date-weekday{font-size:.75rem;color:#888}.race-info{min-width:0}.race-name{font-size:1rem;font-weight:600;color:#1a1a1a;margin-bottom:.35rem;line-height:1.4}.race-meta{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.race-tag{display:inline-flex;align-items:center;gap:.25rem;font-size:.8rem;color:#555}.race-tag-prefecture{background:#eef5ef;color:#2d6a35;border-radius:4px;padding:.1rem .5rem;font-weight:500}.race-distances{display:flex;flex-wrap:wrap;gap:.35rem;margin-top:.5rem}.distance-badge{font-size:.78rem;border-radius:4px;padding:.1rem .5rem;border:1px solid}.distance-badge-distance{background:#f0f7f1;border-color:#b3d4b8;color:#2d6a35}.distance-badge-time{background:#fff4ec;border-color:#f5c89a;color:#b05d10}.distance-badge-other{background:#f5f5f5;border-color:#ddd;color:#666}.race-link{align-self:center;white-space:nowrap;font-size:.82rem;color:#2d6a35;text-decoration:none;border:1px solid #b3d4b8;border-radius:6px;padding:.35rem .75rem;transition:background .15s}.race-link:hover{background:#eef5ef}.pagination{display:flex;justify-content:center;align-items:center;gap:.5rem;margin-top:2rem}.pagination button{padding:.4rem .9rem;border:1px solid #ddd;border-radius:6px;background:#fff;color:#333;font-size:.9rem;cursor:pointer;transition:background .15s,border-color .15s}.pagination button:hover:not(:disabled){background:#eef5ef;border-color:#b3d4b8;color:#2d6a35}.pagination button:disabled{opacity:.4;cursor:default}.pagination button.active{background:#2d6a35;border-color:#2d6a35;color:#fff}.pagination-info{font-size:.85rem;color:#888;padding:0 .5rem}.state-empty,.state-error,.state-loading{text-align:center;padding:4rem 2rem;color:#888}.state-error{color:#c0392b}.admin-login-wrap{min-height:calc(100vh - 56px);display:flex;align-items:center;justify-content:center;background:#f8f7f4}.admin-login-card{background:#fff;border:1px solid #e8e4dc;border-radius:12px;padding:2.5rem 2rem;width:100%;max-width:400px}.admin-login-logo{font-size:1.1rem;font-weight:700;color:#2d6a35;margin-bottom:.5rem}.admin-login-title{font-size:1.25rem;font-weight:700;color:#1a1a1a;margin-bottom:1.5rem}.admin-login-form{display:flex;flex-direction:column;gap:1rem}.admin-form-group{display:flex;flex-direction:column;gap:.35rem}.admin-form-group label{font-size:.82rem;font-weight:600;color:#555}.admin-form-group input,.admin-form-group textarea{border:1px solid #ddd;border-radius:7px;padding:.5rem .75rem;font-size:.95rem;outline:none;transition:border-color .15s;background:#fff;color:#1a1a1a}.admin-form-group input:focus,.admin-form-group textarea:focus{border-color:#2d6a35}.admin-login-error{background:#fff0f0;border:1px solid #f5c0c0;border-radius:7px;padding:.6rem .85rem;font-size:.875rem;color:#c0392b}.admin-login-btn{background:#2d6a35;color:#fff;border:none;border-radius:7px;padding:.65rem 1rem;font-size:1rem;font-weight:600;cursor:pointer;transition:background .15s;margin-top:.25rem}.admin-login-btn:hover:not(:disabled){background:#235429}.admin-login-btn:disabled{opacity:.6;cursor:default}.admin-wrap{max-width:1200px;margin:0 auto;padding:1.5rem}.admin-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.25rem}.admin-header-title{font-size:1.15rem;font-weight:700;color:#1a1a1a}.admin-header-right{display:flex;align-items:center;gap:1rem}.admin-header-count{font-size:.85rem;color:#888}.admin-logout-btn{border:1px solid #ddd;border-radius:6px;background:#fff;color:#555;font-size:.85rem;padding:.35rem .85rem;cursor:pointer;transition:background .15s}.admin-logout-btn:hover{background:#f0f0f0}.admin-toolbar{margin-bottom:1rem}.admin-search{border:1px solid #ddd;border-radius:7px;padding:.5rem .85rem;font-size:.9rem;width:280px;outline:none;transition:border-color .15s}.admin-search:focus{border-color:#2d6a35}.admin-table-wrap{overflow-x:auto;border:1px solid #e8e4dc;border-radius:10px;background:#fff}.admin-table{width:100%;border-collapse:collapse;font-size:.875rem}.admin-table th{background:#f5f4f0;padding:.7rem 1rem;text-align:left;font-weight:600;color:#555;font-size:.8rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:1px solid #e8e4dc;white-space:nowrap}.admin-table td{padding:.7rem 1rem;border-bottom:1px solid #f0ede6;color:#1a1a1a;vertical-align:middle}.admin-table tr:last-child td{border-bottom:none}.admin-table tr:hover td{background:#fafaf8}.admin-td-date{white-space:nowrap;color:#555}.admin-td-name{font-weight:500;max-width:280px}.admin-td-pref{white-space:nowrap}.admin-td-dist{color:#666;max-width:160px;font-size:.82rem}.admin-td-url a{color:#2d6a35;text-decoration:none}.admin-td-url a:hover{text-decoration:underline}.admin-edit-btn{border:1px solid #b3d4b8;border-radius:5px;background:#eef5ef;color:#2d6a35;font-size:.82rem;padding:.3rem .75rem;cursor:pointer;white-space:nowrap;transition:background .15s}.admin-edit-btn:hover{background:#d5ebd8}.admin-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:flex;align-items:center;justify-content:center;z-index:200;padding:1rem}.admin-modal{background:#fff;border-radius:12px;width:100%;max-width:520px;max-height:90vh;display:flex;flex-direction:column;box-shadow:0 8px 40px rgba(0,0,0,.18)}.admin-modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.25rem 1.5rem;border-bottom:1px solid #e8e4dc}.admin-modal-header h2{font-size:1.05rem;font-weight:700;color:#1a1a1a}.admin-modal-close{background:none;border:none;font-size:1.1rem;color:#888;cursor:pointer;padding:.2rem .4rem;border-radius:4px;line-height:1}.admin-modal-close:hover{background:#f0f0f0;color:#333}.admin-modal-body{padding:1.5rem;overflow-y:auto;display:flex;flex-direction:column;gap:1rem}.admin-save-error{background:#fff0f0;border:1px solid #f5c0c0;border-radius:7px;color:#c0392b}.admin-save-error,.admin-save-success{padding:.6rem .85rem;font-size:.875rem}.admin-save-success{background:#f0f7f1;border:1px solid #b3d4b8;border-radius:7px;color:#2d6a35;font-weight:500}.admin-modal-footer{display:flex;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;border-top:1px solid #e8e4dc}.admin-cancel-btn{border:1px solid #ddd;border-radius:7px;background:#fff;color:#555;font-size:.9rem;padding:.5rem 1.1rem;cursor:pointer;transition:background .15s}.admin-cancel-btn:hover:not(:disabled){background:#f0f0f0}.admin-save-btn{background:#2d6a35;color:#fff;border:none;border-radius:7px;font-size:.9rem;font-weight:600;padding:.5rem 1.25rem;cursor:pointer;transition:background .15s}.admin-save-btn:hover:not(:disabled){background:#235429}.admin-cancel-btn:disabled,.admin-save-btn:disabled{opacity:.55;cursor:default}.admin-scraping-btn{background:#2d6a35;color:#fff;border:none;border-radius:6px;font-size:.85rem;font-weight:600;padding:.35rem .9rem;cursor:pointer;transition:background .15s}.admin-scraping-btn:hover:not(:disabled){background:#235429}.admin-scraping-btn:disabled{opacity:.6;cursor:default}.admin-scraping-result{display:flex;align-items:center;justify-content:space-between;background:#f0f7f1;border:1px solid #b3d4b8;border-radius:7px;padding:.65rem 1rem;font-size:.875rem;color:#2d6a35;font-weight:500;margin-bottom:1rem}.admin-scraping-result-close{background:none;border:none;color:#888;cursor:pointer;font-size:.9rem;padding:0 .25rem;margin-left:.75rem}.admin-scraping-result-close:hover{color:#333}