body{font-size:var(--text-base,1rem);counter-reset:section;line-height:1.65}::selection{background:var(--accent);color:var(--bg)}::marker{color:var(--text-faint)}body:lang(ja){font-feature-settings:"palt";line-height:1.9}h1,h2,h3,h4{letter-spacing:-.01em;font-weight:700;line-height:1.25}h1:where(:lang(ja)),h2:where(:lang(ja)),h3:where(:lang(ja)),h4:where(:lang(ja)){letter-spacing:0}:focus-visible{outline:1px solid var(--accent);outline-offset:2px;border-radius:var(--radius)}.skip-link{font-family:var(--font-mono);font-size:var(--text-xs,12px);letter-spacing:.06em;color:var(--accent);border:1px solid var(--accent)}.card{background:var(--bg-raised);border:1px solid var(--line);border-radius:var(--radius)}.chip{font-family:var(--font-mono);font-size:var(--text-sm,.875rem);border:1px solid var(--line);border-radius:var(--radius-sm);padding:4px var(--space-3,12px);background:var(--bg-raised);color:var(--text);white-space:nowrap;align-items:baseline;gap:.45em;display:inline-flex}.chip b{color:var(--text);font-variant-numeric:tabular-nums;font-weight:600}.section-title{align-items:baseline;gap:var(--space-3,12px);margin:0 0 var(--space-5,24px);font-family:var(--font-mono);font-size:var(--text-xs,12px);letter-spacing:.08em;text-transform:uppercase;color:var(--text);font-weight:600;display:flex}.section-title:before{counter-increment:section;content:"§" counter(section, decimal-leading-zero);color:var(--text-faint);font-weight:400}.section-title:after{content:"";border-bottom:1px solid var(--line);flex:1;transform:translateY(-4px)}.evidence-link{font-family:var(--font-mono);font-size:var(--text-xs,12px);border:1px solid var(--viz-1);border-radius:var(--radius-sm);padding:1px var(--space-2,8px);color:var(--accent);word-break:break-all;background:0 0;line-height:1.6;transition:background .15s,border-color .15s;display:inline-block}a.evidence-link:hover{background:var(--accent-soft);border-color:var(--accent);text-decoration:none}code.evidence-link,span.evidence-link{color:var(--text-dim);border-color:var(--line)}.evidence-code{font-family:var(--font-mono);font-size:var(--text-xs,12px);color:var(--text-dim)}.label{font-family:var(--font-mono);font-size:var(--text-xs,12px);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);font-weight:600}.meta-line{gap:var(--space-1,4px) 0;font-family:var(--font-mono);font-size:var(--text-xs,12px);letter-spacing:.06em;color:var(--text-dim);flex-wrap:wrap;display:flex}.meta-line .sep{color:var(--text-faint);padding-inline:var(--space-3,12px)}.meta-line .st-ok{color:var(--ok);font-weight:600}.meta-line a{color:var(--text-dim)}.meta-line a:hover{color:var(--accent);text-decoration:none}.btn{font-family:var(--font-mono);font-size:var(--text-sm,14px);letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--line);border-radius:var(--radius-sm);padding:var(--space-2,8px) 18px;color:var(--text);transition:border-color .15s,color .15s,background .15s;display:inline-block}.btn:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);text-decoration:none}.btn:focus-visible{outline-offset:3px}.btn.primary{border-color:var(--viz-1);color:var(--accent)}.btn .ext{margin-left:var(--space-2,8px);color:var(--text-faint)}.btn:hover .ext{color:var(--accent)}.ext{color:var(--text-faint)}.stats{border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:var(--bg-raised)}.stats .container{padding-inline:0}.stats-grid{grid-template-columns:repeat(4,1fr);display:grid}.stat{padding:var(--space-5,24px);border-left:1px solid var(--line)}.stat:first-child{border-left:none}.stat .v{font-family:var(--font-mono);font-size:var(--text-xl,28px);font-variant-numeric:tabular-nums;color:var(--text);font-weight:600;line-height:1.2}.stat .v small{font-size:var(--text-xs,12px);color:var(--text-faint);font-weight:400}.stat .k{margin-top:2px}.stats--sub .stats-grid{grid-template-columns:repeat(3,1fr)}.stats--sub .stat{padding:var(--space-4,16px) var(--space-5,24px)}.stats--sub .stat .v{font-size:var(--text-lg,22px)}.sig-table{border-top:1px solid var(--line)}.sig-row{gap:var(--space-4,16px);padding:var(--space-3,12px);border-bottom:1px solid var(--line);font-family:var(--font-mono);font-size:var(--text-sm,14px);grid-template-columns:120px minmax(0,1fr) 56px 110px;align-items:center;transition:background .15s;display:grid}.sig-row:hover{background:var(--bg-raised)}.sig-row .name{color:var(--text)}.sig-row .bar{background:repeating-linear-gradient(to right, var(--viz-0) 0 6px, transparent 6px 9px);height:12px;position:relative;overflow:hidden}.sig-row .bar:before{content:"";width:var(--pct,0%);background:repeating-linear-gradient(to right, var(--fill,var(--viz-1)) 0 6px, transparent 6px 9px);border-right:3px solid var(--viz-4);box-sizing:border-box;position:absolute;inset:0 auto 0 0}.sig-row .pct{text-align:right;font-variant-numeric:tabular-nums;color:var(--text)}.sig-row .src{font-size:var(--text-xs,12px);letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);text-align:right;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.sig-table--nosrc .sig-row{grid-template-columns:120px minmax(0,1fr) 56px}.trace{pointer-events:none;width:100%;height:72px;position:absolute;bottom:8px;left:0;right:0}.trace polyline{fill:none;stroke:var(--accent);stroke-width:1.5px;opacity:.45}.trace--static polyline{opacity:.18}body[data-surface=showcase] .trace polyline{stroke-dasharray:1;stroke-dashoffset:1px;animation:1.8s ease-out .4s forwards trace-draw}@keyframes trace-draw{to{stroke-dashoffset:0}}.caret{color:var(--accent);display:inline-block}body[data-surface=showcase] .caret{animation:1.1s step-end infinite caret-blink}@keyframes caret-blink{50%{opacity:0}}.caret--static{opacity:.45}.chip.category-badge{font-size:var(--text-xs,12px);letter-spacing:.08em;text-transform:uppercase;padding:2px var(--space-2,8px);color:var(--text-dim);background:0 0;border-color:currentColor;font-weight:600}.category-badge .dot{display:none}.chip.cat-product,.chip.cat-service,.chip.cat-client{color:var(--warn)}.chip.cat-oss,.chip.cat-hobby{color:var(--accent)}.chip.cat-learning{color:var(--text-dim)}.project-card{transform:none!important}.project-card:hover{background:var(--bg-overlay)}.project-card .name{letter-spacing:-.01em;font-family:var(--font-mono)!important;font-weight:600!important}.project-card .name:lang(ja){letter-spacing:0}.timeline{border-top:1px solid var(--line)}.timeline:before{display:none!important}.timeline .event{border-bottom:1px solid var(--line);padding:var(--space-3,12px) var(--space-2,8px)!important}.timeline .event:before{display:none!important}.timeline .event+.event{margin-top:0!important}.timeline .date{font-variant-numeric:tabular-nums;font-size:var(--text-sm,14px)!important;color:var(--text-dim)!important}.timeline .event-title{font-weight:600!important}.langbars svg,.langbars .legend .dot{border-radius:0!important}.langbars .legend .pct{color:var(--text-dim)!important}.theme-dock summary,.theme-dock ul{border-radius:var(--radius)!important}@media (prefers-reduced-motion:reduce){body[data-surface=showcase] .trace polyline{stroke-dashoffset:0;animation:none}body[data-surface=showcase] .caret{animation:none}}@media print{body,.section-title{color:#111}.section-title:before{color:#666}.section-title:after{border-color:#ccc}.chip,.chip b{color:#333;background:#fff;border-color:#ccc}.evidence-link{color:#333;border-color:#ccc}.meta-line,.label{color:#444}.trace{display:none}}
