:root{--font-sans:system-ui, -apple-system, "Segoe UI", "Hiragino Kaku Gothic ProN", "Noto Sans JP", Meiryo, sans-serif;--color-bg:#f4f7fb;--color-surface:#fff;--color-text:#1d2530;--color-muted:#5c6675;--color-border:#dbe3ee;--color-accent:#0a6ebd;--color-accent-strong:#108adf;--gradient-brand:linear-gradient(90deg, #0891b2, #2563eb);--gradient-brand-button:linear-gradient(90deg, #0e7490, #2563eb);--radius:8px;--measure:46rem}@media (prefers-color-scheme:dark){:root{--color-bg:#020617;--color-surface:#0f172a;--color-text:#e2e8f0;--color-muted:#94a3b8;--color-border:#1e293b;--color-accent:#22d3ee;--color-accent-strong:#60a5fa}}*{box-sizing:border-box}body{font-family:var(--font-sans);background:var(--color-bg);color:var(--color-text);margin:0;line-height:1.75}.site-header{background:var(--color-surface);border-bottom:1px solid var(--color-border)}.site-header>div{align-items:baseline;max-width:72rem;margin-inline:auto;padding:.8rem 1rem;display:flex}.site-header .brand{background:var(--gradient-brand);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:1.3rem;font-weight:700;text-decoration:none}main{max-width:var(--measure);margin-inline:auto;padding:1.5rem 1rem 4rem}main.wide{max-width:72rem}.site-footer{max-width:var(--measure);color:var(--color-muted);border-top:1px solid var(--color-border);margin-inline:auto;padding:1rem;font-size:.85rem}h1{margin:1rem 0;font-size:1.6rem;line-height:1.4}h2{border-bottom:3px solid;border-image:var(--gradient-brand) 1;margin:2.2rem 0 .8rem;padding-bottom:.3rem;font-size:1.15rem}a{color:var(--color-accent)}a:hover{color:var(--color-accent-strong)}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--color-accent-strong);outline-offset:2px}table{border-collapse:collapse;background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);width:100%;overflow:hidden}th,td{text-align:left;vertical-align:top;border-bottom:1px solid var(--color-border);padding:.55rem .8rem}tr:last-child th,tr:last-child td{border-bottom:none}th{white-space:nowrap;width:6.5rem;color:var(--color-muted);font-weight:600}.project-list{gap:1rem;margin:0;padding:0;list-style:none;display:grid}.project-list[hidden]{display:none}.project-card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.2rem 1.4rem}.project-card__title{color:var(--color-text);font-size:1.3rem;font-weight:700;text-decoration:none;display:block}.project-card__title:hover{color:var(--color-accent-strong);text-decoration:underline}.project-card__description{color:var(--color-muted);-webkit-line-clamp:2;-webkit-box-orient:vertical;margin:.5rem 0 0;font-size:.9rem;display:-webkit-box;overflow:hidden}.project-card__meta{flex-wrap:wrap;gap:.3rem 1.3rem;margin:.9rem 0 0;padding:0;list-style:none;display:flex}.project-card__meta-item{color:var(--color-muted);padding-left:.85rem;font-size:.85rem;position:relative}.project-card__meta-item:before{content:"";background:var(--color-accent);border-radius:50%;width:5px;height:5px;position:absolute;top:.5em;left:0}.project-card__meta-item--reward{color:var(--color-accent-strong);font-weight:700}.project-card__tags{flex-wrap:wrap;align-items:center;gap:.4rem .7rem;margin:.7rem 0 0;padding:0;list-style:none;display:flex}.project-card__tag{background:var(--color-bg);border:1px solid var(--color-border);color:var(--color-accent-strong);border-radius:999px;padding:.15rem .75rem;font-size:.75rem;font-weight:700;display:inline-block}.project-card__posted{color:var(--color-muted);font-size:.75rem}.meta{color:var(--color-muted);font-size:.85rem}.listing-layout{grid-template-columns:16rem 1fr;align-items:start;gap:2rem;display:grid}.filters-toggle{width:100%;font-family:var(--font-sans);color:#fff;background:var(--gradient-brand-button);border-radius:var(--radius);cursor:pointer;border:none;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:.7rem 1rem;font-size:.95rem;font-weight:600;display:none}.filters-toggle-chevron{transition:transform .15s}.filters-toggle[aria-expanded=true] .filters-toggle-chevron{transform:rotate(180deg)}@media (width<=760px){.listing-layout{grid-template-columns:1fr}.filters-toggle{display:flex}.search-panel{display:none}.search-panel.is-open{display:block}}.search-panel{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);margin-bottom:1.5rem;padding:1rem 1.2rem}.search-panel-heading{color:var(--color-text);border-bottom:3px solid;border-image:var(--gradient-brand) 1;border-radius:var(--radius) var(--radius) 0 0;margin:-1rem -1.2rem 1rem;padding:.7rem 1.2rem;font-size:1rem;font-weight:700}.listing-header{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);flex-wrap:wrap;align-items:baseline;gap:0 .8rem;margin-bottom:1.5rem;padding:1rem 1.4rem;display:flex}.listing-header h1,.listing-header .meta{margin:0}.listing-sort{color:var(--color-muted);align-items:center;gap:.4rem;margin-left:auto;font-size:.85rem;display:flex}.listing-sort__select{font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:.3rem .6rem;font-size:.85rem}.search-dev-notice{color:var(--color-muted);margin:0;font-size:.85rem}.search-input{width:100%;font-family:var(--font-sans);color:var(--color-text);background:var(--color-bg);border:1px solid var(--color-border);border-radius:var(--radius);padding:.5rem .7rem;font-size:1rem}.tag-filters{flex-direction:column;gap:1.2rem;margin-top:1rem;display:flex}.tag-filter-group{border:none;margin:0;padding:0}.tag-filter-group+.tag-filter-group{border-top:1px solid var(--color-border);padding-top:1rem}.tag-filter-group legend{padding:0 0 .3rem;font-size:.85rem;font-weight:600}.tag-filter-option{color:var(--color-muted);cursor:pointer;align-items:center;gap:.4rem;padding:.15rem 0;font-size:.9rem;display:flex}.tag-filter-option:has(input:checked){color:var(--color-accent-strong);font-weight:600}.search-clear-button{font-family:var(--font-sans);color:var(--color-accent);cursor:pointer;background:0 0;border:none;margin-top:1rem;padding:0;font-size:.85rem;text-decoration:underline}.search-clear-button:hover{color:var(--color-accent-strong)}
