:root{--bg: #f7f6f4;--surface: #ffffff;--ink: #21201d;--ink-2: #6d6a63;--ink-3: #a5a199;--line: #e7e4de;--accent: #00a99a;--accent-tint: #6be0cf;--accent-soft: #d9f6f0;--accent-ink: #00655c;--danger: #c0392b;--danger-soft: #fdecea;--radius: 12px;--radius-s: 8px;--shadow-1: 0 1px 2px rgba(33, 32, 29, .04), 0 4px 14px rgba(33, 32, 29, .05);--shadow-2: 0 2px 6px rgba(33, 32, 29, .08), 0 10px 28px rgba(33, 32, 29, .1);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Hiragino Sans,Hiragino Kaku Gothic ProN,Noto Sans JP,Yu Gothic UI,sans-serif;line-height:1.5;color:var(--ink);background-color:var(--bg);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--bg);color:var(--ink)}img{max-width:100%}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}.contribution-calendar{width:100%;max-width:828px;margin:1.25rem auto;padding:1rem 1.25rem;background:var(--surface, #fff);border:1px solid var(--line, #e7e4de);border-radius:var(--radius, 12px);box-shadow:var(--shadow-1, 0 2px 8px rgba(0, 0, 0, .06))}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}.stats{display:flex;gap:2rem;flex-wrap:wrap}.stat-item{color:#656d76;font-size:.875rem}.stat-item strong{color:#24292f}.stat-item.total{color:#656d76}.year-selector{padding:.5rem;border:1px solid #d0d7de;border-radius:6px;background:#fff;color:#24292f;font-size:.875rem;cursor:pointer}.year-selector:hover{border-color:#8c959f}.calendar-container{position:relative}.calendar-grid{display:grid;grid-template-columns:max-content 1fr;grid-template-rows:auto auto 1fr;gap:.5rem;font-size:.75rem}.month-labels{grid-column:2;grid-row:1;display:grid;grid-template-columns:repeat(53,1fr);gap:3px;margin-bottom:.5rem}.month-label{color:#656d76;font-size:.75rem;text-align:left}.day-labels{grid-column:1;grid-row:3;display:grid;grid-template-rows:repeat(7,1fr);gap:3px;margin-right:.5rem}.day-label{color:#656d76;font-size:.6875rem;text-align:right;display:flex;align-items:center;justify-content:flex-end}.weeks-container{grid-column:2;grid-row:3;display:grid;grid-template-columns:repeat(53,1fr);gap:3px}.week{display:flex;flex-direction:column;gap:3px}.day{width:100%;aspect-ratio:1;min-width:6px;border-radius:24%;cursor:pointer;position:relative}.level-0{background-color:#f1efe9}.level-1{background-color:#cac5b8}.level-2{background-color:#8f8878}.level-3{background-color:#55503f}.level-4{background-color:#17140f}.day.outside-year{opacity:.3}.day:hover{stroke:#1b1f2426;stroke-width:1px}.day[title]:hover{position:relative}.legend{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;margin-top:1rem;font-size:.75rem;color:#656d76}.legend-levels{display:flex;gap:3px}.legend-day{width:11px;height:11px;border-radius:24%}.legend-text{font-size:.75rem;color:#656d76}.calendar-grid{overflow-x:auto;padding-bottom:.25rem}@media (max-width: 768px){.contribution-calendar{padding:.5rem .75rem;margin:1rem 0}.calendar-header{flex-direction:column;align-items:flex-start}.stats{gap:1rem}.weeks-container{min-width:750px}}.day.day-selected{outline:2px solid var(--accent, #2f8f5b);outline-offset:1px}.container{margin:0 auto;padding:0 clamp(12px,2.5vw,36px) 48px;width:100%;max-width:1560px}.site-header{display:flex;justify-content:flex-end;padding:20px 4px 0}.site-count{font-size:.8rem;color:var(--ink-3);white-space:nowrap}.btn{display:inline-flex;align-items:center;gap:6px;height:32px;padding:0 14px;border-radius:var(--radius-s);border:1px solid var(--line);background:var(--surface);color:var(--ink);font-size:.82rem;cursor:pointer;transition:border-color .15s ease,background .15s ease,box-shadow .15s ease}.btn:hover:not(:disabled){border-color:var(--ink-3);box-shadow:var(--shadow-1)}.btn:disabled{opacity:.5;cursor:default}.btn-dark{background:var(--ink);border-color:var(--ink);color:#fff}.btn-dark:hover:not(:disabled){border-color:var(--ink);opacity:.88}.btn-dark.is-active{background:var(--accent);border-color:var(--accent)}.input,.select{height:32px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-s);background:var(--surface);color:var(--ink);font-size:.82rem;font-family:inherit}.input::placeholder{color:var(--ink-3)}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.chip{display:inline-flex;align-items:center;gap:4px;height:28px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--ink-2);font-size:.78rem;cursor:pointer;transition:border-color .15s ease,background .15s ease,color .15s ease}.chip:hover{border-color:var(--ink-3);color:var(--ink)}.chip-on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink);font-weight:600}.filters-panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:16px 18px 18px;margin:18px 0 28px;box-shadow:var(--shadow-1)}.filters-label{font-size:.7rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:12px}.filters-panel>.contribution-calendar{max-width:90%;margin:0 auto 14px}.toolbar{display:flex;flex-wrap:wrap;gap:8px;align-items:center;padding-top:14px;border-top:1px solid var(--line)}.result-count{font-size:.78rem;color:var(--ink-2);margin-left:auto}.result-count strong{color:var(--ink)}.tag-filter{padding-top:14px;margin-top:14px;border-top:1px solid var(--line)}.tag-filter-head{display:flex;align-items:center;gap:8px;margin-bottom:10px}.tag-filter-hint{font-size:.72rem;color:var(--ink-3);white-space:nowrap;cursor:help}.tag-filter-head .input{flex:1 1 200px;max-width:320px;height:30px;border-radius:999px}.tag-chip-scroll{display:flex;flex-wrap:wrap;align-content:flex-start;gap:6px;max-height:160px;overflow-y:auto;padding-right:10px;scrollbar-width:thin;scrollbar-color:var(--ink-3) var(--bg)}.show-all-tags{display:block;width:100%;margin-top:10px;padding:8px;border:1px dashed var(--ink-3);border-radius:var(--radius-s);background:transparent;color:var(--ink-2);font-size:.78rem;cursor:pointer;text-align:center}.show-all-tags:hover{border-color:var(--ink);color:var(--ink);background:var(--accent-soft)}.tag-chip-scroll::-webkit-scrollbar{width:8px}.tag-chip-scroll::-webkit-scrollbar-track{background:var(--bg);border-radius:999px}.tag-chip-scroll::-webkit-scrollbar-thumb{background:var(--ink-3);border-radius:999px;border:2px solid var(--bg)}.semantic-search{display:flex;gap:8px;margin-bottom:14px;flex-wrap:wrap;align-items:center}.semantic-search .input{flex:1 1 260px;min-width:200px}.search-error{color:var(--danger);font-size:.82rem}.admin-bar{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:10px 0 0}.admin-bar form{display:inline-flex;gap:6px;flex-wrap:wrap}.admin-bar input{height:32px;padding:0 10px;border:1px solid var(--line);border-radius:var(--radius-s);font-size:.82rem;font-family:inherit}.admin-live{color:var(--danger);font-weight:700;font-size:.82rem}.gallery{display:flex;margin-left:-14px;width:auto}.gallery-column{padding-left:14px;background-clip:padding-box}.gallery-item{position:relative;background:var(--surface);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-1);transition:transform .18s ease,box-shadow .18s ease;margin-bottom:14px;width:100%}.gallery-item:hover{transform:translateY(-2px);box-shadow:var(--shadow-2)}.gallery img{width:100%;height:auto;display:block;cursor:pointer}.ctrl-btn{position:absolute;right:8px;height:26px;padding:0 10px;background:#1817159e;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);color:#fff;border:none;border-radius:999px;font-size:.7rem;cursor:pointer;opacity:0;visibility:hidden;transition:opacity .15s ease,background .15s ease}.ctrl-btn:hover{background:#181715d9}.gallery-item:hover .ctrl-btn{opacity:1;visibility:visible}.open-btn{top:8px}.copy-btn{top:40px}.delete-btn,.memo-btn{left:8px;right:auto;opacity:1;visibility:visible;z-index:2}.delete-btn{top:8px;background:#c0392be6}.delete-btn:hover{background:var(--danger)}.memo-btn{top:40px;background:#2c3e50e0}.link-btn{top:72px;left:8px;right:auto;opacity:1;visibility:visible;background:#1a5276e0}.link-btn:hover{background:#1a5276}.memo-preview{padding:8px 10px 0;font-size:.74rem;line-height:1.5;color:var(--ink-2);text-align:left;white-space:pre-wrap;word-break:break-word;cursor:pointer;border-top:1px solid var(--line);margin-top:-1px}.memo-lock{display:inline-block;margin-right:6px;padding:1px 6px;border-radius:999px;background:var(--danger-soft);color:var(--danger);font-size:.62rem;font-weight:600;letter-spacing:.02em;text-transform:uppercase;vertical-align:1px}.date-label{display:block;padding:4px 10px 6px;font-size:.64rem;color:var(--ink-3);text-align:right;pointer-events:none;font-family:SF Mono,Monaco,Cascadia Code,Roboto Mono,Consolas,monospace}.load-more{display:block;margin:32px auto;height:38px;padding:0 22px;font-size:.85rem;background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:999px;cursor:pointer;transition:border-color .15s ease,box-shadow .15s ease;box-shadow:var(--shadow-1)}.load-more:hover{border-color:var(--ink-3);box-shadow:var(--shadow-2)}.modal{display:none;position:fixed;inset:0;background:#121110db;align-items:center;justify-content:center;z-index:1000}.modal.show{display:flex}.modal img{max-width:90vw;max-height:90vh;border-radius:var(--radius);box-shadow:var(--shadow-2)}.modal-body{display:flex;flex-direction:column;align-items:center;max-width:90vw;max-height:90vh}.modal-body img{max-width:90vw;max-height:78vh}.modal-memo{margin-top:12px;background:#fffffff7;color:var(--ink);border-radius:var(--radius-s);padding:12px 16px;max-width:min(90vw,640px);max-height:22vh;overflow-y:auto;font-size:.9rem;line-height:1.6;text-align:left;white-space:pre-wrap;word-break:break-word;box-shadow:var(--shadow-2)}.modal-memo-private{color:var(--danger);font-size:.75rem;font-weight:700;margin-bottom:4px}.editor-overlay{position:fixed;inset:0;background:#12111080;display:flex;align-items:center;justify-content:center;z-index:100}.editor-card{background:var(--surface);border-radius:var(--radius);padding:20px;width:min(520px,92vw);box-shadow:var(--shadow-2)}.editor-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.editor-head .editor-key{font-size:.72rem;color:var(--ink-3);font-family:SF Mono,Monaco,Consolas,monospace}.editor-row{display:flex;gap:12px;margin-bottom:10px}.editor-thumb{width:96px;height:96px;object-fit:contain;background:var(--bg);border-radius:var(--radius-s);flex-shrink:0}.editor-textarea{flex:1;min-height:110px;padding:10px;border:1px solid var(--line);border-radius:var(--radius-s);resize:vertical;font-family:inherit;font-size:.88rem;line-height:1.5}.editor-textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.editor-visibility{display:flex;align-items:center;gap:6px;margin-bottom:12px;font-size:.85rem;color:var(--ink-2)}.editor-error{color:var(--danger);font-size:.85rem;margin-bottom:8px}.editor-actions{display:flex;justify-content:flex-end;gap:8px}.ref-strip{display:flex;gap:4px;flex-wrap:wrap;padding:6px 8px 0}.ref-strip img{width:34px;height:34px;object-fit:cover;border-radius:4px;border:1px solid var(--line);cursor:pointer}.ref-strip img:hover{border-color:var(--accent)}.memo-md{display:inline}.memo-md>*:first-child{margin-top:0}.memo-md>*:last-child{margin-bottom:0}.memo-md p{margin:0 0 4px}.memo-md ul,.memo-md ol{margin:2px 0 4px;padding-left:18px}.memo-md h1,.memo-md h2,.memo-md h3,.memo-md h4{font-size:1em;font-weight:700;margin:4px 0 2px}.memo-md code{background:var(--bg);border:1px solid var(--line);border-radius:4px;padding:0 4px;font-size:.92em}.memo-md pre{background:var(--bg);border:1px solid var(--line);border-radius:6px;padding:6px 8px;overflow-x:auto;margin:4px 0}.memo-md pre code{border:none;background:transparent;padding:0}.memo-md blockquote{margin:4px 0;padding-left:8px;border-left:3px solid var(--line);color:var(--ink-2)}.memo-md a{color:var(--accent-ink, #1a5276);text-decoration:underline}.memo-preview .memo-md{display:block}
