:root{color:#29251f;font-synthesis:none;--paper:#f4efe4;--sheet:#fbf7ee;--ink:#29251f;--muted:#817566;--line:#d9cebc;--accent:#a64c35;--serif:"Songti SC","Noto Serif CJK SC","STSong",serif;background:#f4efe4;font-family:PingFang SC,Microsoft YaHei,sans-serif}.route-not-found{text-align:center;max-width:500px;margin:auto;padding:30px}.route-not-found h1{font:32px var(--serif)}.route-not-found p{color:var(--muted);font-size:13px;line-height:1.8}.route-not-found a{color:var(--accent);padding:12px;display:inline-block}.portrait-reference{color:var(--accent);text-underline-offset:3px;flex-direction:column;align-items:center;gap:5px;font-size:10px;display:flex}.portrait-reference img{object-fit:contain;border:1px solid var(--line);background:#ede6da;width:100%;height:125px;display:block}.portrait-reference-source{color:var(--muted);overflow-wrap:anywhere;margin-top:5px;font-size:9px;line-height:1.6;display:block}.portrait-reference:focus-visible,.portrait-reference-source:focus-visible{outline:2px solid var(--accent);outline-offset:2px}*{box-sizing:border-box}html,body,#app{width:100%;height:100%;height:100dvh;margin:0;overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:default}button,summary{-webkit-tap-highlight-color:transparent}button{border:1px solid var(--line);background:0 0;border-radius:5px;justify-content:center;align-items:center;gap:7px;min-height:38px;padding:9px 13px;font-size:12px;transition:background .15s,transform .15s;display:inline-flex}button:hover:not(:disabled){background:#e9dfce}button:active:not(:disabled){transform:translateY(1px)}button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:3px}svg{flex:none;width:19px;height:19px}.primary{background:var(--accent);color:#fffaf1;border-color:var(--accent);box-shadow:0 2px #803b29}.primary:hover:not(:disabled){background:#91412c}.quiet{border-color:#0000}.icon-button{border-color:#0000;flex:none;width:36px;height:36px;min-height:36px;padding:8px}.eyebrow{letter-spacing:.13em;color:var(--muted);margin:0 0 7px;font-size:10px}.small-note{color:var(--muted);margin:10px 0;font-size:11px;line-height:1.7}.empty-note{color:var(--muted);font-size:12px;line-height:1.8}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}[hidden]{display:none!important}#app{flex-direction:column;display:flex}.workspace{flex:1;grid-template-columns:minmax(0,1fr);min-height:0;display:grid;position:relative}.has-selection .workspace{grid-template-columns:minmax(0,1fr) 326px}.canvas-area{flex-direction:column;min-width:0;min-height:0;display:flex}.title-button:hover:not(:disabled){color:var(--accent);background:0 0}.canvas-subtitle{color:var(--muted);margin:9px 0 0;font-size:11px;line-height:1.6}.stage{isolation:isolate;flex:1;min-height:100px;position:relative;overflow:hidden}.family-canvas{touch-action:none;cursor:grab;width:100%;height:100%;display:block;position:absolute;inset:0}.family-canvas:focus-visible{outline-offset:-4px}.view-switch{border:1px solid var(--line);background:#f8f3e9;border-radius:6px;flex:none;gap:2px;padding:3px;display:flex}.view-switch button{border:0;min-height:32px;padding:5px 12px}.view-switch button[aria-pressed=true]{background:var(--ink);color:var(--sheet)}.zoom-controls{flex:none;align-items:center;gap:1px;display:flex}.zoom-controls>span{text-align:center;width:38px;color:var(--muted);font:11px ui-monospace,monospace}.empty-state{z-index:2;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:8px;display:flex;position:absolute;inset:0}.empty-state button{pointer-events:auto}.empty-state h2{font:26px var(--serif);margin:0}.empty-state p{color:var(--muted);margin:3px 0 15px;font-size:12px}.empty-doodle{font:90px var(--serif);color:var(--accent);margin-bottom:15px}.countdown{font:90px var(--serif);color:var(--accent);pointer-events:none;text-shadow:2px 2px var(--paper);z-index:3;place-items:center;display:grid;position:absolute;inset:0}.inspector{border-left:1px solid var(--line);scrollbar-width:thin;background:#f8f3e9;padding:22px 22px 30px;overflow:auto}.panel-heading{justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:18px;display:flex}.panel-heading h2{font:24px var(--serif);overflow-wrap:anywhere;margin:0}.panel-heading .eyebrow{font-size:9px}.portrait-compare{grid-template-columns:1fr 1fr;gap:12px;margin-bottom:18px;display:grid}.portrait-compare figure{text-align:center;margin:0}.portrait-preview{background:#efe7d8;border-radius:3px;width:100%;height:auto;display:block}.portrait-compare figcaption{color:var(--muted);margin-top:8px;font-size:10px}.original-crop,.no-photo{aspect-ratio:1;background:#eee8dc;border:1px dashed #c8bca8;justify-content:center;align-items:center;width:100%;padding:0;display:flex;position:relative;overflow:hidden}.original-crop img{object-fit:contain;width:100%;height:100%}.original-crop span{background:#fbf7eedb;padding:6px;font-size:9px;position:absolute;bottom:0;left:0;right:0}.no-photo{color:var(--muted);font-size:10px}label{flex-direction:column;gap:6px;font-size:11px;line-height:1.6;display:flex}input,textarea,select{border:1px solid var(--line);background:#fcf9f1;border-radius:4px;width:100%;min-width:0;padding:9px 10px;font-size:12px}select{min-height:37px;padding-right:22px}textarea{resize:vertical;min-height:75px}.person-fields,.field-grid{grid-template-columns:1fr 1fr;gap:10px;display:grid}.editor-section{border-top:1px solid var(--line);margin-top:18px;padding-top:15px}.editor-section h3,.editor-section summary{margin:0 0 12px;font-size:12px;font-weight:600}.editor-section summary{cursor:pointer;min-height:20px}.editor-section .small-note{margin:0 0 12px}.slider-field{grid-template-columns:45px 1fr;align-items:center;margin-top:11px;display:grid}.slider-field input{accent-color:var(--accent);height:22px;padding:0}.relationship-list>div{border-bottom:1px solid #e8dece;justify-content:space-between;align-items:center;gap:10px;padding:5px 0;font-size:12px;display:flex}.relationship-list small{color:var(--muted);margin-bottom:3px;font-size:10px;display:block}.relation-form{grid-template-columns:1fr 1fr;gap:8px;margin-top:14px;display:grid}.relation-form>label:first-child{grid-column:1/-1}.relation-form>button{grid-column:1/-1;margin-top:4px}.branch-button{width:100%;margin-top:12px}.notes-field{margin:18px 0 8px}.text-danger{color:var(--accent);border:0;min-height:35px;padding:8px 0;font-size:11px}.text-danger:hover:not(:disabled){background:0 0;text-decoration:underline}.roster-panel{z-index:12;background:var(--sheet);border:1px solid var(--line);flex-direction:column;width:300px;padding:20px;display:flex;position:absolute;top:94px;bottom:22px;left:20px;box-shadow:5px 8px 25px #332a1c17}.search-field{margin-bottom:14px}.person-list{flex:1;min-height:0;overflow:auto}.person-list button{text-align:left;border:0;border-bottom:1px solid #e6ddce;border-radius:0;justify-content:flex-start;gap:12px;width:100%;padding:12px 6px;display:flex}.person-initial{font:20px var(--serif);background:#ece2d1;border-radius:50% 47% 48% 45%;place-items:center;width:35px;height:38px;display:grid}.person-list small{color:var(--muted);margin-top:4px;font-size:10px;display:block}.person-list button>span:last-child{color:var(--muted);margin-left:auto}.add-person{margin-top:12px}.toast{z-index:60;text-align:center;opacity:0;pointer-events:none;background:#fffaf0;border:1px solid #c7b69b;max-width:min(480px,100vw - 30px);padding:11px 17px;font-size:12px;line-height:1.7;transition:opacity .2s,transform .2s;position:fixed;bottom:78px;left:50%;transform:translate(-50%,8px);box-shadow:3px 4px #cbbba16b}.toast.visible{opacity:1;transform:translate(-50%)}.drop-overlay{border:2px dashed var(--accent);color:var(--accent);z-index:50;font:32px var(--serif);pointer-events:none;background:#fbf7eeef;place-items:center;display:none;position:fixed;inset:12px}.drag-over .drop-overlay{display:grid}dialog{color:var(--ink);background:var(--sheet);border:1px solid #b8a98e;border-radius:5px;max-width:calc(100vw - 24px);max-height:calc(100dvh - 24px);padding:26px;overflow:auto;box-shadow:0 20px 90px #251c1530}dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#322a2060}.import-dialog{width:1040px}.dialog-heading{justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:12px;display:flex}.dialog-heading h2{font:28px var(--serif);margin:0}.dialog-intro{color:var(--muted);max-width:700px;margin:0 0 22px;font-size:12px;line-height:1.8}.import-workspace{grid-template-columns:minmax(0,1fr) 245px;gap:25px;display:grid}.photo-column{text-align:center;align-self:center;min-width:0}.photo-surface{touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair;margin:auto;line-height:0;position:relative}.photo-surface>img{-webkit-user-select:none;user-select:none;width:100%;height:auto;display:block}.face-boxes{pointer-events:none;position:absolute;inset:0}.face-box{pointer-events:auto;cursor:move;border:2px solid #d7e5cf;position:absolute;box-shadow:0 0 0 1px #263b2155}.face-box.selected{border-color:#b7482d;box-shadow:0 0 0 1px #fff8}.face-box>span{color:#242c20;text-align:center;background:#ebeedb;min-width:18px;padding:0 3px;font:11px/18px sans-serif;position:absolute;top:-20px;left:-2px}.face-box.selected>span{color:#fff;background:#a64c35}.face-box i{cursor:nwse-resize;background:#fff;border:2px solid #a64c35;border-radius:3px;width:20px;height:20px;position:absolute;bottom:-7px;right:-7px}.crop-controls{border-left:1px solid var(--line);min-width:0;padding-left:20px}.import-status{color:var(--accent);min-height:45px;margin-bottom:12px;font-size:12px;line-height:1.8}.crop-list{flex-wrap:wrap;gap:5px;max-height:130px;display:flex;overflow:auto}.crop-list button{flex-direction:column;gap:4px;min-height:36px;padding:7px 8px;font-size:11px}.crop-list button span{color:var(--muted);font-size:8px}.crop-list [aria-pressed=true]{border-color:var(--accent);background:#eee0ce}.field-caption{margin:18px 0 9px;font-size:11px}.crop-actions{flex-wrap:wrap;gap:6px;margin-top:14px;display:flex}.crop-actions button{padding:7px 9px;font-size:10px}.dialog-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:flex-end;gap:16px;margin-top:20px;padding-top:20px;display:flex}.import-choice{width:220px}.original-dialog{text-align:center;width:900px}.original-dialog .dialog-heading{text-align:left}.original-dialog .face-box{pointer-events:none}.title-dialog{width:400px}.title-dialog input{margin-top:8px}.title-dialog .dialog-footer{justify-content:flex-end}@media (max-width:1100px){.app-header{padding:0 22px}.save-status,.canvas-hint{display:none}.canvas-heading{padding:20px 26px 2px}.has-selection .workspace{grid-template-columns:minmax(0,1fr) 300px}.inspector{padding:20px 16px}.play-strip{gap:0;padding-left:20px;padding-right:20px}.play-strip>button{padding:7px 9px;font-size:10px}}@media (max-width:700px){.app-header{height:80px;padding:calc(8px + env(safe-area-inset-top,0px)) 14px 8px;gap:8px}.brand{gap:8px}.seal{width:29px;height:33px;font-size:20px}.brand h1{font-size:19px}.brand .eyebrow{letter-spacing:0;font-size:7px}.header-actions{gap:2px}.header-actions button{min-height:40px;padding:7px 9px;font-size:11px}.header-actions .quiet{width:40px}.header-actions .quiet span,.header-actions .primary svg{display:none}.more-menu summary{width:30px}.workspace,.has-selection .workspace{grid-template-columns:1fr}.canvas-heading{gap:10px;padding:18px 18px 0}.title-button{font-size:27px}.canvas-subtitle{max-width:280px;margin-top:6px;font-size:10px}.canvas-heading .eyebrow{font-size:9px}.history-actions{padding-top:3px}.history-actions .icon-button{width:32px;min-height:38px}.canvas-bottom{gap:8px;padding:2px 13px 10px}.view-switch button{min-height:36px;padding:5px 9px;font-size:11px}.view-switch svg{width:16px;height:16px}.zoom-controls .icon-button{width:32px;height:40px}.zoom-controls>span{width:33px;font-size:10px}.play-strip{height:auto;min-height:53px;padding:5px 8px calc(6px + env(safe-area-inset-bottom,0px));justify-content:space-around;gap:0}.play-strip>button{gap:4px;min-height:42px;padding:7px 4px;font-size:9px}.play-strip>button:first-child{border:0;margin:0;padding:7px 6px}.play-strip>button:first-child svg,.play-strip>button[data-photo] svg{display:none}.play-strip>button:last-child{margin-left:0}.inspector{z-index:15;max-height:72dvh;padding:22px 22px calc(30px + env(safe-area-inset-bottom,0px));overscroll-behavior:contain;border-top:1px solid #b9aa91;border-left:0;border-radius:15px 15px 0 0;position:absolute;bottom:0;left:0;right:0;box-shadow:0 -10px 40px #30271c20}.portrait-compare{max-width:300px;margin-left:auto;margin-right:auto}.inspector .field-grid{grid-template-columns:1fr 1fr}.inspector input,.inspector select,.inspector textarea{font-size:16px}.inspector .icon-button{min-width:44px;min-height:44px}.roster-panel{width:calc(100% - 20px);max-width:360px;top:90px;bottom:10px;left:10px}.toast{font-size:11px;bottom:74px}.import-dialog{width:calc(100vw - 16px);max-width:calc(100vw - 16px);max-height:calc(100dvh - 16px);padding:18px}.dialog-heading h2{font-size:23px}.dialog-heading .eyebrow{font-size:8px}.dialog-intro{margin-bottom:15px;font-size:11px}.import-workspace{flex-direction:column;gap:12px;display:flex}.photo-surface{max-width:min(100%,60vh)!important}.crop-controls{border-left:0;padding-left:0}.import-status{min-height:0;margin-bottom:8px}.crop-list{max-height:86px}.crop-fields .field-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.crop-fields input{padding:7px 5px;font-size:16px}.field-caption{margin:12px 0 6px}.crop-actions{margin-top:6px}.dialog-footer{background:var(--sheet);align-items:center;gap:10px;margin-top:14px;padding:12px 0 8px;position:sticky;bottom:-18px}.import-choice{width:145px;font-size:9px}.import-choice select{font-size:12px}.dialog-footer .primary{min-height:44px;font-size:11px}.original-dialog{padding:18px}.title-dialog input{font-size:16px}.face-box i{width:24px;height:24px;bottom:-10px;right:-10px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}@media (max-width:700px){.play-strip>button{min-height:44px;font-size:11px}}.mobile-label,.mobile-editor-toggle{display:none}.keepsake-demo-dialog{width:1020px;overflow:auto}.keepsake-demo-content{grid-template-columns:minmax(0,.9fr) minmax(0,1fr);align-items:start;gap:36px;margin-top:22px;display:grid}.keepsake-demo-story{min-width:0;padding:10px 0}.keepsake-demo-label{color:var(--accent);border-bottom:1px solid var(--accent);letter-spacing:.12em;padding-bottom:5px;font-size:10px;display:inline-block}.keepsake-demo-story h3{font:500 28px/1.5 var(--serif);margin:18px 0 12px}.keepsake-demo-story .memory-body{white-space:pre-wrap;font-size:15px;line-height:2}.keepsake-demo-note{color:#6d4b36;border-top:1px solid var(--line);margin-top:24px;padding-top:18px;font-size:12px;line-height:1.9}.keepsake-demo-image{text-align:center;background:#eee6d7;min-width:0;margin:0;padding:16px}.keepsake-demo-image a{line-height:0;display:block}.keepsake-demo-image img{width:100%;height:auto;display:block;box-shadow:1px 3px 10px #4f3e291f}.keepsake-demo-image figcaption{color:#746653;margin-top:11px;font-size:10px;line-height:1.7}.keepsake-demo-footer{border-top:1px solid var(--line);justify-content:space-between;align-items:center;gap:18px;margin-top:24px;padding-top:18px;display:flex}.keepsake-demo-footer p{color:#746653;margin:0;font-size:11px;line-height:1.8}.keepsake-demo-download{border:1px solid var(--accent);white-space:nowrap;border-radius:5px;justify-content:center;align-items:center;min-height:44px;padding:10px 16px;font-size:12px;text-decoration:none;transition:background .15s;display:inline-flex}.keepsake-demo-dialog a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}@media (max-width:700px){.keepsake-demo-dialog{padding:18px}.keepsake-demo-content{grid-template-columns:1fr;gap:14px;margin-top:16px}.keepsake-demo-story{padding:0}.keepsake-demo-story h3{margin-top:14px;font-size:24px}.keepsake-demo-note{margin-top:16px;padding-top:14px}.keepsake-demo-image{padding:12px}.keepsake-demo-footer{background:var(--sheet);flex-direction:column;align-items:stretch;gap:10px;margin-top:18px;padding:12px 0;position:sticky;bottom:-18px}.keepsake-demo-footer p{font-size:10px}.keepsake-demo-dialog .icon-button{width:44px;height:44px}}.story-export-dialog{width:1120px;height:min(920px,100dvh - 28px);padding:24px;overflow:hidden}.story-export-dialog[open]{flex-direction:column;display:flex}.story-export-dialog>.dialog-heading{flex:none;margin-bottom:18px}.keepsake-story-title{color:#746653;overflow-wrap:anywhere;max-width:760px;margin:7px 0 0;font-size:12px}.keepsake-workspace{flex:1;grid-template-columns:minmax(340px,1fr) minmax(300px,.95fr);gap:28px;min-height:0;display:grid}.keepsake-settings{scrollbar-width:thin;overscroll-behavior:contain;padding-right:18px;overflow:auto}.keepsake-controls{border:0;min-width:0;margin:0;padding:0}.keepsake-settings section{border-top:1px solid var(--line);padding:16px 0 18px}.keepsake-settings h3{font:500 18px/1.5 var(--serif);margin:0 0 14px}.keepsake-settings h3>span{color:var(--accent);margin-right:8px;font:10px ui-monospace,monospace}.keepsake-settings .field-grid{margin-top:12px}.keepsake-field-label{margin:16px 0 8px;font-size:11px}.keepsake-block-choices{grid-template-columns:1fr 1fr;gap:10px;display:grid}.keepsake-photo-choices{grid-template-columns:1fr 1fr;gap:12px;margin-top:15px;display:grid}.keepsake-photo-choice{min-width:0}.keepsake-photo-choice img{object-fit:contain;border:1px solid var(--line);background:#eee5d8;width:100%;height:100px}.keepsake-photo-choice .check-line>span{overflow-wrap:anywhere;font-size:10px}.keepsake-photo-choice>div{justify-content:flex-end;gap:5px;margin-top:5px;display:flex}.keepsake-photo-choice button{width:34px;min-height:30px;padding:3px}.keepsake-style-sample{object-fit:contain;background:#fff;border:1px solid #e3dacb;width:100%;height:84px;margin-top:10px;display:block}.keepsake-pen{margin:15px 0;font-size:11px}.keepsake-pen summary{cursor:pointer;padding:7px 0}.keepsake-pen label{margin-top:8px}.keepsake-pen input{accent-color:var(--accent);padding:0}.keepsake-exact-text{scrollbar-width:thin;background:#f5eddf;border:1px solid #cabb9e;max-height:240px;padding:14px;font-size:12px;overflow:auto}.keepsake-exact-text>div+div{margin-top:16px}.keepsake-exact-text h4{color:#78634a;margin:0 0 5px;font-size:10px;font-weight:500}.keepsake-exact-text pre{font:12px/1.9 var(--serif);white-space:pre-wrap;overflow-wrap:anywhere;margin:0}.keepsake-consent{color:#4c3a2e;align-items:flex-start;margin-top:12px;font-size:11px}.keepsake-consent input{margin-top:3px}.keepsake-privacy{color:#746653;margin-top:16px;font-size:10px;line-height:1.8}.keepsake-privacy summary{cursor:pointer;min-height:30px}.keepsake-preview{background:#eee6d7;border-radius:3px;flex-direction:column;min-height:0;padding:18px;display:flex}.keepsake-preview-heading{color:#776b5a;flex:none;justify-content:space-between;gap:10px;margin-bottom:12px;font-size:10px;display:flex}.keepsake-preview-heading>span:first-child{color:#7e4230}.keepsake-preview-surface{flex:1;justify-content:center;align-items:center;min-height:100px;display:flex;overflow:hidden}.keepsake-preview-surface>img{object-fit:contain;max-width:100%;max-height:100%;display:block;box-shadow:1px 3px 10px #4f3e291f}.keepsake-preview-surface>p{font:18px/1.8 var(--serif);color:#7c6c57;text-align:center;padding:20px}.keepsake-pager{flex:none;justify-content:center;align-items:center;gap:20px;margin-top:14px;display:flex}.keepsake-pager>span{color:#73614c;font:11px ui-monospace,monospace}.keepsake-pager button{background:#f8f2e7;width:36px;min-height:32px;padding:5px}.keepsake-preview>.small-note{text-align:center;flex:none;margin:10px 0 0;font-size:10px}.keepsake-service{color:#984b36;flex:none;margin-top:10px;font-size:11px;line-height:1.7}.keepsake-service:empty{display:none}.keepsake-footer{border-top:1px solid var(--line);flex:none;justify-content:space-between;align-items:center;gap:18px;margin-top:18px;padding-top:16px;display:flex}.keepsake-progress{color:#6d4b36;margin:0;font-size:12px;line-height:1.7}.keepsake-errors{color:#a44330;white-space:pre-wrap;max-height:75px;font-size:11px;line-height:1.7;overflow:auto}.keepsake-actions{flex-wrap:wrap;flex:none;justify-content:flex-end;gap:8px;display:flex}.keepsake-actions button{min-height:42px;font-size:11px}@media (max-width:760px){.story-export-dialog{width:calc(100vw - 16px);max-width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);padding:17px}.story-export-dialog>.dialog-heading{margin-bottom:12px}.keepsake-story-title{font-size:11px}.keepsake-workspace{overscroll-behavior:contain;flex-direction:column;gap:20px;display:flex;overflow:auto}.keepsake-settings{order:1;padding-right:0;overflow:visible}.keepsake-preview{flex:none;order:0;padding:13px}.keepsake-preview-surface{flex:none;height:300px}.keepsake-preview-heading{font-size:9px}.keepsake-settings input:not([type=checkbox]):not([type=range]),.keepsake-settings select{font-size:16px}.keepsake-photo-choice button,.keepsake-pager button{min-width:44px;min-height:44px}.keepsake-footer{flex-direction:column;align-items:stretch;gap:10px;margin-top:12px;padding-top:10px}.keepsake-actions{flex-wrap:wrap;justify-content:stretch}.keepsake-actions button{white-space:nowrap;flex:1;min-height:44px;font-size:11px}.keepsake-progress{font-size:11px}.keepsake-block-choices{gap:12px}.keepsake-exact-text pre{font-size:14px}.keepsake-consent{font-size:12px}.keepsake-photo-choices{gap:10px}.story-export-dialog>.dialog-heading .icon-button{min-width:44px;min-height:44px}}.is-focused .canvas-heading{padding-top:14px;padding-bottom:6px}.is-focused .canvas-heading .canvas-subtitle{display:none}.is-focused .title-button{font-size:23px}.focus-strip{scrollbar-width:thin;flex:none;max-height:34%;padding:6px 36px 10px;overflow:auto}.focus-summary{flex-wrap:wrap;align-items:center;gap:8px;font-size:12px;display:flex}.scope-marker{letter-spacing:.08em;color:var(--accent);white-space:nowrap;border:1px solid #c39b87;border-radius:2px;padding:3px 5px;font-size:9px}.focus-summary strong{overflow-wrap:anywhere;max-width:52%;font-weight:500}.focus-count{color:#746653;white-space:nowrap;margin-left:auto;font-size:10px}.focus-summary>button{min-height:32px;color:var(--accent);border-color:#0000;padding:5px 9px;font-size:10px}.focus-summary>button svg{width:14px;height:14px}.focus-help{color:#746653;margin:6px 0 0;font-size:10px;line-height:1.7}.focus-help button{min-height:26px;padding:3px 0;font-size:11px}.path-description{overflow-wrap:anywhere;margin:10px 0 8px;font-size:12px;line-height:1.6}.relationship-trail ol{flex-wrap:wrap;gap:7px;margin:0;padding:0;font-size:11px;line-height:1.8;list-style:none;display:flex}.relationship-trail li{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.path-person{overflow-wrap:anywhere;background:#eadcca;border-radius:3px;max-width:180px;padding:3px 7px}.path-step{color:#73624f;font-size:10px}.path-actions{flex-wrap:wrap;gap:5px;margin-top:10px;display:flex}.path-actions button{min-height:32px;padding:5px 9px;font-size:10px}.path-actions [aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:var(--sheet)}.inspector-heading-actions{align-items:center;gap:3px;display:flex}.person-shortcuts{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;margin:-5px 0 19px;display:grid}.person-shortcuts button{white-space:nowrap;gap:4px;padding:8px 4px;font-size:10px}.person-shortcuts svg{width:15px;height:15px}.person-shortcuts [aria-pressed=true]{border-color:var(--accent);color:var(--accent);background:#eee1cf}.check-line{flex-direction:row;align-items:center;gap:7px;line-height:1.6;display:flex}.check-line input[type=checkbox]{width:16px;height:16px;min-height:16px;accent-color:var(--accent);flex:none;padding:0}.assignment-dialog{width:920px}.assignment-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 22px;display:grid}.assignment-row{border-top:1px solid var(--line);grid-template-columns:78px minmax(0,1fr);align-items:start;gap:15px;padding:15px 0;display:grid}.assignment-row figure{margin:0}.assignment-row img{object-fit:cover;border:1px solid var(--line);background:#e9dfcf;border-radius:3px;width:78px;height:88px;display:block}.assignment-row figcaption{color:#746653;text-align:center;margin-top:7px;font-size:9px;line-height:1.5}.assignment-fields{gap:9px;display:grid}.assignment-fields .check-line{color:#6d5d48;font-size:10px}.assignment-help{color:#746653;margin:0;font-size:10px;line-height:1.7}.assignment-status{color:var(--accent);min-height:21px;margin-top:15px;font-size:12px;line-height:1.7}.assignment-dialog .dialog-footer{margin-top:8px}.memory-book{width:900px;height:min(780px,100dvh - 32px);overflow:hidden}.memory-book[open]{flex-direction:column;display:flex}.memory-book .dialog-heading{flex:none;margin-bottom:20px}.book-toolbar{border-bottom:1px solid var(--line);flex-wrap:wrap;flex:none;align-items:center;gap:12px;padding-bottom:18px;display:flex}.book-tabs{gap:5px;display:flex}.book-tabs button{border:0;gap:7px;min-height:36px;padding:7px 10px}.book-tabs button span{opacity:.7;font:10px ui-monospace,monospace}.book-tabs [aria-pressed=true]{background:var(--ink);color:var(--sheet)}.book-filter{width:145px;margin-left:auto}.book-toolbar>.primary{font-size:11px}.book-content{scrollbar-width:thin;overscroll-behavior:contain;flex:1;min-height:0;padding:22px 2px 12px;overflow:auto}.memory-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;display:grid}.memory-card{text-align:left;background:#faf5e9;border:1px solid #d8cbb6;border-top:2px solid #b47b62;flex-direction:column;justify-content:flex-start;align-items:flex-start;gap:12px;min-width:0;padding:23px 22px 18px;display:flex;position:relative;box-shadow:2px 3px #d8cbb638}.memory-card:only-child{grid-column:1/-1}.memory-card:hover:not(:disabled){background:#f2e7d5;transform:translateY(-2px)}.memory-card strong{font:600 21px/1.5 var(--serif);overflow-wrap:anywhere}.memory-date{color:#78634d;letter-spacing:.04em;margin:0;font-size:10px;line-height:1.7}.memory-excerpt{color:#5c5143;-webkit-line-clamp:3;white-space:pre-wrap;overflow-wrap:anywhere;-webkit-box-orient:vertical;font-size:12px;line-height:1.9;display:-webkit-box;overflow:hidden}.memory-people{color:#78634d;overflow-wrap:anywhere;font-size:10px;line-height:1.8}.memory-read{color:var(--accent);align-self:flex-end;margin-top:auto;padding-top:10px;font-size:10px}.book-empty{text-align:center;color:#746653;grid-column:1/-1;padding:45px 15px;font-size:12px;line-height:1.9}.book-empty-title{font:24px/1.6 var(--serif);color:var(--ink);margin:10px 0}.book-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;display:grid}.book-photo{text-align:left;background:#fffaf0;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:7px;min-width:0;padding:7px 7px 13px;display:flex}.book-photo img{aspect-ratio:4/3;object-fit:cover;background:#e9dfcf;width:100%;height:auto}.book-photo>span{font:14px/1.5 var(--serif);overflow-wrap:anywhere;padding:0 4px}.book-photo small{color:#746653;overflow-wrap:anywhere;padding:0 4px;font-size:10px;line-height:1.7}.book-message{min-height:24px;color:var(--accent);flex:none;align-items:center;gap:10px;padding-top:8px;font-size:11px;line-height:1.7;display:flex}.book-message button{border:0;min-height:30px;padding:4px 8px;font-size:11px;text-decoration:underline}.memory-page{max-width:650px;margin:auto;padding:0 12px 20px}.memory-page>.quiet{color:#746653;margin-bottom:22px;padding-left:0;font-size:11px}.memory-page h3{font:600 30px/1.5 var(--serif);overflow-wrap:anywhere;margin:12px 0}.memory-body{white-space:pre-wrap;overflow-wrap:anywhere;color:#4d4337;margin:25px 0;font-size:14px;line-height:2.1}.story-photos{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:20px 0;display:grid}.story-photos button{background:#fffaf0;min-width:0;padding:5px}.story-photos img{object-fit:contain;width:100%;height:auto;max-height:220px;display:block}.memory-page-actions{border-top:1px solid var(--line);align-items:center;gap:20px;margin-top:30px;padding-top:18px;display:flex}.memory-page-actions>button:first-child{font-size:11px}.memory-form{flex-direction:column;gap:16px;max-width:680px;margin:auto;display:flex}.memory-form>label{font-size:12px}.memory-form input,.memory-form textarea{font-size:14px;line-height:1.8}.memory-form textarea{min-height:150px}.memory-form fieldset{border:0;border-top:1px solid var(--line);min-width:0;margin:5px 0 0;padding:14px 0 0}.memory-form legend{padding:0 10px 0 0;font-size:12px}.memory-person-choices{flex-wrap:wrap;gap:8px 18px;max-height:145px;margin-top:12px;padding:3px;display:flex;overflow:auto}.memory-person-choices .check-line{overflow-wrap:anywhere;max-width:100%;min-height:32px;font-size:12px}.memory-photo-choices{grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;display:grid}.memory-photo-choices>label{border:1px solid var(--line);cursor:pointer;background:#fffaf0;border-radius:3px;min-width:0;padding:5px}.memory-photo-choices img{aspect-ratio:4/3;object-fit:cover;width:100%;display:block}.memory-photo-choices .check-line{overflow-wrap:anywhere;align-items:flex-start;padding:3px;font-size:10px}.memory-error{color:var(--accent);margin:0;font-size:12px;line-height:1.7}.memory-form .dialog-footer{margin:0;padding:14px 0 0}.draft-confirm{background:#fff6e5;border:1px solid #bc7e62;padding:14px;position:sticky;bottom:0;box-shadow:0 -6px 20px #3b302216}.draft-confirm p{margin:0 0 10px;font-size:12px}.draft-confirm button{margin-right:8px;font-size:11px}@media (max-width:900px){.assignment-list{grid-template-columns:1fr}.book-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:700px){.mobile-label{display:inline}.header-actions .desktop-label{display:none}.header-actions .quiet{width:34px;padding:7px}.header-actions .primary{padding:8px 10px}.is-focused .canvas-heading{padding:10px 16px 2px}.is-focused .title-button{font-size:21px}.is-focused .canvas-heading .eyebrow{margin-bottom:4px;font-size:8px}.focus-strip{max-height:28dvh;padding:5px 16px 8px}.focus-summary{gap:6px;font-size:11px}.scope-marker{padding:3px;font-size:8px}.focus-count{font-size:9px}.focus-summary>button{min-height:36px;padding:4px 2px;font-size:10px}.focus-summary>button svg{display:none}.focus-help{margin-top:3px;font-size:10px}.path-actions button{min-height:36px;font-size:10px}.path-person{max-width:130px}.has-selection .workspace{flex-direction:column;display:flex}.has-selection .canvas-area{flex:1;min-height:0}.inspector{width:100%;max-height:42dvh;padding:12px 16px calc(10px + env(safe-area-inset-bottom,0px));border-radius:11px 11px 0 0;flex:none;position:relative;box-shadow:0 -3px 15px #30271c0b}.inspector[data-expanded=false] .inspector-details{display:none}.inspector .panel-heading{align-items:center;margin-bottom:12px}.inspector .panel-heading h2{font-size:21px}.inspector .panel-heading .eyebrow{margin-bottom:4px;font-size:8px}.mobile-editor-toggle{color:var(--accent);border:0;min-height:44px;padding:7px;font-size:11px;display:inline-flex}.person-shortcuts{gap:8px;margin:0 0 3px}.person-shortcuts button{min-height:42px;font-size:11px}.inspector[data-expanded=true] .person-shortcuts{margin-bottom:17px}.assignment-dialog{width:calc(100vw - 16px);max-width:calc(100vw - 16px);padding:18px}.assignment-row{grid-template-columns:65px minmax(0,1fr);gap:12px;padding:13px 0}.assignment-row img{width:65px;height:80px}.assignment-row select,.assignment-row input[data-name]{font-size:16px}.assignment-fields .check-line,.assignment-help{font-size:11px}.assignment-dialog .dialog-footer>button{min-height:44px;padding:8px 10px;font-size:10px}.memory-book{width:calc(100vw - 16px);max-width:calc(100vw - 16px);height:calc(100dvh - 16px);max-height:calc(100dvh - 16px);padding:19px 16px 12px}.memory-book .dialog-heading{margin-bottom:14px}.memory-book .dialog-heading h2{font-size:22px}.memory-book .dialog-heading .eyebrow{font-size:8px}.memory-book .icon-button{width:44px;height:44px}.book-toolbar{gap:8px;padding-bottom:12px}.book-tabs button{min-height:40px;padding:6px 9px;font-size:11px}.book-filter{width:135px}.book-filter select{font-size:16px}.book-toolbar>.primary{width:100%;min-height:42px}.book-content{padding-top:16px}.memory-list{grid-template-columns:1fr;gap:14px}.memory-card{gap:10px;padding:21px 18px 16px}.memory-card strong{font-size:21px}.memory-excerpt{font-size:13px}.memory-people,.memory-date{font-size:11px}.book-photo-grid{gap:12px}.book-photo>span{font-size:12px}.book-photo small{font-size:10px}.book-empty{padding:30px 6px}.book-empty-title{font-size:22px}.memory-page{padding:0 3px 18px}.memory-page h3{font-size:27px}.memory-body{font-size:15px;line-height:2}.memory-form input,.memory-form textarea{font-size:16px}.memory-person-choices .check-line{min-height:40px}.memory-photo-choices{grid-template-columns:repeat(2,minmax(0,1fr))}.memory-form .dialog-footer{bottom:0}.book-message{flex-wrap:wrap;gap:4px;font-size:11px}}@media (max-width:700px) and (max-height:700px){.is-focused .canvas-heading{display:none}.focus-strip{max-height:23dvh}.inspector{max-height:37dvh}.inspector .panel-heading{margin-bottom:6px}.inspector{padding-top:8px;padding-bottom:8px}.person-shortcuts button{min-height:36px}}.app-header{border:0;flex:none;justify-content:space-between;align-items:center;gap:18px;height:auto;min-height:64px;padding:10px 24px;display:flex}.header-actions{flex:none;align-items:center;gap:8px;display:flex}.more-menu{position:relative}.more-menu summary{width:auto}.more-menu>summary{cursor:pointer;white-space:nowrap;border-radius:5px;justify-content:center;align-items:center;gap:7px;min-height:42px;padding:7px 9px;font-size:12px;list-style:none;display:flex}.more-menu>summary::-webkit-details-marker{display:none}.more-menu>summary:hover,.more-menu[open]>summary{background:#e9dfce}.more-menu>div{z-index:25;background:var(--sheet);border:1px solid var(--line);border-radius:6px;width:250px;max-width:calc(100vw - 28px);max-height:calc(100dvh - 90px);padding:8px;position:absolute;top:calc(100% + 8px);right:0;overflow:auto;box-shadow:0 9px 28px #3b302218}.more-menu button{text-align:left;border:0;justify-content:flex-start;width:100%;min-height:40px;font-size:12px}.more-menu hr{border:0;border-top:1px solid var(--line);margin:7px 5px}.more-menu svg{width:17px;height:17px}.workspace-picker{min-width:0;max-width:calc(100% - 170px)}.workspace-picker>summary{justify-content:flex-start;gap:9px;min-width:0;padding:4px 5px}.workspace-picker h1{font:500 23px/1.4 var(--serif);letter-spacing:.03em;white-space:nowrap;text-overflow:ellipsis;margin:0;overflow:hidden}.workspace-picker>summary>span{color:var(--muted);font-size:14px}.workspace-picker>div{left:0;right:auto}.workspace-nav{flex-direction:column;gap:2px;display:flex}.workspace-nav a{min-height:42px;color:var(--muted);border-radius:4px;align-items:center;padding:10px 11px;font-size:12px;text-decoration:none;display:flex}.workspace-nav a:hover{color:var(--accent);background:#eee4d5}.workspace-nav a[aria-current=page]{color:var(--accent);background:#eee1cf}.workspace-nav a:focus-visible,.example-sources a:focus-visible,.route-not-found a:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.menu-note,.save-status{color:var(--muted);margin:9px 11px 5px;font-size:10px;line-height:1.6;display:block!important}.roster-trigger{gap:6px;min-height:42px;padding:8px 9px;font-size:12px}.roster-trigger svg{width:17px;height:17px}.header-actions .roster-trigger{width:auto}.header-actions .roster-trigger span{display:inline}.tools-menu .view-switch{background:#eee6d8;border:0;gap:4px;margin:8px 2px 9px;padding:2px}.tools-menu .view-switch button{justify-content:center;width:50%;min-height:36px;font-size:11px}.tool-section{border-top:1px solid var(--line);margin:5px 4px 0}.tool-section>summary{cursor:pointer;min-height:42px;color:var(--muted);padding:12px 7px;font-size:12px}.tool-section>div{padding-bottom:5px}.history-actions{gap:4px;padding:3px;display:flex}.more-menu .history-actions button{justify-content:center;width:50%;font-size:11px}.example-context{min-width:0;margin:0}.example-branches{flex-direction:column;gap:1px;display:flex}.example-branches [aria-pressed=true]{color:var(--accent);background:#eee1cf}.example-sources{color:var(--muted);margin:6px 8px 0;font-size:11px;line-height:1.8}.example-sources>summary{cursor:pointer;min-height:40px;padding:9px 0}.example-sources p{margin:5px 0 12px}.example-sources>div{gap:9px;padding-bottom:8px;display:grid}.example-sources a{color:#85513c;text-underline-offset:3px;overflow-wrap:anywhere}.canvas-area{position:relative}.canvas-bottom{z-index:5;pointer-events:none;padding:0;display:block;position:absolute;bottom:18px;right:20px}.zoom-controls{pointer-events:auto;border:1px solid var(--line);background:#fbf7eedb;border-radius:7px;gap:1px;padding:3px}.zoom-controls .icon-button{width:38px;height:38px;min-height:38px;padding:10px}.zoom-controls>.sr-only{width:1px}.focus-strip{max-height:30%;padding:8px 26px;font-size:11px}.scope-marker,.focus-help{display:none}.focus-summary{gap:10px}.focus-summary strong{font-size:12px}.focus-summary>button{min-height:36px}.focus-count{font-size:10px}.inspector .panel-heading{align-items:center}.editor-toggle{color:var(--accent);white-space:nowrap;border:0;min-height:40px;padding:7px;font-size:11px;display:inline-flex}.person-overview .portrait-compare{margin-bottom:13px}.person-note{white-space:pre-wrap;color:#665a49;max-height:180px;margin:0 0 19px;font-size:12px;line-height:1.85;overflow:auto}.inspector .person-shortcuts{margin:0 0 17px}.roster-panel{top:78px}@media (max-width:700px){.app-header{min-height:60px;padding:calc(8px + env(safe-area-inset-top,0px)) 12px 8px;gap:10px}.workspace-picker{max-width:calc(100% - 140px)}.workspace-picker h1{letter-spacing:0;font-size:20px}.workspace-picker>summary{gap:5px;padding:4px 2px}.header-actions{gap:2px}.roster-trigger{min-height:40px;padding:7px;font-size:11px}.roster-trigger svg{display:none}.more-menu>summary{min-height:40px;padding:7px;font-size:11px}.more-menu button{min-height:44px}.tools-menu>summary>svg{display:none}.canvas-bottom{bottom:calc(12px + env(safe-area-inset-bottom,0px));right:12px}.zoom-controls .icon-button{width:36px;height:40px;min-height:40px;padding:10px}.focus-strip{max-height:25dvh;padding:6px 14px}.inspector .person-shortcuts{margin:0 0 10px}.inspector .panel-heading{margin-bottom:12px}.inspector .person-note{max-height:120px}.inspector .person-overview .portrait-compare{max-width:270px}.roster-panel{top:72px}}@media (max-width:360px){.app-header{gap:6px;padding-left:10px;padding-right:10px}.workspace-picker{max-width:calc(100% - 126px)}.workspace-picker h1{font-size:19px}.header-actions{gap:0}.canvas-bottom{right:10px}}#app{height:var(--viewport-height,100dvh)}.sheet-handle{display:none}.person-heading-label{color:var(--muted);margin:5px 0 0;font-size:11px;line-height:1.5}@media (max-width:700px){.workspace,.has-selection .workspace{flex-direction:column;min-height:0;display:flex}.canvas-area{flex:1;min-height:0}.stage{min-height:0}.inspector{width:100%;height:min(calc(var(--viewport-height,100dvh)*.64),560px);max-height:calc(var(--viewport-height,100dvh)*.64);padding:0 18px calc(20px + env(safe-area-inset-bottom,0px));scrollbar-width:thin;border-radius:16px 16px 0 0;flex:none;position:relative;inset:auto;overflow:auto;box-shadow:0 -3px 16px #30271c0d}.sheet-handle{touch-action:none;-webkit-user-select:none;user-select:none;width:100%;min-height:44px;color:var(--muted);background:var(--sheet);z-index:2;border:0;border-radius:0;flex-direction:column;gap:5px;padding:6px 0;font-size:10px;display:flex;position:sticky;top:0}.sheet-handle:active{transform:none}.sheet-grip{background:#c5b9a4;border-radius:3px;width:32px;height:3px}.sheet-caption{line-height:14px}.inspector .panel-heading{background:var(--sheet);z-index:1;padding:4px 0 10px;position:sticky;top:44px}.inspector .panel-heading h2{font-size:22px}.inspector .panel-heading .icon-button,.inspector .editor-toggle{min-width:44px;min-height:44px}.inspector[data-sheet-expanded=false]{height:min(184px,calc(var(--viewport-height,100dvh)*.37));max-height:calc(var(--viewport-height,100dvh)*.37);padding:0 16px calc(12px + env(safe-area-inset-bottom,0px));grid-template-rows:44px minmax(0,1fr);grid-template-columns:88px minmax(0,1fr);column-gap:14px;display:grid;overflow:hidden}.inspector[data-sheet-expanded=false] .sheet-handle{grid-area:1/1/auto/-1}.inspector[data-sheet-expanded=false] .panel-heading{grid-area:2/2;align-self:center;align-items:center;gap:3px;min-width:0;margin:0;padding:0;position:static}.inspector[data-sheet-expanded=false] .panel-heading h2{font-size:19px;line-height:1.4}.inspector[data-sheet-expanded=false] .person-heading-label{overflow-wrap:anywhere;font-size:11px}.inspector[data-sheet-expanded=false] .person-overview{grid-area:2/1;align-self:center;min-height:0}.inspector[data-sheet-expanded=false] .portrait-compare{margin:0;display:block}.inspector[data-sheet-expanded=false] .portrait-preview{object-fit:contain;max-height:96px}.inspector[data-sheet-expanded=false] .portrait-compare figure+figure,.inspector[data-sheet-expanded=false] figcaption,.inspector[data-sheet-expanded=false] .person-note,.inspector[data-sheet-expanded=false] .portrait-rationale,.inspector[data-sheet-expanded=false] .person-shortcuts,.inspector[data-sheet-expanded=false] .inspector-details,.inspector[data-sheet-expanded=false] .editor-toggle{display:none}.canvas-bottom{bottom:calc(10px + env(safe-area-inset-bottom,0px));right:10px}.zoom-controls .icon-button{width:44px;height:44px;min-height:44px}.stage[data-short=true]+.canvas-bottom [data-zoom-out],.stage[data-short=true]+.canvas-bottom [data-zoom-in]{display:none}.header-actions .roster-trigger,.tools-menu>summary,.workspace-picker>summary{min-height:44px}.roster-panel{top:70px}}
