:root{--bg:#f7f8fa;--surface:#ffffff;--text:#1a2233;--text-soft:#5a6478;--border:#dfe3ea;--accent:#2451e6;--accent-soft:#e8edfd;--error:#c92a2a}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:Hiragino Sans,Noto Sans JP,Yu Gothic UI,system-ui,sans-serif;line-height:1.7}main{max-width:960px;margin:0 auto;padding:24px 20px 80px}header.site{display:flex;align-items:baseline;gap:12px;padding:8px 0 28px}header.site .logo{align-items:center;color:var(--text);display:inline-flex;font-size:22px;font-weight:800;gap:8px;letter-spacing:.04em;text-decoration:none}header.site .logo svg{flex-shrink:0}header.site .logo .logo-text span{color:var(--accent)}header.site .tagline{color:var(--text-soft);font-size:13px}.hero{text-align:center;padding:20px 0 36px}.hero h1{font-size:clamp(24px,4.2vw,36px);font-weight:800;line-height:1.45}.hero p.lead{margin-top:12px;color:var(--text-soft);font-size:15px}.tool-grid{display:grid;grid-gap:18px;gap:18px;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));margin-top:8px}a.tool-card{background:var(--surface);border:1px solid var(--border);border-radius:14px;color:inherit;display:block;padding:22px;text-decoration:none;transition:border-color .15s,transform .15s}a.tool-card:hover{border-color:var(--accent);transform:translateY(-2px)}a.tool-card h2{font-size:17px;margin-bottom:6px}a.tool-card h2 .ext{color:var(--text-soft);font-size:12px;font-weight:400;margin-left:6px}a.tool-card p{color:var(--text-soft);font-size:13.5px}a.tool-card .badge{background:var(--accent-soft);border-radius:999px;color:var(--accent);display:inline-block;font-size:11.5px;font-weight:700;margin-bottom:10px;padding:2px 10px}.note{color:var(--text-soft);font-size:13px;margin-top:28px;text-align:center}.tool-page h1{font-size:clamp(22px,3.6vw,30px);font-weight:800;line-height:1.45}.tool-page p.lead{color:var(--text-soft);font-size:14.5px;margin:10px 0 24px}.panel{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:24px}.panel label.field{display:block;font-size:13.5px;font-weight:700;margin-bottom:6px}.panel input[type=url]{border:1px solid var(--border);border-radius:8px;font-size:15px;padding:11px 12px;width:100%}.panel input[type=url]:focus{border-color:var(--accent);outline:none}.panel textarea{border:1px solid var(--border);border-radius:8px;font:inherit;font-size:14.5px;padding:10px 12px;resize:vertical;width:100%}.panel textarea:focus{border-color:var(--accent);outline:none}.results .toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:24px 0 14px}.results .toolbar h2{font-size:17px;margin-right:auto}.table-wrap{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow-x:auto}.table-wrap table{border-collapse:collapse;font-size:13px;width:100%}.table-wrap td,.table-wrap th{border-bottom:1px solid var(--border);max-width:320px;overflow:hidden;padding:7px 10px;text-align:left;text-overflow:ellipsis;white-space:nowrap}.table-wrap th{background:#f0f2f6;color:var(--text-soft);font-size:12.5px}.options{display:flex;flex-wrap:wrap;gap:16px;margin:16px 0}.options label{align-items:center;display:flex;font-size:13.5px;gap:6px}button.action{background:var(--accent);border:none;border-radius:8px;color:#fff;cursor:pointer;font-size:15px;font-weight:700;padding:11px 26px}button.action:disabled{opacity:.5;cursor:default}.status{margin-top:12px;font-size:14px}.status .error{color:var(--error)}.status .info{color:var(--text-soft)}.dropzone{border:2px dashed var(--border);border-radius:14px;background:var(--surface);padding:40px 20px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s}.dropzone.dragging,.dropzone:hover{border-color:var(--accent);background:var(--accent-soft)}.dropzone .main-label{font-size:16px;font-weight:700}.dropzone .sub-label{margin-top:6px;color:var(--text-soft);font-size:13px}.store-links{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fill,minmax(210px,1fr))}a.store-link{background:var(--surface);border:1px solid var(--border);border-radius:10px;color:inherit;display:block;padding:12px 14px;text-decoration:none;transition:border-color .15s}a.store-link:hover{border-color:var(--accent)}a.store-link .store-name{display:block;font-size:14px;font-weight:700}a.store-link .store-note{color:var(--text-soft);display:block;font-size:12px;margin-top:2px}button.action.small{font-size:12.5px;padding:5px 12px}.options select{border:1px solid var(--border);border-radius:6px;font:inherit;margin-left:6px;padding:4px 8px}.exif-card{display:flex;gap:18px;margin-top:16px}.exif-card .thumb{border-radius:8px;flex-shrink:0;height:110px;object-fit:cover;width:110px}.exif-card .exif-body{min-width:0;flex:1 1}.exif-card .filename{font-size:13.5px;font-weight:700;margin-bottom:8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta-table{border-collapse:collapse;font-size:13px;margin-bottom:12px;width:100%}.meta-table th{color:var(--text-soft);font-weight:600;padding:3px 12px 3px 0;text-align:left;white-space:nowrap;width:1%}.meta-table td{padding:3px 0}.meta-table .danger{color:var(--error);font-weight:700}.meta-table .danger a{color:var(--error)}.meta-table .safe{color:#2b8a3e;font-weight:700}.exif-card .actions{display:flex;flex-wrap:wrap;gap:10px}@media (max-width:560px){.exif-card{flex-direction:column}}.panel.player{margin-top:16px}.panel.player .filename{font-size:14.5px;font-weight:700;margin-bottom:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seekbar{accent-color:var(--accent);display:block;width:100%}.time-row{color:var(--text-soft);display:flex;font-size:12.5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums;justify-content:space-between;margin:4px 0 14px}.transport{align-items:center;display:flex;flex-wrap:wrap;gap:8px;justify-content:center}.transport button{background:var(--surface);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:13.5px;font-weight:600;padding:9px 14px}.transport button.play,.transport button:hover{border-color:var(--accent)}.transport button.play{background:var(--accent);color:#fff;font-size:15px;font-weight:700;min-width:140px;padding:11px 22px}.player-options{display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-top:16px}.player-options label{align-items:center;color:var(--text-soft);display:flex;font-size:13px;gap:6px}.player-options select{border:1px solid var(--border);border-radius:6px;font-size:13px;padding:5px 8px}.save-indicator{color:#2b8a3e;font-size:12.5px;margin-top:14px;text-align:center}.panel.library{margin-top:20px}.panel.library h2{font-size:15px;margin-bottom:12px}.lib-item{border-top:1px solid var(--border);display:flex;flex-wrap:wrap;gap:10px 16px;justify-content:space-between;padding:12px 0}.lib-item .lib-info{flex:1 1;min-width:220px}.lib-item .filename{font-size:13.5px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lib-item .lib-meta{color:var(--text-soft);font-size:12.5px;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.lib-actions{align-items:center;display:flex;flex-wrap:wrap;gap:10px}button.action.small{font-size:13px;padding:7px 14px}.link-danger{background:none;border:none;color:var(--error);cursor:pointer;text-decoration:underline}.link-danger,details.history{font-size:12.5px}details.history summary{color:var(--text-soft);cursor:pointer}details.history ul{list-style:none;margin-top:6px}button.history-item{background:none;border:none;color:var(--accent);cursor:pointer;font-size:12.5px;padding:2px 0;text-decoration:underline}.badge{background:var(--accent-soft);border-radius:999px;color:var(--accent);display:inline-block;font-size:11.5px;font-weight:700;padding:2px 10px}button.mini{background:var(--surface);border:1px solid var(--border);border-radius:8px;cursor:pointer;font-size:12.5px;font-weight:600;padding:7px 12px}button.mini:hover:not(:disabled){border-color:var(--accent)}button.mini:disabled{opacity:.5;cursor:default}button.action.secondary{background:var(--surface);border:1px solid var(--accent);color:var(--accent)}.panel textarea.prompt-input{border:1px solid var(--border);border-radius:8px;font-family:inherit;font-size:14.5px;line-height:1.6;padding:11px 12px;resize:vertical;width:100%}.panel textarea.prompt-input:focus{border-color:var(--accent);outline:none}.panel input[type=date],.panel input[type=datetime-local],.panel input[type=search],.panel input[type=text],.panel select{border:1px solid var(--border);border-radius:8px;font-family:inherit;font-size:13.5px;padding:8px 10px}.panel input:focus,.panel select:focus{border-color:var(--accent);outline:none}.plain-list{list-style:none}.plain-list li{padding:3px 0}.service-grid{display:grid;grid-gap:8px;gap:8px;grid-template-columns:repeat(auto-fill,minmax(250px,1fr))}.service-row{align-items:center;border:1px solid var(--border);border-radius:8px;display:flex;font-size:13.5px;justify-content:space-between;padding:8px 12px}.service-row.on{background:var(--accent-soft);border-color:var(--accent)}.service-row label{align-items:center;display:flex;gap:8px;cursor:pointer}.service-row .hint{color:var(--text-soft);font-size:11.5px}.notice-panel{margin-bottom:16px}.notice-panel p{font-size:13.5px;margin-bottom:10px}.panel.ringing{animation:ring-pulse 1.2s ease-in-out infinite;border-color:var(--error);margin-top:16px}@keyframes ring-pulse{0%,to{box-shadow:0 0 0 0 rgba(201,42,42,.35)}50%{box-shadow:0 0 0 8px rgba(201,42,42,0)}}.ringing-title{font-size:18px;font-weight:800}.ringing-sub{color:var(--text-soft);font-size:13px;margin:4px 0 12px}.reminder-form{display:flex;flex-wrap:wrap;gap:8px}.reminder-form input[type=search],.reminder-form input[type=text]{flex:1 1;min-width:200px}.done-item{color:var(--text-soft);font-size:13px;gap:10px}.done-item,.launcher-row{align-items:center;display:flex}.launcher-row{flex-wrap:wrap;gap:8px;padding:6px 0}.launcher-row .row-no{color:var(--text-soft);font-size:12.5px;width:18px}.launcher-row .path-input{flex:2 1;min-width:220px}.launcher-row .args-input{flex:1 1;min-width:120px}.code-preview{background:#10141f;border-radius:8px;color:#d7dce7;font-size:12px;line-height:1.55;max-height:380px;overflow:auto;padding:14px;white-space:pre}.timeline-head{gap:14px;justify-content:space-between;margin-bottom:10px}.timeline-head,.unread-toggle{align-items:center;display:flex}.unread-toggle{font-size:13px;gap:6px}.rss-item{border-top:1px solid var(--border);padding:10px 0}.rss-item a{color:var(--accent);font-size:14.5px;font-weight:700;text-decoration:none}.rss-item a:hover{text-decoration:underline}.rss-item.read a{color:var(--text-soft);font-weight:400}.rss-summary{color:var(--text-soft);font-size:13px;margin-top:2px}.feed-error{color:var(--error)}.dream-form{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}.dream-form .tag-input{flex:1 1;min-width:220px}.lucid-check{align-items:center;display:flex;font-size:13px;gap:6px}.dream-stats{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}.stat{background:var(--bg);border-radius:10px;display:flex;flex-direction:column;padding:12px 14px}.stat-value{font-size:20px;font-weight:800}.stat-label{color:var(--text-soft);font-size:12px}.bar-row{align-items:center;display:flex;font-size:12.5px;gap:10px;padding:2px 0}.bar-label{overflow:hidden;text-align:right;text-overflow:ellipsis;white-space:nowrap;width:110px}.bar-track{background:var(--bg);border-radius:4px;flex:1 1;height:12px}.bar-fill{background:var(--accent);border-radius:4px;height:100%;min-width:2px}.bar-count{color:var(--text-soft);white-space:nowrap;width:44px}.dream-entry{border-top:1px solid var(--border);padding:12px 0}.dream-head{align-items:center;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}.dream-head .spacer{flex:1 1}.dream-date{font-size:13px;font-weight:700}.dream-text{font-size:14px;white-space:pre-wrap}.dream-tags{margin-top:6px}button.tag{background:var(--accent-soft);border:none;border-radius:999px;color:var(--accent);cursor:pointer;font-size:12px;margin-right:6px;padding:2px 10px}.search-form{display:flex;gap:8px}.search-form input{flex:1 1}.search-result{border-top:1px solid var(--border);padding:10px 0}.search-result a{color:var(--accent);display:block;font-size:14.5px;font-weight:700;text-decoration:none}.search-result a:hover{text-decoration:underline}.host-badge{background:var(--bg);border-radius:4px;color:var(--text-soft);display:inline-block;font-size:11.5px;margin-bottom:2px;padding:1px 6px}section.explain{display:grid;grid-gap:16px;gap:16px;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));margin-top:40px}section.explain article{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:18px}section.explain h3{font-size:14.5px;margin-bottom:6px}section.explain p{color:var(--text-soft);font-size:13px}header.site .site-nav{margin-left:auto}header.site .site-nav a{color:var(--text-soft);font-size:13.5px;text-decoration:none}header.site .site-nav a:hover{color:var(--accent)}.post-list{display:grid;grid-gap:14px;gap:14px}a.post-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;color:inherit;display:block;padding:18px 20px;text-decoration:none;transition:border-color .15s}a.post-card:hover{border-color:var(--accent)}a.post-card time{color:var(--text-soft);font-size:12.5px}a.post-card h2{font-size:16.5px;margin:4px 0 6px}a.post-card p{color:var(--text-soft);font-size:13.5px}.post-meta{font-size:13px;margin-bottom:8px}.post-meta,.post-meta a{color:var(--text-soft)}.post-body{font-size:15px;margin-top:20px}.post-body h2{border-bottom:1px solid var(--border);font-size:19px;margin:34px 0 12px;padding-bottom:8px}.post-body h3{font-size:16px;margin:26px 0 8px}.post-body p{margin:12px 0}.post-body ol,.post-body ul{margin:12px 0;padding-left:24px}.post-body li{margin:5px 0}.post-body a{color:var(--accent)}.post-body code{background:var(--accent-soft);border-radius:4px;font-size:.9em;padding:1px 5px}.post-body blockquote{border-left:3px solid var(--border);color:var(--text-soft);margin:12px 0;padding-left:14px}.post-body table{border-collapse:collapse;font-size:13.5px;margin:14px 0;width:100%}.post-body td,.post-body th{border:1px solid var(--border);padding:7px 10px;text-align:left}.tool-cta{background:var(--accent-soft);border-radius:14px;margin-top:36px;padding:22px 24px;text-align:center}.tool-cta .cta-label{color:var(--text-soft);font-size:13px;margin-bottom:12px}.tool-cta .cta-button{background:var(--accent);border-radius:8px;color:#fff;display:inline-block;font-size:15px;font-weight:700;padding:11px 26px;text-decoration:none}.tool-cta .cta-desc{color:var(--text-soft);font-size:13px;margin-top:12px}.other-tools{border-top:1px solid var(--border);margin-top:48px;padding-top:24px}.tool-article-link{font-size:13.5px;margin-bottom:16px}.tool-article-link a{color:var(--accent)}.other-tools h2{font-size:14.5px;margin-bottom:10px}.other-tools ul{display:grid;grid-gap:6px 24px;gap:6px 24px;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));list-style:none}.other-tools a{color:var(--text-soft);font-size:13px;text-decoration:none}.other-tools a:hover{color:var(--accent);text-decoration:underline}footer.site{border-top:1px solid var(--border);font-size:12.5px;margin-top:72px;padding:20px 0;text-align:center}footer.site,footer.site a{color:var(--text-soft)}.log-analyzer .panel{margin-top:16px}.paste-log{margin-top:12px}.paste-log summary{color:var(--text-soft);cursor:pointer;font-size:13px}.paste-log .panel,.paste-log button.action{margin-top:10px}.section-title{font-size:15px;margin-bottom:10px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12.5px;overflow-wrap:anywhere}.log-stats{display:grid;grid-gap:10px;gap:10px;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));margin:16px 0 8px}.clickable-row{cursor:pointer}.clickable-row:hover td{background:var(--bg)}.clickable-row.active td{background:color-mix(in srgb,var(--accent) 10%,transparent)}.drill-head{align-items:center;display:flex;flex-wrap:wrap;gap:8px}.drill-head .spacer{flex:1 1}.drill-head .section-title{margin-bottom:0}.drill-panel{border-color:var(--accent)}.agg-grid h3,.drill-panel h3{font-size:13.5px;margin:14px 0 6px}.agg-grid{display:grid;grid-gap:0 20px;gap:0 20px;grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.log-analyzer .bar-row.wide .bar-label{width:42%}@media (max-width:560px){.log-analyzer .bar-row.wide .bar-label{width:130px}}