:root{--bg:#f4f3f0;--surface:#fff;--surface-2:#f8f7f4;--text:#1d1e22;--muted:#6b6d75;--line:#e2e0da;--accent:#2f5d62;--accent-ink:#fff;--accent-soft:#e3eeee;--gem:#7a5ea8;--warn:#a8641b;--warn-soft:#f7ecdf;--danger:#b3261e;--radius:14px;--shadow:0 1px 2px #0000000d, 0 4px 16px #0000000a;color:var(--text);background:var(--bg);-webkit-text-size-adjust:100%;font-family:BIZ UDPGothic,Hiragino Sans,Yu Gothic UI,Meiryo,system-ui,sans-serif}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#131417;--surface:#1c1d21;--surface-2:#232429;--text:#ecebe8;--muted:#9c9ea6;--line:#2f3036;--accent:#7fb7bc;--accent-ink:#0f1a1b;--accent-soft:#1f3234;--gem:#b49ce0;--warn:#e0a463;--warn-soft:#3a2c1c;--danger:#f08a83;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}:root[data-theme=dark]{--bg:#131417;--surface:#1c1d21;--surface-2:#232429;--text:#ecebe8;--muted:#9c9ea6;--line:#2f3036;--accent:#7fb7bc;--accent-ink:#0f1a1b;--accent-soft:#1f3234;--gem:#b49ce0;--warn:#e0a463;--warn-soft:#3a2c1c;--danger:#f08a83;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);min-height:100dvh;line-height:1.6}img{max-width:100%;display:block}a{color:inherit}button,input,select,textarea{font:inherit;color:inherit}.app{max-width:640px;min-height:100dvh;margin:0 auto}.topbar{z-index:10;padding:12px 16px;padding-top:max(12px, env(safe-area-inset-top));background:color-mix(in srgb, var(--bg) 88%, transparent);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;display:flex;position:sticky;top:0}.brand{letter-spacing:.08em;font-size:1.1rem;font-weight:700;text-decoration:none}.brand-mark{color:var(--gem)}.topbar-link{color:var(--muted);font-size:.85rem;text-decoration:none}.topbar-right{align-items:center;gap:10px;display:flex}.theme-toggle{border:1px solid var(--line);background:var(--surface);width:32px;height:32px;color:var(--text);cursor:pointer;border-radius:50%;place-items:center;padding:0;font-size:.95rem;line-height:1;display:grid}.tabs{border-bottom:1px solid var(--line);gap:4px;padding:8px 16px 0;display:flex}.tabs a{text-align:center;color:var(--muted);border-bottom:3px solid #0000;flex:1;padding:8px 4px 10px;font-size:.85rem;font-weight:600;text-decoration:none}.tabs a.active{color:var(--accent);border-bottom-color:var(--accent)}.filters.with-scan{grid-template-columns:1fr auto 110px}.scan-btn{min-height:44px;padding:0 12px;font-size:1.1rem}.owned-banner{background:var(--accent-soft);color:var(--accent);border-radius:12px;margin:0;padding:10px 14px;font-size:.9rem;font-weight:700}.owned-banner.has{background:var(--warn-soft);color:var(--warn)}.migrate-card{border-color:var(--accent)}details.fold>summary{cursor:pointer;list-style:none}details.fold>summary::-webkit-details-marker{display:none}details.fold>summary:after{content:"▾";color:var(--muted);margin-left:auto}details.fold[open]>summary:after{content:"▴"}details.fold:not([open]){gap:0}button.fab{cursor:pointer;border:none;transition:transform .15s}.fab.open{transform:rotate(45deg)}.add-menu{right:max(20px,50% - 300px);bottom:calc(96px + env(safe-area-inset-bottom));z-index:20;flex-direction:column;gap:8px;width:min(320px,100vw - 40px);display:flex;position:fixed}.add-menu>*{text-align:left;cursor:pointer;background:var(--surface);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:2px;padding:12px 14px;display:flex;box-shadow:0 6px 20px #0000002e}.add-menu small{color:var(--muted);font-size:.75rem}.check-group.warn{border-color:var(--warn);background:var(--warn-soft)}.check-group.ok{border-color:var(--accent)}.mini-row{border-top:1px solid var(--line);align-items:center;gap:12px;padding:8px 0;text-decoration:none;display:flex}.mini-photo{background:var(--surface-2);width:56px;height:56px;color:var(--line);border-radius:10px;flex:none;place-items:center;display:grid;overflow:hidden}.mini-photo img{object-fit:cover;width:100%;height:100%}.mini-body{flex-direction:column;min-width:0;display:flex}.mini-body small{color:var(--muted);font-size:.75rem}.storage-line{flex-wrap:wrap;gap:14px;margin:0;display:flex}.storage-box{color:var(--accent);font-weight:600;text-decoration:none}.box-list{margin:0;padding:0;list-style:none}.box-row{border-top:1px solid var(--line);justify-content:space-between;padding:10px 2px;text-decoration:none;display:flex}.box-row.muted{color:var(--muted)}.box-grid{grid-template-columns:repeat(auto-fill,minmax(84px,1fr));gap:10px;display:grid}.box-item{text-align:center;flex-direction:column;align-items:center;gap:4px;font-size:.75rem;text-decoration:none;display:flex}.box-item .mini-photo{width:84px;height:84px}.box-item-name{text-overflow:ellipsis;white-space:nowrap;max-width:84px;overflow:hidden}.box-label{border:1px dashed var(--line);color:#111;background:#fff;border-radius:10px;align-items:center;gap:14px;width:fit-content;padding:10px;display:flex}.box-label .qr{border:none;padding:0}.box-label-name{font-size:1.2rem;font-weight:800}.box-label-place{color:#444;font-size:.85rem}.box-label-app{color:#777;margin-top:6px;font-size:.7rem}@media print{.app .topbar,.tabs,.no-print,.fab{display:none!important}.app .card{box-shadow:none;border:none;padding:0}}.topbar-right .btn.small{min-height:32px;padding:0 12px;font-size:.8rem}.content{padding:16px 16px calc(96px + env(safe-area-inset-bottom))}.stack{flex-direction:column;gap:16px;display:flex}.stack-sm{flex-direction:column;gap:8px;display:flex}.row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.row.tight{grid-template-columns:1fr auto}@media (width<=380px){.row:not(.tight){grid-template-columns:1fr}}.page-title{margin:4px 0 0;font-size:1.35rem}.section-title{align-items:center;gap:8px;margin:0;font-size:1rem;display:flex}.count{color:var(--muted);margin-left:4px;font-size:.9rem;font-weight:400}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}.subcard{background:var(--surface-2);border:1px solid var(--line);border-radius:10px;padding:12px}.note{color:var(--muted);margin:0;font-size:.85rem}.hint{color:var(--muted);margin:0;font-size:.8rem}.error{color:var(--danger);margin:0;font-size:.85rem}.private{color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:1px 8px;font-size:.7rem;font-weight:600}.pre{white-space:pre-wrap}.toast{background:var(--accent-soft);color:var(--text);border-radius:10px;margin:0;padding:10px 14px;font-size:.9rem}.btn{background:var(--surface-2);cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:6px;min-height:44px;padding:0 18px;font-size:.95rem;font-weight:600;text-decoration:none;transition:transform 80ms,opacity .15s;display:inline-flex}.btn:active{transform:scale(.98)}.btn:disabled{opacity:.45;cursor:default}.btn.primary{background:var(--accent);color:var(--accent-ink)}.btn.accent{background:linear-gradient(135deg, var(--gem), var(--accent));color:#fff}.btn.outline{border-color:var(--accent);color:var(--accent);background:0 0}.btn.ghost{border-color:var(--line);background:0 0}.btn.danger-ghost{border-color:var(--line);color:var(--danger);background:0 0}.btn.small{min-height:36px;padding:0 14px;font-size:.85rem}.link{cursor:pointer;color:var(--muted);background:0 0;border:none;padding:0;font-size:.8rem;text-decoration:underline}.link.danger{color:var(--danger)}.file-btn{position:relative;overflow:hidden}.file-btn input{opacity:0;cursor:pointer;position:absolute;inset:0}.actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;display:flex}.actions.start{justify-content:flex-start}.actions.sticky{padding:12px 0 calc(12px + env(safe-area-inset-bottom));background:linear-gradient(transparent, var(--bg) 30%);position:sticky;bottom:0}.actions.sticky .btn{flex:1}.fab{right:max(20px,50% - 300px);bottom:calc(24px + env(safe-area-inset-bottom));background:var(--accent);width:60px;height:60px;color:var(--accent-ink);border-radius:50%;place-items:center;font-size:1.8rem;text-decoration:none;display:grid;position:fixed;box-shadow:0 6px 20px #0003}.field{border:none;flex-direction:column;gap:4px;min-width:0;margin:0;padding:0;display:flex}.field.inline{flex-direction:row;align-items:center;gap:10px}.field-label,.field>span:first-child,.field legend{color:var(--muted);padding:0;font-size:.8rem;font-weight:600}.field small{color:var(--muted);font-size:.75rem}.req{color:var(--danger);margin-left:6px;font-size:.65rem;font-style:normal}input:not([type=checkbox]):not([type=file]),select,textarea{border:1px solid var(--line);background:var(--surface-2);border-radius:10px;width:100%;min-height:44px;padding:10px 12px;font-size:16px}textarea{resize:vertical}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:-1px}.chips{flex-wrap:wrap;gap:8px;display:flex}.chip{cursor:pointer;border:1px solid var(--line);background:var(--surface-2);border-radius:999px;min-height:36px;padding:0 14px;font-size:.85rem}.chip.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink)}.check{align-items:center;gap:8px;font-size:.9rem;display:flex}.switch-row{cursor:pointer;align-items:flex-start;gap:12px;display:flex}.switch-row input{width:22px;height:22px;accent-color:var(--accent);flex:none;margin-top:2px}.switch-row span{flex-direction:column;display:flex}.switch-row small{color:var(--muted);font-size:.78rem}.segmented{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;grid-template-columns:repeat(3,1fr);padding:4px;display:grid}.segmented button{cursor:pointer;min-height:40px;color:var(--muted);background:0 0;border:none;border-radius:9px;font-size:.9rem;font-weight:600}.segmented button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.photos-only .form-extra{display:none}.section-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;display:flex}.label-reader{border-color:var(--accent)}.reader-head{justify-content:space-between;align-items:center;display:flex}.reader-buttons{grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;display:grid}@media (width<=420px){.reader-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}}.reader-btn{cursor:pointer;text-align:center;background:var(--surface);border:1px solid var(--line);border-radius:12px;flex-direction:column;justify-content:center;align-items:center;gap:2px;min-height:84px;padding:10px 6px;display:flex}.reader-btn:hover:not(:disabled),.reader-btn:focus-visible{border-color:var(--accent)}.reader-btn:disabled,.reader-btn.disabled{opacity:.45;pointer-events:none}.reader-btn span{font-size:1.3rem;line-height:1}.reader-btn strong{font-size:.9rem}.reader-btn small{color:var(--muted);font-size:.68rem;line-height:1.3}.reader-sources{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.reader-status{align-items:center;gap:8px;display:flex}.spinner.tiny{border-width:2px;border-color:var(--line);border-top-color:var(--accent);width:16px;height:16px;display:inline-block}.reader-row{grid-template-columns:22px 7.5em 1fr;align-items:center;gap:8px;font-size:.85rem;display:grid}.reader-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--accent)}.reader-key{color:var(--muted);flex-direction:column;font-size:.78rem;font-weight:600;display:flex}.unsure{color:var(--warn);font-size:.65rem;font-style:normal}.reader-value{min-height:38px!important;padding:6px 10px!important}.quick-add{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;padding:12px 14px;display:flex}.quick-add>div{flex:200px}.quick-add .hint{margin-top:2px}.file-btn.disabled{opacity:.45;pointer-events:none}.draft-banner{text-align:left;border:1px dashed var(--warn);background:var(--warn-soft);color:var(--text);cursor:pointer;border-radius:12px;padding:10px 14px;font-size:.88rem}.filters{grid-template-columns:1fr 110px;gap:8px;display:grid}.grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.grid>li{min-width:0}@media (width>=560px){.grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);text-decoration:none;display:block;overflow:hidden}.tile-photo{aspect-ratio:1;background:var(--surface-2);place-items:center;display:grid;position:relative;overflow:hidden}.tile-photo img{object-fit:cover;width:100%;height:100%;position:absolute;inset:0}.tile-photo img.framed{object-fit:fill;max-width:none;inset:auto}.tile-color{border:2px solid #ffffffd9;border-radius:50%;width:14px;height:14px;position:absolute;bottom:8px;right:8px;box-shadow:0 1px 3px #0000004d}.sortbar{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.sortbar .chip{min-height:32px;padding:0 12px;font-size:.8rem}.sort-dir{font-weight:700}.sort-note{color:var(--muted);margin-left:2px;font-size:.75rem}.palette{flex-wrap:wrap;align-items:center;gap:8px;min-height:28px;display:flex}.palette-dot{border:2px solid var(--line);cursor:pointer;border-radius:50%;width:26px;height:26px;padding:0}.palette-dot.on{border-color:var(--text);box-shadow:0 0 0 3px var(--accent-soft)}.tile-noimg{color:var(--line);font-size:2rem}.tile-body{padding:8px 10px 10px}.tile-name{text-overflow:ellipsis;white-space:nowrap;font-size:.95rem;font-weight:700;overflow:hidden}.tile-reading{color:var(--muted);font-size:.8rem;font-weight:500}.tile-sub{color:var(--muted);text-overflow:ellipsis;white-space:nowrap;font-size:.75rem;overflow:hidden}.tile-badges{gap:4px;min-height:18px;margin-top:4px;display:flex}.badge{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:1px 8px;font-size:.68rem;font-weight:700}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.muted{background:var(--surface-2);color:var(--muted);border:1px solid var(--line)}.empty{text-align:center;flex-direction:column;align-items:center;gap:8px;padding:32px 20px;display:flex}.empty p{margin:0}.empty-title{font-size:1.05rem;font-weight:700}.photo-editor{flex-direction:column;gap:8px;display:flex}.photo-frame{background:var(--surface-2);border:1px solid var(--line);border-radius:12px;position:relative;overflow:hidden}.photo-frame img{object-fit:contain;width:100%;max-height:420px;margin:0 auto}.photo-tag{color:#fff;background:#0009;border-radius:999px;padding:2px 8px;font-size:.7rem;position:absolute;top:8px;left:8px}.photo-busy{color:#fff;text-align:center;background:#1414188c;flex-direction:column;justify-content:center;align-items:center;gap:10px;padding:16px;font-size:.85rem;display:flex;position:absolute;inset:0}.photo-busy p{margin:0}.spinner{border:3px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:28px;height:28px;animation:.8s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.photo-tools,.swatches{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.swatch{border:2px solid var(--line);cursor:pointer;border-radius:50%;width:36px;height:36px;padding:0}.swatch.on{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.photo-actions{justify-content:flex-end;gap:8px;display:flex}.label-photos{grid-template-columns:repeat(2,1fr);gap:10px;display:grid}.label-photos .photo-frame img{max-height:180px}.tool-row{flex-wrap:wrap;align-items:center;gap:10px;width:100%;display:flex}.tool-label{color:var(--muted);min-width:2.5em;font-size:.8rem;font-weight:600}.segmented.two{grid-template-columns:repeat(2,1fr)}.segmented.compact{padding:3px}.segmented.compact button{min-height:32px;padding:0 16px;font-size:.85rem}.fine-adjust{width:100%}.photo-tabs{border-bottom:1px solid var(--line);grid-template-columns:repeat(3,1fr);width:100%;margin-bottom:4px;display:grid}.photo-tabs button{color:var(--muted);cursor:pointer;background:0 0;border:none;border-bottom:3px solid #0000;padding:8px 4px;font-size:.85rem;font-weight:600}.photo-tabs button.on{color:var(--accent);border-bottom-color:var(--accent)}.photo-tools{flex-direction:column;align-items:stretch}.line-slider{accent-color:var(--accent);flex:1}.fine-row{grid-template-columns:6.5em 2.6em 1fr 2.6em;align-items:center;gap:6px;font-size:.8rem;display:grid}.fine-row input[type=range]{width:100%;accent-color:var(--accent);min-height:32px}.fine-label{flex-direction:column;font-weight:600;display:flex}.fine-value{color:var(--muted);font-size:.7rem;font-weight:400}.fine-ends{color:var(--muted);text-align:center;font-size:.68rem}.candidates{background:var(--accent-soft);border-radius:12px;flex-direction:column;gap:8px;padding:10px;display:flex}.candidates-title{margin:0;font-size:.9rem;font-weight:700}.candidate-grid{grid-template-columns:repeat(3,1fr);gap:8px;display:grid}.candidate{text-align:left;cursor:pointer;background:var(--surface);border:2px solid var(--line);border-radius:10px;flex-direction:column;gap:2px;padding:6px;display:flex}.candidate:hover,.candidate:focus-visible{border-color:var(--accent)}.candidate.on{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 35%, transparent)}.photo-tag.preview{background:var(--accent);color:var(--accent-ink)}.swatch.recommended{position:relative}.swatch.recommended:after{content:"★";color:#e0a92c;text-shadow:0 0 2px #0009;font-size:.75rem;position:absolute;top:-8px;right:-6px}.candidate img{aspect-ratio:1;object-fit:cover;border-radius:6px;width:100%;margin-bottom:4px}.candidate strong{font-size:.85rem}.candidate small{color:var(--muted);font-size:.68rem;line-height:1.3}.editor-overlay{z-index:50;color:#f1f1f1;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);background:#0e0e10;flex-direction:column;display:flex;position:fixed;inset:0}.editor-head{justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.editor-head .btn.ghost{color:#f1f1f1;border-color:#3a3a40}.editor-head .btn{white-space:nowrap;flex:none;padding:0 12px}.editor-head strong{text-align:center;flex:1;min-width:0;font-size:.92rem;line-height:1.3}.editor-stage{flex:1;justify-content:center;align-items:center;min-height:0;padding:8px;display:flex;position:relative;overflow:hidden}.editor-canvas{touch-action:none;cursor:crosshair;background-color:#fff;background-image:linear-gradient(45deg,#d9d9d9 25%,#0000 25%),linear-gradient(-45deg,#d9d9d9 25%,#0000 25%),linear-gradient(45deg,#0000 75%,#d9d9d9 75%),linear-gradient(-45deg,#0000 75%,#d9d9d9 75%);background-position:0 0,0 10px,10px -10px,-10px 0;background-size:20px 20px;max-width:100%;max-height:100%}.chooser-wrap{max-width:100%;line-height:0;display:inline-block;position:relative}.chooser-img{max-width:100%;max-height:calc(100dvh - 260px)}.chooser-box{cursor:pointer;background:#00000040;border:2px dashed #fffc;border-radius:6px;padding:0;position:absolute}.chooser-box.on{background:0 0;border:3px solid #7fb7bc;box-shadow:0 0 0 9999px #0000}.chooser-num{color:#fff;background:#3a3a42;border:2px solid #fff;border-radius:999px;place-items:center;min-width:28px;height:28px;padding:0 6px;font-size:.85rem;font-weight:700;line-height:1;display:grid;position:absolute;top:-12px;left:-12px}.chooser-box.on .chooser-num{background:#2f5d62}.picker-wrap{max-width:100%;max-height:100%;line-height:0;display:inline-block;position:relative}.picker-canvas{cursor:crosshair;max-height:calc(100dvh - 240px)}.picker-mark{pointer-events:none;border:3px solid #fff;border-radius:50%;width:34px;height:34px;position:absolute;transform:translate(-50%,-50%);box-shadow:0 0 0 1px #00000080,0 2px 8px #00000080}.picker-result{align-items:center;gap:12px;font-size:.9rem;display:flex}.picker-swatch{border:1px solid #3a3a40;border-radius:10px;flex:none;width:40px;height:40px}.color-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.color-actions{flex-wrap:wrap;gap:8px;margin-left:auto;display:flex}.color-chip{border:2px solid var(--line);border-radius:50%;flex:none;width:28px;height:28px}.editor-tools{background:#1a1a1e;border-top:1px solid #2c2c32;flex-direction:column;gap:10px;padding:12px 16px 16px;display:flex}.editor-row{align-items:center;gap:12px;display:flex}.editor-row input[type=range]{accent-color:#7fb7bc;flex:1;min-height:32px}.editor-row .segmented{background:#26262b;border-color:#34343a;flex:1}.editor-row .segmented button{color:#a8a8b0}.editor-row .segmented button.on{color:#fff;background:#3a3a42}.editor-label{color:#a8a8b0;flex:none;width:3em;font-size:.8rem}.editor-actions{flex-wrap:wrap;gap:8px;display:flex}.editor-actions .btn.ghost{color:#f1f1f1;border-color:#3a3a40}.editor-actions .btn.outline{color:#9fd0d4;border-color:#9fd0d4}.editor-notice{color:#ffd28a;margin:0;font-size:.8rem}.editor-tools .hint{color:#8d8d96}.editor-tools{max-height:46dvh;overflow-y:auto}.editor-stage.zoomed{display:block;overflow:auto}.editor-canvas.moving{touch-action:pan-x pan-y;cursor:grab}.editor-canvas.tapping{cursor:pointer}.tool-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.tool-grid button{color:#c8c8d0;cursor:pointer;background:#26262b;border:1px solid #34343a;border-radius:10px;min-height:40px;padding:4px;font-size:.78rem;line-height:1.25}.tool-grid button.on{color:#fff;background:#3a4a4c;border-color:#7fb7bc}.editor-row .editor-label{width:5.5em}.spinner.dark{border-color:#fff #fff3 #fff3}.gallery-wrap{position:relative}.gallery-edit{color:#fff;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#1414189e;border-radius:999px;padding:6px 12px;font-size:.8rem;font-weight:600;text-decoration:none;position:absolute;top:10px;right:10px}.gallery{flex-direction:column;gap:8px;display:flex}.gallery-main{border-radius:var(--radius);background:var(--surface-2);aspect-ratio:1;border:1px solid var(--line);place-items:center;display:grid;overflow:hidden}.gallery-main img{object-fit:contain;width:100%;height:100%}.empty-photo{color:var(--line);font-size:3rem}.thumbs{gap:8px;display:flex;overflow-x:auto}.thumb{background:var(--surface-2);cursor:pointer;border:2px solid #0000;border-radius:10px;flex:none;width:64px;height:64px;padding:0;overflow:hidden}.thumb.on{border-color:var(--accent)}.thumb img{object-fit:cover;width:100%;height:100%}.title-block{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;display:flex}.title-badges{gap:6px;display:flex}.detail-actions{grid-template-columns:2fr 1fr;gap:10px;margin-top:-4px;display:grid}.specimen-name{letter-spacing:.02em;margin:0;font-size:1.6rem}.facts{flex-direction:column;margin:0;display:flex}.facts>div{border-bottom:1px solid var(--line);grid-template-columns:76px 1fr;gap:12px;padding:8px 0;display:grid}.facts>div:last-child{border-bottom:none}.facts dt{color:var(--muted);padding-top:2px;font-size:.8rem}.facts dd{margin:0}.timeline{border-left:2px solid var(--accent-soft);flex-direction:column;gap:14px;margin:0;padding:0 0 0 18px;list-style:none;display:flex}.timeline li{position:relative}.timeline li:before{content:"";background:var(--gem);border:2px solid var(--surface);border-radius:50%;width:12px;height:12px;position:absolute;top:6px;left:-25px}.tl-head{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.tl-kind{font-size:.85rem;font-weight:700}.tl-date{color:var(--muted);font-size:.8rem}.tl-privacy{color:var(--muted);border:1px solid var(--line);border-radius:999px;padding:0 6px;font-size:.65rem}.tl-privacy.pub{color:var(--accent);border-color:var(--accent)}.tl-actor{font-size:.95rem}.tl-note{color:var(--muted);font-size:.85rem}.qr-block{align-items:flex-start;gap:16px;display:flex}.qr{border:1px solid var(--line);background:#fff;border-radius:10px;flex:none;padding:6px}.code{letter-spacing:.12em;font-family:ui-monospace,Consolas,monospace}.request-row{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:10px;padding:8px 0;display:flex}.btn.google{color:#1f1f1f;background:#fff;border-color:#dadce0}.g-mark{color:#4285f4;font-weight:800}.divider{color:var(--muted);align-items:center;gap:10px;font-size:.8rem;display:flex}.divider:before,.divider:after{content:"";border-top:1px solid var(--line);flex:1}.local-start{border-style:dashed}.typo-warn{color:var(--text);background:#d9822b24;border-radius:10px;flex-wrap:wrap;align-items:center;gap:8px;margin:0;padding:8px 10px;font-size:14px;display:flex}.typo-warn span{flex:auto}.turnstile-box{min-height:65px}.photo-drop{position:relative}.photo-drop.over{outline:3px dashed var(--accent);outline-offset:-3px}.photo-drop-hint{border-radius:var(--radius);background:color-mix(in srgb, var(--accent) 18%, transparent);color:var(--accent);pointer-events:none;place-items:center;font-weight:700;display:grid;position:absolute;inset:0}@media (pointer:coarse){.pc-only{display:none}}.code-input{letter-spacing:.4em;text-align:center;font-size:1.4rem!important}.welcome,.public{flex-direction:column;gap:20px;max-width:520px;margin:0 auto;padding:32px 16px 48px;display:flex}.welcome-hero{text-align:center;padding:24px 0 8px}.welcome-mark{background:linear-gradient(135deg, var(--gem), var(--accent));color:#0000;-webkit-background-clip:text;background-clip:text;font-size:2.6rem}.welcome-hero h1{letter-spacing:.2em;margin:4px 0;font-size:2rem}.welcome-lead{color:var(--muted);margin:0}.welcome-points{flex-direction:column;gap:6px;margin:0;padding:0 0 0 20px;font-size:.92rem;display:flex}.owner{color:var(--muted);margin:8px 0 0;font-size:.85rem}.public-foot{text-align:center;color:var(--muted);font-size:.8rem}.public-foot a{color:var(--gem);font-weight:700;text-decoration:none}.public-foot .public-login{color:var(--accent);margin-top:8px;font-weight:600;text-decoration:underline;display:inline-block}.label-page{max-width:640px;margin:0 auto;padding:16px}.label-controls{margin-bottom:16px}.label-controls .field.inline input{width:90px}.labels{flex-wrap:wrap;gap:4mm;display:flex}.label{color:#111;background:#fff;border:1px dashed #bbb;align-items:center;gap:2.5mm;width:62mm;height:29mm;padding:2mm;display:flex;overflow:hidden}.label .qr{border:none;border-radius:0;width:24mm;height:24mm;padding:0}.label-text{min-width:0;font-size:7.5pt;line-height:1.3}.label-name{font-size:10pt;font-weight:700}.label-en{font-style:italic}.label-loc,.label-size{color:#333}@media print{@page{margin:6mm}body{background:#fff}.no-print{display:none!important}.label-page{max-width:none;padding:0}.label{break-inside:avoid;border-color:#ddd}}.status-options{flex-direction:column;gap:8px;display:flex}.status-options button{text-align:left;border:1px solid var(--line);width:100%;color:inherit;cursor:pointer;background:0 0;border-radius:12px;align-items:flex-start;gap:10px;padding:10px 12px;display:flex}.status-options button>span:last-child{flex-direction:column;gap:2px;display:flex}.status-options small{color:var(--muted);font-size:.78rem;line-height:1.4}.status-options button.on{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 10%, transparent)}.status-dot{border:2px solid var(--line);border-radius:50%;flex:none;width:18px;height:18px;margin-top:1px}.status-options button.on .status-dot{border-color:var(--accent);box-shadow:inset 0 0 0 3px var(--surface,#fff);background:var(--accent)}.stage-bar{color:#2b1d05;background:#f3b04a;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;padding:6px 16px;font-size:.8rem;font-weight:600;display:flex}.stage-bar a{color:inherit;white-space:nowrap}.stage-link{white-space:nowrap}.guess-score{color:var(--muted);font-size:.75rem}.app img{-webkit-user-drag:none;user-drag:none}.gx{flex-direction:column;gap:16px;display:flex}.gx-head{flex-direction:column;gap:12px;display:flex}.gx-modes{grid-template-columns:repeat(3,1fr);gap:6px;display:grid}.gx-modes button{cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:12px;flex-direction:column;align-items:center;gap:2px;padding:8px 4px;display:flex}.gx-modes button strong{font-size:.85rem}.gx-modes button small{color:var(--muted);font-size:.7rem}.gx-modes button.on{border-color:var(--accent);background:var(--accent-soft)}.gx-band{border-radius:999px;gap:2px;height:14px;display:flex;overflow:hidden}.gx-band button{cursor:pointer;border:none;min-width:10px;padding:0;transition:opacity .2s,transform .2s}.gx-band button.dim{opacity:.25}.gx-band button.on{transform:scaleY(1.25)}.gx-name{letter-spacing:.08em;font-family:Hiragino Mincho ProN,Yu Mincho,YuMincho,Noto Serif JP,serif;font-weight:600;display:block}.gx-sub{letter-spacing:.18em;text-transform:uppercase;opacity:.8;font-size:.72rem;display:block}.gx-loc{letter-spacing:.06em;opacity:.7;margin-top:4px;font-size:.75rem;display:block}.gx-cut{object-fit:contain}.gx-photo{object-fit:cover;border-radius:10px;box-shadow:0 16px 40px #00000073}.gx-showcase{scroll-snap-type:y proximity;flex-direction:column;gap:14px;display:flex}.gx-slide{scroll-snap-align:center;border-radius:22px;grid-template-rows:auto 1fr auto;min-height:min(78dvh,720px);padding:18px 20px 24px;display:grid;position:relative;overflow:hidden}.gx-index{letter-spacing:.25em;font-variant-numeric:tabular-nums;opacity:.85;font-size:.72rem}.gx-index small{opacity:.6;font-size:inherit}.gx-stage{place-items:center;min-height:0;text-decoration:none;display:grid;position:relative}.gx-stage img{z-index:1;width:auto;max-width:88%;height:auto;max-height:52dvh;position:relative}.gx-floor{filter:blur(14px);opacity:.8;height:18%;position:absolute;bottom:4%;left:20%;right:20%}.gx-caption{text-align:center}.gx-caption .gx-name{font-size:1.7rem}.gx-portfolio{grid-template-columns:1fr 1fr;gap:10px;display:grid}.gx-card{aspect-ratio:3/4;border-radius:18px;flex-direction:column;text-decoration:none;display:flex;position:relative;overflow:hidden}.gx-art{place-items:center;display:grid;position:absolute;inset:12px 12px 58px}.gx-art img{width:100%;height:100%;position:absolute;inset:0}.gx-art .gx-photo{border-radius:10px}.gx-card.wide{aspect-ratio:16/10;grid-column:span 2}.gx-card .gx-art{flex:1;min-height:0;margin:12px 12px 6px;position:relative;inset:auto}.gx-card img{transition:transform .35s}.gx-card:hover img{transform:scale(1.04)}.gx-card-text{padding:0 14px 12px}.gx-card-text .gx-name{font-size:1rem}.gx-card.wide .gx-card-text .gx-name{font-size:1.3rem}.gx-card-text .gx-sub{font-size:.62rem}.gx-wall{grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:6px;display:grid}.gx-tile{aspect-ratio:1;border-radius:12px;display:block;position:relative;overflow:hidden}.gx-tile .gx-art{inset:8px}.gx-tile .gx-photo{box-shadow:none;border-radius:6px}.gx-foot{text-align:center}.kind-picker{flex-direction:column;gap:6px;display:flex}.kind-picker .chips{gap:6px}.kind-picker .chip{font-size:.8rem}.btn.fine-edit{width:100%}
