:root{--bg: #14141a;--panel: #1e1e26;--panel-2: #282832;--border: #2f2f3a;--text: #ece8de;--muted: #8b8a82;--accent: #b89968;--accent-hover: #c8a878;--accent-2: #5b8aa8;--error: #c66565;--ok: #7eb37e;--room-blue: #557ba8;--room-purple: #8a6abc;--room-orange: #c08145;--room-green: #5fa264;--room-yellow: #b8923c;--room-red: #b85454}*{box-sizing:border-box}html,body{height:100%}:root{--topbar-h: calc(54px + env(safe-area-inset-top)) }body{margin:0;background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none;overflow-x:hidden}a{color:inherit}.topbar{position:fixed;top:0;left:0;right:0;z-index:50;padding-top:calc(16px + env(safe-area-inset-top));padding-right:calc(16px + env(safe-area-inset-right));padding-bottom:16px;padding-left:calc(16px + env(safe-area-inset-left));border-bottom:1px solid var(--border);background:var(--bg)}.topbar h1{margin:0 96px 0 48px;font-weight:400;letter-spacing:.08em;font-size:12px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(min-width:600px){.topbar h1{margin:0 110px 0 56px;letter-spacing:.12em;font-size:14px}}.topbar .back{position:absolute;left:calc(16px + env(safe-area-inset-left));top:calc(50% + env(safe-area-inset-top)/2);transform:translateY(-50%);color:var(--muted);text-decoration:none;font-size:14px;padding:8px 12px;border-radius:4px;transition:color .15s,background .15s;display:inline-flex;align-items:center;gap:4px}@media(hover:hover){.topbar .back:hover{color:var(--accent);background:var(--panel)}}.topbar-right{position:absolute;right:calc(16px + env(safe-area-inset-right));top:calc(50% + env(safe-area-inset-top)/2);transform:translateY(-50%);display:inline-flex;align-items:center;gap:6px}.topbar-version{color:var(--muted);font-size:11px;letter-spacing:.1em;opacity:.5;padding:8px 12px;background:transparent;border:none;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:4px;transition:opacity .15s,color .15s}.sync-indicator{background:transparent;border:1px solid transparent;border-radius:999px;width:32px;height:32px;padding:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-family:inherit;flex-shrink:0;transition:background .15s,color .15s,border-color .15s}.sync-indicator.dirty{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 50%,transparent);animation:sync-pulse 2s ease-in-out infinite}.sync-indicator.remote{color:var(--accent-2);border-color:color-mix(in srgb,var(--accent-2) 50%,transparent);animation:sync-pulse-remote 2s ease-in-out infinite}.sync-indicator.offline{color:var(--muted);border-color:var(--border);opacity:.7}@keyframes sync-pulse{0%,to{box-shadow:0 0 color-mix(in srgb,var(--accent) 30%,transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent) 0%,transparent)}}@keyframes sync-pulse-remote{0%,to{box-shadow:0 0 color-mix(in srgb,var(--accent-2) 30%,transparent)}50%{box-shadow:0 0 0 4px color-mix(in srgb,var(--accent-2) 0%,transparent)}}@media(hover:hover){.sync-indicator.dirty:hover{background:color-mix(in srgb,var(--accent) 15%,transparent)}.sync-indicator.remote:hover{background:color-mix(in srgb,var(--accent-2) 15%,transparent)}.sync-indicator.offline:hover{background:var(--panel-2)}}.sync-indicator:active{background:color-mix(in srgb,var(--accent) 25%,transparent)}.sync-indicator:disabled{cursor:default}.sync-spinner{animation:sync-spin .7s linear infinite}@keyframes sync-spin{to{transform:rotate(360deg)}}@media(hover:hover){.topbar-version:hover:not(:disabled){opacity:1;color:var(--accent)}}.topbar-version:disabled{opacity:.3;cursor:wait}.topbar-version.has-update,.topbar-version.up-to-date{opacity:1;color:var(--ok)}.version-update-dot{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--ok);animation:version-pulse 1.5s ease-in-out infinite}@keyframes version-pulse{0%,to{opacity:.5;transform:scale(1)}50%{opacity:1;transform:scale(1.3)}}.version-spinner{display:inline-block;width:10px;height:10px;border:1.5px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:version-spin .7s linear infinite;flex-shrink:0}@keyframes version-spin{to{transform:rotate(360deg)}}main{box-sizing:border-box;padding-top:calc(var(--topbar-h) + 16px);padding-right:calc(16px + env(safe-area-inset-right));padding-left:calc(16px + env(safe-area-inset-left));padding-bottom:calc(16px + env(safe-area-inset-bottom));min-height:100dvh;display:flex;flex-direction:column}main:has(.page-actions){padding-bottom:0}.page-content{max-width:800px;width:100%;margin:0 auto;display:flex;flex-direction:column;gap:8px;flex:1}.page-content>label,.page-content>.label{display:block;font-size:12px;color:var(--muted);margin:12px 0 0;text-transform:uppercase;letter-spacing:.05em}.page-content>label:first-child,.page-content>.label:first-child{margin-top:0}.page-content>label .hint-small,.page-content>.label .hint-small{text-transform:none;font-size:11px;color:var(--muted);opacity:.7;margin-left:4px;letter-spacing:0}.page-actions{position:sticky;bottom:0;z-index:40;margin-top:auto;display:flex;gap:8px;flex-wrap:wrap;background:var(--bg);border-top:1px solid var(--border);padding:12px 0 calc(12px + env(safe-area-inset-bottom))}.page-actions button{flex:1;min-width:120px}.form-section{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 14px 16px;display:flex;flex-direction:column;gap:8px}.form-section+.form-section{margin-top:12px}.section-header{display:flex;align-items:center;gap:10px;margin-bottom:4px}.section-title{font-size:12px;text-transform:uppercase;letter-spacing:.12em;color:var(--muted)}.section-count{font-size:11px;letter-spacing:.04em;color:var(--muted);background:var(--panel-2);border:1px solid var(--border);border-radius:999px;padding:1px 8px;font-variant-numeric:tabular-nums}.section-header .hint-small{font-size:11px;color:var(--muted);opacity:.7;letter-spacing:0;text-transform:none}.type-pill{margin-left:auto;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#fff;padding:2px 8px;border-radius:999px;opacity:.85}.memo-rows{display:flex;flex-direction:column;gap:8px}.memo-row{background:var(--bg);border:1px solid var(--border);border-radius:6px;overflow:hidden;transition:border-color .15s}.memo-row.is-open{border-color:color-mix(in srgb,var(--accent) 40%,var(--border) 60%)}.memo-row-summary{display:flex;align-items:stretch;min-height:64px}.memo-row-toggle{flex:1;background:transparent;border:none;display:flex;align-items:center;gap:10px;padding:8px 4px 8px 8px;cursor:pointer;text-align:left;color:inherit;font-family:inherit;min-width:0}@media(hover:hover){.memo-row-toggle:hover{background:color-mix(in srgb,var(--accent) 4%,transparent)}}.memo-row-thumb{position:relative;width:48px;height:48px;border-radius:4px;overflow:hidden;background:var(--panel-2);flex-shrink:0}.memo-row-thumb img{width:100%;height:100%;object-fit:cover;display:block}.memo-row-thumb.is-drawing{background:#fff;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border) 70%)}.memo-row-thumb.is-drawing img{object-fit:contain}.memo-row-thumb-empty{border:1px dashed var(--border);background:var(--panel-2)}.memo-row-thumb-badge{position:absolute;bottom:2px;right:2px;font-size:9px;background:#000000b3;color:#fff;border-radius:3px;padding:1px 4px;font-variant-numeric:tabular-nums}.memo-row-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}.memo-row-line{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.memo-row-title{font-size:14px;font-weight:600;color:var(--accent);letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.memo-row-title-empty{color:var(--muted);font-style:italic;font-weight:400}.memo-row-date{font-size:10px;color:var(--muted);white-space:nowrap;flex-shrink:0;font-variant-numeric:tabular-nums}.memo-row-meta{display:flex;gap:4px;align-items:center;flex-wrap:nowrap;overflow:hidden;min-width:0}.memo-row-meta .tag-chip{flex-shrink:0}.memo-row-excerpt{font-size:12px;color:var(--text);opacity:.7;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.memo-row-expand{background:transparent;border:none;border-left:1px solid var(--border);color:var(--muted);cursor:pointer;padding:0 10px;display:flex;align-items:center;justify-content:center;flex-shrink:0}@media(hover:hover){.memo-row-expand:hover{color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,transparent)}}.memo-row-chevron{transition:transform .2s;flex-shrink:0}.memo-row.is-open .memo-row-chevron{transform:rotate(180deg)}.memo-row.is-open .memo-row-expand{color:var(--accent)}.memo-row-actions{display:flex;align-items:center;gap:4px;padding:0 8px 0 4px;border-left:1px solid var(--border)}.memo-row-detail{padding:12px;display:flex;flex-direction:column;gap:8px;border-top:1px solid var(--border);margin-top:-1px}.memo-row-tags-full{display:flex;flex-wrap:wrap;gap:4px}.memo-row-backrefs{display:flex;flex-wrap:wrap;gap:4px;margin-top:2px}.memos-page-rows,.memo-pick-rows{max-width:800px;margin:12px auto 0;width:100%}.memo-row-text{font-size:13px;line-height:1.5;color:var(--text);background:var(--panel);border-radius:4px;padding:8px 10px}.memo-row-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:4px}.cell-words{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media(max-width:480px){.cell-words{grid-template-columns:1fr;gap:8px}}.cell-word-field{display:flex;flex-direction:column;gap:4px}.cell-word-field label{font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.room-page.type-numbered{--room-color: var(--room-blue)}.room-page.type-bedroom{--room-color: var(--room-purple)}.room-page.type-hallway{--room-color: var(--room-orange)}.room-page.type-green{--room-color: var(--room-green)}.room-page.type-shop{--room-color: var(--room-yellow)}.room-page.type-red{--room-color: var(--room-red)}.type-details.type-numbered{--room-color: var(--room-blue)}.type-details.type-bedroom{--room-color: var(--room-purple)}.type-details.type-hallway{--room-color: var(--room-orange)}.type-details.type-green{--room-color: var(--room-green)}.type-details.type-shop{--room-color: var(--room-yellow)}.type-details.type-red{--room-color: var(--room-red)}.type-details-meta{display:flex;align-items:center;gap:12px;padding-bottom:12px;border-bottom:2px solid var(--room-color, var(--border))}.type-details-swatch{width:24px;height:24px;border-radius:50%;flex-shrink:0}.type-details-count{font-size:13px;color:var(--muted);font-variant-numeric:tabular-nums}button{background:transparent;border:1px solid var(--border);color:var(--text);padding:10px 14px;border-radius:4px;font-size:14px;cursor:pointer;font-family:inherit;transition:border-color .15s,color .15s,background .15s;display:inline-flex;align-items:center;justify-content:center;gap:6px}@media(hover:hover){button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}}button:active:not(:disabled){background:color-mix(in srgb,var(--accent) 12%,transparent)}button.primary:active:not(:disabled){background:var(--accent-hover)}button.danger:active:not(:disabled){background:var(--error);color:var(--bg)}button:disabled{opacity:.4;cursor:not-allowed}button.primary{background:var(--accent);color:var(--bg);border-color:var(--accent);font-weight:500}@media(hover:hover){button.primary:hover:not(:disabled){background:var(--accent-hover);color:var(--bg)}}button.danger{color:var(--error);border-color:var(--error)}@media(hover:hover){button.danger:hover{background:var(--error);color:var(--bg)}}input[type=text],textarea{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);padding:10px 12px;font-size:16px;outline:none;font-family:inherit}input[type=text]:focus,textarea:focus{border-color:var(--accent)}textarea{resize:vertical;min-height:60px}button.link{background:transparent;border:none;color:var(--muted);text-decoration:underline;padding:4px 8px;cursor:pointer;font-size:13px}@media(hover:hover){button.link:hover{color:var(--accent)}}.modal-backdrop{position:fixed;inset:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:100;padding-top:max(16px,env(safe-area-inset-top));padding-right:max(16px,env(safe-area-inset-right));padding-bottom:max(16px,env(safe-area-inset-bottom));padding-left:max(16px,env(safe-area-inset-left))}.modal{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:24px;width:100%;max-width:380px;max-height:calc(100vh - 32px);overflow-y:auto}.modal.modal-wide{max-width:600px}.modal h2{margin:0 0 16px;font-size:16px;font-weight:400;color:var(--muted);letter-spacing:.05em}.modal label,.modal .label{display:block;font-size:12px;color:var(--muted);margin:12px 0 4px;text-transform:uppercase;letter-spacing:.05em}.modal label .hint-small{text-transform:none;font-size:11px;color:var(--muted);opacity:.7;margin-left:4px;letter-spacing:0}.modal .actions{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}.modal .actions button{flex:1;min-width:90px}.memo-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:8px}.modal .memo-list{max-height:60vh;overflow-y:auto;padding:4px}.memo-card{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:10px 12px;cursor:pointer;transition:border-color .15s;display:flex;flex-direction:column;gap:6px;min-height:56px;min-width:0}@media(hover:hover){.memo-card:hover{border-color:var(--accent)}}.memo-card-title{font-size:14px;font-weight:600;color:var(--accent);letter-spacing:.04em;line-height:1.2;word-break:break-word}.memo-card-untitled{font-size:13px;color:var(--muted);font-style:italic}.memo-card-text{font-size:12px;color:var(--text);line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;word-break:break-word}.memo-card-thumbs{display:flex;gap:4px;align-items:center;flex-wrap:wrap;margin-top:auto}.memo-card-thumb{width:24px;height:24px;object-fit:cover;border-radius:3px;background:var(--panel-2);flex-shrink:0}.memo-card-thumb-more{font-size:11px;color:var(--muted);font-weight:600;padding:0 2px}.photo-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:6px;margin-bottom:8px}.photo-item{position:relative;aspect-ratio:1;background:var(--bg);border:1px solid var(--border);border-radius:4px;overflow:hidden}.photo-item img{width:100%;height:100%;object-fit:cover;display:block}.photo-remove{position:absolute;top:4px;right:4px;width:22px;height:22px;padding:0;border-radius:50%;background:#000000a6;border:1px solid var(--border);color:#fff;font-size:16px;line-height:1;display:flex;align-items:center;justify-content:center;cursor:pointer}@media(hover:hover){.photo-remove:hover{background:var(--error);border-color:var(--error);color:#fff}}.photo-edit{position:absolute;top:4px;left:4px;width:22px;height:22px;padding:0;border-radius:50%;background:#000000a6;border:1px solid var(--border);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer}@media(hover:hover){.photo-edit:hover{background:var(--accent);border-color:var(--accent)}}.photo-size{position:absolute;bottom:4px;left:4px;font-size:10px;letter-spacing:.02em;color:#fff;background:#0000008c;border-radius:3px;padding:1px 5px;pointer-events:none;font-variant-numeric:tabular-nums}[role=button].photo-item{cursor:zoom-in}.memo-add-photo{width:100%;background:var(--bg);border:1px dashed var(--border);border-radius:4px;padding:14px;display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer;color:var(--muted);font-size:14px;font-family:inherit}@media(hover:hover){.memo-add-photo:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}}.memo-add-photo:disabled{opacity:.6;cursor:not-allowed}.memo-add-photo .big-icon{font-size:18px}.memo-add-photo-row{display:flex;gap:8px}.memo-add-photo-row .memo-add-photo{flex:1}.memo-backrefs{display:flex;flex-direction:column;gap:4px}.memo-backref{display:flex;align-items:center;justify-content:space-between;background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:6px 10px;font-size:13px}.memos-empty{color:var(--muted);font-size:13px;font-style:italic;padding:8px 0;text-align:center}.memo-chip-list{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:8px}.memo-chip{background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:6px 10px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;font-size:13px;color:inherit;font-family:inherit;transition:border-color .15s,background .15s}@media(hover:hover){.memo-chip:hover{border-color:var(--accent);background:var(--panel-2)}}.memo-chip-title{color:var(--accent);font-weight:500}.memo-chip-untitled{color:var(--muted);font-style:italic}.memo-chip-meta{color:var(--muted);font-size:11px}.memo-chip-detach{background:transparent;border:none;color:var(--muted);width:22px;height:22px;padding:0;font-size:16px;line-height:1;cursor:pointer;border-radius:50%;display:flex;align-items:center;justify-content:center;margin-left:2px;flex-shrink:0}@media(hover:hover){.memo-chip-detach:hover{color:var(--error);background:#d9656526;border-color:transparent}}.memo-read-text{font-size:14px;color:var(--text);line-height:1.5;white-space:pre-wrap;word-break:break-word;margin-bottom:12px}.memo-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.memo-header h2{margin:0}.memo-header h2.memo-title{font-weight:500;color:var(--accent);word-break:break-word}.memo-header h2.memo-title.memo-title-empty{color:var(--muted);font-weight:400;font-style:italic}.icon-btn{background:transparent;border:1px solid var(--border);color:var(--muted);width:32px;height:32px;padding:0;border-radius:4px;font-size:16px;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;flex-shrink:0}@media(hover:hover){.icon-btn:hover{color:var(--accent);border-color:var(--accent);background:var(--panel-2)}}.icon-btn-danger{color:var(--error)}@media(hover:hover){.icon-btn-danger:hover{color:#fff;background:var(--error);border-color:var(--error)}}.memo-full-list{display:flex;flex-direction:column;gap:12px}.memo-full{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}.memo-full-header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.memo-full-title{font-size:14px;font-weight:600;color:var(--accent);margin:0;letter-spacing:.04em;word-break:break-word;flex:1;line-height:1.3}.memo-full-title.memo-full-title-empty{color:var(--muted);font-style:italic;font-weight:400}.memo-full-actions{display:flex;gap:4px;flex-shrink:0}.memo-full-actions .icon-btn{width:28px;height:28px;font-size:13px}.memo-full-text{font-size:13px;color:var(--text);line-height:1.5;white-space:pre-wrap;word-break:break-word}.memo-full-photos{display:grid;grid-template-columns:repeat(auto-fill,minmax(80px,1fr));gap:4px}.memo-full-photo{position:relative;aspect-ratio:1;background:var(--panel-2);border-radius:4px;overflow:hidden}.memo-full-photo img{width:100%;height:100%;object-fit:cover;display:block}.memo-full-drawing{background:#fff;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border) 65%)}.memo-full-drawing img{object-fit:contain}button.memo-full-photo-btn{padding:0;background:transparent;cursor:pointer;display:block}@media(hover:hover){button.memo-full-photo-btn:hover{border-color:var(--accent)}}.drawing-item{background:#fff;border-color:color-mix(in srgb,var(--accent) 35%,var(--border) 65%);cursor:pointer}.drawing-item img{object-fit:contain}.memo-card-thumb.is-drawing{background:#fff;border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border) 65%);box-sizing:border-box;object-fit:contain}.drawing-backdrop{padding:0}.drawing-modal{background:var(--panel);border-radius:0;width:100%;height:100%;max-width:none;max-height:none;display:flex;flex-direction:column;overflow:hidden}@media(min-width:720px){.drawing-backdrop{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}.drawing-modal{border-radius:8px;max-width:1200px;max-height:calc(100vh - 32px);border:1px solid var(--border)}}.drawing-toolbar{display:flex;align-items:center;gap:12px;padding:8px 12px;background:var(--panel-2);border-bottom:1px solid var(--border);flex-wrap:wrap;flex-shrink:0}.btn-group{display:inline-flex;align-items:center;border:1px solid var(--border);border-radius:4px;background:var(--bg);flex-shrink:0;overflow:hidden}.btn-group .tool-btn{border:none;border-radius:0;border-right:1px solid var(--border)}.btn-group .tool-btn:last-child{border-right:none}.btn-group-swatches{gap:0;padding:0 6px}.btn-group-swatches .drawing-swatch{margin:0 3px}.tool-btn{background:transparent;border:1px solid var(--border);color:var(--text);width:36px;height:36px;font-size:16px;cursor:pointer;border-radius:4px;padding:0;display:flex;align-items:center;justify-content:center;font-family:inherit;flex-shrink:0}@media(hover:hover){.tool-btn:hover:not(:disabled){color:var(--accent)}}.tool-btn.active{background:var(--accent);color:var(--bg)}.tool-btn:disabled{opacity:.4;cursor:not-allowed}.drawing-swatch{width:28px;height:28px;border-radius:50%;border:2px solid var(--border);cursor:pointer;padding:0;transition:transform .1s,border-color .1s;flex-shrink:0}@media(hover:hover){.drawing-swatch:hover{transform:scale(1.1);border-color:var(--text)}}.drawing-swatch.active{border-color:var(--text);transform:scale(1.15);box-shadow:0 0 0 2px var(--bg),0 0 0 4px var(--text)}.drawing-canvas-wrap{flex:1;overflow:auto;background:var(--bg);padding:16px;display:flex;align-items:flex-start;justify-content:flex-start}.drawing-canvas{background:#fff;display:block;flex-shrink:0;margin:0 auto;cursor:crosshair;box-shadow:0 1px 4px #0006;border-radius:4px}.drawing-actions{display:flex;gap:8px;padding:12px;border-top:1px solid var(--border);flex-shrink:0}.drawing-actions button{flex:1;min-width:100px}.lightbox-backdrop{background:#000000eb;padding:0}.lightbox{width:100%;height:100%;display:flex;flex-direction:column;position:relative;padding:24px;gap:12px}.lightbox-stage{flex:1;display:flex;align-items:center;justify-content:center;min-height:0}.lightbox-img{max-width:100%;max-height:100%;object-fit:contain;display:block;user-select:none;-webkit-user-drag:none}.lightbox-meta{flex-shrink:0;max-height:30vh;overflow-y:auto;background:#0000008c;border:1px solid rgba(255,255,255,.1);border-radius:6px;padding:12px 14px;color:#fff;display:flex;flex-direction:column;gap:6px;margin:0 max(0px,env(safe-area-inset-right)) max(0px,env(safe-area-inset-bottom)) max(0px,env(safe-area-inset-left))}.lightbox-title{font-size:14px;font-weight:600;color:var(--accent);letter-spacing:.04em;word-break:break-word}.lightbox-description{font-size:13px;color:#fff;line-height:1.5;word-break:break-word;white-space:pre-wrap}.crop-wrap{display:flex;align-items:center;justify-content:center;margin:0 auto}.crop-frame{position:relative;background:#000;overflow:hidden;border:1px solid var(--border);border-radius:4px;user-select:none;cursor:grab;flex-shrink:0;touch-action:none}.crop-frame:active{cursor:grabbing}.crop-frame img{position:absolute;top:0;left:0;user-select:none;-webkit-user-drag:none;pointer-events:none;display:block;max-width:none;max-height:none}.crop-zoom{width:100%;appearance:none;-webkit-appearance:none;background:var(--border);height:4px;border-radius:999px;outline:none;margin:6px 0}.crop-zoom::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:22px;height:22px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg)}.crop-zoom::-moz-range-thumb{width:22px;height:22px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg)}.crop-hint{font-size:12px;color:var(--muted);text-align:center;margin:0}.drawing-viewer-stage{background:#0000004d;padding:16px;border-radius:4px}.drawing-viewer-canvas{max-width:100%;max-height:100%;width:auto;height:auto;background:#fff;border-radius:4px;display:block;box-shadow:0 2px 8px #0006}.lightbox-meta .lightbox-counter{position:static;transform:none;background:transparent;padding:0;border-radius:0;font-size:11px;color:#ffffffa6;display:flex;justify-content:space-between;gap:8px}.lightbox-close,.lightbox-nav{background:#ffffff1a;border:1px solid rgba(255,255,255,.2);color:#fff;cursor:pointer;z-index:1;padding:0;display:flex;align-items:center;justify-content:center;position:absolute;font-family:inherit}@media(hover:hover){.lightbox-close:hover,.lightbox-nav:hover{background:#fff3}}.lightbox-close{top:max(16px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));width:40px;height:40px;border-radius:999px}.lightbox-nav{top:50%;transform:translateY(-50%);width:48px;height:48px;border-radius:999px}.lightbox-prev{left:max(16px,env(safe-area-inset-left))}.lightbox-next{right:max(16px,env(safe-area-inset-right))}.hub{max-width:900px;margin:0 auto}.instance-bar{width:100%;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:14px 18px;margin-bottom:24px;display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;text-align:left;color:inherit;font-family:inherit;transition:border-color .15s}@media(hover:hover){.instance-bar:hover{border-color:var(--accent);color:inherit}}.instance-info{display:flex;flex-direction:column;gap:2px;min-width:0}.instance-label{color:var(--muted);font-size:11px;letter-spacing:.1em}.instance-name{color:var(--accent);font-size:16px;font-weight:500;word-break:break-word}.instance-cta{color:var(--muted);font-size:13px;flex-shrink:0}@media(hover:hover){.instance-bar:hover .instance-cta{color:var(--accent)}}.hub-intro{color:var(--muted);font-size:14px;margin:0 0 24px;text-align:center}.tools-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:16px}.tool-card{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:24px;text-decoration:none;color:var(--text);transition:border-color .15s,transform .15s;display:flex;flex-direction:column;gap:10px}@media(hover:hover){.tool-card:hover{border-color:var(--accent);transform:translateY(-2px)}}.tool-icon{font-size:32px;color:var(--accent);line-height:1}.tool-name{font-size:16px;font-weight:500}.tool-desc{font-size:13px;color:var(--muted);line-height:1.4}.memos-toolbar{max-width:900px;margin:0 auto 20px;display:flex;justify-content:flex-end}.memos-controls{max-width:900px;margin:0 auto 16px;display:flex;flex-direction:column;gap:10px}.memos-controls-row{display:flex;flex-direction:column;gap:10px}.memos-sort-label{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.memos-sort{flex:1;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);padding:8px 28px 8px 10px;font-size:14px;font-family:inherit;cursor:pointer;appearance:none;-webkit-appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%;background-size:5px 5px;background-repeat:no-repeat}.memos-sort:focus{outline:none;border-color:var(--accent)}.memos-filter-pills{display:flex;gap:6px;flex-wrap:wrap}.memos-filter-pills .filter-pill{padding:7px 12px;font-size:13px}@media(min-width:720px){.memos-controls-row{flex-direction:row;flex-wrap:wrap;align-items:center}.memos-sort-label{flex-shrink:0}.memos-sort{flex:initial}.memos-filter-pills{flex:1}}.memos-result-count{font-size:11px;color:var(--muted);letter-spacing:.05em;font-variant-numeric:tabular-nums}.memo-card-backrefs{display:flex;flex-wrap:wrap;gap:4px;margin-top:4px}.memo-card-backref-chip{font-size:10px;background:var(--panel-2);border:1px solid var(--border);border-radius:999px;padding:2px 8px;color:var(--muted);white-space:nowrap;letter-spacing:.02em}.memo-card-backref-chip.backref-grid-letters{border-color:color-mix(in srgb,var(--ok) 35%,var(--border) 65%);color:color-mix(in srgb,var(--ok) 75%,var(--text) 25%)}.memo-card-backref-chip.backref-rooms{border-color:color-mix(in srgb,var(--accent) 35%,var(--border) 65%);color:color-mix(in srgb,var(--accent) 80%,var(--text) 20%)}.memo-card-backref-chip.backref-objects{border-color:color-mix(in srgb,var(--accent-2) 40%,var(--border) 60%);color:color-mix(in srgb,var(--accent-2) 80%,var(--text) 20%)}.memo-card-backref-chip.backref-type{font-style:italic}.object-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(140px,100%),1fr));gap:10px;max-width:900px;margin:12px auto 0}.object-card{background:var(--panel);border:1px solid var(--border);border-radius:6px;overflow:hidden;cursor:pointer;display:flex;flex-direction:column;transition:border-color .15s,transform .1s}@media(hover:hover){.object-card:hover{border-color:var(--accent);transform:translateY(-1px)}}.object-card-photo{position:relative;aspect-ratio:1;background:#000;overflow:hidden}.object-card-photo img{width:100%;height:100%;object-fit:contain;display:block}.object-card-photo-empty{width:100%;height:100%;background:var(--panel-2);border-bottom:1px dashed var(--border)}.object-card-memo-badge{position:absolute;top:4px;right:4px;font-size:10px;background:var(--accent);color:var(--bg);border-radius:999px;padding:1px 6px;font-weight:700;line-height:1.2}.object-card-name{padding:8px 10px;font-size:13px;color:var(--text);font-weight:500;letter-spacing:.02em;word-break:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.memo-card-date{margin-top:auto;font-size:10px;color:var(--muted);letter-spacing:.03em;font-variant-numeric:tabular-nums}.memo-full-date{font-size:10px;color:var(--muted);letter-spacing:.03em;font-variant-numeric:tabular-nums;margin-top:4px;text-align:right}.memo-read-date{font-size:11px;color:var(--muted);letter-spacing:.03em;font-variant-numeric:tabular-nums;margin-top:8px}.tag-input{display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:6px 8px;background:var(--bg);border:1px solid var(--border);border-radius:4px;min-height:38px}.tag-input:focus-within{border-color:var(--accent)}.tag-input-field{flex:1;min-width:120px;border:none;background:transparent;color:var(--text);font:inherit;padding:4px 0;outline:none}.tag-chip{display:inline-flex;align-items:center;gap:4px;font-size:12px;background:color-mix(in srgb,var(--accent) 15%,var(--panel-2) 85%);border:1px solid color-mix(in srgb,var(--accent) 30%,var(--border) 70%);color:color-mix(in srgb,var(--accent) 80%,var(--text) 20%);border-radius:999px;padding:2px 4px 2px 10px;letter-spacing:.02em;white-space:nowrap}.tag-chip-static{padding:2px 10px}.tag-chip-sm{font-size:10px;padding:2px 8px}.tag-chip-remove{background:transparent;border:none;color:inherit;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:2px;border-radius:999px;opacity:.7}@media(hover:hover){.tag-chip-remove:hover{opacity:1;background:color-mix(in srgb,var(--accent) 25%,transparent)}}.memo-card-tags,.memo-full-tags,.memo-read-tags{display:flex;flex-wrap:wrap;gap:4px}.memo-read-tags{margin:4px 0 12px}.memo-full-tags{margin:4px 0 8px}.grid-wrapper{display:flex;flex-direction:column;align-items:center}.hint{color:var(--muted);font-size:13px;margin:0 0 24px;text-align:center;max-width:600px}.grid{display:grid;grid-template-columns:repeat(5,80px);grid-template-rows:repeat(9,80px);gap:6px}.cell{position:relative;background:var(--panel);border:1px solid var(--border);border-radius:4px;display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:500;cursor:pointer;transition:border-color .15s,background .15s;user-select:none;text-transform:uppercase;color:var(--accent)}@media(hover:hover){.cell:hover{border-color:var(--accent)}}.cell.filled,.cell.memo-only,.cell.partial{background:var(--panel-2)}.cell .cell-icon{color:var(--border)}.cell.memo-only .cell-icon,.cell.partial .cell-icon{color:var(--muted)}.memo-badge{position:absolute;top:4px;right:4px;font-size:10px;color:var(--bg);background:var(--accent);border-radius:999px;padding:2px 6px;line-height:1;font-weight:600}.preview{margin:20px 0 8px;text-align:center;min-height:60px;display:flex;align-items:center;justify-content:center;flex-direction:column}.preview .letter{font-size:48px;font-weight:500;color:var(--ok);text-transform:uppercase;line-height:1}.preview .msg{font-size:13px;color:var(--muted);margin-top:6px}.preview.error .letter{color:var(--error);font-size:24px}.preview.error .msg{color:var(--error)}.words-preview{display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap;margin-top:10px;font-size:14px;text-transform:uppercase;letter-spacing:.04em}.words-preview .word{color:var(--muted);padding:3px 8px;border-radius:4px;border:1px solid transparent}.words-preview .word.has-extra{color:var(--text);border-color:var(--border);background:var(--bg)}.words-preview .letter-mark{color:var(--ok);font-weight:700}.words-preview .vs{color:var(--muted);font-size:12px}.memo-cell-actions{display:flex;gap:6px}.memo-cell-actions button{flex:1;font-size:13px;padding:8px}@media(max-width:480px){.grid{grid-template-columns:repeat(5,60px);grid-template-rows:repeat(9,60px)}.cell{font-size:28px}.cell.memo-only:after{font-size:18px}}.rich-editor-wrap{border:1px solid var(--border);border-radius:4px;overflow:hidden;transition:border-color .15s}.rich-editor-wrap:focus-within{border-color:var(--accent)}.rich-toolbar{display:flex;gap:4px;padding:4px 6px;background:var(--panel-2);border-top:1px solid var(--border);align-items:center;flex-wrap:wrap}.rich-btn{background:transparent;border:none;color:var(--text);width:32px;height:32px;font-size:14px;cursor:pointer;border-radius:3px;padding:0;display:flex;align-items:center;justify-content:center;font-family:inherit}@media(hover:hover){.rich-btn:hover{background:var(--bg);color:var(--accent)}}.rich-sep{width:1px;height:20px;background:var(--border);margin:0 4px}.rich-swatch{width:20px;height:20px;border-radius:50%;border:2px solid var(--border);cursor:pointer;padding:0;transition:transform .1s,border-color .1s}@media(hover:hover){.rich-swatch:hover{transform:scale(1.15);border-color:var(--text)}}.swatch-default{background:#ece8de}.swatch-gold{background:#b89968}.swatch-red{background:#c66565}.swatch-green{background:#7eb37e}.rich-editor{width:100%;background:var(--bg);color:var(--text);padding:10px 12px;font-size:16px;outline:none;font-family:inherit;min-height:80px;word-break:break-word;white-space:pre-wrap}.rich-editor:empty:before{content:attr(data-placeholder);color:var(--muted);pointer-events:none}.instance-help{color:var(--muted);font-size:13px;margin:0 0 16px;line-height:1.4}.instance-list{display:flex;flex-direction:column;gap:8px;margin-bottom:16px;max-height:50vh;overflow-y:auto}.instance-row{background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:12px 14px;display:flex;flex-direction:column;gap:8px}.instance-row.current{border-color:var(--accent)}.instance-row-name{font-size:14px;color:var(--text);display:flex;align-items:center;gap:8px;flex-wrap:wrap;word-break:break-word}.instance-badge{font-size:10px;color:var(--bg);background:var(--accent);border-radius:999px;padding:2px 8px;line-height:1;font-weight:600;letter-spacing:.05em}.instance-row-actions{display:flex;gap:4px;flex-wrap:wrap}.instance-row-actions button{font-size:12px}.instance-row-actions button.link.link-danger{color:var(--error)}@media(hover:hover){.instance-row-actions button.link.link-danger:hover{color:var(--error);opacity:.75}}.sync-panel{background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px 14px 14px;margin:8px 0 16px;display:flex;flex-direction:column;gap:8px}.sync-panel .section-header{margin-bottom:0}.sync-current{border-top:1px dashed var(--border);padding-top:10px;display:flex;flex-direction:column;gap:6px}.sync-current-label{font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.sync-state{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.sync-state-label{font-size:13px;color:var(--muted);flex:1}.sync-codes{display:flex;flex-direction:column;gap:4px}.sync-code-row{display:flex;align-items:center;gap:6px;font-size:12px}.sync-code-label{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.06em;min-width:56px}.sync-code{flex:1;font-family:SF Mono,Menlo,Consolas,monospace;font-size:12px;color:var(--accent);background:var(--bg);border:1px solid var(--border);border-radius:4px;padding:3px 8px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sync-meta-line{font-size:11px;color:var(--muted)}.sync-actions{display:flex;gap:8px}.sync-actions button{display:inline-flex;align-items:center;gap:6px}.sync-error{font-size:12px;color:var(--error);margin:4px 0 0}.sync-import{border-top:1px dashed var(--border);padding-top:10px;margin-top:4px;display:flex;flex-direction:column;gap:6px}.sync-import>button{align-self:flex-start;display:inline-flex;align-items:center;gap:6px}.sync-import-hint{font-size:11px;color:var(--muted)}.sync-import label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-top:4px}.sync-import input{width:100%}.sync-import-actions{display:flex;gap:6px;justify-content:flex-end;margin-top:6px}.party-list{display:flex;flex-direction:column;gap:6px}.party-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:10px;background:var(--bg);border:1px solid var(--border);border-radius:6px;padding:10px 12px;cursor:pointer;text-align:left;color:inherit;font-family:inherit;width:100%;transition:border-color .15s}.party-row.is-current{border-color:color-mix(in srgb,var(--accent) 50%,var(--border) 50%);background:color-mix(in srgb,var(--accent) 6%,var(--bg) 94%)}@media(hover:hover){.party-row:hover{border-color:var(--accent)}}.party-row:active{background:color-mix(in srgb,var(--accent) 10%,var(--bg) 90%);border-color:var(--accent)}.party-row-skeleton{height:44px;cursor:default;background:var(--panel-2);border-color:var(--border);opacity:.5;animation:skeleton-pulse 1.4s ease-in-out infinite}@keyframes skeleton-pulse{0%,to{opacity:.35}50%{opacity:.6}}.party-dot{width:8px;height:8px;border-radius:50%;background:var(--border);flex-shrink:0}.party-dot.is-current{background:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 25%,transparent)}.party-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}.party-name{font-size:14px;font-weight:500;letter-spacing:.02em}.party-status{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.party-status.local{opacity:.7}.party-status.synced{color:color-mix(in srgb,var(--accent-2) 80%,var(--text) 20%)}.party-current-badge{font-size:9px;letter-spacing:.1em;background:var(--accent);color:var(--bg);padding:2px 7px;border-radius:999px;font-weight:700}.party-chevron{color:var(--muted);flex-shrink:0}.party-actions{display:flex;gap:8px;flex-wrap:wrap}.party-actions button{display:inline-flex;align-items:center;gap:6px}.party-name-row{display:flex;gap:6px}.party-name-row input{flex:1}.party-name-row button{white-space:nowrap}.section-toggle{display:flex;align-items:center;justify-content:space-between;background:transparent;border:none;padding:0;margin-bottom:4px;cursor:pointer;color:var(--muted);font-family:inherit;width:100%}.section-toggle .section-title{color:var(--muted)}.sync-state-line{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text)}.sync-direction-actions{display:flex;gap:8px}.sync-direction-actions button{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:1;min-width:0;white-space:nowrap}.sync-info{font-size:12px;color:var(--ok);margin:4px 0 0}.toast{position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom));transform:translate(-50%);background:var(--panel-2);color:var(--text);border:1px solid color-mix(in srgb,var(--accent) 50%,var(--border) 50%);padding:10px 18px;border-radius:999px;font-size:13px;letter-spacing:.02em;box-shadow:0 6px 20px #00000080;z-index:200;pointer-events:none;max-width:calc(100vw - 32px);animation:toast-in .18s ease-out}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,6px)}to{opacity:1;transform:translate(-50%)}}.sync-indicator.sync-progress-badge{width:auto;min-width:32px;padding:0 8px;color:var(--accent);border-color:color-mix(in srgb,var(--accent) 50%,transparent);background-image:linear-gradient(90deg,color-mix(in srgb,var(--accent) 8%,transparent),color-mix(in srgb,var(--accent) 32%,transparent),color-mix(in srgb,var(--accent) 8%,transparent));background-size:200% 100%;background-repeat:no-repeat;animation:sync-progress-shimmer 1.6s linear infinite,sync-pulse 2s ease-in-out infinite}@keyframes sync-progress-shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.sync-indicator .sync-progress-pct{font-size:11px;font-weight:600;letter-spacing:.02em;font-variant-numeric:tabular-nums;display:inline-block;animation:sync-progress-tick .22s ease-out}@keyframes sync-progress-tick{0%{transform:scale(.85);opacity:.5}to{transform:scale(1);opacity:1}}.qr-modal{position:fixed;inset:0;z-index:400;display:flex;align-items:center;justify-content:center;padding:24px;padding-top:calc(24px + env(safe-area-inset-top));padding-bottom:calc(24px + env(safe-area-inset-bottom));background:#000000b3;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);animation:qr-modal-in .18s ease-out}.qr-modal-card{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:18px;display:flex;flex-direction:column;gap:10px;max-width:360px;width:100%;max-height:100%;overflow-y:auto;box-shadow:0 20px 60px #00000080}.qr-modal-header{display:flex;align-items:center;justify-content:space-between;gap:10px}.qr-modal-title{margin:0;font-size:13px;font-weight:500;letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}.qr-modal-close{background:transparent;border:1px solid transparent;border-radius:999px;width:32px;height:32px;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);cursor:pointer;padding:0}.qr-modal-close:hover{background:var(--panel-2);color:var(--text)}.qr-modal-qr{align-self:center;background:#fff;padding:12px;border-radius:10px;display:flex}.qr-modal-code{text-align:center;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:10px 12px;font-size:13px;letter-spacing:.04em;word-break:break-all}.qr-modal-link{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:8px 10px;font-size:11px;color:color-mix(in srgb,var(--text) 70%,transparent);word-break:break-all;display:block}@keyframes qr-modal-in{0%{opacity:0;transform:scale(.97)}to{opacity:1;transform:scale(1)}}.code-row-actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.code-row-actions button{display:inline-flex;align-items:center;gap:4px;font-size:12px;padding:6px 10px}.import-input-row{display:flex;gap:6px}.import-input-row input{flex:1;min-width:0}.import-input-row button{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.detect-line{font-size:12px;display:flex;align-items:center;gap:4px;margin-top:6px}.detect-line.detect-empty{color:var(--muted)}.detect-line.detect-invalid{color:var(--error)}.detect-line.detect-read,.detect-line.detect-write{color:var(--ok)}.hint-block{background:var(--panel);border:1px dashed var(--border);border-radius:6px;padding:12px;font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}.hint-block code{font-family:SF Mono,Menlo,Consolas,monospace;font-size:11px;background:var(--bg);padding:1px 5px;border-radius:3px}.rooms-layout{display:grid;grid-template-columns:220px 1fr;grid-auto-rows:max-content;align-content:start;gap:16px;max-width:1100px;margin:0 auto}@media(max-width:720px){.rooms-layout{grid-template-columns:1fr;gap:12px}}.rooms-sidebar{display:flex;flex-direction:column;gap:8px;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:12px;height:fit-content}.rooms-sidebar-header{display:flex;align-items:baseline;justify-content:space-between;gap:8px;padding:0 4px}.rooms-sidebar-title{font-size:11px;letter-spacing:.1em;color:var(--muted);text-transform:uppercase}.rooms-sidebar-hint{font-size:11px;color:var(--muted);font-style:italic;opacity:.7}.type-toggles{display:flex;flex-direction:column;gap:6px}@media(max-width:720px){.type-toggles{display:grid;grid-template-columns:1fr 1fr;gap:6px}}.type-toggle{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 12px;border:1px solid var(--border);border-radius:4px;background:transparent;color:var(--text);font-family:inherit;font-size:13px;cursor:pointer;text-align:left;min-width:0;opacity:.75;transition:background .15s,color .15s,border-color .15s,opacity .15s}.type-toggle.type-numbered{--room-color: var(--room-blue)}.type-toggle.type-bedroom{--room-color: var(--room-purple)}.type-toggle.type-hallway{--room-color: var(--room-orange)}.type-toggle.type-green{--room-color: var(--room-green)}.type-toggle.type-shop{--room-color: var(--room-yellow)}.type-toggle.type-red{--room-color: var(--room-red)}@media(hover:hover){.type-toggle:hover{opacity:1;border-color:var(--room-color)}}.type-toggle.active{background:var(--room-color);border-color:var(--room-color);color:#fff;font-weight:500;opacity:1}.type-toggle-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}.type-toggle-count{font-size:11px;font-variant-numeric:tabular-nums;opacity:.85}.rooms-sidebar-actions{display:flex;gap:8px;justify-content:center;padding-top:4px;border-top:1px solid var(--border)}.rooms-link-btn{background:transparent;border:none;color:var(--muted);font-size:12px;padding:4px 10px;cursor:pointer;font-family:inherit;text-decoration:underline}@media(hover:hover){.rooms-link-btn:hover{color:var(--accent)}}.type-details-btn{background:transparent;border:1px solid var(--border);color:var(--muted);font-size:12px;padding:4px 10px;border-radius:4px;cursor:pointer;font-family:inherit;white-space:nowrap;text-decoration:none;display:inline-flex;align-items:center}@media(hover:hover){.type-details-btn:hover{color:var(--accent);border-color:var(--accent)}}.type-details-btn.empty{opacity:.7}.rooms-main{display:flex;flex-direction:column;gap:12px;min-width:0;align-self:start}.rooms-main .memos-empty{text-align:left;padding:12px 4px}.rooms-search{width:100%;background:var(--bg);border:1px solid var(--border);border-radius:4px;color:var(--text);padding:10px 12px;font-size:14px;outline:none;font-family:inherit}.rooms-search:focus{border-color:var(--accent)}.rooms-filters{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.filter-pill{background:transparent;border:1px solid var(--border);color:var(--muted);font-size:12px;padding:6px 10px;border-radius:999px;cursor:pointer;font-family:inherit;transition:all .15s}@media(hover:hover){.filter-pill:hover{color:var(--accent);border-color:var(--accent)}}.filter-pill.active{background:var(--accent);color:var(--bg);border-color:var(--accent)}.filter-pill.rarity-pill{letter-spacing:.05em}.rooms-sections{display:flex;flex-direction:column;gap:16px}.rooms-section.type-numbered{--room-color: var(--room-blue)}.rooms-section.type-bedroom{--room-color: var(--room-purple)}.rooms-section.type-hallway{--room-color: var(--room-orange)}.rooms-section.type-green{--room-color: var(--room-green)}.rooms-section.type-shop{--room-color: var(--room-yellow)}.rooms-section.type-red{--room-color: var(--room-red)}.rooms-section-header{display:flex;align-items:center;gap:8px;margin-bottom:8px;padding-bottom:6px;border-bottom:2px solid var(--room-color, var(--border))}.rooms-section-title{flex:1;display:flex;align-items:center;gap:8px;background:transparent;border:none;padding:4px 0;color:var(--text);font-family:inherit;font-size:14px;font-weight:600;letter-spacing:.05em;text-transform:uppercase;cursor:pointer;text-align:left}@media(hover:hover){.rooms-section-title:hover{color:var(--room-color)}}.rooms-section-chevron{font-size:10px;color:var(--muted);width:12px;text-align:center}.rooms-section-name{flex:1}.rooms-section-count{font-size:11px;color:var(--muted);font-weight:400;letter-spacing:0;font-variant-numeric:tabular-nums}.rooms-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(72px,1fr));gap:6px}.room-cell{position:relative;background:color-mix(in srgb,var(--room-color, #555) 22%,var(--bg) 78%);border:1px solid color-mix(in srgb,var(--room-color, #555) 55%,var(--border) 45%);border-radius:4px;aspect-ratio:1;cursor:pointer;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:14px;font-weight:500;transition:transform .1s,border-color .15s;padding:4px;text-align:center;user-select:none;overflow:hidden}.room-cell.type-numbered{--room-color: var(--room-blue)}.room-cell.type-bedroom{--room-color: var(--room-purple)}.room-cell.type-hallway{--room-color: var(--room-orange)}.room-cell.type-green{--room-color: var(--room-green)}.room-cell.type-shop{--room-color: var(--room-yellow)}.room-cell.type-red{--room-color: var(--room-red)}@media(hover:hover){.room-cell:hover{transform:translateY(-1px);border-color:var(--room-color)}}.room-cell.empty{background:var(--bg);border-style:dashed;color:var(--muted);opacity:.7}.room-cell-index{font-size:18px;font-weight:700;line-height:1;color:var(--text)}.room-cell.empty .room-cell-index{color:var(--muted)}.room-cell-name{font-size:10px;font-weight:500;color:var(--text);line-height:1.1;word-break:break-word;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;letter-spacing:.02em}.room-cell-rarity{font-size:9px;color:var(--accent);letter-spacing:.04em;line-height:1}.room-cell-memo-badge{position:absolute;top:3px;right:3px;font-size:9px;background:var(--accent);color:var(--bg);border-radius:999px;padding:1px 5px;line-height:1;font-weight:700;z-index:2}.room-cell-photo{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;background:var(--bg);z-index:0}.room-cell.has-photo{background:#000;padding:0}.room-cell.has-photo .room-cell-index{position:absolute;top:4px;left:4px;font-size:11px;font-weight:700;color:#fff;background:#000000a6;padding:1px 6px;border-radius:999px;z-index:2;line-height:1.2}.room-cell.has-photo .room-cell-name{position:absolute;left:0;right:0;bottom:0;z-index:2;background:#000000b3;color:#fff;font-size:9px;letter-spacing:.02em;padding:2px 4px;text-align:center;line-height:1.1}.room-cell.has-photo .room-cell-rarity{position:absolute;left:4px;bottom:22px;z-index:2;background:#000000a6;border-radius:999px;padding:1px 6px;font-size:9px;color:var(--accent);letter-spacing:.04em;line-height:1.2}.room-cell.has-photo:not(:has(.room-cell-name)) .room-cell-rarity{bottom:4px}.room-photo-preview{display:flex;flex-direction:column;gap:8px;align-items:stretch}.room-photo-thumb{position:relative;background:#000;border:1px solid var(--border);border-radius:4px;padding:0;cursor:zoom-in;overflow:hidden;display:block;width:100%;max-width:360px;aspect-ratio:1;margin:0 auto}.room-photo-thumb img{width:100%;height:100%;object-fit:contain;display:block}.rarity-selector{display:flex;gap:4px;align-items:center;margin-bottom:4px}.rarity-btn{background:transparent;border:1px solid var(--border);color:var(--muted);width:36px;height:36px;padding:0;border-radius:4px;font-size:18px;cursor:pointer;font-family:inherit;display:flex;align-items:center;justify-content:center}@media(hover:hover){.rarity-btn:hover{border-color:var(--accent);color:var(--accent)}}.rarity-btn.active{background:var(--accent);color:var(--bg);border-color:var(--accent)}.rarity-clear{margin-left:auto}
