.ch-card{background:var(--color-soyo-surface);border:1px solid var(--color-soyo-border);border-top:2px solid var(--color-soyo-rule);padding:1.75rem}.ch-head{font-family:var(--font-display);font-weight:800;font-size:1.5rem;line-height:1.3;margin:0}.ch-stat{text-align:center;min-width:4.5rem}.ch-stat b{display:block;font-family:var(--font-display);font-weight:800;font-size:1.6rem;line-height:1.3;color:var(--color-soyo-text)}.ch-stat span{font-family:var(--font-ui);font-size:12px;color:var(--color-soyo-subtle)}.ch-stat.fire b{color:var(--color-soyo-seal)}.ch-target{display:grid;grid-template-columns:repeat(auto-fill,minmax(2.6rem,1fr));border-top:1px solid var(--color-soyo-rule);border-left:1px solid var(--color-soyo-rule)}.ch-target .c{aspect-ratio:1;display:flex;align-items:center;justify-content:center;border-right:1px solid var(--color-soyo-rule);border-bottom:1px solid var(--color-soyo-rule);font-family:var(--font-display);font-size:1.35rem;background:var(--color-soyo-bg);color:color-mix(in srgb,var(--color-soyo-muted) 45%,transparent);transition:color .15s,background .15s}.ch-target .c.ok{color:var(--color-soyo-text);font-weight:700}.ch-target .c.bad{color:var(--color-soyo-seal);background:color-mix(in srgb,var(--color-soyo-seal) 10%,transparent)}.ch-target .c.cur{background:color-mix(in srgb,var(--color-soyo-accent) 14%,transparent);box-shadow:inset 0 -3px 0 var(--color-soyo-accent)}.dark .ch-target,.dark .ch-target .c{border-color:#6b6254}.ch-field{width:100%;padding:.75rem .9rem;border:1px solid var(--color-soyo-border);border-radius:2px;background:var(--color-soyo-bg);color:var(--color-soyo-text);font-family:var(--font-serif);font-size:1rem;line-height:1.8}.ch-field:focus{outline:none;border-color:var(--color-soyo-text);box-shadow:0 0 0 1px var(--color-soyo-text)}.ch-btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 1.5rem;background:var(--color-soyo-text);color:var(--color-soyo-bg);border:none;cursor:pointer;font-family:var(--font-ui);font-weight:600;font-size:.95rem;white-space:nowrap;transition:background .2s}.ch-btn:hover:not(:disabled){background:var(--color-soyo-accent);color:#fff}.ch-btn:disabled{opacity:.45;cursor:not-allowed}.ch-btn.ghost{background:transparent;color:var(--color-soyo-text);border:2px solid var(--color-soyo-text)}.ch-btn.ghost:hover:not(:disabled){background:transparent;border-color:var(--color-soyo-accent);color:var(--color-soyo-accent)}.ch-tabs{display:flex;flex-wrap:wrap;gap:.25rem 1.4rem;border-bottom:1px solid var(--color-soyo-border);margin-bottom:1.5rem}.ch-tab{font-family:var(--font-ui);font-size:15px;font-weight:500;color:var(--color-soyo-muted);padding:.6rem 0;margin-bottom:-1px;border:none;border-bottom:2px solid transparent;background:none;cursor:pointer}.ch-tab:hover{color:var(--color-soyo-text)}.ch-tab.on{color:var(--color-soyo-accent);border-bottom-color:var(--color-soyo-accent);font-weight:600}.ch-meter{height:4px;background:color-mix(in srgb,var(--color-soyo-border) 60%,transparent);overflow:hidden}.ch-meter b{display:block;height:100%;background:var(--color-soyo-accent);transition:width .2s}.ch-cal{display:grid;grid-template-columns:repeat(7,1fr);gap:6px;max-width:420px}.ch-cal div{aspect-ratio:1;border-radius:2px;display:flex;align-items:center;justify-content:center;font-family:var(--font-ui);font-size:.68rem;color:var(--color-soyo-subtle);background:color-mix(in srgb,var(--color-soyo-border) 30%,transparent)}.ch-cal div.done{background:var(--color-soyo-seal);color:var(--color-soyo-seal-ink);font-family:var(--font-display);font-weight:800;font-size:.85rem;transform:rotate(-4deg);border-radius:4px}.ch-cal div.today{outline:2px solid var(--color-soyo-accent);outline-offset:1px}.ch-cal div.future{opacity:.35}.ch-wall{border-top:2px solid var(--color-soyo-rule)}.ch-wall-item{padding:1.1rem 0;border-bottom:1px solid var(--color-soyo-border);color:inherit}a.ch-wall-item:hover p{color:var(--color-soyo-accent)}.ch-wall-item:last-child{border-bottom:none}.ch-ring{transform:rotate(-90deg)}.ch-ring circle{fill:none;stroke-width:10}.ch-ring .bg{stroke:color-mix(in srgb,var(--color-soyo-border) 60%,transparent)}.ch-ring .fg{stroke:var(--color-soyo-accent);stroke-linecap:butt;transition:stroke-dashoffset .9s linear}.ch-ring.done .fg{stroke:var(--color-soyo-seal)}.ch-seal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:1.1rem .8rem}.ch-seal-cell{text-align:center}.ch-seal-cell .nm{font-family:var(--font-display);font-size:.9rem;font-weight:700;margin-top:.55rem;color:var(--color-soyo-text)}.ch-seal-cell .ds{font-family:var(--font-ui);font-size:.7rem;color:var(--color-soyo-subtle);line-height:1.45;margin-top:.15rem}.ch-seal-cell.off .nm{color:var(--color-soyo-muted)}.ch-rank li{display:flex;align-items:center;gap:.7rem;padding:.55rem 0;font-size:.92rem;border-bottom:1px solid var(--color-soyo-border)}.ch-rank li:last-child{border-bottom:none}.ch-rank li .n{width:1.6rem;text-align:right;font-family:var(--font-display);font-weight:800;color:var(--color-soyo-accent);font-size:.95rem}.ch-rank li .v{margin-left:auto;font-family:var(--font-ui);font-weight:600;color:var(--color-soyo-accent)}#ch-stamp{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:#14100a8c;backdrop-filter:blur(2px)}#ch-stamp.show{display:flex}#ch-stamp .ch-stamp-sheet{background:var(--color-soyo-bg);border:1px solid var(--color-soyo-border);border-top:3px solid var(--color-soyo-rule);padding:2.2rem 2.4rem;text-align:center;max-width:340px;margin:0 1.5rem}#ch-stamp .seal{width:96px;height:96px;font-size:3rem;animation:stamp .55s cubic-bezier(.2,.9,.3,1.2) both}@keyframes stamp{0%{transform:scale(2.4) rotate(-18deg);opacity:0}60%{transform:scale(.92) rotate(-2deg);opacity:1}to{transform:scale(1) rotate(-3deg)}}
