:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;--text-muted:color-mix(in srgb, CanvasText 68%, Canvas);font-family:system-ui,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial}}body{margin:0}.auth-page{justify-content:center;align-items:center;min-height:100vh;display:flex}.auth-form{flex-direction:column;gap:.75rem;width:20rem;padding:2rem;display:flex}.auth-form label{flex-direction:column;gap:.25rem;font-size:.9rem;display:flex}.auth-form input{padding:.5rem;font-size:1rem}.auth-form button{cursor:pointer;padding:.6rem;font-size:1rem}.error{color:#c0392b;margin:0}.success{color:#27ae60;margin:0}.page-shell{flex-direction:column;height:100dvh;display:flex}.app-header{border-bottom:1px solid #ccc;flex-shrink:0;justify-content:space-between;align-items:center;padding:1rem 1.5rem;display:flex}.app-header>div{align-items:center;gap:1rem;display:flex}.account-menu{position:relative}.account-menu-toggle{color:#fff;cursor:pointer;background:#2c6e9b;border:none;border-radius:50%;justify-content:center;align-items:center;width:2.25rem;height:2.25rem;font-size:1rem;font-weight:700;display:flex}.account-menu-dropdown{color:#111;z-index:50;background:#fff;border:1px solid #ccc;border-radius:8px;flex-direction:column;gap:.5rem;min-width:10rem;padding:.75rem;display:flex;position:absolute;top:calc(100% + .5rem);right:0;box-shadow:0 2px 8px #00000026}.account-menu-user{border-bottom:1px solid #eee;margin:0 0 .25rem;padding-bottom:.5rem;font-size:.9rem;font-weight:700}.account-menu-dropdown a,.account-menu-dropdown button{text-align:left;cursor:pointer;color:inherit;background:0 0;border:none;padding:.4rem 0;font-size:.95rem;text-decoration:none}.account-menu-dropdown a:hover,.account-menu-dropdown button:hover{color:#2c6e9b}.page-footer{border-top:1px solid color-mix(in srgb, CanvasText 15%, Canvas);background:canvas;flex-wrap:wrap;flex-shrink:0;gap:.75rem;padding:1rem 1.5rem;display:flex}.fab{color:#fff;cursor:pointer;background:#2c6e9b;border:none;border-radius:8px;padding:1rem 1.5rem;font-size:1.1rem;font-weight:700;text-decoration:none;box-shadow:0 2px 8px #00000040}.fab:disabled{opacity:.6;cursor:default}@media (width<=420px){.page-footer{gap:.5rem;padding:.75rem 1rem}.fab{padding:.75rem 1rem;font-size:.95rem}}.modal-backdrop{z-index:100;background:#00000080;justify-content:center;align-items:center;padding:1rem 0;display:flex;position:fixed;inset:0;overflow-y:auto}.modal{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;color:#111;background:#fff;border-radius:8px;flex-direction:column;flex-shrink:0;width:min(600px,92vw);max-height:90dvh;display:flex;overflow:hidden}.modal-scroll{flex:auto;min-height:0;padding:1.5rem;overflow-y:auto}.modal h2{margin-top:0}.file-picker-button{color:#fff;cursor:pointer;background:#2c6e9b;border-radius:6px;padding:.75rem 1.25rem;font-size:1.1rem;display:inline-block}.modal input[type=file]{display:none}.modal-body{flex-wrap:wrap;gap:1.5rem;margin-top:1.5rem;display:flex}.modal-preview{flex-shrink:0;width:160px}.modal-preview .photo-thumb,.modal-preview .photo-thumb-placeholder{aspect-ratio:1}.modal-fields{flex-direction:column;flex:1;gap:.4rem;min-width:200px;display:flex}.modal-fields label,.modal-single-person label{font-size:.9rem;font-weight:700}.modal-fields input,.modal-fields textarea,.modal-fields select{margin-bottom:.5rem;padding:.5rem;font-family:inherit;font-size:1rem}.modal-checkbox-label{align-items:center;gap:.5rem;margin-bottom:.5rem;font-weight:400;display:flex}.form-hint{color:var(--text-muted);margin:-.25rem 0 .75rem;font-size:.85rem}.modal-single-person{flex-direction:column;gap:.4rem;margin-top:1.25rem;display:flex}.modal-single-person input[type=text]{padding:.5rem;font-size:1rem}.modal-actions{border-top:1px solid #eee;flex-shrink:0;justify-content:flex-end;gap:.75rem;padding:1rem 1.5rem;display:flex}.modal-actions button{cursor:pointer;color:#2c6e9b;background:#fff;border:1px solid #2c6e9b;border-radius:8px;padding:.6rem 1.25rem;font-size:1rem;font-weight:700}.modal-actions button:disabled,.photo-export:disabled{opacity:.6;cursor:default}.busy-label{display:inline-block;position:relative}.busy-label-text{visibility:hidden}.spinner{border:.18em solid;border-right-color:#0000;border-radius:50%;width:1.1em;height:1.1em;margin:auto;animation:.8s linear infinite spinner-turn;position:absolute;inset:0}@keyframes spinner-turn{to{transform:rotate(360deg)}}.modal-actions button:last-child{color:#fff;background:#2c6e9b}.photo-grid{flex:auto;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));align-content:start;gap:1rem;min-height:0;padding:1rem 1.5rem 1.5rem;display:grid;overflow-y:auto}.photo-card{text-align:center;color:inherit;margin:0;text-decoration:none;display:block}.photo-card figure{margin:0}.photo-thumb-wrap{position:relative}.photo-thumb-wrap>.photo-thumb,.photo-thumb-wrap>.photo-thumb-placeholder{display:block}.photo-badges{flex-wrap:wrap;justify-content:flex-end;gap:.25rem;display:flex;position:absolute;bottom:.35rem;left:.35rem;right:.35rem}.photo-badge{color:#1a1a1a;background:#e0a800;border-radius:999px;padding:.15rem .45rem;font-size:.75rem;font-weight:700;box-shadow:0 1px 3px #00000059}.photo-badge.conflict{color:#fff;background:#c0392b}.photo-badge.lifespan{color:#fff;background:#d35400}.gallery-toolbar{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:.75rem;padding:1rem 1.5rem .5rem;display:flex}.gallery-toolbar input{flex:14rem;min-width:0;max-width:28rem;padding:.5rem;font-size:1rem}.gallery-filter-panel{display:contents}.gallery-filter-toggle{display:none}.gallery-date-filter{align-items:center;gap:.4rem;display:flex}.gallery-date-filter input{text-align:center;width:4.5rem;padding:.5rem;font-size:1rem}.gallery-status-toggle{display:flex}.gallery-status-toggle button{color:canvastext;cursor:pointer;background:canvas;border:1px solid #2c6e9b;padding:.5rem 1rem;font-size:.95rem}.gallery-status-toggle button:first-child{border-radius:6px 0 0 6px}.gallery-status-toggle button+button{border-left:none}.gallery-status-toggle button:last-child{border-radius:0 6px 6px 0}.gallery-status-toggle button[aria-pressed=true]{color:#fff;background:#2c6e9b;font-weight:700}@media (width<=520px){.gallery-status-toggle{grid-template-columns:1fr 1fr;gap:.4rem;width:100%;display:grid}.gallery-status-toggle button,.gallery-status-toggle button:first-child,.gallery-status-toggle button:last-child{border-radius:6px}.gallery-status-toggle button+button{border-left:1px solid #2c6e9b}}.gallery-active-filter{flex-wrap:wrap;flex-shrink:0;gap:.5rem;padding:.25rem 1.5rem .5rem;display:flex}.gallery-filter-chip{background:#2c6e9b1f;border:1px solid #2c6e9b;border-radius:999px;align-items:center;gap:.4rem;padding:.3rem .4rem .3rem .8rem;font-size:.95rem;display:inline-flex}.gallery-filter-chip button{color:inherit;cursor:pointer;background:0 0;border:none;padding:.2rem .4rem;font-size:1rem;line-height:1}.gallery-message{color:var(--text-muted);grid-column:1/-1;margin:0}p.error.gallery-message{color:#c0392b;padding:.75rem 1.5rem 0}@media (width<=700px){.gallery-toolbar{gap:.5rem;padding:.75rem .75rem .5rem}.gallery-toolbar input[type=search]{flex-basis:100%;max-width:none}.gallery-filter-toggle{color:#2c6e9b;cursor:pointer;background:canvas;border:1px solid #2c6e9b;border-radius:6px;justify-content:center;align-items:center;width:2.6rem;height:2.6rem;padding:0;display:flex}.gallery-filter-toggle[aria-expanded=true]{color:#fff;background:#2c6e9b}.gallery-filter-panel{display:none}.gallery-filter-panel.open{flex-wrap:wrap;flex-basis:100%;gap:.5rem;display:flex}.gallery-active-filter{padding:0 .75rem .5rem}}.photo-thumb,.photo-thumb-placeholder{aspect-ratio:1;object-fit:cover;background:#eee;border-radius:4px;width:100%}.photo-card figcaption{text-overflow:ellipsis;white-space:nowrap;margin-top:.25rem;font-size:.85rem;overflow:hidden}.photo-detail-body{flex-wrap:wrap;align-items:flex-start;gap:1.5rem;padding:1.5rem;display:flex}.photo-canvas-wrap{flex-shrink:0}.photo-canvas-wrap canvas{cursor:crosshair;border:1px solid #ccc}.photo-canvas-hint{color:var(--text-muted);margin-top:.5rem;font-size:.85rem}.photo-info{flex-direction:column;flex:260px;gap:1.25rem;min-width:260px;max-width:36rem;display:flex}.photo-info-block h2{margin:0 0 .5rem;font-size:1.1rem}.photo-meta-list{grid-template-columns:max-content 1fr;gap:.35rem .75rem;margin:0;display:grid}.photo-meta-list>div{display:contents}.photo-meta-list dt{font-weight:700}.photo-meta-list dd{overflow-wrap:anywhere;margin:0}.photo-meta-range{color:var(--text-muted);font-size:.85rem}.photo-meta-empty{color:var(--text-muted)}.photo-meta-edit{cursor:pointer;margin-top:.75rem;padding:.4rem 1rem}.photo-meta-form{flex-direction:column;gap:.6rem;display:flex}.photo-meta-form label{flex-direction:column;gap:.2rem;font-size:.85rem;font-weight:700;display:flex}.photo-meta-form input{padding:.5rem;font-size:1rem;font-weight:400}.photo-meta-actions{justify-content:flex-end;gap:.5rem;display:flex}.photo-meta-actions button{color:#2c6e9b;cursor:pointer;background:canvas;border:1px solid #2c6e9b;border-radius:6px;padding:.5rem 1.25rem;font-weight:700}.photo-meta-actions button:last-child{color:#fff;background:#2c6e9b}.photo-person-list{margin:0;padding:0;list-style:none}.photo-person-list button{text-align:left;color:canvastext;width:100%;font:inherit;cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px;gap:.5rem;padding:.45rem .5rem;display:flex}.photo-person-list button:hover{background:#80808026}.photo-person-list button.selected{background:#2c6e9b1f;border-color:#2c6e9b}.photo-person-number{min-width:1.5rem;font-weight:700}.marker-panel{border:1px solid #ccc;border-radius:8px;padding:1rem}.position-text-field{flex-direction:column;gap:.3rem;margin-bottom:1rem;display:flex}.position-text-field label{font-size:.85rem;font-weight:700}.position-text-field>div{gap:.4rem;display:flex}.position-text-field input{flex:1;min-width:0;padding:.5rem;font-size:1rem}.position-text-field button{cursor:pointer;padding:.5rem .75rem}.position-text-hint{color:var(--text-muted);font-size:.8rem;display:none}.marker-panel h2{margin-top:0}@media (width<=700px){.photo-detail-body{gap:.75rem;padding:.75rem}.photo-detail-footer{padding:0 .75rem .75rem}.photo-detail .app-header{gap:.75rem;padding:.75rem}.photo-detail .app-header h1{text-overflow:ellipsis;white-space:nowrap;min-width:0;margin:0;font-size:1.15rem;overflow:hidden}.photo-detail .app-header a{flex-shrink:0}.photo-canvas-wrap{width:100%}.photo-canvas-wrap .konvajs-content{margin:0 auto}.photo-info{flex-basis:100%;min-width:0;max-width:none}.position-text-hint{display:block}}.identification-list{margin:0 0 1rem;padding:0;list-style:none}.identification-list li{border-bottom:1px solid #eee;padding:.4rem 0;font-size:.9rem}.identification-person-link{font-size:1.2rem;font-weight:700}.identification-list span{color:var(--text-muted);font-size:.8rem;display:block}.identification-entry{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.identification-entry button{cursor:pointer;border:1px solid #c0392b;border-radius:4px;flex-shrink:0;margin:.15rem 0;padding:.2rem .6rem;font-size:.8rem}.identification-head{justify-content:space-between;align-items:center;gap:.5rem;display:flex}.identification-head button{cursor:pointer;flex-shrink:0;padding:.35rem .75rem}.lifespan-hint{background:#d354001f;border-left:4px solid #d35400;margin:0 0 .75rem;padding:.5rem .6rem;font-size:.85rem}.lifespan-label{color:#fff;background:#d35400;border-radius:999px;margin-left:.5rem;padding:.05rem .45rem;font-size:.75rem;font-weight:700;display:inline-block}.conflict-hint{background:#c0392b1f;border-left:4px solid #c0392b;margin:0 0 .75rem;padding:.5rem .6rem;font-size:.85rem}.conflict-label{color:#fff;background:#c0392b;border-radius:999px;margin-left:.5rem;padding:.05rem .45rem;font-size:.75rem;font-weight:700;display:inline-block}.person-picker{flex-direction:column;gap:.3rem;display:flex}.person-picker label{font-size:.85rem;font-weight:700}.person-picker input{margin-bottom:.3rem;padding:.5rem;font-size:1rem}.person-suggestions{border:1px solid #ddd;border-radius:4px;margin:0 0 .5rem;padding:0;list-style:none;overflow:hidden}.person-suggestions button{text-align:left;color:canvastext;cursor:pointer;background:canvas;border:none;width:100%;padding:.5rem}.person-suggestions button:hover{background:#80808033}.person-picker-hint{color:#2c6e9b;font-size:.8rem}.person-picker-actions{gap:.5rem;margin-top:.3rem;display:flex}.person-picker-actions button{cursor:pointer;flex:1;padding:.5rem}.marker-panel>button{cursor:pointer;width:100%;margin-top:.75rem;padding:.5rem}.marker-panel button.danger{color:#c0392b;background:#fbeaea;border-color:#c0392b}.persons-page-body{max-width:40rem;padding:1.5rem}.persons-toolbar{flex-wrap:wrap;gap:.75rem;margin-bottom:1rem;display:flex}.persons-toolbar input{flex:12rem;min-width:0;padding:.5rem;font-size:1rem}.persons-toolbar button{cursor:pointer;padding:.5rem 1rem}.persons-list{border:1px solid #ccc;border-radius:6px;margin:0;padding:0;list-style:none;overflow:hidden}.persons-list li+li{border-top:1px solid #eee}.persons-list li{flex-wrap:wrap;align-items:center;display:flex}.persons-list-item{text-align:left;cursor:pointer;background:0 0;border:none;padding:.75rem 1rem;font-size:1rem}.persons-list-item:hover{background:#80808026}.persons-list-item span{color:var(--text-muted);font-size:.9rem}.persons-photo-link{white-space:nowrap;padding:0 1rem 0 0;font-size:.9rem}.persons-list-links{align-items:center;gap:.5rem;padding-right:1rem;display:flex}.persons-list-links img{border-radius:3px;width:18px;height:18px;display:block}@media (width<=500px){.persons-toolbar input{flex-basis:100%}.persons-list li{align-items:center}.persons-list-item{flex:1 1 0;min-width:0}.persons-list-links{flex-basis:100%;padding:0 1rem .75rem}}.persons-merge-bar{flex-wrap:wrap;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.persons-merge-bar span{flex:12rem}.persons-merge-bar button{cursor:pointer;padding:.5rem 1rem}.persons-merge-check{flex-shrink:0;width:1.4rem;height:1.4rem;margin:0 0 0 1rem}.modal.modal-wide{width:min(900px,96vw)}.modal.modal-small{width:min(420px,92vw)}.users-badge{margin-left:.5rem}.users-badge-inactive{color:#c0392b}.users-list-actions{margin-left:auto;padding-right:1rem}.users-list-actions button{cursor:pointer;padding:.3rem .75rem;font-size:.85rem}.modal-actions button.danger-action{color:#c0392b;background:#fff;border-color:#c0392b}.photo-detail-footer{flex-wrap:wrap;align-items:center;gap:.75rem;padding:0 1.5rem 1.5rem;display:flex}.photo-export,.photo-thumbnail-regenerate{color:canvastext;cursor:pointer;background:canvas;border:1px solid graytext;border-radius:6px;padding:.5rem 1rem}.photo-delete{color:#c0392b;cursor:pointer;background:#fbeaea;border:1px solid #c0392b;border-radius:6px;padding:.5rem 1rem}.merge-head{grid-template-columns:1fr 3.5rem 1fr;align-items:center;gap:.25rem .75rem;margin-bottom:1rem;padding:0 .5rem;display:grid}.merge-head-name{color:var(--text-muted)}.merge-head>div:last-child{text-align:left}.merge-swap{cursor:pointer;padding:.4rem 0;font-size:1.1rem}.merge-swap-text{font-size:.85rem;display:none}.merge-row{border-radius:6px;grid-template-columns:1fr 3.5rem 1fr;align-items:start;gap:.25rem .75rem;padding:.4rem .5rem;display:grid}.merge-row-differs{background:#e0a80026}.merge-label{grid-column:1/-1;font-size:.9rem;font-weight:700}.merge-row input,.merge-row textarea{box-sizing:border-box;width:100%;min-width:0;padding:.5rem;font-family:inherit;font-size:1rem}.merge-take{cursor:pointer;padding:.4rem 0;font-size:1.1rem}.merge-arrow-narrow{display:none}.merge-right{overflow-wrap:anywhere;white-space:pre-wrap;padding:.5rem 0}.merge-names{border:1px solid color-mix(in srgb, CanvasText 25%, Canvas);border-radius:6px;margin:.5rem 0;padding:.5rem .75rem .75rem}.merge-names legend{padding:0 .35rem;font-size:.9rem;font-weight:700}.merge-names table{border-collapse:collapse;width:100%}.merge-names th,.merge-names td{text-align:center;padding:.3rem .4rem}.merge-names thead th{font-size:.8rem}.merge-names th:first-child{text-align:left}.merge-names tbody th{font-weight:400}.merge-names tbody tr+tr{border-top:1px solid color-mix(in srgb, CanvasText 12%, Canvas)}.merge-names input{width:1.2rem;height:1.2rem}.merge-names-result{margin:.6rem 0 0;font-size:.9rem}.field-hint{opacity:.75;margin:-.25rem 0 .5rem;font-size:.8rem}.person-other-names{opacity:.8}.merge-actions{flex-wrap:wrap;align-items:center}.merge-confirm{flex:100%;margin:0;font-size:.95rem}@media (width<=600px){.merge-head{grid-template-columns:1fr auto}.merge-swap{padding:.4rem .75rem}.merge-head>div:last-child{grid-area:2/1/auto/-1}.merge-row{grid-template-columns:1fr}.merge-take{justify-self:center;padding:.4rem .75rem;font-size:.95rem}.merge-arrow-wide{display:none}.merge-arrow-narrow,.merge-swap-text{display:inline}}
