:root{--bg:#f5f7fa;--surface:#fff;--text:#283543;--secondary:#657385;--line:#e7ebef;--accent:#496f62;--soft:#eaf1ed;--purple:#8062c7;--orange:#bc7851;--font:"PingFang TC","Microsoft JhengHei",system-ui,sans-serif;color-scheme:light}*{box-sizing:border-box}body{margin:0;background:#e9edea;color:var(--text);font-family:var(--font);font-size:15px;line-height:1.55}button,input,textarea,select{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer;touch-action:manipulation}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:3px solid #b0855e;outline-offset:3px}button:disabled{opacity:.45;cursor:default}input,textarea,select{outline-color:var(--accent-line)}button,input,textarea{-webkit-tap-highlight-color:transparent}.ic{width:23px;height:23px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none}.phone{height:min(860px,calc(100dvh - 50px));min-height:640px;background:var(--bg);border-radius:35px;position:relative;overflow:hidden;box-shadow:0 15px 55px #1e37241c,0 0 0 1px #8e9c9026;display:flex;flex-direction:column;isolation:isolate}#app{position:relative;flex:1;min-height:0;isolation:isolate;overflow:hidden}
/* Guardian content; navigation, lists, forms and overlays use Framework7. */
.icon-btn{min-width:38px;height:40px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;position:relative;flex:none}
.icon-btn:hover{background:var(--soft)}
.headtext{font-size:13px;color:var(--accent);min-height:40px;padding:6px;font-weight:600}
.shortcuts{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-top:18px}
.shortcut{text-align:center;padding:0;min-height:75px;display:flex;flex-direction:column;align-items:center;gap:7px;font-size:12px}
.shortcut-icon{width:48px;height:48px;border-radius:16px;background:#e5ede8;display:grid;place-items:center;color:#507969}
.shortcut-icon.purple{background:#ece7f7;color:#8766c8}
.shortcut-icon.orange{background:#f6ebdf;color:#b4804f}
.shortcut-icon.blue{background:#e5edf6;color:#6086b5}
.shortcut-icon .ic{width:23px;height:23px}
.type-mark{height:39px;width:39px;display:grid;place-items:center;background:var(--soft);color:var(--accent);border-radius:12px;flex:none}
.type-mark.divination{background:#efe9fa;color:#8a65c9}
.type-mark.plan{background:#e6eef9;color:#6188b8}
.type-mark .ic{width:19px;height:19px}
.row-copy{flex:1;min-width:0}
.row-copy strong{font-size:14px;line-height:1.5;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.row-copy small{display:block;font-size:11px;color:var(--secondary);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.row-tag{font-size:10px;padding:3px 7px;border-radius:6px;background:#f2eadf;color:#977045;white-space:nowrap}
.continue-row{background:#fff6e8;border:1px solid #f0e3c9;border-radius:15px;display:flex;gap:12px;padding:14px;width:100%;text-align:left;margin-bottom:8px}
.continue-row .ic{color:#b78b52;margin-top:4px}
.continue-row strong{display:block;font-size:13px}
.continue-row small{font-size:11px;color:#9e815b;display:block;margin-top:3px}
.empty{padding:45px 15px;text-align:center;color:var(--secondary);font-size:13px;line-height:1.9}
.empty .ic{width:30px;height:30px;margin-bottom:8px;color:var(--accent-line)}
.empty strong{font-size:16px;color:var(--text);display:block;margin-bottom:6px}
.empty button{margin-top:15px}
.full{width:100%}
.context-strip{display:flex;align-items:center;gap:8px;padding:12px 13px;border-radius:11px;background:var(--soft);font-size:12px;color:var(--accent);margin-bottom:18px;width:100%;text-align:left}
.context-strip .ic{width:16px;height:16px}
.example-list{display:grid;gap:9px}
.example-list button{font-size:12px;line-height:1.6;text-align:left;background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:12px;color:var(--secondary)}
.info-banner{padding:12px 14px;background:#f0ecf8;border-radius:12px;font-size:12px;color:#7b659f;line-height:1.8;margin:0 0 19px}
.detail-meta{display:flex;align-items:center;gap:8px;color:var(--secondary);font-size:11px;margin-bottom:13px}
.type-chip{background:var(--soft);color:var(--accent);border-radius:6px;padding:3px 7px;font-size:10px}
.record-title{font-size:25px;font-weight:700;line-height:1.5;margin:0 0 20px;overflow-wrap:anywhere}
.record-body{font-size:15px;line-height:2;white-space:pre-wrap;overflow-wrap:anywhere;margin:0 0 22px}
.detail-divider{border:0;border-top:1px solid var(--line);margin:24px 0}
.detail-link{display:flex;align-items:center;justify-content:space-between;padding:14px 0;border-top:1px solid var(--line);font-size:13px;width:100%;text-align:left;gap:12px}
.detail-link small{display:block;font-size:11px;color:var(--secondary);margin-top:3px}
.hex-block{background:#f1ecfa;border-radius:16px;padding:18px;display:flex;gap:20px;align-items:center;margin-bottom:21px}
.hex-symbol{font-size:51px;color:#8766b9;line-height:1}
.hex-block b{font-size:18px;color:#735ba0}
.hex-block small{display:block;font-size:11px;color:#89779e;margin-top:5px}
.reflection{border-left:3px solid #b9a6d4;padding:4px 0 4px 14px;margin:15px 0}
.reflection p{white-space:pre-wrap;font-size:14px;margin:8px 0;line-height:1.9}
.reflection b{font-size:12px;color:#9076b4}
.link-button{font-size:12px;color:var(--accent);padding:8px 0;text-decoration:underline;text-underline-offset:4px;min-height:36px}
.avatar{width:43px;height:43px;flex:none;border-radius:50%;background:#f0dac1;overflow:hidden;position:relative;display:grid;place-items:center;color:#766549;font-size:18px;font-weight:500}
.avatar img{position:absolute;width:72px;max-width:none;left:-16px;top:0}
.avatar.oracle{background:#eae1f7;color:#8e6ab6}
/* Artwork is not an image interaction target; enclosing role buttons remain clickable. */
#app .avatar.svg-avatar{background:transparent}#app .avatar.svg-avatar img{position:static;width:100%;height:100%;max-width:none;left:auto;top:auto;object-fit:cover;pointer-events:none}
.chat-suggestions{display:flex;flex-wrap:wrap;gap:7px;margin:12px 0}
.chat-suggestions button{font-size:11px;padding:9px 11px;min-height:37px;background:var(--surface);border:1px solid var(--accent-weak);border-radius:10px;color:var(--accent)}
.profile-banner{display:flex;align-items:center;gap:14px;padding:21px 18px;border-radius:17px;background:var(--surface);width:100%;text-align:left}
.profile-banner .avatar{width:54px;height:54px;background:#e1eade;color:#66815f;font-size:22px}
.profile-banner b{font-size:20px;display:block}
.profile-banner small{font-size:11px;color:var(--secondary)}
.setting-row{display:flex;align-items:center;gap:12px;border-bottom:1px solid var(--line);padding:16px 0;min-height:70px}
.setting-row>div{flex:1}
.setting-row b{font-size:14px;font-weight:600;display:block}
.setting-row small{font-size:11px;color:var(--secondary);display:block;margin-top:4px;line-height:1.7}
.setting-choice{display:flex;width:100%;align-items:center;justify-content:space-between;padding:15px 0;border-bottom:1px solid var(--line);font-size:14px;min-height:55px}
.setting-choice.active{color:var(--accent);font-weight:650}
.setting-choice .ic{height:19px;width:19px}
.count-cards{display:grid;grid-template-columns:repeat(3,1fr);margin:18px 0;border-radius:15px;background:var(--surface);padding:15px 0}
.count-cards button{font-size:11px;color:var(--secondary);border-right:1px solid var(--line)}
.count-cards button:last-child{border:0}
.count-cards strong{display:block;font-size:21px;color:var(--text);font-weight:600;margin-bottom:2px}
.reminder-row{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:15px;margin-bottom:12px;display:flex;align-items:center;gap:12px}
.reminder-row>button:first-child{text-align:left;flex:1;padding:0}
.reminder-row b{font-size:14px;display:block}
.reminder-row small{font-size:11px;color:var(--secondary);display:block;margin-top:6px}
.sheet-body{padding:16px 22px 24px;overflow:auto;min-height:0}
.sheet-body .field:last-child{margin-bottom:0}
.sheet-footer{display:flex;padding:12px 22px 25px;border-top:1px solid var(--line);gap:10px}
.sheet-footer>*{flex:1}
.sheet-row{display:flex;align-items:center;gap:13px;width:100%;padding:15px 0;border-bottom:1px solid var(--line);font-size:14px;text-align:left;min-height:56px}
.sheet-row:last-child{border:0}
.sheet-row .ic{color:var(--secondary);width:21px;height:21px}
.sheet-row small{font-size:11px;color:var(--secondary);display:block;margin-top:3px}
.sheet-row.danger-text{color:#b65046}
.warning-text{font-size:13px;color:var(--secondary);line-height:1.9;margin:0 0 18px}
.error-text{color:#b65346;font-size:12px;line-height:1.8;margin:10px 0}
.phone.dark{--bg:#202a30;--surface:#2b363d;--text:#edf1f3;--secondary:#b0bec7;--line:#3d4a52;--accent:#99bea9;--soft:#344a40;color-scheme:dark}
.phone.dark .primary{color:var(--on-accent)}
.phone.dark input,.phone.dark textarea{background:var(--surface);border-color:var(--line)}
.phone.dark .search,.phone.dark .segments{background:var(--paper-warm)}
.phone.dark .type-mark.divination,.phone.dark .info-banner,.phone.dark .hex-block{background:#40394e;color:#c3abed}
.phone.dark .hex-block b,.phone.dark .hex-block small{color:#c3abed}
.phone.dark .continue-row{background:#443e30;border-color:#665a3b}
.phone.dark .continue-row strong{color:#e4d4b3}
.phone.dark .message.me .bubble{background:var(--bubble-user)}
.phone.dark .filter-pill.active{color:var(--on-accent)}
.phone.dark .shortcut-icon{background:#354a40;color:#b6d4c2}
.phone.dark .shortcut-icon.purple{background:#443b58;color:#c9b8e8}
.phone.dark .shortcut-icon.orange{background:#4a4033;color:#e1c39b}
.phone.dark .shortcut-icon.blue{background:#344653;color:#a5c3e0}
#app{--f7-font-family:var(--font);--f7-theme-color:#496f62;--f7-page-bg-color:var(--bg);--f7-navbar-bg-color:var(--surface);--f7-bars-bg-color:var(--surface);--f7-list-bg-color:var(--surface);--f7-list-item-title-text-color:var(--text);--f7-list-item-text-text-color:var(--secondary);--f7-list-item-subtitle-text-color:var(--secondary);--f7-navbar-height:60px;--f7-navbar-title-font-size:19px;--f7-list-font-size:15px;--f7-list-media-item-title-font-size:15px;--f7-list-item-text-font-size:13px;--f7-list-item-subtitle-font-size:12px;--f7-button-border-radius:12px;--f7-button-large-height:48px;--f7-tabbar-labels-height:70px;--f7-toolbar-height:78px;--f7-messagebar-height:68px;--f7-sheet-bg-color:var(--surface);--f7-dialog-bg-color:var(--surface);--f7-text-color:var(--text);--f7-dialog-text-color:var(--text);--f7-safe-area-bottom:12px}
.phone{color:var(--text)}#app .views{height:100%}.navbar .title{font-weight:650}.navbar .subtitle{font-size:11px;display:block;color:var(--secondary);font-weight:400}.root-page .navbar .title{font-size:22px;margin-left:20px;text-align:left}.root-page .navbar-inner{justify-content:space-between}.root-page .navbar .right{margin-left:auto}.navbar .icon-btn{width:44px;height:44px}.navbar .badge{position:absolute;right:0;top:4px;font-size:10px;min-width:16px;background:#b66f47;color:white}.content-inset{padding:18px 20px 30px}.page-content.white{background:var(--surface)}.root-page .page-content{padding-bottom:calc(var(--f7-tabbar-labels-height) + var(--f7-safe-area-bottom))}.app-tabbar .tab-link{color:var(--secondary);height:100%;flex:1}.app-tabbar .tab-link-active{color:var(--accent)}.app-tabbar .icon{height:25px}.app-tabbar[hidden]{display:none}.list.inset{margin:16px 0;--f7-list-inset-border-radius:14px}.list button.item-content{width:100%;text-align:left}.media-list .item-text{height:auto;max-height:2.8em}.item-title{font-weight:550}.form-list{margin:0 0 20px!important}.form-list .item-content{padding-left:0}.form-list .item-inner{padding-right:0}.form-list ul{background:transparent}.form-list textarea{min-height:155px;line-height:1.8;padding-top:12px}.form-list .item-label{font-size:14px;color:var(--text);margin-bottom:8px}.form-list .editor-body{min-height:310px;font-size:16px;line-height:1.9}.form-list .editor-title{font-size:24px;height:58px;font-weight:600}.draft-status,.form-intro,.hint{font-size:13px;color:var(--secondary);line-height:1.8}.draft-status{margin-bottom:20px}.form-intro{margin-top:0}.label{font-size:14px;font-weight:600;margin:20px 0 12px}.group-title{font-size:13px;color:var(--secondary);margin:26px 0 8px}.footer-actions .toolbar-inner{gap:10px;padding:12px 20px 22px}.footer-actions .button{flex:1;min-width:0}.page:has(>.footer-actions)>.page-content{padding-bottom:90px}.filter-heading{display:flex;align-items:center;gap:8px;margin:15px 0}.filter-heading .segmented{flex:1}.segmented{margin-bottom:20px}.filter-heading .segmented{margin-bottom:0}.segmented .button{font-size:13px;white-space:nowrap}.countline{font-size:12px;color:var(--secondary);margin:12px 0}.searchbar-inline{margin:0 -8px}.searchbar-not-found[hidden]{display:none}.searchbar-not-found:not(.searchbar-hidden){display:block}.searchbar-not-found.searchbar-hidden{display:none}.chat-title{display:flex;align-items:center;gap:8px;text-align:left;font-size:15px}.chat-title .avatar{width:34px;height:34px}.chat-title small{font-size:10px;display:block;color:var(--secondary);font-weight:400}.chat-title .avatar img{width:57px;left:-12px}.messagebar .toolbar-inner{gap:8px;padding:10px 12px 16px}.messagebar textarea{font-family:var(--font);font-size:15px}.send-link{height:44px;width:38px;flex:none}.messages{padding:16px 12px 8px;background:transparent;--f7-message-sent-bg-color:var(--bubble-user);--f7-message-sent-text-color:var(--text);--f7-message-received-bg-color:var(--surface);--f7-message-received-text-color:var(--text)}.message-bubble{font-size:15px;line-height:1.7}.message-text{white-space:pre-wrap;overflow-wrap:anywhere}.message-footer button{min-height:32px;color:var(--secondary);font-size:11px}.message-record{text-align:left;color:inherit;max-width:245px;padding:6px}.message-record strong{display:block;font-size:16px;margin:8px 0}.message-record p{font-size:13px;margin:8px 0}.message-record small,.message-record span{font-size:12px;color:var(--accent)}.chat-suggestions{padding:0 16px 20px}.messagebar~.page-content{padding-bottom:90px}.setting-row{gap:20px}.setting-row>div{min-width:0}.toggle{flex:none}.guardian-sheet{height:auto;max-height:86%;display:flex;flex-direction:column;border-radius:24px 24px 0 0;overflow:hidden}.guardian-sheet .swipe-handler{height:22px;flex:none;display:grid;place-items:center;touch-action:none}.swipe-handler span{width:36px;height:4px;border-radius:5px;background:var(--line)}.guardian-sheet .sheet-heading{position:relative;top:auto;height:51px;flex:none}.sheet-heading .toolbar-inner{padding:0 22px}.sheet-heading h2{font-size:18px;font-weight:650;margin:0}.sheet-heading .link{font-size:14px;min-height:44px}.guardian-sheet .sheet-modal-inner{min-height:0;display:flex;flex-direction:column;height:auto;overflow:hidden}.sheet-body{overflow:auto;overscroll-behavior:contain;padding:18px 22px 24px}.sheet-footer{flex:none;display:flex;gap:10px;padding:12px 22px 24px;border-top:1px solid var(--line)}.sheet-footer .button{flex:1}.sheet-row{min-height:60px}.sheet-row small{font-size:12px}.sheet-body .form-list:last-child{margin-bottom:0!important}.dialog{--f7-dialog-width:310px;--f7-dialog-font-size:14px}.dialog-buttons-vertical .dialog-button{height:auto;min-height:48px;white-space:normal}.phone.large-font .record-body,.phone.large-font .message-text{font-size:18px}.phone.dark #app{--f7-theme-color:var(--accent);--f7-color-primary:var(--accent);--f7-navbar-link-color:var(--accent);--f7-searchbar-input-bg-color:#34434b;--f7-searchbar-input-text-color:var(--text);--f7-message-sent-bg-color:var(--bubble-user)}.phone.dark .messages{--f7-message-sent-bg-color:var(--bubble-user);--f7-message-sent-text-color:var(--text)}.phone.dark .list ul:before,.phone.dark .list ul:after{background:var(--line)}.phone.dark .guardian-sheet{color:var(--text)}.phone.dark .item-input-wrap input,.phone.dark .item-input-wrap textarea,.phone.dark .item-input-wrap select{color:var(--text)}.button:focus-visible,.item-link:focus-visible{outline:3px solid #b0855e;outline-offset:-3px}
@media(max-width:760px){body{background:var(--bg)}.phone{height:100dvh;min-height:0;width:100%;border-radius:0;box-shadow:none}}
@media(max-height:730px) and (min-width:761px){.phone{height:calc(100dvh - 36px);min-height:580px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001s!important;transition-duration:.001s!important;scroll-behavior:auto!important}}

/* Keep form sheets in document flow inside the phone-sized app root. */
.sheet-modal.guardian-sheet>.toolbar.sheet-heading{position:relative;top:auto;bottom:auto;height:54px}.sheet-modal.guardian-sheet>.toolbar.sheet-heading .toolbar-inner{position:relative;padding:0 22px;height:54px;display:flex;justify-content:space-between;gap:16px}.sheet-modal.guardian-sheet .sheet-heading h2{flex:1;white-space:nowrap}.sheet-modal.guardian-sheet .sheet-heading .link{width:auto;flex:none;padding:0 0 0 12px}.sheet-modal.guardian-sheet .sheet-modal-inner{padding-top:0}.sheet-modal.guardian-sheet .sheet-heading:before,.sheet-modal.guardian-sheet .sheet-heading:after{display:none}

.icon-btn{width:40px}.headtext,.link-button,.chat-suggestions button,.message-footer button{width:auto}

.app-tabbar .toolbar-pane{width:100%;height:58px;display:flex}.app-tabbar .toolbar-inner{padding-left:14px;padding-right:14px;padding-top:0}.app-tabbar .tabbar-label{margin-top:3px}
.offline-banner{flex:none;padding:max(6px,env(safe-area-inset-top)) 16px 6px;background:#5d544a;color:#fff;font-size:13px;line-height:1.5;text-align:center}.offline-banner[hidden]{display:none}

/* The editor uses Framework7 formatting commands with shared text/checklist undo history. */
.page[data-name=editor]{--f7-page-bg-color:var(--surface);--f7-navbar-bg-color:var(--surface);--f7-text-editor-height:auto;--f7-text-editor-padding:0;--f7-text-editor-border-color:transparent;background:var(--surface)}.note-page-content{background:var(--surface);padding-bottom:0!important}.note-workspace{padding:15px 23px 34px;min-height:100%;color:var(--text)}.note-save-strip{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:30px;font-size:11px;line-height:1.5;color:var(--secondary);margin-bottom:8px}.note-document-kind{font-weight:600;color:var(--accent);letter-spacing:.5px}.note-save-state{font-size:10px;text-align:right}.note-save-state[data-state=error]{color:#b85e50}.note-title-field{display:block;width:100%;margin:4px 0 19px}.page[data-name=editor] input.note-title{display:block;width:100%;max-width:none;min-height:64px;height:auto;padding:10px 0 14px;box-sizing:border-box;border:0;border-bottom:1px solid var(--line);border-radius:0;box-shadow:none;background:transparent;color:var(--text);font:650 27px/1.5 var(--font);outline:none}.page[data-name=editor] input.note-title::placeholder{color:#9da79f;font-weight:500}.page[data-name=editor] input.note-title:focus{border-color:var(--accent-line)}.note-save-button{padding:7px 12px!important;font-weight:650!important}
.note-text-editor.text-editor{height:auto!important;min-height:350px;border:0;box-shadow:none;border-radius:0;margin:0;background:transparent;display:flex;flex-direction:column;overflow:visible}.note-text-editor .text-editor-toolbar{position:sticky;top:0;z-index:3;flex:none;display:flex;align-items:center;flex-wrap:nowrap;gap:2px;width:calc(100% + 16px);height:49px;min-height:49px;margin:0 -8px 16px;padding:4px 5px;box-sizing:border-box;border:1px solid var(--line);border-radius:12px;background:var(--surface);overflow-x:auto;overflow-y:hidden;scrollbar-width:none;box-shadow:0 2px 7px #344b3a05}.note-text-editor .text-editor-toolbar::-webkit-scrollbar{display:none}.note-text-editor .text-editor-button{width:37px!important;min-width:37px;height:39px;min-height:39px;flex:none;padding:8px!important;border:0;border-radius:7px;background:transparent;color:var(--secondary);font-family:var(--font);font-size:18px;display:flex;align-items:center;justify-content:center}.note-text-editor .text-editor-button b{font-family:Georgia,serif;font-size:23px}.note-text-editor .text-editor-button i{font-family:Georgia,serif;font-size:23px}.note-text-editor .text-editor-button svg{width:21px;height:21px;flex:none}.note-heading-icon{font-size:17px;font-weight:600}.note-text-editor .text-editor-button.note-format-active{background:var(--soft);color:var(--accent)}.note-text-editor .text-editor-button:focus-visible{outline:2px solid #a4bdac;outline-offset:-2px}.note-text-editor .text-editor-button-divider{width:1px;min-width:1px;height:20px;background:var(--line);margin:0 4px;flex:none}.note-text-editor .text-editor-content{position:relative;display:block;box-sizing:border-box;height:auto;min-height:calc(100dvh - 330px);width:100%;padding:3px 0 28px!important;margin:0;overflow:visible;border:0;outline:0;background:transparent;color:var(--text);font-size:16px;line-height:1.95;word-break:normal;overflow-wrap:anywhere}.note-text-editor .text-editor-content.is-empty:before{content:attr(data-placeholder);position:absolute;left:0;top:3px;color:#a2aaa4;pointer-events:none;font-size:16px}.note-writing-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:10px;color:#97a198;border-top:1px solid var(--line);padding-top:14px;margin-top:2px}.note-word-count{font-variant-numeric:tabular-nums}
.rich-note{white-space:normal!important;overflow-wrap:anywhere}.rich-note p,.rich-note>div{margin:0 0 .8em}.rich-note h2{font-size:1.35em;font-weight:700;line-height:1.6;margin:1.1em 0 .4em;color:var(--text)}.rich-note h3{font-size:1.12em;font-weight:650;margin:1em 0 .4em}.rich-note ul,.rich-note ol{margin:.6em 0 1em;padding-left:1.5em}.rich-note li{margin:.3em 0;padding-left:.15em}.rich-note blockquote{margin:.8em 0;padding:8px 0 8px 16px;border-left:3px solid var(--accent-line);color:var(--secondary)}.rich-note blockquote p:last-child{margin-bottom:0}.rich-note a{color:var(--accent);text-decoration:underline;text-underline-offset:3px}.rich-note [data-note-task]{display:flex;align-items:flex-start;gap:10px;min-height:32px;margin:.25em 0;line-height:1.85}.rich-note [data-note-task]>span[contenteditable=false]{display:inline-flex;align-items:center;justify-content:center;flex:0 0 22px;padding:5px 0 3px;user-select:none}.rich-note input[type=checkbox]{display:inline-block!important;appearance:auto!important;width:18px!important;height:18px!important;min-height:18px!important;padding:0!important;margin:0!important;cursor:pointer;accent-color:var(--accent);opacity:1!important;position:static!important}.rich-note [data-note-text]{flex:1;min-width:0}.rich-note [data-note-task]:has(input:checked)>[data-note-text]{text-decoration:line-through;color:#94a397}.rich-note>p:last-child,.rich-note>div:last-child{margin-bottom:0}.phone.large-font .note-text-editor .text-editor-content{font-size:19px}
@media(max-width:420px){.note-workspace{padding-left:19px;padding-right:19px}.note-text-editor .text-editor-toolbar{width:calc(100% + 12px);margin-left:-6px;margin-right:-6px}.note-save-strip{gap:6px}.note-save-state{font-size:9px}}
@media(max-height:550px){.note-text-editor .text-editor-content{min-height:220px}.note-workspace{padding-top:8px}.page[data-name=editor] input.note-title{min-height:52px;font-size:24px}}

.assistant-intro{display:flex;align-items:center;gap:13px;margin:4px 0 24px}.assistant-person{width:52px;height:52px;border-radius:50%;background:#ece6d7;overflow:hidden;flex:none;position:relative}.assistant-person img{position:absolute;width:85px;max-width:none;left:-19px;top:0}.assistant-intro small{font-size:11px;color:var(--secondary)}.assistant-intro h1{font-size:21px;margin:4px 0 6px;line-height:1.4}.assistant-intro p{font-size:13px;color:var(--secondary);line-height:1.7;margin:0}
.assist-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.assist-composer{border:1px solid var(--accent-weak);border-radius:20px;background:var(--surface);padding:16px 14px 10px;box-shadow:0 3px 12px #35594b06}.assist-composer:focus-within{border-color:var(--accent-line)}.assist-composer textarea{display:block;box-sizing:border-box;width:100%;height:112px;min-height:96px;resize:vertical;background:none;border:0;padding:0 2px;color:var(--text);font:inherit;font-size:16px;line-height:1.85;outline:none}.assist-composer textarea::placeholder{color:#99a69f}.assist-compose-tools{display:flex;align-items:center;gap:6px;padding-top:10px;border-top:1px solid var(--line);margin-top:8px}.assist-tool{display:flex;align-items:center;gap:5px;font-size:12px;color:var(--accent);min-height:44px;white-space:nowrap}.assist-tool .ic{width:17px;height:17px}.assist-kind{font-size:11px;color:var(--secondary);margin-left:auto;min-height:44px;white-space:nowrap;padding:0 8px}.assist-send,.assist-followup button{display:grid;place-items:center;width:42px;height:42px;min-width:42px;border-radius:50%;color:white;background:var(--accent)}.assist-send .ic,.assist-followup .ic{width:21px;height:21px}.assistant-form-status{font-size:10px;color:var(--secondary);margin:10px 2px 0}.assist-examples{display:flex;flex-wrap:wrap;gap:7px;margin:22px 0}.assist-examples>span{display:block;width:100%;font-size:11px;color:var(--secondary);margin-bottom:2px}.assist-examples button{width:auto;min-height:40px;border:1px solid var(--line);border-radius:22px;padding:7px 11px;background:var(--surface);font-size:12px;color:var(--accent)}.assist-source-suggestion{display:flex;align-items:center;gap:12px;border-left:3px solid #d4dfcc;margin:22px 0 8px;padding:3px 0 3px 12px}.assist-source-suggestion>div{flex:1;min-width:0}.assist-source-suggestion small{display:block;font-size:10px;color:var(--secondary);margin-bottom:6px}.assist-source-suggestion strong{font-size:13px;font-weight:600}.assist-source-suggestion p{font-size:11px;line-height:1.7;margin:5px 0 0;color:var(--secondary)}.assist-source-suggestion>button{width:44px;min-width:44px;height:44px;color:var(--accent)}.assist-references{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}.assist-reference{display:flex;align-items:center;max-width:100%;background:var(--soft);border:1px solid var(--line);border-radius:11px}.assist-reference-title{display:flex;gap:5px;align-items:center;min-width:0;min-height:42px;padding:5px 7px 5px 9px;color:var(--accent);font-size:11px}.assist-reference-title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.assist-reference .ic{width:14px;height:14px;flex:none}.assist-reference-remove{width:38px;min-width:38px;min-height:42px;color:var(--secondary);font-size:20px}.assist-reference.missing{color:#9f5d42;background:#fff2e7}.assist-context{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--accent);margin-bottom:14px}.assist-context .ic{width:15px;height:15px}.assistant-revision-note{font-size:12px;padding:12px;background:var(--soft);border-radius:10px;line-height:1.8}.assistant-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:25px 0 7px}.assistant-section-title h3{font-size:15px;margin:0}.assistant-section-title>span,.assistant-section-title>button{font-size:11px;color:var(--secondary);min-height:40px}.assistant-job-list{margin-top:4px!important}.assistant-row-icon{width:33px;height:33px;display:grid;place-items:center;color:var(--accent);background:var(--soft);border-radius:10px}.assistant-row-icon .ic{width:18px;height:18px}.assistant-job-state{display:inline-block;white-space:nowrap;font-size:10px;color:#9c784d;background:#f8eedc;padding:4px 7px;border-radius:6px}.assistant-job-state.saved{color:var(--accent);background:var(--soft)}.assistant-empty{padding:16px 0;color:var(--secondary);font-size:13px;line-height:1.8}.assistant-demo-note{font-size:10px;color:var(--secondary);line-height:1.8;margin:20px 0 4px}.assist-request-summary{border-left:2px solid var(--accent-weak);padding:0 0 0 13px;margin:0 0 23px}.assist-request-summary>small{font-size:10px;color:var(--secondary)}.assist-request-summary>p{font-size:13px;line-height:1.8;margin:6px 0}.assist-reference-link{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--accent);min-height:36px}.assist-reference-link .ic{width:15px;height:15px}.assist-reply{display:flex;align-items:flex-start;gap:10px;margin-bottom:20px}.assist-reply img{width:30px;height:34px;object-fit:cover;object-position:top;border-radius:50%;background:#f0e9de}.assist-reply p{font-size:13px;line-height:1.9;margin:0;flex:1}.assistant-document{background:var(--surface);border:1px solid var(--line);border-radius:17px;padding:16px 17px 0}.assist-document-meta{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:10px;color:var(--secondary)}.assistant-document>h1{font-size:20px;line-height:1.6;margin:15px 0 8px;overflow-wrap:anywhere}.assist-section{border-bottom:1px solid var(--line);padding:12px 0 18px}.assist-section:last-of-type{border-bottom:0}.assist-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.assist-section-heading>h2{font-size:14px;margin:0;font-weight:650;color:var(--accent)}.assist-section-button{display:grid;place-items:center;width:44px;min-width:44px;min-height:44px;color:var(--accent-line)}.assist-section-button .ic{width:18px;height:18px}.assist-section-content{font-size:14px;line-height:1.9;color:var(--text);overflow-wrap:anywhere}.assist-section-content p{margin:3px 0}.assist-section-content ul{padding-left:20px}.assist-document-tools{display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);gap:5px;padding:10px 0}.assist-document-tools button{display:flex;align-items:center;gap:5px;min-height:38px;font-size:11px;color:var(--accent)}.assist-document-tools .ic{width:16px;height:16px}.assist-document-tools>span{font-size:9px;color:var(--secondary)}.assist-change{font-size:11px;line-height:1.7;color:var(--accent);margin:12px 0}.assistant-reminder,.assistant-return-chat{display:flex;align-items:center;gap:6px;min-height:44px;font-size:12px;color:var(--accent)}.assistant-reminder .ic{width:17px;height:17px}
.page[data-name="job"] .footer-actions{height:136px;--f7-toolbar-height:136px}.page[data-name="job"] .page-content{padding-bottom:152px!important}.assist-work-footer{width:100%;display:flex;flex-direction:column;gap:10px}.assist-followup{display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--line);border-radius:25px;padding:4px 5px 4px 14px}.assist-followup input{width:100%;flex:1;min-width:0;background:transparent;border:0;outline:none;color:var(--text);font-size:13px;height:37px}.assist-followup button{width:34px;height:34px;min-width:34px}.assist-save-row{display:flex;gap:10px}.assist-save-row>button{flex:1!important;min-height:40px!important;height:40px!important;font-size:13px!important}.assist-save-row>button.primary{flex:2!important}.assist-pick-row{border-bottom:1px solid var(--line);padding:10px 0}.assist-pick-top{display:flex;align-items:center;gap:8px}.assist-pick-toggle{display:flex;align-items:center;gap:10px;text-align:left;flex:1;min-width:0;min-height:52px}.assist-pick-toggle>span:last-child{flex:1;min-width:0}.assist-pick-toggle strong{font-size:14px;display:block}.assist-pick-toggle small{font-size:11px;color:var(--secondary);display:block;margin-top:4px}.assist-pick-check{width:23px;height:23px;border:1px solid var(--accent-weak);border-radius:7px;display:grid;place-items:center;flex:none;color:white}.assist-pick-toggle[aria-pressed="true"] .assist-pick-check{background:var(--accent);border-color:var(--accent)}.assist-pick-check .ic{width:16px;height:16px}.assist-pick-row details{margin-left:33px;font-size:12px;color:var(--secondary)}.assist-pick-row summary{cursor:pointer;min-height:35px;line-height:35px}.assist-pick-row details p{white-space:pre-wrap;line-height:1.8}.assist-source-search{display:flex;align-items:center;gap:8px;background:var(--bg);border:1px solid var(--line);border-radius:11px;padding:10px;margin:12px 0}.assist-source-search .ic{width:18px;height:18px}.assist-source-search input{flex:1;min-width:0;outline:none;border:0;background:transparent;color:var(--text);font-size:14px}.assist-sheet-note{font-size:12px;color:var(--secondary);line-height:1.8}.assist-sheet-quote{background:var(--soft);padding:12px;border-radius:12px;font-size:13px;line-height:1.8;white-space:pre-wrap}.assist-edit-field{display:block;margin:15px 0}.assist-edit-field>span{display:block;font-size:12px;font-weight:600;margin-bottom:8px}.assist-edit-field input,.assist-edit-field textarea{box-sizing:border-box;display:block;width:100%;border:1px solid var(--line);border-radius:11px;background:var(--bg);padding:12px;color:var(--text);font:inherit;font-size:15px;outline:none;line-height:1.8}.assist-edit-field textarea{min-height:140px;resize:vertical}.assist-edit-field input:focus,.assist-edit-field textarea:focus{border-color:var(--accent-line)}.assist-sheet-actions{display:flex;gap:10px;flex-wrap:wrap}.assist-sheet-actions button{font-size:12px;color:var(--accent);background:var(--soft);border:1px solid var(--line);border-radius:10px;padding:8px 12px;min-height:42px}.assist-sheet-actions button.assist-remove{color:#ac6853}.assist-source-snapshot{padding:15px 0;border-bottom:1px solid var(--line)}.assist-source-snapshot h3{font-size:14px;margin:0 0 8px}.assist-source-snapshot p{font-size:12px;line-height:1.8;white-space:pre-wrap;color:var(--secondary)}.assist-source-snapshot button{font-size:12px;color:var(--accent);min-height:42px}.assist-output-options{display:flex;gap:8px;flex-wrap:wrap;margin:18px 0}.assist-output-options button{padding:10px 13px;min-height:44px;border:1px solid var(--line);border-radius:12px;font-size:13px}.assist-output-options button[aria-pressed="true"]{border-color:var(--accent);background:var(--soft);color:var(--accent)}
@media(max-width:375px){.assistant-intro h1{font-size:19px}.assist-kind{padding:0 3px;font-size:10px}.assistant-document{padding:13px 12px 0}.assist-composer{padding:14px 11px 8px}.assist-document-tools>span{display:none}}

.sheet-modal.guardian-sheet.assistant-sheet{display:flex!important}.assistant-sheet .sheet-modal-inner{flex:1;min-height:0}.assist-sheet-actions button{width:auto;flex:1}.assist-edit-title{font-size:16px;margin:18px 0 8px}.assistant-sheet .sheet-footer{padding-bottom:max(24px,env(safe-area-inset-bottom))}

.assist-tone-actions{margin-bottom:10px}.assist-tone-actions button{flex:initial}

.assist-draft-status{display:flex;align-items:center;justify-content:space-between;gap:7px;margin-top:5px}.assist-draft-status .assistant-form-status{margin:0}.assist-draft-status button{font-size:10px;color:var(--secondary);min-height:36px}.assist-draft-status{min-height:36px}

.assistant-section-title>button,.assistant-section-title>span,.assist-draft-status>button{width:auto;flex:none}.assistant-section-title h3{white-space:nowrap}.assist-tool,.assist-kind{width:auto}.assist-compose-tools .assist-send{flex:none}

.assist-reply-text{flex:1;min-width:0;overflow-wrap:anywhere}.assist-reply-text p{font-size:13px;line-height:1.9;margin:0 0 6px}
.assist-working{font-size:12px;color:var(--secondary);margin:16px 0}
.assist-work-footer .assist-change{margin:0 0 8px}

.assist-request-summary p,.assist-section-heading h2,.assist-source-snapshot h3{min-width:0;overflow-wrap:anywhere}

.assist-mode-picker{display:flex;gap:8px;margin:4px 0 16px}.assist-mode-picker button{flex:1;min-height:44px;border:1px solid var(--line);border-radius:12px;font-size:14px}.assist-mode-picker [aria-pressed=true]{background:var(--soft);border-color:var(--accent);color:var(--accent)}.assist-input-card{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:20px 18px;margin:20px 0}.assist-input-card>small{color:var(--secondary)}.assist-input-card h1{font-size:21px;line-height:1.55;margin:10px 0 20px}.assist-input-card textarea{box-sizing:border-box;width:100%;font:inherit;font-size:16px;line-height:1.7;padding:12px;margin:8px 0 16px;border:1px solid var(--line);border-radius:10px;color:var(--text);background:var(--surface)}.assist-input-card button{min-height:44px}.assist-approval-preview{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:16px 0;margin-bottom:20px}.assist-approval-preview h2{font-size:18px}.assist-approval-preview h3{font-size:16px;font-weight:500}.assist-approval-preview p{font-size:16px;line-height:1.7;font-weight:400}.assist-answer-options{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:16px}.assist-answer-options button{width:auto;padding:8px 14px}

/* Kept from lifecycle.css (removed in v1): record-date sheet, draft rows, context note. */
.life-quiet{padding:17px 0;font-size:13px;line-height:1.8;color:var(--secondary)}.life-quiet button,.life-quiet small{display:block;font-size:12px;color:var(--accent);width:auto;margin-top:6px}.life-quiet small{color:var(--secondary)}.life-footnote{font-size:11px;color:var(--secondary);line-height:1.85;margin:20px 0 8px}.life-related{display:flex;align-items:center;gap:12px;min-height:69px;width:100%;border-bottom:1px solid var(--line);text-align:left;padding:12px 0;color:var(--text)}.life-related>.ic{width:20px;height:20px;color:var(--accent);flex:none}.life-related>span:nth-child(2),.life-related>span:first-child{flex:1;min-width:0}.life-related strong{display:block;font-size:14px;font-weight:550;line-height:1.7}.life-related small{display:block;font-size:11px;color:var(--secondary);margin-top:4px}.life-field{display:block;margin:16px 0}.life-field>span{display:block;font-size:12px;font-weight:550;margin-bottom:8px}.life-field input,.life-field select{box-sizing:border-box;display:block;width:100%;min-height:48px;padding:10px 12px;background:var(--bg);border:1px solid var(--line);border-radius:11px;color:var(--text);font:inherit;font-size:14px;outline:none}.life-field input:focus,.life-field select:focus{border-color:var(--accent-line)}.sheet-modal.guardian-sheet.lifecycle-sheet{display:flex!important}.lifecycle-sheet .sheet-modal-inner{flex:1;min-height:0}.lifecycle-sheet .sheet-footer{padding-bottom:max(24px,env(safe-area-inset-bottom))}.lifecycle-sheet .sheet-row{min-height:54px;font-size:14px}.life-status-note{font-size:12px;line-height:1.8;color:var(--accent);padding:12px;background:var(--soft);border-radius:12px}.record-date-button{width:auto;min-height:38px;font-size:11px;color:var(--accent)}.detail-meta{flex-wrap:wrap;row-gap:2px}.note-date-line{display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;margin:0 0 10px}.note-date-line>button{width:auto;min-height:40px;font-size:12px;color:var(--accent);text-align:left;padding:4px 0}.note-date-line>span{font-size:11px;color:var(--secondary);line-height:1.7;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Guardian: warm paper, forest ink, and restrained motion. Framework7 owns navigation. */
:root{--bg:#f5f3ec;--surface:#fffef9;--text:#293b34;--secondary:#657168;--line:#dddEd4;--accent:#365f50;--soft:#e8eee5;--purple:#786485;--orange:#9a683e}
body{background:#e6e8de;font-family:var(--font);-webkit-font-smoothing:antialiased}
.phone.dark{--bg:#202923;--surface:#29352d;--text:#edf0e7;--secondary:#bdc8bd;--line:#435247;--accent:#b8d4bc;--soft:#35473b}
#app{--f7-theme-color:var(--accent);--f7-color-primary:var(--accent);--f7-glass-shadow:none;--f7-glass-shadow-thumb:none;--f7-glass-bg-color:var(--surface);--f7-bars-text-color:var(--text);--f7-bars-border-color:transparent;--f7-navbar-link-color:var(--accent);--f7-navbar-bg-color:var(--bg);--f7-searchbar-input-bg-color:var(--surface);--f7-searchbar-input-text-color:var(--text);--f7-searchbar-placeholder-color:var(--secondary);--f7-list-chevron-icon-color:#839084;--f7-tabbar-labels-height:76px;--f7-navbar-height:64px;--f7-button-font-weight:600;--f7-button-border-radius:12px}
.phone.dark #app{--f7-theme-color:var(--accent);--f7-color-primary:var(--accent);--f7-navbar-link-color:var(--accent);--f7-searchbar-input-bg-color:var(--surface);--f7-searchbar-input-text-color:var(--text);--f7-glass-shadow:none;--f7-glass-shadow-thumb:none;--f7-glass-bg-color:var(--surface)}
.navbar .icon-btn{display:grid;place-items:center;border-radius:12px;color:var(--accent)}
.root-page .navbar .title{font-size:24px;letter-spacing:-.5px;font-weight:650;margin-left:20px;color:var(--text)}
.navbar .subtitle{font-size:12px;margin-top:6px;letter-spacing:0;line-height:1.4}
.navbar .title{color:var(--text);letter-spacing:-.2px}
.content-inset{padding:18px 20px 28px}
.page-content{scrollbar-width:none}
/* The navigation rail stays visually separate from content without floating shadows. */
#app .app-tabbar{height:76px;bottom:0;background:var(--surface);border-top:1px solid var(--line)}
#app .app-tabbar:before,#app .app-tabbar:after{display:none}
#app .app-tabbar .toolbar-inner{padding:3px 20px 15px;height:100%}
#app .app-tabbar .toolbar-pane{height:56px;border-radius:0;background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
#app .app-tabbar .tab-link{min-width:0;gap:1px;border-radius:0;font-size:12px;isolation:isolate;color:var(--secondary)}
#app .app-tabbar .tab-link-active{color:var(--accent);font-weight:650}
#app .app-tabbar .tab-link-active:before{content:'';position:absolute;top:5px;width:48px;height:29px;border-radius:10px;background:var(--soft);z-index:-1}
#app .app-tabbar .tab-link-highlight{display:none}
.app-tabbar .tabbar-label{font-size:11px;letter-spacing:.4px;margin-top:3px}
.shortcuts{grid-template-columns:repeat(auto-fit,minmax(56px,1fr));gap:8px;margin-top:20px;padding-bottom:17px;border-bottom:1px solid var(--line)}
.shortcut{font-size:12px;gap:9px;min-height:75px;color:var(--text)}
.shortcut-icon{width:48px;height:48px;border-radius:15px;background:#e1e8db;color:#4b6954}
.shortcut-icon.purple{background:#eae2ea;color:#786485}.shortcut-icon.orange{background:#eee3d2;color:#90633d}.shortcut-icon.blue{background:#e0e8e4;color:#4d756b}
.life-quiet{font-size:14px;padding:7px 0 4px;line-height:1.7}
.life-quiet button{min-height:40px;margin-top:0;font-size:12px}
/* Search, list, and filter controls share one rhythm. */
.searchbar-inline{margin:0;background:none;height:48px;padding:0;box-shadow:none;--f7-searchbar-height:48px}
.searchbar-inline .searchbar-inner{padding:0;height:48px}
.searchbar-inline .searchbar-input-wrap{height:48px;border:1px solid var(--line);border-radius:12px;background:var(--surface);box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none}
.searchbar-inline input[type=search]{height:46px;border-radius:12px;font-size:14px;box-shadow:none;background:transparent}
.searchbar-inline .searchbar-input-wrap:focus-within{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent)}
.filter-heading{gap:8px;margin:14px 0 2px}
.filter-heading>.icon-btn{width:44px;height:44px;flex:none;color:var(--accent);border-radius:10px}
.filter-heading .segmented{background:transparent;padding:3px 0;gap:2px;min-width:0;border-bottom:1px solid var(--line);border-radius:0}
.filter-heading .segmented .button{min-width:0;min-height:40px;height:40px;padding:0 7px;border-radius:8px;box-shadow:none;font-size:13px;font-weight:500;color:var(--secondary)}
.filter-heading .segmented .button-active{background:var(--soft);color:var(--accent);font-weight:650}
.journal-list-meta{min-height:40px;gap:8px;margin:2px 0 0}.journal-list-meta .countline{font-size:11px;color:var(--secondary)}.journal-scope-control{font-size:12px;color:var(--secondary)}
.app-record-list{margin:4px 0 16px!important}
.app-record-list ul{background:transparent}
.app-record-list ul:before,.app-record-list ul:after{display:none}
.app-record-list .item-content{padding-left:0;min-height:89px}
.app-record-list .item-inner{padding:16px 18px 16px 0;min-width:0;border-bottom:1px solid var(--line)}
.app-record-list .item-inner:after{display:none}
.app-record-list .item-media{align-self:flex-start;padding-top:19px}
.app-record-list .item-title{font-size:15px;line-height:1.6;white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.app-record-list .item-subtitle{font-size:12px!important;line-height:1.6;margin-top:3px}
.app-record-list .item-text{font-size:12px!important;line-height:1.7;margin-top:5px;max-height:1.7em!important;color:var(--secondary)}
.app-record-list .item-after{color:var(--secondary);font-size:10px;margin-top:3px}
.type-mark{width:38px;height:42px;border-radius:10px;background:var(--soft)}.type-mark.divination{background:#eae2ea;color:#786485}.type-mark.plan{background:#e5e9df;color:#647347}
/* Documents, local panels, and assistant work all use the same paper surface. */
.footer-actions{background:var(--surface);border-top:1px solid var(--line);box-shadow:none}
.footer-actions .toolbar-inner{padding:12px 20px 20px;gap:10px}
.footer-actions:before,.footer-actions:after{display:none}
.button.primary,.primary.button-fill{background:var(--accent);color:var(--surface);box-shadow:none}
.button.secondary{background:var(--soft);color:var(--accent);box-shadow:none}
.record-title{font-size:26px;line-height:1.55;letter-spacing:-.3px;margin-bottom:18px}
.detail-meta{font-size:12px;gap:10px}.type-chip{font-size:11px;border-radius:5px;padding:3px 7px}
.record-body{font-size:16px;line-height:1.95}.life-status{font-size:11px;border-radius:5px}
.guardian-sheet{border-radius:24px 24px 0 0;box-shadow:0 -10px 50px #17281c15}
.guardian-sheet .sheet-heading{background:var(--surface)}
.guardian-sheet .sheet-heading h2{font-size:18px;letter-spacing:-.3px}
.guardian-sheet .swipe-handler{height:20px}.swipe-handler span{background:#a8b2a7;width:32px;height:3px}
.sheet-body{padding:16px 22px 24px}.sheet-row{line-height:1.6;min-height:60px}.sheet-row small{font-size:12px;line-height:1.7}
.sheet-footer{padding:12px 22px 24px;gap:10px;background:var(--surface)}
.journal-scope-options label{min-height:52px}.journal-scope-options legend{font-size:12px;color:var(--secondary)}
.form-list .item-label{font-size:13px;margin-bottom:9px}.form-list .item-input-wrap input,.form-list .item-input-wrap textarea,.form-list .item-input-wrap select{background:var(--bg);border:1px solid var(--line);border-radius:10px;padding:12px;min-height:46px;font-size:15px;color:var(--text)}
.form-list .item-input-wrap:after{display:none}.form-list .item-input-wrap:focus-within input,.form-list .item-input-wrap:focus-within textarea,.form-list .item-input-wrap:focus-within select{border-color:var(--accent)}
.assistant-intro{margin:4px 0 22px;gap:14px}.assistant-intro h1{font-size:23px;line-height:1.5;font-weight:600;letter-spacing:-.4px}.assistant-intro small{font-size:12px}.assistant-intro p{font-size:13px;line-height:1.8}
.assist-composer{border:1px solid var(--accent-weak);box-shadow:0 4px 14px #263b2905;border-radius:16px;padding:17px 16px 10px}.assist-composer textarea{font-size:16px;line-height:1.85;height:114px}.assist-composer textarea::placeholder{color:var(--secondary)}
.assist-examples{gap:8px;margin:22px 0}.assist-examples>span{font-size:12px}.assist-examples button{border:0;background:var(--soft);color:var(--accent);border-radius:9px;min-height:44px;font-size:12px}
.assistant-form-status,.assistant-demo-note{font-size:11px;line-height:1.8}.assist-source-suggestion{border-left-color:#abbba0;padding-left:14px}.assist-source-suggestion small,.assist-source-suggestion p{font-size:12px}.assist-source-suggestion strong{font-size:14px}
.assistant-job-list .item-title{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.65;font-size:14px}.assistant-job-list .item-text,.assistant-job-list .item-subtitle{font-size:12px}
.assistant-document{border-radius:13px;border-color:var(--line);padding:18px 18px 0}.assist-section-content{font-size:15px;line-height:1.9}.assist-section-heading>h2{font-size:15px}.assist-reply p{font-size:14px}.assist-document-meta{font-size:11px}
.note-save-strip{font-size:12px}.note-save-state{font-size:11px}.note-writing-footer{font-size:11px;color:var(--secondary)}.note-text-editor .text-editor-toolbar{border-radius:10px;box-shadow:none;background:var(--bg)}.note-text-editor .text-editor-button{min-width:40px!important;width:40px!important;height:40px}.note-text-editor .text-editor-content.is-empty:before,.page[data-name=editor] input.note-title::placeholder{color:var(--secondary)}
.empty{padding:44px 16px;font-size:14px;line-height:1.85}.empty strong{font-size:18px;letter-spacing:-.2px}.empty .ic{color:var(--accent);opacity:.65}.life-footnote{font-size:12px;line-height:1.8}
.message-bubble{font-size:15px;line-height:1.8;box-shadow:none}.messagebar .toolbar-inner{background:var(--surface);border-top:1px solid var(--line)}.message-footer button{min-height:44px;font-size:12px}.chat-suggestions button{min-height:44px;border-radius:8px;background:var(--soft);border-color:transparent;font-size:12px}.messagebar textarea{font-size:16px}
/* Immediate feedback, without continuous motion while reading or typing. */
.navbar .icon-btn,.shortcut,.item-link,.sheet-row,.journal-scope-control,.filter-heading .button,.assist-examples button,.button,.tab-link{transition:background-color 160ms ease,color 160ms ease,opacity 160ms ease,transform 160ms ease}
.navbar .icon-btn:active,.shortcut:active,.button:active,.assist-examples button:active{transform:scale(.97)}
.item-link:active,.sheet-row:active{background:var(--soft)}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
@media(hover:hover){.navbar .icon-btn:hover,.sheet-row:hover,.journal-scope-control:hover{background:var(--soft)}.shortcut:hover .shortcut-icon{box-shadow:0 0 0 3px var(--surface)}.item-link:hover{background:color-mix(in srgb,var(--soft) 65%,transparent)}}
.phone{border-radius:29px;box-shadow:0 24px 70px #2b241d18,0 0 0 1px var(--line);height:min(880px,calc(100dvh - 56px));min-height:560px}
@media(min-width:761px) and (max-width:900px){.phone{width:420px;height:min(880px,calc(100dvh - 48px))}}
@media(max-width:760px){.phone{width:100%;height:100dvh;min-height:0;border-radius:0;box-shadow:none}}
@media(max-width:360px){.content-inset{padding-left:16px;padding-right:16px}.root-page .navbar .title{margin-left:16px;font-size:23px}.filter-heading{gap:5px}.filter-heading .segmented .button{font-size:12px;padding:0 4px}.assistant-intro h1{font-size:21px}.journal-list-meta .countline{font-size:10px}}
@media(max-height:650px){.phone{min-height:0}.sheet-modal.guardian-sheet{max-height:94%}.sheet-body{padding-top:8px;padding-bottom:16px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.001s!important;transition-duration:.001s!important;scroll-behavior:auto!important}}

.page-content::-webkit-scrollbar{display:none}
.phone.dark .assist-send,.phone.dark .assist-followup button{color:var(--bg)}
.phone.dark .type-mark.plan{background:var(--soft);color:var(--accent)}
.phone.dark .assist-composer{border-color:var(--accent-weak)}.phone.dark .assist-composer textarea{background:transparent}

/* Short threads must not scroll their only message behind the navbar. */
.messages-content{background:var(--bg)}.messages-content .messages{min-height:0}.messages-content .message{flex-shrink:0}

.message-record p{white-space:normal;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;line-height:1.8;max-height:5.4em}

.shortcuts:empty{display:none}

/* Content, rather than thumbnails, supplies the card's visual structure. */
.content-card-grid{display:flex;flex-wrap:wrap;gap:14px;align-items:stretch;margin:8px 0 24px!important}
.content-card{--cc-bg:#faedc2;--cc-ink:#403d28;--cc-muted:#71674b;--cc-accent:#584b24;--cc-wash:#f2cb61;position:relative;isolation:isolate;min-width:0;overflow:hidden;border-radius:18px;background:var(--cc-bg);color:var(--cc-ink);padding:12px 16px 10px;box-shadow:0 1px 0 #3140320d}
.content-card:before{content:'';position:absolute;z-index:-1;width:145px;height:100px;right:-56px;top:-50px;border-radius:50%;background:var(--cc-wash);opacity:.46;pointer-events:none;transform:rotate(-20deg)}
.content-card.cc-note-1{--cc-bg:#e6e0f7;--cc-ink:#3d355b;--cc-muted:#69617d;--cc-accent:#514771;--cc-wash:#bbb1e6}
.content-card.cc-plan{--cc-bg:#d8eee4;--cc-ink:#234b3e;--cc-muted:#526e61;--cc-accent:#275642;--cc-wash:#8dbb9a;grid-column:1/-1}
.content-card.cc-compare{--cc-bg:#e3e2f6;--cc-ink:#383458;--cc-muted:#655f7c;--cc-accent:#514983;--cc-wash:#b6aedc;grid-column:1/-1}
.content-card.cc-message{--cc-bg:#f7ddcd;--cc-ink:#503a30;--cc-muted:#806150;--cc-accent:#77523b;--cc-wash:#efb28c}
.content-card.cc-daily{--cc-bg:#e7eee3;--cc-ink:#344535;--cc-muted:#61705d;--cc-accent:#466144;--cc-wash:#c2d4ac}
.content-card.cc-divination{--cc-bg:#265e50;--cc-ink:#fbf5df;--cc-muted:#d7e6cf;--cc-accent:#fff3c9;--cc-wash:#9dc3a8}
.content-card.cc-divination:before{width:160px;height:160px;right:-84px;top:15px;opacity:.15}
.content-card.cc-archived{--cc-bg:var(--soft);--cc-ink:var(--text);--cc-muted:var(--secondary);--cc-accent:var(--accent);--cc-wash:var(--line)}
.cc-top{display:flex;align-items:center;justify-content:space-between;gap:5px;min-height:34px;color:var(--cc-muted);font-size:11px;line-height:1.6}
.cc-top>span:first-child{flex:1;min-width:0}.cc-menu{display:grid;place-items:center;flex:none;width:32px;height:34px;color:var(--cc-ink);margin-right:-7px}.cc-menu .ic{width:19px;height:19px}
.content-card .cc-title{display:block;width:100%;text-align:left;min-height:44px;padding:3px 0 8px;color:var(--cc-ink)}
.content-card .cc-title .item-title{color:inherit;font-size:19px;font-weight:650;line-height:1.55;letter-spacing:-.4px;margin:0;white-space:normal;overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.cc-writing{min-height:79px;margin:4px 0 16px}.cc-writing p{font-size:13px;line-height:1.9;margin:0 0 10px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;white-space:pre-line;overflow-wrap:anywhere}
.cc-writing .cc-lead{font-size:15px;line-height:1.85;color:var(--cc-ink)}
.cc-excerpt{font-size:13px;line-height:1.8;margin:12px 0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.cc-actions{display:flex;gap:7px;align-items:center;justify-content:space-between;border-top:1px solid color-mix(in srgb,var(--cc-ink) 15%,transparent);padding-top:7px;margin-top:12px}
.cc-actions button{font-size:12px;min-height:42px;width:auto;flex:1;white-space:nowrap;padding:7px 8px;border-radius:10px}
.cc-text-action{font-size:12px;min-height:42px;width:auto;color:var(--cc-accent);text-align:left;padding:0}
.cc-actions .cc-text-action{text-align:center}.cc-main-action{background:var(--cc-accent);color:var(--cc-bg)}
.cc-main-action:active,.cc-text-action:active,.cc-stop-edit:active{opacity:.7}
.cc-oracle{display:flex;align-items:center;gap:18px;padding:12px 0 5px}.cc-oracle strong{display:block;font-size:21px;font-weight:600;line-height:1.5}.cc-oracle small{display:block;font-size:11px;color:var(--cc-muted);margin-top:4px}
.cc-hex{display:grid;gap:5px;width:48px;flex:none}.cc-hex>span{display:flex;justify-content:space-between;gap:7px;height:5px}.cc-hex i{background:currentColor;flex:1;border-radius:1px}.cc-hex .solid{gap:0}.cc-followup{border-top:1px solid #ffffff35;margin:16px 0 6px;padding-top:12px}.cc-followup small{font-size:11px;color:var(--cc-muted)}.cc-followup p{font-size:13px;line-height:1.8;margin:5px 0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cc-itinerary{margin:3px 0 10px}.cc-stop{display:flex;align-items:flex-start;position:relative;gap:12px;padding:12px 0;min-height:64px}.cc-stop+.cc-stop{border-top:1px solid color-mix(in srgb,var(--cc-ink) 13%,transparent)}.cc-time{flex:none;width:51px;padding-top:2px;font-size:17px;font-weight:600;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.cc-stop>div{flex:1;min-width:0}.cc-stop strong{display:block;font-size:14px;font-weight:600;margin-bottom:3px}.cc-stop p{font-size:13px;line-height:1.8;margin:0;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}.cc-stop-edit{width:36px;min-width:36px;min-height:44px;color:var(--cc-accent);border-radius:10px;background:#ffffff40;margin-top:-6px}.cc-stop-edit .ic{width:18px;height:18px}
.cc-comparison{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));margin:7px 0 13px;gap:12px}.cc-comparison>div{min-width:0;padding:10px 0}.cc-comparison>div+div{border-left:1px solid color-mix(in srgb,var(--cc-ink) 20%,transparent);padding-left:12px}.cc-letter{font:500 34px/1 Georgia,serif;color:var(--cc-accent);display:block;margin-bottom:12px}.cc-comparison h4{font-size:14px;line-height:1.6;margin:0 0 7px}.cc-comparison p{font-size:12px;line-height:1.8;margin:0;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
.cc-checklist{padding:4px 0 8px}.cc-checklist label{display:flex;gap:9px;align-items:flex-start;min-height:44px;font-size:14px;line-height:1.7;padding:7px 0;cursor:pointer}.cc-checklist input{appearance:auto!important;position:static!important;display:block!important;flex:none;width:19px;height:19px;margin:3px 0 0;accent-color:var(--cc-accent)}.cc-checklist span{min-width:0;overflow-wrap:anywhere}.cc-checklist input:checked+span{text-decoration:line-through;color:var(--cc-muted)}.cc-task-count{font-size:12px;font-weight:600;color:var(--cc-ink);white-space:nowrap}
.cc-draft-note{font-size:11px;line-height:1.6;color:var(--cc-muted);margin:9px 0}.cc-help-source{font-size:17px;font-weight:600;line-height:1.7;color:var(--text);margin:0 0 10px}
.content-card-grid .hidden-by-searchbar{display:none!important}
.message-content-card{width:100%;max-width:none!important;align-self:stretch!important;margin:15px 0!important}
.message-content-card .message-content{width:100%;max-width:none;display:block}
.message-content-card .content-card{width:100%;padding:12px 16px 10px;border-radius:17px;max-width:none}
.message-content-card .cc-title .item-title{font-size:20px;-webkit-line-clamp:2}
.cc-compact .cc-writing{min-height:0;margin-bottom:12px}.cc-compact .cc-writing p{-webkit-line-clamp:3}.cc-compact .cc-oracle{padding:7px 0}.cc-compact .cc-followup{margin-top:8px}.chat-closed-work{font-size:12px;color:var(--secondary);padding:12px 4px}.chat-closed-work button{font-size:12px;color:var(--accent);min-height:44px;width:auto}
.phone.dark .content-card{--cc-bg:#45412e;--cc-ink:#f3ead1;--cc-muted:#cec5a7;--cc-accent:#f3d88c;--cc-wash:#827543}.phone.dark .cc-note-1,.phone.dark .cc-compare{--cc-bg:#3c3555;--cc-ink:#eee9ff;--cc-muted:#c8bfdc;--cc-accent:#d6c6f6;--cc-wash:#8372b4}.phone.dark .cc-plan{--cc-bg:#294d40;--cc-ink:#e7f3e6;--cc-muted:#bed8c8;--cc-accent:#c4dfab;--cc-wash:#78a381}.phone.dark .cc-message{--cc-bg:#503c31;--cc-ink:#ffe8d6;--cc-muted:#dbc1ad;--cc-accent:#f5c6a1;--cc-wash:#a37a5d}.phone.dark .cc-daily{--cc-bg:#374832;--cc-ink:#e8f1df;--cc-muted:#c4d1b7;--cc-accent:#d3e3be;--cc-wash:#7b9665}.phone.dark .cc-divination{--cc-bg:#205546;--cc-ink:#fff4d7;--cc-muted:#cbdcca;--cc-accent:#fae3a7;--cc-wash:#8da66c}.phone.dark .cc-archived{--cc-bg:var(--soft);--cc-ink:var(--text);--cc-muted:var(--secondary);--cc-accent:var(--accent);--cc-wash:var(--line)}
.phone.large-font .cc-writing p,.phone.large-font .cc-excerpt,.phone.large-font .cc-stop p,.phone.large-font .cc-checklist label{font-size:16px}.phone.large-font .content-card-grid{grid-template-columns:minmax(0,1fr)}
@media(max-width:370px){.content-card .cc-title .item-title{font-size:21px}.cc-writing{min-height:0}.cc-writing p{font-size:14px}.cc-stop{gap:9px}.cc-time{width:47px;font-size:16px}}
@media(min-width:540px) and (max-width:760px){.content-card-grid{gap:18px}.content-card{padding:15px 20px 12px}}
@media(prefers-reduced-motion:no-preference){.cc-main-action,.cc-text-action{transition:background-color .16s ease,opacity .16s ease,transform .16s ease}}

.content-card-grid>.content-card{flex:1 1 calc(50% - 10px);display:flex;flex-direction:column}.content-card-grid>.cc-plan,.content-card-grid>.cc-compare,.content-card-grid>.cc-divination{flex-basis:100%}.content-card-grid .cc-actions{margin-top:auto}.content-card-grid .cc-title{flex:none}.phone.large-font .content-card-grid>.content-card{flex-basis:100%}@media(max-width:370px){.content-card-grid>.content-card{flex-basis:100%}}





/* Root pages are destinations; conversation controls live only in the thread subpage. */
.page[data-name=chat],.page[data-name=journal]{--f7-navbar-height:78px;--bg:#fcfcf8;--f7-page-bg-color:#fcfcf8}
.phone.dark .page[data-name=chat],.phone.dark .page[data-name=journal]{--bg:#202923;--f7-page-bg-color:#202923}
.page[data-name=chat] .navbar .title,.page[data-name=journal] .navbar .title{font-size:33px;line-height:1.25;letter-spacing:-1px;font-weight:700}
.page[data-name=journal] .content-inset{padding-top:4px}
.journal-list-meta{margin:0 0 12px;min-height:44px;align-items:center}
.journal-list-meta .countline{font-size:12px;text-align:left}
.journal-filter-control{display:flex;align-items:center;gap:7px;min-height:44px;width:auto;padding:5px 10px;border-radius:10px;font-size:13px;color:var(--accent)}
.journal-filter-control .ic{height:19px;width:19px}.journal-filter-control.is-filtered{background:var(--soft)}
.page[data-name=journal] .searchbar{margin:8px 0}
.content-card .cc-title .item-title{font-size:21px;line-height:1.5;font-weight:650}
.content-card .cc-lead{font-size:15px}.cc-actions button{min-height:44px;font-size:13px}.cc-main-action{border-radius:24px!important}.cc-menu{width:40px;height:40px}
.cc-itinerary{background:color-mix(in srgb,var(--cc-bg) 60%,var(--surface));border-radius:14px;padding:4px 12px;margin:8px 0 18px}.cc-stop{gap:15px}.cc-time{font-size:21px;width:58px}.cc-stop p{font-size:14px}.cc-stop-edit{width:42px;min-width:42px}.cc-oracle{gap:22px}.cc-hex{width:60px;gap:6px}.cc-hex>span{height:6px}
/* Large character scene belongs to the selected conversation, with its own back and composer. */
.page[data-name=thread]>.thread-content{padding-bottom:88px;background:var(--surface)}
.thread-scene{position:relative;isolation:isolate;height:clamp(230px,60vw,300px);overflow:hidden;background:#bda879}
.thread-scene.dylan:before{content:'';position:absolute;inset:0;z-index:-2;background:url('assets/room/room-empty.png') center 42%/cover}
.thread-scene.dylan:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,#fcf2d6c9 0%,#eed9b375 34%,transparent 65%)}
.thread-scene>img{position:absolute;right:-55px;bottom:-24px;height:calc(100% + 24px);max-width:none;pointer-events:none}
.thread-greeting{position:relative;z-index:2;padding:29px 0 0 18px;width:46%;max-width:230px}
.thread-greeting>span{display:block;padding:15px 17px;background:#fffff5ed;border:1px solid var(--accent-weak);border-radius:21px 21px 21px 4px;color:var(--accent);font-size:20px;font-weight:600;line-height:1.6;letter-spacing:-.4px;box-shadow:0 3px 12px #4439230a}.thread-scene.oracle{background:#d6c9e8}
.thread-scene.oracle:before{content:'';position:absolute;width:290px;height:290px;right:-45px;bottom:-135px;border-radius:50%;background:#c4ca93;opacity:.6}
.thread-scene.oracle:before{background:#aa9acb}
.thread-scene-mark{position:absolute;right:48px;bottom:35px;font-size:100px;font-weight:400;color:#536a43;opacity:.6}.thread-scene.oracle .thread-scene-mark{color:#665578}
.thread-conversation{position:relative;border-radius:24px 24px 0 0;margin-top:-18px;padding:15px 0 10px;background:var(--surface);z-index:2;min-height:150px}
.thread-history .thread-conversation{margin-top:0;border-radius:0}
.thread-conversation .messages{min-height:0;padding:0 18px;background:none}.thread-conversation .message{flex-shrink:0}.thread-conversation .message-content-card{margin:10px 0!important}
.thread-conversation .chat-suggestions{padding:0 20px;margin:12px 0 3px}.chat-demo-note{font-size:11px;line-height:1.8;margin:8px 20px 16px;color:var(--secondary)}
.page[data-name=thread]>.messagebar{bottom:0;background:var(--surface);--f7-messagebar-height:76px}
.page[data-name=thread]>.messagebar .toolbar-inner{padding:8px 14px 18px;gap:10px;border-top:1px solid var(--line)}
.page[data-name=thread] .messagebar-area{min-width:0;border:1px solid var(--line);border-radius:22px;background:var(--bg)}
.page[data-name=thread] .messagebar textarea{font-size:16px;min-height:44px;line-height:1.5;color:var(--text);background:none}
.page[data-name=thread] .send-link{display:grid;place-items:center;min-width:42px;width:42px;height:42px;background:var(--accent);color:var(--surface);border-radius:50%}
.page[data-name=thread] .send-link .ic{width:21px;height:21px}.phone.dark .thread-greeting>span{background:#293d33ed;color:#f4efdf;border-color:#728372}.phone.dark .thread-scene.dylan:after{background:linear-gradient(90deg,#172f2566,transparent 65%)}.phone.dark .thread-scene.oracle{background:#514462}
@media(max-width:370px){.page[data-name=chat] .navbar .title,.page[data-name=journal] .navbar .title{font-size:31px}.thread-greeting{padding-left:14px;width:48%}.thread-greeting>span{font-size:18px;padding:13px}.thread-scene>img{right:-68px}.cc-time{width:53px;font-size:19px}}
@media(min-width:540px) and (max-width:760px){.thread-scene>img{height:calc(100% + 50px);right:5px}.thread-greeting{padding-left:30px;padding-top:38px;max-width:295px}.thread-greeting>span{font-size:27px;padding:20px 24px}.thread-conversation>.messages{max-width:620px;margin:auto}}

.cc-writing .cc-message-preview{-webkit-line-clamp:5;line-height:1.8;font-size:14px;white-space:pre-line;margin-bottom:0}

@media(min-width:540px) and (max-width:760px) and (max-height:760px){.thread-scene{height:230px}}

.page[data-name=home]{--f7-navbar-height:56px}


.home-scene{height:228px}.home-scene>img{object-position:center 30%}.home-scene h1{font-size:21px;padding:12px 15px;top:18px}.home-room-link{font-size:13px;bottom:33px}.home-day-content{padding:18px}
.daily-small-actions{display:flex;gap:7px;margin:16px 0}
.daily-small-actions>button{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;min-height:48px;font-size:12px;color:var(--accent);background:var(--surface);border:1px solid var(--line);border-radius:13px}
.daily-small-actions .ic{width:18px;height:18px;flex:none}
.avatar.oracle img{width:100%;height:100%;object-fit:contain;position:static}
.companion-console{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 110px;gap:0;background:var(--soft);border:1px solid var(--accent-weak);border-radius:20px;overflow:hidden;color:var(--accent)}.companion-console.oracle{background:#e9e1ef;border-color:#d9cde4;color:#54415f}
.companion-info{padding:16px 0 14px 17px;min-width:0;position:relative;z-index:1}.companion-caption{display:block;font-size:10px;line-height:1.65;opacity:.8}.companion-info h2{font-size:23px;margin:4px 0 12px;line-height:1.3;font-weight:650}
.companion-skills{display:flex;gap:5px;flex-wrap:wrap;margin-top:6px}
.companion-skills>button{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:33px;padding:5px 8px;border-radius:8px;background:#fffdf680;font-size:11px;color:inherit}
.companion-art{position:relative;overflow:hidden;min-height:174px;align-self:stretch}.companion-art:before{content:'';position:absolute;width:150px;height:150px;border-radius:50%;background:#ffffff50;left:-4px;bottom:12px}
.companion-art img{position:absolute;width:140px;max-width:none;right:-14px;bottom:0}.companion-console.dylan .companion-art img{width:210px;right:-61px;bottom:-1px}
.companion-chat-actions{display:flex;gap:9px;margin:10px 0 22px}
.companion-chat-actions>button{display:flex;align-items:center;justify-content:center;gap:8px;min-height:44px;border-radius:12px;font-size:13px;flex:1;background:var(--surface);color:var(--accent);border:1px solid var(--line)}
.companion-chat-actions .continue-chat{background:var(--accent);color:var(--surface);border-color:var(--accent)}.companion-chat-actions .ic{width:18px;height:18px}
.page[data-name=chat] .content-inset{padding-top:0}.page[data-name=chat] .headtext{font-size:12px}
.journal-write-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:16px 17px;background:#e4ecd9;border-radius:18px;color:#344b37}
.journal-write-bar>div>span{display:block;font-size:11px;letter-spacing:1px;margin-bottom:5px}.journal-write-bar strong{display:block;font-size:17px;font-weight:600}
.journal-write-bar button{display:flex;align-items:center;gap:6px;min-height:43px;padding:9px 12px;border-radius:12px;background:#42634d;color:#fffef5;font-size:12px}.journal-write-bar .ic{width:18px;height:18px}
.journal-create-row{display:flex;gap:7px;margin:10px 0 25px}.journal-create-row button{flex:1;min-height:40px;border:1px solid var(--line);border-radius:10px;font-size:12px;color:var(--accent);background:var(--surface)}
.journal-draft-access{min-height:40px;font-size:12px;color:var(--secondary);padding:0 3px}
.journal-day{margin:10px 0 22px}.journal-day-heading{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.journal-day-heading>span{font-size:11px;color:var(--secondary)}.journal-day-heading b{font-size:26px;letter-spacing:-1px;margin-right:6px;color:var(--text);font-weight:550}.journal-day-heading button{min-height:40px;font-size:11px;color:var(--secondary)}
.journal-day-items{padding-left:11px;border-left:2px solid var(--accent-weak);margin-left:13px}
.journal-entry{position:relative;display:block;width:100%;padding:13px 16px;margin:0 0 9px;background:#e7e1ef;color:#4c435e;border-radius:0 17px 17px 17px;text-align:left;overflow:hidden}
.journal-entry.plan{background:#deece2;color:#345947}.journal-entry.divination{background:#f1e6ca;color:#60512f}
.journal-entry-kind{font-size:10px;opacity:.8;display:block;margin-bottom:6px}
.journal-entry strong{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;font-size:17px;line-height:1.5;font-weight:600;padding-right:10px}
.journal-entry p{font-size:13px;line-height:1.8;margin:7px 0 1px;padding-right:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;opacity:.85}
.journal-entry-arrow{position:absolute;right:10px;top:10px;opacity:.65;font-size:17px}.journal-more-day{min-height:38px;font-size:12px;color:var(--accent)}
.journal-empty{padding:28px 15px;text-align:center;line-height:1.8}.journal-empty p{font-size:13px;color:var(--secondary)}
.assistant-person img[src^="assets/agents/"]{position:static;width:100%;height:100%;object-fit:contain}
.page[data-name=thread] .thread-mascot{height:210px;right:0;bottom:-18px}
.page[data-name=thread] .thread-recent .thread-scene{height:165px}
.page[data-name=thread] .thread-recent .thread-greeting{padding-top:20px}
.page[data-name=thread] .thread-recent .thread-greeting>span{font-size:18px;padding:12px 15px}
button:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}
.phone.dark .companion-console{background:var(--soft);border-color:var(--accent-weak);color:var(--text)}.phone.dark .companion-console.oracle{background:#51435e;border-color:#756080;color:#eee4fa}
.phone.dark .companion-skills>button{background:#ffffff12}
.phone.dark .journal-write-bar{background:#394d37;color:#ebefd9}
.phone.dark .journal-entry{background:#453d54;color:#e9e0f4}.phone.dark .journal-entry.plan{background:#345044;color:#dfeee4}.phone.dark .journal-entry.divination{background:#5b5036;color:#eee1bd}
.phone.large-font .journal-entry p{font-size:15px}
@media(max-width:370px){.companion-console{grid-template-columns:minmax(0,1fr) 91px}.companion-info{padding-left:13px}.companion-art img{width:124px;right:-20px}.companion-console.dylan .companion-art img{width:190px;right:-65px}.companion-skills>button{font-size:11px;padding:5px 7px;gap:5px}.daily-small-actions{gap:5px}.daily-small-actions>button{font-size:11px;gap:4px}.daily-small-actions .ic{width:16px;height:16px}.journal-write-bar{padding:14px 12px}.journal-write-bar strong{font-size:15px}.journal-write-bar button{padding:8px 10px}.journal-create-row{gap:5px}}
@media(min-width:540px) and (max-width:760px){.home-scene{height:228px}.home-scene h1{font-size:24px;top:22px}.home-day-content{padding:22px 26px}.companion-console{grid-template-columns:minmax(0,1fr) 155px}.companion-info{padding:20px 0 18px 22px}.companion-art img{width:151px;right:0}.companion-console.dylan .companion-art img{width:222px;right:-45px}.companion-skills>button{font-size:12px;min-height:38px;padding:7px 12px}}
@media(prefers-reduced-motion:no-preference){.companion-skills>button,.companion-chat-actions>button,.daily-small-actions>button{transition:transform .15s ease,background .15s ease}.companion-skills>button:active,.companion-chat-actions>button:active{transform:scale(.98)}}

/* Human companions show personality; the animal pet has game mood and affinity. */
.companion-info h2{margin-bottom:5px}
.companion-mood{display:flex;align-items:center;gap:5px;min-height:35px;text-align:left;color:inherit;font-size:11px;line-height:1.7;margin:0 0 9px;padding:0}
.mood-dot{width:6px;height:6px;flex:none;border-radius:50%;background:#75845c}
.companion-interests{grid-column:1/-1;display:flex;align-items:center;gap:7px;padding:9px 14px;border-top:1px solid #7074491c;background:#ffffff55;font-size:11px;flex-wrap:wrap}
.companion-interests>span:first-child{font-size:10px;opacity:.75}
.interest-tag{padding:4px 7px;border-radius:7px;background:#ffffff68}
.companion-interests button{margin-left:auto;min-height:32px;font-size:10px;color:inherit}
.avatar.oracle img{object-fit:cover;object-position:center 15%}
.companion-console:not(.dylan) .companion-art img{width:125px;right:-7px;bottom:0}
.companion-art{min-height:204px}
.companion-skills>button{min-height:35px;width:auto}
.companion-interests button{width:auto}
.journal-write-bar>button,.journal-day-heading>button,.journal-draft-access{width:auto;flex-shrink:0}
.journal-write-bar>div{flex:1;min-width:0}
.journal-day-heading>span{flex-shrink:0}
.phone.dark .companion-interests{background:#ffffff10}.phone.dark .interest-tag{background:#ffffff15}
@media(max-width:370px){.companion-console:not(.dylan) .companion-art img{width:117px;right:-19px}.companion-mood{font-size:10px}.companion-interests{gap:5px;padding:8px 10px}.companion-skills>button{font-size:10px}}

.notebook-shelf-heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:6px 0 24px}
.notebook-shelf-heading>div>span{font-size:11px;color:var(--secondary);letter-spacing:.5px}
.notebook-shelf-heading h1{font-size:20px;line-height:1.5;font-weight:550;margin:5px 0 0;letter-spacing:-.5px}
.notebook-write-today{display:flex;align-items:center;gap:5px;width:auto;min-width:85px;min-height:42px;padding:8px 11px;border:1px solid var(--line);background:var(--surface);border-radius:12px;font-size:12px;color:var(--accent);flex-shrink:0}
.notebook-write-today .ic{width:16px;height:16px}
.notebook-shelf{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px 19px;padding:0 3px 18px}
.notebook-item{min-width:0}
.notebook-cover,.book-open-heading,.book-mini-cover{--book-bg:#4b7060;--book-ink:#fbf1d6;--book-mark:#c8d29c}
.apricot{--book-bg:#ecc095;--book-ink:#68462e;--book-mark:#9b633f}
.lavender{--book-bg:#d5c9e5;--book-ink:#4e3f64;--book-mark:#8c77a3}
.notebook-cover{position:relative;isolation:isolate;display:flex;flex-direction:column;align-items:flex-start;width:100%;height:239px;padding:21px 17px 17px 23px;background:var(--book-bg);color:var(--book-ink);border-radius:5px 14px 14px 5px;text-align:left;box-shadow:inset 1px 0 0 #ffffff3b,inset -1px 0 0 #00000012,2px 6px 11px #30422b14;overflow:visible}
.notebook-cover:before{content:'';position:absolute;inset:0;z-index:-1;border-radius:inherit;background:linear-gradient(90deg,#00000017,transparent 11%,#ffffff10 14%,transparent 17%)}
.notebook-cover:after{content:'';position:absolute;z-index:-2;left:4px;right:1px;bottom:-5px;height:16px;border:1px solid #c9c9b7;border-radius:0 7px 9px 3px;background:repeating-linear-gradient(0deg,#fffdf1 0 2px,#e5e1d1 2px 3px)}
.notebook-spine{position:absolute;left:10px;top:3px;bottom:3px;border-left:1px solid #ffffff2b;border-right:1px solid #00000010;width:2px}
.notebook-number{font-size:9px;letter-spacing:1.3px;opacity:.8}
.notebook-cover-title{font-family:'Noto Serif TC','PMingLiU',serif;font-size:29px;font-weight:600;line-height:1.45;letter-spacing:2px;margin-top:20px}
.notebook-emblem{position:absolute;right:16px;bottom:50px;width:46px;height:46px;border:1px solid currentColor;border-radius:50%;display:grid;place-items:center;color:var(--book-mark);opacity:.8}
.notebook-emblem .ic{width:24px;height:24px;stroke-width:1.5}
.notebook-cover-footer{display:flex;justify-content:space-between;align-items:center;width:100%;font-size:11px;margin-top:auto;padding-top:12px;border-top:1px solid #ffffff39;letter-spacing:.4px}
.notebook-item>p{font-size:12px;line-height:1.7;color:var(--text);margin:16px 1px 3px}
.notebook-item>small{font-size:10px;color:var(--secondary);margin-left:1px}
.notebook-shelf-footer{display:flex;gap:12px;border-top:1px solid var(--line);padding-top:15px;margin-top:6px}
.notebook-shelf-footer button{display:flex;align-items:center;justify-content:center;gap:7px;flex:1;min-height:42px;font-size:12px;color:var(--secondary)}
.notebook-shelf-footer .ic{width:17px;height:17px}
.book-open-heading{display:flex;align-items:center;gap:17px;background:var(--book-bg);color:var(--book-ink);padding:18px;border-radius:17px;margin:5px 0 14px}
.book-mini-cover{display:block;flex:none;width:43px;min-height:58px;padding:8px 7px 8px 10px;background:var(--book-bg);color:var(--book-ink);font-family:'PMingLiU',serif;font-size:13px;line-height:1.6;letter-spacing:1px;border-radius:2px 7px 7px 2px;box-shadow:inset 3px 0 0 #00000013,1px 2px 0 #ffffff80}
.book-open-heading .book-mini-cover{background:#ffffff15;border:1px solid #ffffff48;color:inherit;width:52px;min-height:66px}
.book-open-heading>div>span{font-size:11px;opacity:.8}.book-open-heading p{font-size:14px;line-height:1.7;margin:6px 0 0}
.book-add-page{display:flex;align-items:center;justify-content:center;gap:8px;min-height:46px;width:100%;border:1px dashed var(--line);border-radius:12px;color:var(--accent);font-size:13px;margin-bottom:23px}
.book-add-page .ic{width:17px;height:17px}
.book-day-label{font-size:11px;color:var(--secondary)}
.book-empty{text-align:center;padding:30px 12px;line-height:1.8}.book-empty>.ic,.book-empty>span>.ic{width:36px;height:36px;color:var(--accent)}.book-empty h2{font-size:20px;font-weight:550}.book-empty p{font-size:13px;color:var(--secondary)}.book-empty .primary{width:auto;margin:auto;padding-inline:20px}
.notebook-options{display:grid;gap:10px;margin-top:17px}
.notebook-option{display:flex;align-items:center;gap:13px;width:100%;min-height:82px;border:1px solid var(--line);border-radius:14px;padding:12px;text-align:left;color:var(--text)}
.notebook-option.selected{background:var(--soft);border-color:var(--accent)}
.notebook-option>span:nth-child(2){flex:1;min-width:0}.notebook-option strong{display:block;font-size:16px;font-weight:550}.notebook-option small{display:block;font-size:12px;color:var(--secondary);line-height:1.7;margin-top:4px}.notebook-option>.ic{width:20px;height:20px;color:var(--accent)}
.phone.dark .notebook-cover{box-shadow:inset 1px 0 0 #ffffff33,2px 6px 12px #00000030}
.phone.dark .notebook-cover:after{background:repeating-linear-gradient(0deg,#ccc8b4 0 2px,#aba993 2px 3px);border-color:#8e927c}
.phone.large-font .notebook-item>p{font-size:14px}
@media(max-width:370px){.notebook-shelf{gap:26px 14px;padding-inline:1px}.notebook-cover{height:219px;padding:18px 12px 15px 20px}.notebook-cover-title{font-size:26px;margin-top:18px}.notebook-number{font-size:8px;letter-spacing:.9px}.notebook-emblem{width:39px;height:39px;right:12px}.notebook-cover-footer{font-size:10px}.notebook-shelf-heading{gap:8px}.notebook-shelf-heading h1{font-size:18px}.notebook-write-today{min-width:78px;padding:8px;font-size:11px}.notebook-item>p{font-size:11px}}
@media(min-width:540px) and (max-width:760px){.notebook-shelf{gap:32px 25px;max-width:540px;margin:auto}.notebook-cover{height:278px;padding:25px 22px 21px 30px}.notebook-cover-title{font-size:36px}.notebook-number{font-size:10px}.notebook-emblem{width:60px;height:60px;right:22px;bottom:60px}.notebook-emblem .ic{width:29px;height:29px}.notebook-cover-footer{font-size:13px}.notebook-item>p{font-size:14px}.notebook-item>small{font-size:11px}}
@media(prefers-reduced-motion:no-preference){.notebook-cover{transition:transform .18s ease,box-shadow .18s ease}.notebook-cover:active{transform:translateY(2px)}.notebook-cover:hover{box-shadow:inset 1px 0 0 #ffffff3b,3px 9px 17px #30422b24}}
/* Journal via the API (2E): loading line, offline block, and the reminder sheet's quick options. */
.journal-loading{text-align:center;padding:40px 0}
.offline-state .ic{width:32px;height:32px}
.reminder-quick{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:4px 0 14px}
.reminder-chip{width:auto;min-height:48px;padding:9px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface);color:var(--text);font-size:14px;line-height:1.4}
.reminder-chip.selected{background:var(--soft);border-color:var(--accent);color:var(--accent);font-weight:600}
.reminder-saved-time{font-size:15px;font-weight:600;color:var(--accent);margin:0 0 10px}
.reminder-permission{font-size:14px;line-height:1.85;color:var(--text);background:var(--soft);border-radius:12px;padding:12px 14px;margin:0 0 6px}

/* Root tabs identify the destination; the top row carries only actions or date. */
.ui-sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.page.root-page{--f7-navbar-height:48px}
.root-toolbar .navbar-inner{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:0 18px}
.root-toolbar .left,.root-toolbar .right{margin:0;display:flex;align-items:center;gap:8px;min-width:0}
.root-toolbar .right{margin-left:auto}
.root-toolbar .left:empty{display:none}
.root-toolbar time{font-size:13px;font-weight:500;letter-spacing:.2px;color:var(--secondary)}
.root-toolbar .headtext{font-size:13px;font-weight:500;min-height:44px;width:auto}
.root-toolbar .icon-btn{width:42px;height:44px;min-width:42px}
.toolbar-primary{display:flex;align-items:center;gap:6px;width:auto;min-height:44px;font-size:14px;font-weight:550;color:var(--accent);padding:0 2px}
.toolbar-primary .ic{width:18px;height:18px}
.page[data-name=journal] .content-inset{padding-top:13px}
.notebook-shelf{gap:22px 19px;padding-bottom:10px}
.notebook-item>small{display:block;margin:13px 1px 0;font-size:11px}
.notebook-shelf-footer{padding-top:8px;margin-top:8px}
.notebook-cover-footer>span:last-child{font-size:18px;line-height:1}
.home-scene h1{font-size:21px;line-height:1.4;padding:14px 16px}
.home-day-content{padding-top:16px}
.companion-info{padding:12px 0 12px 14px}
.companion-mood{font-size:13px;margin-bottom:10px;min-height:34px}
.companion-art{min-height:150px}
.companion-console .companion-art img,.companion-console.dylan .companion-art img,.companion-console:not(.dylan) .companion-art img{height:148px;width:auto;right:0;bottom:0}
.companion-chat-actions{margin-bottom:16px}
.book-content-meta{display:flex;align-items:center;justify-content:space-between;font-size:12px;color:var(--secondary);padding:0 1px 12px;margin-top:2px;border-bottom:1px solid var(--line)}
.book-empty h2{font-size:17px}
.assistant-intro{gap:9px;margin:2px 0 15px}
.assistant-person{width:32px;height:32px}
.assistant-person img{width:52px;left:-12px}
.assistant-intro small{font-size:13px;font-weight:550;color:var(--text)}
@media(max-width:370px){.root-toolbar .navbar-inner{padding-inline:14px}.root-toolbar .right{gap:4px}.root-toolbar .headtext{font-size:12px}.root-toolbar time{font-size:12px}.notebook-shelf{gap:21px 14px}.home-scene h1{font-size:20px}.companion-info{padding-left:12px}.companion-mood{font-size:12px}}

/* Kept from chat-directory.css (removed in v1): rules for the Dylan card, chat title and assistant initials. */
.companion-chat-actions>.new-chat{flex:.8;gap:5px;font-size:12px}
.chat-title>span:last-child{min-width:0;overflow:hidden;text-overflow:ellipsis}
.assistant-person>span,.assist-initial{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--soft);color:var(--accent);font-family:'PMingLiU',serif;font-size:18px;flex:none}
@media(max-width:370px){.companion-chat-actions>button{font-size:12px}.companion-chat-actions>.new-chat{font-size:11px}}
.companion-console.dylan .companion-art img{right:-23px}
@media(max-width:370px){.companion-console.dylan .companion-art img{right:-42px}}

/* v1 shell without the review columns: a centred phone on wider screens, the whole viewport on phones. */
body{margin:0;min-height:100dvh;display:flex;align-items:center;justify-content:center}
@media(min-width:501px){.phone{width:420px;height:min(880px,calc(100dvh - 56px));min-height:560px;border-radius:29px;box-shadow:0 24px 70px #2b241d18,0 0 0 1px var(--line)}}
@media(min-width:501px) and (max-height:650px){.phone{height:calc(100dvh - 24px);min-height:0}}
@media(max-width:500px){body{display:block}.phone{width:100vw;height:100dvh;min-height:0;border-radius:0;box-shadow:none}}

/* Shared materials from the approved handwritten intro; typography stays in independent assets. */
.paper-surface{--paper-color:#f7f4ed;--paper-texture:url('assets/intro/paper.webp');background-color:var(--paper-color);background-image:var(--paper-texture);background-size:460px 460px}
.paper-grid{background-image:linear-gradient(#7893a112 1px,transparent 1px),linear-gradient(90deg,#7893a112 1px,transparent 1px),var(--paper-texture);background-size:16px 16px,16px 16px,460px 460px}
.handwritten-image{display:block;max-width:100%;height:auto}
.sobani-wordmark{width:96px}
.navbar .title:has(.sobani-wordmark){overflow:visible}
.phone.dark .navbar .sobani-wordmark{filter:brightness(0) invert(.92)}
.snapshot-print{margin:0;padding:7px;background:#fcfaf5;box-shadow:0 3px 9px #29221916}
.snapshot-print>img{display:block;width:100%;height:auto;object-fit:cover}

/* 第一次使用: the sign-in steps share the record pages' paper surface, type scale and buttons. */
.page[data-name=login] .navbar .title,.page[data-name=consent] .navbar .title{font-size:17px;font-weight:650;color:var(--text)}
/* User-approved first concept: separate handwriting, a tilted snapshot and three first-person thoughts. */
.page[data-name=intro]{--f7-toolbar-height:112px;--intro-paper:#f7f4ed;--intro-ink:#263146}
.page[data-name=intro] .page-content{padding-top:0;padding-bottom:112px;background:var(--intro-paper) url('assets/intro/paper.webp') 0 0/460px 460px}
.page[data-name=intro] .content-inset{padding:0}
/* All of it fits above 用 Email 登入 on the phone's screen, browser bars showing (2026-10-24: 「引導頁的高度 … 有點內容太長
   都跑到下面」): each part takes its share of the height left, and is narrower on a short screen. */
.intro-layout{--intro-h:calc(100svh - 136px);min-height:100%;display:flex;flex-direction:column;justify-content:center;padding:14px 0 10px;color:var(--intro-ink)}
.intro-heading{position:relative;z-index:1;width:min(calc(100% - 16px),calc(var(--intro-h)*.2*374/158));aspect-ratio:374/158;margin:0 auto}
.intro-mark-name{margin:0;font-size:0;transform:rotate(-10deg) translate(-1.3%,calc(26.5% + 2px));transform-origin:center 60%}
.intro-lead{position:absolute;right:0;top:60.1%;width:44%;margin:0}
.intro-photo{position:relative;width:min(calc(100% - 20px),calc(var(--intro-h)*.37*1.5));margin:0 auto;transform:rotate(-3.5deg)}
.intro-photo img{aspect-ratio:1.5;object-position:58% 28%}
/* The cover animation (generated_images/cover-motion/, 「這樣OK」); lib/intro-motion.mjs runs the photo. */
intro-motion{display:block}
.intro-wiped{display:block;width:100%;height:auto;aspect-ratio:2172/724;overflow:visible}
/* Title and tagline: a cloth wiped along the user's Z; the mask stroke is drawn, then the whole mask filled. */
.intro-wipe{fill:none;stroke:#fff;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1 1.2;stroke-dashoffset:1.05;animation:intro-wipe var(--dur) cubic-bezier(.3,.05,.55,.95) var(--delay) both}
@keyframes intro-wipe{to{stroke-dashoffset:0}}
.intro-wipe-done{opacity:0;animation:intro-show .4s ease-out var(--done) both}
@keyframes intro-show{to{opacity:1}}
/* The photo drops onto the table and develops from washed-out colour; the moving one lies over the still one. */
.intro-photo{animation:intro-drop .9s cubic-bezier(.2,.9,.3,1.08) .55s both}
@keyframes intro-drop{from{opacity:0;transform:translateY(-22px) rotate(-8deg) scale(1.04)}to{opacity:1;transform:rotate(-3.5deg)}}
.intro-photo-cv{position:absolute;left:7px;top:7px;width:calc(100% - 14px);height:calc(100% - 14px);cursor:pointer;touch-action:manipulation}
.intro-photo img,.intro-photo-cv{animation:intro-develop 2s ease-out .7s both}
@keyframes intro-develop{from{filter:brightness(1.45) saturate(.25) contrast(.8)}to{filter:none}}
/* The three sentences write themselves in, left to right as a pen goes, one after another (onboarding.mjs WRITE_AT;
   2026-10-24: 「移除擦拭 你可以用 手寫筆跡動畫取代嗎 自動播放」). 用 Email 登入 finishes them at once (intro-motion.mjs). */
.intro-lines{list-style:none;width:min(calc(100% - 18px),calc(var(--intro-h)*.42));margin:7px auto 0;padding:0;display:flex;flex-direction:column;gap:0}
.intro-line{margin:0;min-width:0}
.intro-line img{width:100%;-webkit-mask:linear-gradient(90deg,#000 45%,transparent 55%) 100% 0/250% 100% no-repeat;mask:linear-gradient(90deg,#000 45%,transparent 55%) 100% 0/250% 100% no-repeat;animation:intro-write .85s cubic-bezier(.5,.15,.45,1) var(--at) both}
@keyframes intro-write{to{-webkit-mask-position:0 0;mask-position:0 0}}
intro-motion.write-done .intro-line img{animation:none;-webkit-mask:none;mask:none}
.intro-line-remember{width:84%;align-self:flex-start}
.intro-line-recall{width:80%;align-self:flex-end;margin-top:-14px}
.intro-line-choose{width:85%;align-self:flex-start;margin-top:-13px}
.page[data-name=intro] .footer-actions .toolbar-inner>*{animation:intro-rise .6s ease-out 2.4s both}
@keyframes intro-rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.intro-wipe,.intro-wipe-done,.intro-photo,.intro-photo img,.intro-photo-cv,.intro-line img,.page[data-name=intro] .footer-actions .toolbar-inner>*{animation-duration:1ms!important;animation-delay:0s!important}}
.page[data-name=intro] .footer-actions{background:var(--intro-paper) url('assets/intro/paper.webp') 0 0/460px 460px;color:#263146}
.page[data-name=intro] .footer-actions .toolbar-inner{flex-direction:column;gap:8px}
.intro-note{margin:0;text-align:center;font-size:13px;line-height:1.5;color:#70665a}
.page[data-name=intro] .footer-actions .toolbar-inner{justify-content:center;padding:12px 20px max(16px,env(safe-area-inset-bottom))}
.page[data-name=intro] .footer-actions .primary{flex:none;width:100%;min-height:50px;background:#405d83;color:#fff}
@media(min-width:480px){.intro-layout{max-width:430px;margin-inline:auto}}

/* 登入與同意頁: the same paper page, form fields and footer buttons as the editor and sheets. */
.auth-intro{margin:8px 0 18px}
.auth-intro h1{margin:0 0 8px;font-size:24px;line-height:1.5;font-weight:650;letter-spacing:-.4px;color:var(--text)}
.auth-intro p{margin:0;font-size:15px;line-height:1.85;color:var(--text);overflow-wrap:anywhere}
.page[data-name=login] .form-list,.page[data-name=consent] .form-list{margin:0 0 8px}
.page[data-name=login] .form-list ul,.page[data-name=login] .form-list li{background:transparent}
.page[data-name=login] .form-list .item-content{padding-left:0}
.page[data-name=login] .form-list .item-inner{padding-right:0}
.page[data-name=login] #login-code{font-size:22px;letter-spacing:6px;font-variant-numeric:tabular-nums}
.auth-links{display:flex;flex-wrap:wrap;gap:4px 18px;margin-top:6px}
.auth-links .link-button:disabled{text-decoration:none;color:var(--secondary)}
.page[data-name=login] .error-text,.page[data-name=consent] .error-text{color:#b44a3c;font-size:13px;line-height:1.7;margin:8px 0}
.consent-part{border-top:1px solid var(--line);padding:14px 0 4px}
.consent-part h2{margin:0 0 6px;font-size:15px;line-height:1.6;font-weight:650;color:var(--text)}
.consent-part p{margin:0 0 10px;font-size:14px;line-height:1.9;color:var(--text);overflow-wrap:anywhere}
.consent-part a{color:var(--accent);text-decoration:underline;text-underline-offset:3px;white-space:nowrap}
.consent-checks{display:grid;gap:10px;margin:14px 0 6px}
.consent-check{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:14px 16px;cursor:pointer}
.consent-check input{width:22px;height:22px;margin:2px 0 0;flex:none;accent-color:var(--accent)}
.consent-check b{display:block;font-size:15px;line-height:1.6;font-weight:600}
.consent-check small{display:block;font-size:12px;line-height:1.75;color:var(--secondary);margin-top:2px}

/* 3A: chat cards, delivery states, quoted records and text-only long-press targets. */
/* The poll updater preserves scroll explicitly; browser anchoring must not add a second adjustment. */
.thread-content{overflow-anchor:none}
.chat-card{display:block;max-width:300px;padding:13px 14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);box-shadow:0 2px 10px #35594b0a}
.message-sent .chat-card{margin-left:auto}
.chat-card small{display:block;font-size:10px;color:var(--secondary);margin-bottom:4px}
.chat-card strong{display:block;font-size:14px;line-height:1.6;overflow-wrap:anywhere}
.chat-card p{font-size:12px;line-height:1.7;color:var(--secondary);margin:4px 0 0;overflow-wrap:anywhere}
.chat-card-actions{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.chat-card-actions button{width:auto;min-height:38px;padding:0 13px;font-size:12px}
.chat-card-state{font-size:11px!important;color:var(--accent)!important}
.chat-card-state button{width:auto;min-height:32px;font-size:11px}
.chat-topic{display:flex;align-items:center;gap:10px;margin:14px 20px;color:var(--secondary);font-size:11px}
.chat-topic:before,.chat-topic:after{content:'';flex:1;border-top:1px dashed var(--line)}
.chat-system{text-align:center;font-size:11px;line-height:1.7;color:var(--secondary);margin:10px 24px;overflow-wrap:anywhere}
.chat-failed{font-size:11px;color:#9f5d42;text-align:right;margin:2px 20px 8px}
.chat-failed button{width:auto;min-height:32px;font-size:11px;color:#9f5d42}
.chat-out .message-bubble{opacity:.75}
.chat-out-state{font-size:10px;color:var(--secondary)}
.chat-out .message-footer button{width:auto;min-height:30px;font-size:10px;color:#9f5d42}
.chat-quote{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--accent);padding:4px 6px}
.chat-quote .ic{width:14px;height:14px;flex:none}
.chat-quote span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-quote-remove{width:32px;min-width:32px;min-height:32px;font-size:18px;color:var(--secondary)}
.chat-quote-link{display:inline-flex;align-items:center;gap:4px;width:auto;max-width:100%;min-height:28px;font-size:10px;color:var(--accent);overflow-wrap:anywhere}
.chat-quote-link .ic{width:12px;height:12px;flex:none}
.chat-forget-mark{font-size:10px;color:var(--secondary);margin-left:6px}
.chat-offline{font-size:11px;color:#9f5d42;text-align:center;margin:8px 20px}
.chat-menu-quote{font-size:12px;line-height:1.7;color:var(--secondary);margin:0 0 8px;overflow-wrap:anywhere}
.thread-content [data-hold="message"]{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.phone.dark .chat-card{background:var(--surface);border-color:var(--line)}

/* 3C 卜卦頁: the reading on the 卦錄 page. */
.reading{margin:18px 0 6px;padding:14px 15px;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.reading h2{font-size:14px;margin:0 0 8px;color:var(--accent);font-weight:650}
.reading p{font-size:14px;line-height:1.95;margin:0 0 8px;overflow-wrap:anywhere}
.reading .hint{font-size:12px;color:var(--secondary)}
.reading button{width:auto;min-height:40px;margin-top:4px}
.reading-pending p[role=status]{color:var(--secondary)}
.reading-safety{border-color:#e3c9b6;background:#fff8f1}
.phone.dark .reading{background:var(--surface);border-color:var(--line)}
.phone.dark .reading-safety{background:#3a2d24;border-color:#5a4535}

/* 卦象異境 · 生成構圖與卦卡 v5 摘要 */
.yi-realm-card{margin:14px 0 16px;padding:14px;border:1px solid var(--line);border-radius:16px;background:var(--surface);display:flex;flex-direction:column;gap:11px}
.yi-realm-header,.yi-realm-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;flex-wrap:wrap}
.yi-realm-eyebrow{display:block;font-size:11px;letter-spacing:.08em;color:var(--accent);font-weight:650;margin-bottom:2px}
.yi-realm-title,.yi-realm-top strong{display:block;font-size:14.5px;line-height:1.35}
.yi-realm-badge,.yi-realm-top small{display:block;font-size:11.5px;color:var(--secondary);margin-top:2px}
.yi-realm-seed{font-size:11px;color:var(--secondary);background:rgba(120,115,105,.1);padding:3px 8px;border-radius:999px;white-space:nowrap}
.yi-realm-art{width:100%;max-width:340px;margin:0 auto;border-radius:10px;overflow:hidden;border:1px solid var(--line);box-shadow:0 8px 22px -12px rgba(0,0,0,.38);background:#193d54}
.yi-realm-art svg,.yi-realm-svg{display:block;width:100%;height:auto;aspect-ratio:2/3}
.yi-realm-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
.yi-realm-btn,.yi-btn{font:inherit;font-size:12px;font-weight:600;min-height:36px;padding:6px 10px;border-radius:10px;border:1px solid var(--line);background:transparent;color:inherit;cursor:pointer}
.yi-realm-btn:active,.yi-btn:active{opacity:.75}
.gua-card-v5{padding:10px 12px;border-radius:12px;border-left:3.5px solid var(--accent);background:rgba(138,110,75,.07);display:flex;flex-direction:column;gap:8px}
.gua-card-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gua-card-head strong{font-size:13.5px}
.gua-card-meta,.gua-card-head small{margin-left:auto;font-size:11px;color:var(--secondary)}
.gua-card-badge,.gua-grade{font-size:11.5px;font-weight:700;padding:2px 8px;border-radius:6px;background:var(--accent);color:#fff}
.gua-grade-great,.gua-grade-good{background:#3e6e53}
.gua-grade-warn{background:#a24832}
.gua-grade-neutral{background:#7d653c}
.gua-card-verdict-line{margin:0;font-size:13.5px;line-height:1.7}
.gua-card-section{display:flex;flex-direction:column;gap:4px}
.gua-card-sub{margin:0;font-size:12px;color:var(--accent);font-weight:650}
.gua-card-list,.gua-card-steps{margin:0;padding-left:18px;font-size:12.5px;line-height:1.65}
.gua-card-takeaway,.gua-takeaway{margin:0;padding:8px 10px;border-radius:8px;background:rgba(138,110,75,.09);font-size:13px;line-height:1.65;font-weight:600;color:var(--accent)}
.gua-card-takeaway p{margin:0}
.gua-card-takeaway-label{display:inline-block;font-size:11px;letter-spacing:.08em;margin-bottom:2px;opacity:.85}
.gua-card-details{font-size:12.5px;border-top:1px dashed var(--line);padding-top:6px}
.gua-card-details summary{cursor:pointer;font-weight:600;color:var(--secondary)}
.gua-card-details-body p{margin:4px 0 0;line-height:1.65}
.phone.dark .yi-realm-card{background:var(--surface);border-color:var(--line)}
.phone.dark .gua-card-v5{background:rgba(255,255,255,.05)}

/* The approved paper-and-ink conversation, backed by real consultation endpoints. */
.page:is([data-name=home],[data-name=chat],[data-name=divination]){--consult-ground:var(--bg);--consult-paper:var(--surface);--consult-ink:var(--text);--consult-muted:var(--secondary);--consult-accent:var(--accent)}
.consultation{color:var(--text);font-size:16px;line-height:1.5;max-width:680px;margin:auto;overflow-wrap:anywhere}.consultation h1{font:600 24px/1.4 var(--font-serif);margin:0 0 8px}.consultation h2{font-family:var(--font-serif)}.consultation p{margin:8px 0;white-space:pre-wrap}.consult-muted{color:var(--secondary);font-size:16px}.consult-intro{padding:4px 0 14px}.consult-intro p{margin:0}.consult-brand{font:600 24px/1 Georgia,serif;letter-spacing:-1px;color:var(--text)}.my-seal{width:36px;height:36px;border-radius:50%;background:var(--soft);display:grid;place-items:center;font:18px var(--font-serif);color:var(--accent)}
.consult-companion-scene{display:grid;place-items:center;min-height:200px;margin:0;padding:20px 0}.consult-companion-scene .avatar{width:160px;height:160px}.consult-home-paper{position:relative;margin:-10px -4px 0;padding:22px 20px 18px;background:var(--surface);border-radius:4px 4px 16px 16px}.consult-home-paper textarea{display:block;width:100%;min-height:92px;padding:0;resize:vertical;background:transparent;border:0;font-size:16px;line-height:1.8}.consult-home-paper textarea:focus-visible{outline:2px solid var(--accent);outline-offset:5px}.consult-actions{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}.consult-primary,.consult-secondary{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;min-height:48px;padding:10px 22px;border-radius:999px;font-size:16px;font-weight:500;background:var(--accent);color:var(--on-accent);white-space:nowrap}.consult-secondary{background:var(--paper-warm);color:var(--text)}.consult-resume-strip{display:flex;align-items:center;gap:12px;width:100%;padding:22px 0;text-align:left}.consult-resume-strip span{flex:1}.consult-resume-strip strong{font-size:16px;font-weight:500;display:block}.consult-resume-strip small{display:block;color:var(--secondary);font-size:13px;margin-top:3px}.consult-tools{margin-top:16px;color:var(--secondary);font-size:13px}.consult-tools summary{min-height:44px;padding:10px 0}.consult-tools>div{display:flex;gap:18px;flex-wrap:wrap}.consult-tools button,.consult-text-action{min-height:44px;padding:8px 4px;font-size:13px;color:var(--accent)}
.consultation-navbar .navbar-inner{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;padding-inline:12px;gap:8px}.role-switch{display:flex;justify-self:center;width:224px;max-width:100%;gap:2px;padding:3px;border-radius:999px;background:var(--paper-warm);min-width:0}.role-switch button{flex:1;display:flex;justify-content:center;align-items:center;gap:6px;min-width:0;min-height:40px;padding:5px 8px;border-radius:999px;color:var(--secondary);transition:background .18s ease,color .18s ease}.role-switch button[aria-pressed=true]{background:var(--surface);color:var(--accent);box-shadow:0 1px 4px #2b241d0d}.role-switch strong{font-size:14px;font-weight:500;line-height:1.4;white-space:nowrap}.role-switch .avatar,.role-switch .reader-seal{width:24px;height:24px}.role-switch .reader-seal{font-size:15px;background:transparent}.role-switch .avatar img{width:61px;left:-15px;top:-1px}.reader-seal{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;background:var(--paper-warm);color:var(--text);font:18px var(--font-serif)}.role-switch .avatar{width:30px;height:30px}.role-switch .avatar img{width:76px;left:-18px;top:-2px}.consult-reply{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px}.consult-reply .avatar{width:30px;height:30px}.consult-reply .avatar img{width:76px;left:-18px;top:-2px}.consult-message{margin:16px 0;font-size:16px;line-height:1.5}.consult-message small{display:block;font-size:13px;color:var(--secondary);margin-bottom:4px}.consult-message p{margin:0 0 8px}.consult-message p:last-child{margin-bottom:0}.consult-user{width:fit-content;max-width:88%;margin-left:auto;background:var(--bubble-user);padding:10px 14px;border-radius:18px 18px 4px 18px}.consult-proposal{margin-top:12px;padding:12px 14px;background:var(--soft);border-radius:4px 14px 14px 4px}.consult-proposal p{font:18px/1.55 var(--font-serif);margin:0}.consult-proposal small{color:var(--accent)}.consult-context{padding:12px 16px;background:var(--paper-warm);font-size:13px}.consult-conversation-scene{height:150px;overflow:hidden;margin:-14px -20px 18px}.consult-conversation-scene img{width:100%;height:100%;object-fit:cover;object-position:50% 42%}.consult-compose-dock{width:100%;padding:4px 16px max(12px,env(safe-area-inset-bottom));background:var(--bg)}#app .consult-context-tools{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 74px;gap:8px;padding:0 0 8px;overflow:visible}.consult-context-tools::-webkit-scrollbar{display:none}#app .consult-context-tools button{display:inline-flex;align-items:center;justify-content:center;min-width:0;width:100%;gap:5px;min-height:44px;padding:0 10px;border:1px solid var(--line);border-radius:999px;font-size:13px;line-height:1.4;white-space:nowrap;background:var(--surface);color:var(--accent)}.consult-context-tools .ic{width:16px;height:16px;flex:none}#app .consult-context-tools .consult-tool-primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.consult-context-tools button:active,.consult-send:active{transform:scale(.97)}.consult-bottom-composer{display:flex;align-items:flex-end;gap:8px;width:100%;min-height:52px;padding:4px 5px 4px 14px;background:var(--surface);border:1px solid var(--line);border-radius:26px}.consult-bottom-composer:focus-within{border-color:var(--accent)}.consult-bottom-composer textarea{flex:1;min-width:0;width:0;min-height:42px;max-height:120px;padding:8px 0;resize:none;border:0;outline:none;background:transparent;font-size:16px;line-height:1.5;scrollbar-width:none}.consult-send{display:grid;place-items:center;flex:none;width:42px;height:42px;min-height:42px;padding:0;border-radius:50%;background:var(--accent);color:var(--on-accent)}.consult-send .ic{width:21px;height:21px}.consult-history-row{display:block;width:100%;text-align:left;padding:16px 0;font-size:16px;line-height:1.7}.consult-history-row span{display:block;color:var(--secondary);font-size:13px;margin-top:5px}.consult-saved-row{display:flex;gap:12px;align-items:center}.consult-saved-row input{width:20px;height:20px;accent-color:var(--accent)}.consult-history{margin-top:28px}.consult-history h2{font-size:20px}.consult-previous{margin:20px 0}.consult-previous summary{min-height:44px;color:var(--accent);cursor:pointer}.consult-card-author{display:flex;align-items:center;gap:10px;font-size:13px;color:var(--secondary);margin:18px 0 10px}
.oracle-card{background:var(--surface);border-radius:4px;overflow:hidden;margin:8px 0 20px;font-size:16px;line-height:1.5}.oracle-banner{display:grid;grid-template-columns:80px minmax(0,1fr);gap:16px;align-items:center;padding:14px 16px;background:var(--accent);color:var(--on-accent)}.oracle-banner h2{font:500 20px/28px var(--font-serif);margin:7px 0 10px;overflow-wrap:anywhere}.oracle-banner small{font-size:12px;display:block}#app .oracle-art{display:block;position:relative;width:80px;height:120px;min-height:120px;padding:0;border:0;border-radius:2px;overflow:hidden;background:transparent;color:var(--on-accent);cursor:zoom-in}.oracle-art svg{display:block;width:80px;height:120px}.oracle-zoom-mark{position:absolute;right:4px;bottom:4px;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;background:#182d23cc;color:#fff;font-size:15px;line-height:1}.oracle-meta{display:flex;gap:8px;align-items:center;font-size:12px;line-height:20px}.oracle-meta .oracle-hex{font-size:22px;line-height:24px;margin:0}.oracle-body{padding:12px 16px 18px}.oracle-body h3{font-size:17px;line-height:25px;font-weight:500}.oracle-question{font-size:13px;color:var(--secondary);line-height:20px;margin:0 0 8px}.oracle-question summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;cursor:pointer;list-style:none}.oracle-question summary::-webkit-details-marker{display:none}.oracle-question summary:after{content:"＋";font-size:18px}.oracle-question[open] summary:after{content:"−"}.oracle-question p{margin:0 0 12px;font-size:13px;line-height:20px}.oracle-verdict{display:flex;gap:10px;align-items:flex-start}.oracle-verdict p{margin:0 0 8px;font-size:16px;line-height:1.5}.oracle-verdict p:first-child{font:500 17px/25px var(--font-serif)}.oracle-grade{flex:none;background:var(--soft);color:var(--accent);font-size:13px;padding:3px 7px;border-radius:4px;margin-top:4px}.oracle-section{margin-top:20px}.oracle-section h3{font-size:17px;line-height:25px;font-weight:500;margin:0 0 8px}.oracle-section p,.oracle-section li{font-size:16px;line-height:1.5}.oracle-section ol{padding-left:22px}.oracle-section li{padding-left:3px;margin:6px 0}.oracle-takeaway{margin:18px -16px 0;padding:14px 16px;background:var(--gold-soft);font:16px/1.5 var(--font-serif)}.oracle-why{margin-top:18px}.oracle-why summary{display:flex;align-items:center;justify-content:space-between;min-height:44px;font-size:13px;color:var(--accent);cursor:pointer}.oracle-why summary:after{content:'＋';font-size:20px}.oracle-why[open] summary:after{content:'−'}.oracle-why p{font-size:16px;line-height:1.5;margin-top:8px}.oracle-thumb{display:block;width:62px;height:93px;overflow:hidden;border-radius:4px;flex:none}.oracle-thumb svg{display:block;width:62px;height:93px}.phone.large-font .consult-message,.phone.large-font .consult-bottom-composer textarea,.phone.large-font .oracle-section p,.phone.large-font .oracle-section li,.phone.large-font .oracle-body>p,.phone.large-font .oracle-takeaway p{font-size:18px;line-height:1.5}
.consult-context-tools .avatar,.consult-context-tools .reader-seal{width:20px;height:20px;font-size:12px}.consult-context-tools .avatar img{width:54px;left:-14px;top:-2px}.consult-relay-incoming{display:flex;justify-content:center;margin:14px 0 6px}#app .consult-relay-pill{display:inline-flex;align-items:center;gap:6px;width:auto;min-height:36px;padding:5px 14px;border-radius:999px;background:var(--paper-warm);border:1px solid var(--line);font-size:13px;color:var(--text)}.consult-relay-pill .avatar,.consult-relay-pill .reader-seal{width:20px;height:20px;font-size:12px}.consult-relay-pill .avatar img{width:54px;left:-14px;top:-2px}.consult-relay-more{color:var(--accent);font-weight:500;margin-left:2px}.consult-relay-outgoing{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:6px 0 18px 40px;max-width:calc(100% - 40px)}#app .consult-relay-card{display:flex;align-items:center;gap:10px;width:auto;flex:1;min-width:200px;max-width:100%;padding:10px 14px;border-radius:12px;background:var(--soft);border:1px solid var(--line);text-align:left;color:var(--accent)}.consult-relay-pair{display:inline-flex;align-items:center;flex:none}.consult-relay-pair>*{width:26px;height:26px;font-size:14px;border:2px solid var(--surface)}.consult-relay-pair>.avatar img{width:68px;left:-17px;top:-2px}.consult-relay-pair>*:last-child{margin-left:-8px}.consult-relay-meta{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.consult-relay-meta strong{font-size:14px;font-weight:600;color:var(--accent)}.consult-relay-meta small{font-size:12px;color:var(--secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#app .consult-relay-switch,#app .consult-relay-jump{width:auto;flex:none;font-size:13px;color:var(--accent);font-weight:500;padding:6px 12px;border-radius:999px;background:var(--paper-warm);white-space:nowrap}.consult-relay-navbar .navbar-inner{display:flex;align-items:center;gap:10px;padding-inline:12px}.consult-relay-title{display:flex;align-items:center;gap:10px;min-width:0;flex:1}.consult-relay-title strong{display:block;font:600 16px/1.3 var(--font-serif);color:var(--text)}.consult-relay-title small{display:block;font-size:12px;color:var(--secondary)}.consult-relay-readonly{padding-top:10px}.consult-relay-sender{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--secondary);margin:0 0 8px 4px}.consult-relay-sender .avatar,.consult-relay-sender .reader-seal{width:22px;height:22px;font-size:13px}.consult-relay-sender .avatar img{width:58px;left:-15px;top:-2px}.consult-relay-sheet{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:18px 18px 20px}.consult-relay-sheet h2{font:600 19px/1.45 var(--font-serif);margin:0 0 12px;color:var(--accent)}.consult-relay-body p{margin:0 0 10px;font-size:16px;line-height:1.75}#app .footer-actions:has(.consult-readonly-bar){height:auto;border:0;background:var(--bg)}#app .footer-actions:has(.consult-readonly-bar) .toolbar-inner{position:relative;padding:0;height:auto;justify-content:center}.consult-readonly-bar{display:flex;justify-content:center;width:100%;padding:10px 16px max(14px,env(safe-area-inset-bottom));background:var(--bg)}.consult-readonly-pill{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;border-radius:999px;background:var(--paper-warm);border:1px solid var(--line);font-size:13px;color:var(--secondary);font-weight:500}

.oracle-image-dialog{box-sizing:border-box;width:calc(100vw - 24px);max-width:366px;max-height:calc(100dvh - 24px);padding:16px;border:0;border-radius:18px;background:var(--surface);color:var(--text);font-family:var(--font);overflow-y:auto}.oracle-image-dialog::backdrop{background:#17251ed9}.oracle-image-dialog header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.oracle-image-dialog h2{font:500 19px/25px var(--font-serif);margin:0}.oracle-image-subtitle{display:block;font-size:12px;line-height:18px;color:var(--accent);margin-top:2px}.oracle-image-dialog .oracle-image-close{flex:none;width:auto;min-width:44px;min-height:38px;padding:6px 10px;border:0;background:transparent;color:var(--accent);font:14px var(--font);cursor:pointer}.oracle-image-art{position:relative;border-radius:8px;overflow:hidden;cursor:grab;touch-action:none;user-select:none}.oracle-image-art:active{cursor:grabbing}.oracle-image-art svg{display:block;width:100%;height:auto;max-height:calc(100dvh - 160px)}.oracle-image-premise{margin:10px 0 2px;font-size:12px;line-height:18px;color:var(--secondary)}

.oracle-cover{display:grid;grid-template-columns:80px minmax(0,1fr);gap:14px;padding:14px 16px;margin:8px 0 20px;border-radius:8px;background:var(--accent);color:var(--on-accent)}#app .oracle-cover-open{min-width:0;width:auto;padding:0;text-align:left;color:inherit}.oracle-cover-open small{display:block;font-size:12px;line-height:20px;opacity:.9}.oracle-cover-open h2{font:500 20px/28px var(--font-serif);margin:3px 0 7px}.oracle-cover-grade{display:block;font-size:13px;line-height:20px;margin-bottom:7px}.oracle-cover-link{display:block;font-size:12px;line-height:18px;margin-top:4px}.oracle-cover-open:focus-visible{outline:2px solid currentColor;outline-offset:4px}

.oracle-record-meta{font-size:12px;line-height:18px;color:var(--secondary);margin:0 0 12px!important}.oracle-classics{margin-top:24px;padding-top:18px;border-top:1px solid var(--line)}.oracle-classics h4{font-size:14px;line-height:22px;font-weight:500;margin:16px 0 8px}.oracle-classics blockquote{margin:0;color:var(--accent);font:16px/24px var(--font-serif)}#app .whitepaper-entry{display:block;width:100%;padding:18px 16px;margin:20px 0;background:var(--paper-warm);border-radius:8px;text-align:left;color:var(--accent)}.whitepaper-entry strong{display:block;font:500 18px/26px var(--font-serif)}.whitepaper-entry span{display:block;font-size:13px;line-height:20px;margin-top:5px}.whitepaper-reader{font-size:16px;line-height:24px;max-width:760px;margin:auto;overflow-wrap:anywhere}.whitepaper-reader h1{font:500 22px/32px var(--font-serif);margin:8px 0 28px}.whitepaper-reader h2{font:500 20px/28px var(--font-serif);margin:32px 0 14px}.whitepaper-reader h3,.whitepaper-reader h4{font-size:17px;line-height:25px;font-weight:500;margin:24px 0 10px}.whitepaper-reader p{margin:10px 0}.whitepaper-reader blockquote{margin:16px 0;padding-left:14px;border-left:3px solid var(--accent);font-family:var(--font-serif)}.whitepaper-meta{font-size:12px;line-height:20px;color:var(--secondary)}.whitepaper-table{overflow-x:auto;margin:18px 0;max-width:100%}.whitepaper-table table{border-collapse:collapse;min-width:100%;font-size:14px;line-height:22px}.whitepaper-table th,.whitepaper-table td{padding:10px 12px;min-width:100px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}.whitepaper-table th{background:var(--paper-warm);font-weight:500;color:var(--accent)}.whitepaper-source{font-size:12px;line-height:20px;margin:32px 0 24px;color:var(--secondary)}.whitepaper-source summary{min-height:44px;cursor:pointer}.whitepaper-source code{overflow-wrap:anywhere}

/* Daily decision cards & photo strip (LEDGER d-090) */
.consult-photo-strip{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:6px 2px 8px}.consult-photo-thumb{position:relative;width:54px;height:54px;border-radius:10px;overflow:hidden;border:1px solid var(--line);background:var(--surface)}.consult-photo-thumb img{width:100%;height:100%;object-fit:cover;display:block}#app .consult-photo-remove{position:absolute;top:2px;right:2px;width:20px;height:20px;min-height:20px;padding:0;border-radius:50%;background:#182d23d9;color:#fff;font-size:13px;line-height:1;display:grid;place-items:center}#app .consult-photo-add{width:auto;min-height:36px;padding:4px 12px;border-radius:999px;border:1px dashed var(--line);background:var(--surface);color:var(--accent);font-size:13px}.consult-photo-count{font-size:12px;color:var(--secondary)}#app .consult-photo-btn{display:grid;place-items:center;flex:none;width:36px;height:42px;min-height:42px;padding:0;background:transparent;color:var(--secondary);border:0}.consult-photo-btn .ic{width:20px;height:20px}
.consult-decision-card{margin-top:10px;padding:16px;border-radius:14px;background:var(--surface);border:1px solid var(--line);box-shadow:0 2px 8px #2b241d0a}.consult-decision-result.is-confident{border-color:var(--accent)}.decide-card-head small{display:block;font-size:12px;line-height:18px;color:var(--accent);font-weight:500;margin-bottom:4px}.decide-title{font:600 20px/28px var(--font-serif);color:var(--text);margin:0 0 10px}.decide-seen{padding:9px 12px;margin:0 0 12px;border-radius:10px;background:var(--paper-warm);font-size:14px;line-height:21px;color:var(--text)}.decide-seen span{font-weight:500;color:var(--accent)}.decide-options-list{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}.decide-option-row{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:10px;background:var(--paper-warm);border:1px solid transparent;cursor:pointer}.decide-option-row.checked{border-color:var(--line);background:var(--bg)}.decide-option-row.muted{opacity:.6}.decide-option-row input{width:18px;height:18px;margin-top:3px;accent-color:var(--accent);flex:none}.decide-option-body{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}.decide-option-body strong{font-size:16px;line-height:22px;font-weight:500;color:var(--text)}.decide-option-body small{font-size:13px;line-height:19px;color:var(--secondary);margin:0}.decide-section{margin-top:12px}.decide-section-label{display:block;font-size:12px;line-height:18px;color:var(--secondary);margin-bottom:6px}.decide-pill-row,.decide-focus-row,.decide-suggest-chips{display:flex;flex-wrap:wrap;gap:6px}#app .decide-memory-pill{display:inline-flex;align-items:center;gap:5px;width:auto;min-height:32px;padding:5px 8px;border-radius:7px;background:var(--soft);color:var(--accent);font-size:12px;border:1px solid var(--line)}#app .decide-memory-pill b{font-weight:600;opacity:.75}#app .decide-focus-chip,#app .decide-suggest-chip{width:auto;min-height:36px;padding:6px 12px;border-radius:999px;border:1px solid var(--line);background:transparent;color:var(--secondary);font-size:12px}#app .decide-focus-chip.active{background:var(--soft);border-color:var(--accent-line);color:var(--accent)}.decide-actions{margin-top:14px;display:flex;flex-direction:column;align-items:center;gap:4px}#app .decide-primary-btn{width:100%;min-height:42px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:15px;font-weight:500}.decide-reason{font-size:16px;line-height:24px;color:var(--text);margin:6px 0 12px}.decide-applied-extra{font-size:13px;line-height:19px;color:var(--accent);margin:0 0 6px}.decide-axes-details{margin:10px 0;padding:10px 12px;border-radius:10px;background:var(--paper-warm);font-size:14px;line-height:21px}.decide-axes-details summary{cursor:pointer;color:var(--accent);font-weight:500;min-height:28px;display:flex;align-items:center}.decide-axes-list{margin:8px 0 0;padding-left:18px}.decide-axes-list li{margin:4px 0}.decide-axes-list span{color:var(--secondary);font-size:13px}.decide-supplement-box{margin-top:12px;padding-top:12px;border-top:1px solid var(--line)}.decide-suggest-row{margin-bottom:8px}.decide-suggest-row small{display:block;font-size:12px;color:var(--secondary);margin-bottom:6px}.decide-supplement-input-row{display:flex;gap:8px;align-items:center}.decide-supplement-input-row input{flex:1;min-width:0;height:40px;padding:0 12px;border-radius:8px;border:1px solid var(--line);background:var(--surface);font-size:14px;color:var(--text)}#app .decide-redecide-btn{width:auto;flex:none;min-height:38px;padding:0 16px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:14px;font-weight:500}.decide-result-footer{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:12px;flex-wrap:wrap}#app .decide-secondary-btn{display:inline-flex;align-items:center;gap:5px;width:auto;min-height:34px;padding:4px 12px;border-radius:999px;background:var(--paper-warm);color:var(--accent);font-size:13px;font-weight:500}#app .decide-secondary-btn .ic{width:15px;height:15px}#app .decide-major-link{width:auto;padding:4px 0;background:transparent;color:var(--accent);font-size:13px;text-align:left}.decide-major-hint{margin-top:10px;text-align:center}
/* 改一下選項 and folded condition box: same field and text-link look as the journal forms (life.css) */
.decide-question-box{display:flex;align-items:flex-start;gap:6px}.decide-question-box .decide-title{flex:1;min-width:0}#app .decide-edit-icon{width:auto;flex:none;min-width:36px;min-height:36px;padding:0;background:transparent;color:var(--accent);font-size:16px;line-height:1}#app .decide-text-link{display:inline-block;width:auto;min-height:40px;padding:6px 0;background:transparent;color:var(--accent);font-size:13px}.decide-edit-label{display:block;margin:12px 0 6px;font-size:12px;line-height:18px;color:var(--secondary)}.decide-edit-label .decide-field{margin-top:6px}.decide-field{display:block;width:100%;box-sizing:border-box;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:10px 12px;font:14px/1.6 var(--font-sans)}textarea.decide-field{resize:vertical;min-height:64px}.decide-field-quiet{font-size:13px;color:var(--secondary);padding:8px 12px}.decide-edit-option{display:grid;grid-template-columns:minmax(0,1fr) 36px;gap:6px;align-items:start;margin-bottom:10px}.decide-edit-option .decide-field-quiet{grid-column:1}#app .decide-edit-remove{grid-column:2;grid-row:1;width:36px;min-height:40px;padding:0;background:transparent;color:var(--secondary);font-size:18px}.decide-supplement-open{margin-top:6px}

/* 2026-10-21: the App's note under a masked message, the AI tag under advice, the AI line under the composer */
.consult-pii-note{margin:-2px 0 10px auto;max-width:80%;font-size:12px;line-height:1.5;color:var(--secondary);text-align:right}
.consult-pii-note .link-button{margin-left:6px;font-size:12px}
.consult-ai-tag{margin:6px 0 0;font-size:11px;color:var(--secondary)}
.consult-ai-note{margin:4px 0 0;font-size:11px;color:var(--secondary);text-align:center}
/* 打字節奏 (2026-10-21): the line on its way, 打字中 under it, and each reply bubble easing in as it is revealed */
.consult-pending{opacity:.72}
.consult-typing-dots{display:inline-flex;gap:5px;align-items:center;height:24px;padding:0 2px}
.consult-typing-dots i{width:7px;height:7px;border-radius:50%;background:var(--secondary);opacity:.35;animation:consult-dot 1.2s infinite ease-in-out}
.consult-typing-dots i:nth-child(2){animation-delay:.18s}.consult-typing-dots i:nth-child(3){animation-delay:.36s}
@keyframes consult-dot{0%,80%,100%{opacity:.25;transform:translateY(0)}40%{opacity:.8;transform:translateY(-3px)}}
@media(prefers-reduced-motion:no-preference){.consult-conversation .consult-reply:not(.consult-typing):last-of-type{animation:paper-appear .22s ease-out}}
/* 語音訊息 (d-108; 樣稿 generated_images/voice/message/): 🎙 in place of ↑, the recording bar, his voice bubble with the
   words that were heard, and 狄倫's 「聽他說」 with the line being read lit up */
.vm-clip{display:flex;align-items:center;gap:9px;min-height:36px}
.vm-play{display:grid;place-items:center;flex:none;width:32px;height:32px;min-height:32px;padding:0;border-radius:50%;background:var(--accent);color:var(--on-accent)}
.vm-play svg{width:14px;height:14px;fill:currentColor;stroke:none}
.vm-wave{display:flex;align-items:center;gap:2px;height:26px;flex:1;min-width:84px}
.vm-wave i{display:block;width:3px;border-radius:2px;background:currentColor;opacity:.35}
.vm-dur{flex:none;font-size:13px;color:var(--secondary);font-variant-numeric:tabular-nums}
.vm-user{min-width:212px}
.vm-user .vm-clip{color:var(--text);margin-bottom:6px}
.vm-user .vm-play{width:28px;height:28px;min-height:28px;background:color-mix(in srgb,var(--text) 72%,transparent)}
.vm-user .vm-play svg{width:12px;height:12px}
.vm-tag{display:flex;align-items:center;gap:4px;margin:0 0 4px!important;font-size:12px;color:var(--secondary)}
.vm-tag .ic{width:14px;height:14px}
.vm-pending{color:var(--secondary);font-size:14px}
.vm-pending .consult-typing-dots{height:14px;vertical-align:middle;margin-left:4px}
.vm-pending .consult-typing-dots i{width:5px;height:5px}
.vm-dylan{width:min(100%,250px);margin:2px 0 8px;padding:4px 12px 4px 4px;border:1px solid var(--line);border-radius:22px;background:var(--surface);color:var(--accent);text-align:left}
.vm-dylan .vm-dur{color:var(--accent)}
.consult-reply.vm-line-now p{color:var(--text)}
.consult-reply.vm-line-now p span,.consult-reply.vm-line-now p{background:color-mix(in srgb,var(--accent) 12%,transparent);border-radius:4px;box-decoration-break:clone;-webkit-box-decoration-break:clone}
.consult-reply.vm-line-ahead p{color:var(--secondary)}
.vm-recording{align-items:center;padding-left:6px;border-color:var(--accent)}
.vm-dot{flex:none;width:9px;height:9px;border-radius:50%;background:#c2473c;animation:vm-blink 1.1s infinite}
.vm-time{flex:none;min-width:34px;font-size:15px;font-variant-numeric:tabular-nums;color:var(--text)}
.vm-live{color:var(--accent);height:30px;overflow:hidden}
.vm-live i{height:22px;opacity:.75;animation:vm-level .9s infinite ease-in-out}
.vm-live i:nth-child(3n){animation-delay:.15s}.vm-live i:nth-child(3n+1){animation-delay:.3s}.vm-live i:nth-child(4n){animation-delay:.45s}
.vm-hint{margin:6px 0 0;font-size:11px;color:var(--secondary);text-align:center}
.vm-intro{margin:0;padding:0;list-style:none;display:grid;gap:12px;font-size:15px;line-height:1.65}
.vm-intro li{display:grid;grid-template-columns:28px minmax(0,1fr);gap:10px;align-items:start}
.vm-intro .ic{width:20px;height:20px;margin-top:3px;color:var(--accent)}
@keyframes vm-blink{50%{opacity:.25}}
@keyframes vm-level{0%,100%{transform:scaleY(.4)}50%{transform:scaleY(1)}}
@media(prefers-reduced-motion:reduce){.vm-dot,.vm-live i{animation:none}}
/* 截圖收納 (spec 2026-10-22 §4.2, d-118): 樣稿 generated_images/intake/intake.css — his photos on his message, the A card
   (1a 2a 4a) and 狄倫's ticket for 去過 (3b). The stamps' red is 手帳's (web/journal/journal-merged.css .rubber, .visit-stamp). */
:root{--ic-stamp:#b5523b;--ic-new:color-mix(in srgb,var(--accent) 11%,transparent)}
.ic-media{display:flex;justify-content:flex-end;gap:6px;margin:16px 0 6px}.ic-media+.consult-user{margin-top:6px}
.ic-shot{flex:0 1 auto;min-width:0;max-width:150px;margin:0;overflow:hidden;border-radius:14px;background:var(--surface);box-shadow:0 0 0 1px #2b241d14,0 6px 16px #2b241d14}
.ic-shot>img{display:block;width:100%;max-height:234px;object-fit:cover;object-position:top}
.message-content-card .chat-card.ic-a{max-width:332px;padding:14px 14px 12px}
.chat-card .ic-badge{display:flex;align-items:center;gap:5px;font-size:11px;color:var(--accent);margin-bottom:10px;font-weight:600;letter-spacing:.3px}.ic-badge .ic{width:14px;height:14px}
.ic-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:center}.ic-head.no-thumb{grid-template-columns:minmax(0,1fr) auto}
.ic-head-turn{grid-template-columns:auto minmax(0,1fr)}.ic-head-turn.no-thumb{grid-template-columns:minmax(0,1fr)}
.ic-thumb{width:58px;height:58px;border-radius:10px;object-fit:cover;display:block}
.ic-stackthumb{position:relative;width:62px;height:62px}
.ic-stackthumb>img{position:absolute;width:44px;height:56px;border-radius:7px;object-fit:cover;object-position:top;background:#fff;box-shadow:0 0 0 1px #2b241d1a,0 2px 6px #2b241d1f}
.ic-stackthumb>:first-child{left:0;top:4px;transform:rotate(-7deg);opacity:.85}.ic-stackthumb>:last-child{right:0;top:0;transform:rotate(4deg)}
.chat-card .ic-name{display:block;font:600 18px/1.3 var(--font-serif);color:var(--text)}
.ic-sub{display:block;font-size:12px;color:var(--secondary);margin-top:1px}
.ic-stamp{display:inline-block;align-self:start;padding:1px 8px;font:600 12px/20px var(--font-serif);color:var(--text);border:1px solid var(--text);background:var(--surface);white-space:nowrap}
.ic-stamp[data-v=wishlist]{border-style:dotted}.ic-stamp[data-v=avoid]{border-style:dashed}
.ic-stamp[data-v=liked]{color:var(--ic-stamp);border:2px solid var(--ic-stamp);border-radius:12px;transform:rotate(-5deg)}
.ic-stamp.was{opacity:.55;text-decoration:line-through}
/* 改狀態 (spec §4.2): the 想去 stamp opens the ones he can pick, under it */
.ic-status{position:relative;align-self:start}.ic-status>summary{list-style:none;cursor:pointer}.ic-status>summary::-webkit-details-marker{display:none}
.ic-status[open]>summary{box-shadow:0 0 0 3px var(--ic-new)}
.ic-pick{position:absolute;z-index:3;right:0;top:calc(100% + 8px);display:flex;gap:8px;padding:10px;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 22px #2b241d1f}
#app .ic-pick .ic-stamp{width:auto;min-height:32px;padding:4px 10px;border-radius:0}
#app .ic-pick .ic-stamp[data-s=liked]{color:var(--ic-stamp);border:2px solid var(--ic-stamp);border-radius:12px}
#app .ic-pick .ic-stamp[data-s=avoid]{border-style:dashed}#app .ic-pick .ic-stamp[data-s=wishlist]{border-style:dotted}
.chat-card .ic-headline{margin:10px 0 0;font-size:14px;line-height:1.6;color:var(--text)}
.ic-facts{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:2px}
.ic-facts li{display:grid;grid-template-columns:18px minmax(0,1fr) auto;gap:8px;align-items:start;padding:5px 6px;margin:0 -6px;border-radius:8px;font-size:13px;line-height:1.55;color:var(--text)}
.ic-facts li .ic{width:16px;height:16px;margin-top:2px;color:var(--secondary)}
.ic-facts li.new{background:var(--ic-new)}.ic-facts li.new .ic{color:var(--accent)}
.ic-facts li.mem{background:var(--gold-soft)}.ic-facts li.mem .ic{color:var(--ic-stamp)}
.ic-facts b{font-weight:600}.chat-card .ic-facts small{display:inline;margin:0;font-size:11px;color:var(--secondary);white-space:nowrap}
.ic-facts .ic-newtag{font-size:10px;font-weight:700;color:var(--accent);letter-spacing:1px;padding-top:2px}
.chat-card .ic-kept{display:flex;align-items:center;gap:6px;margin:8px 0 0;font-size:12px}.ic-kept .ic{width:14px;height:14px}
.ic-turn{display:flex;align-items:center;gap:6px;margin-top:10px;font-size:12px;color:var(--secondary)}.ic-turn .ic{width:13px;height:13px}.ic-turn>span:not(.ic-stamp){margin-left:4px}
.ic-foot{display:flex;align-items:center;gap:8px;margin-top:12px;padding-top:10px;border-top:1px dashed var(--line)}
.ic-srcs{display:flex;align-items:center;gap:6px;flex:1;min-width:0;overflow:hidden;font-size:11px;color:var(--secondary)}
.ic-src{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}.ic-src .ic{width:13px;height:13px}.ic-src+.ic-src:before{content:'·';margin-right:2px}
#app .ic-open{display:inline-flex;align-items:center;gap:5px;flex:none;width:auto;min-height:36px;padding:0 13px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:13px}
#app .ic-open .ic{width:15px;height:15px}
.message-content-card .chat-card.ic-b{max-width:336px;padding:0;overflow:visible;background:transparent}
.ic-tab{display:inline-flex;align-items:center;gap:8px;margin-left:14px;padding:6px 12px;background:var(--surface);border:1px solid var(--line);border-bottom:0;font-size:13px;color:var(--text)}
.ic-tab b{font:600 15px/1.2 var(--font-serif)}.ic-tab .ic-stamp{font-size:11px;line-height:17px}.ic-tab>span:not(.ic-stamp){color:var(--secondary);font-size:12px}
.ic-ticket{position:relative;padding:16px 18px 14px;filter:drop-shadow(0 6px 12px #2b241d1c);background:
  radial-gradient(circle at 0 62px,transparent 9px,var(--surface) 9.5px) left/51% 100% no-repeat,
  radial-gradient(circle at 100% 62px,transparent 9px,var(--surface) 9.5px) right/51% 100% no-repeat}
.ic-ticket header{display:flex;align-items:center;gap:8px;padding-bottom:14px;border-bottom:1.5px dashed var(--line);font-size:12px;color:var(--secondary)}
.ic-ticket header time{font:600 20px/1 var(--font-serif);color:var(--text);border-bottom:1px dotted var(--secondary)}
.ic-made{margin-left:auto;padding:1px 8px;font-size:11px;color:var(--surface);background:var(--text);border-radius:9px}
.ic-stamped{margin-left:auto;padding:2px 10px;border:2px solid var(--ic-stamp);border-radius:14px;color:var(--ic-stamp);font:600 13px/1.3 var(--font-serif);transform:rotate(-4deg)}
.ic-stamped[data-v=neutral]{border-color:var(--secondary);color:var(--secondary)}.ic-stamped[data-v=avoid]{border-style:dashed;border-color:var(--secondary);color:var(--secondary)}
.ic-ticket-body{display:grid;grid-template-columns:78px minmax(0,1fr);gap:12px;margin-top:14px;align-items:start}.ic-ticket-body.no-photo{grid-template-columns:minmax(0,1fr)}
.ic-ticket-body img{display:block;width:78px;height:96px;object-fit:cover;box-shadow:0 0 0 3px #fff,0 2px 6px #2b241d33;transform:rotate(-2deg)}
.chat-card .ic-heard{margin:0;font:16px/1.6 var(--font);color:var(--text)}.chat-card .ic-hint{margin:6px 0 0;font-size:12px;color:var(--ic-stamp)}
.ic-rubbers{display:flex;justify-content:center;gap:14px;margin-top:16px}
#app .ic-rubber{display:grid;place-items:center;width:66px;height:66px;min-height:66px;padding:0;border-radius:50%;border:3px double var(--ic-stamp);background:none;color:var(--ic-stamp);font:600 16px/1 var(--font-serif);opacity:.5;transform:rotate(-8deg)}
#app .ic-rubber:nth-child(2){transform:rotate(4deg);border-color:#7d7768;color:#7d7768}#app .ic-rubber:nth-child(3){transform:rotate(-3deg);border:2px dashed #7d7768;color:#7d7768}
#app .ic-rubber.suggest{opacity:1;box-shadow:0 0 0 5px color-mix(in srgb,var(--ic-stamp) 14%,transparent)}
.ic-ticket footer{display:flex;align-items:center;gap:10px;margin-top:14px;font-size:12px;color:var(--secondary)}.ic-ticket footer span{flex:1;line-height:1.5}
#app .ic-drop{flex:none;width:auto;min-height:36px;padding:0;font-size:12px;color:var(--secondary);text-decoration:underline;text-underline-offset:3px}
.ic-ticket .chat-card-state{margin:12px 0 0}
/* d-124: 解籤人's row is [卜這一題][更多]; with two buttons the first fills and 更多 keeps its 74px. */
#app .consult-context-tools:not(:has(>:nth-child(3))){grid-template-columns:minmax(0,1fr) 74px}

/* 解籤人的塔羅（d-125、d-127；規格 docs/superpowers/specs/2026-10-23-reader-tarot-lenormand-design.md 第 7 節）。
   照 10/23 看過的樣稿 generated_images/reader-tarot/tarot.css 搬進來。新的顏色都有出處：牌桌、牌背取自解籤人頭像 reader.svg
   （紫夜 #3D3554、#2A2540 是它的暗面，米 #F3E7C4，金 #C9A25A、#E2B23B，朱 #C85A48）；聖杯用 app 的 --accent；其餘照參考檔的花色配色調淡。不用綠色。 */
:root{--tt-night:#3D3554;--tt-night-deep:#2A2540;--tt-cream:#F3E7C4;--tt-gold:#C9A25A;--tt-gold-hi:#E2B23B;--tt-red:#C85A48;
  --tt-cloth:radial-gradient(130% 90% at 50% 0%,#4a4163 0%,var(--tt-night) 48%,var(--tt-night-deep) 100%)}

/* ---- 擬題泡泡：用什麼問 ---- */
#app .tm-ask{margin-top:12px;padding-top:11px;border-top:1px dashed color-mix(in srgb,var(--accent) 32%,transparent)}
#app .tm-ask>small{display:block;margin:0 0 8px;color:var(--secondary);font-size:12px}
#app .tm-methods{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
#app .tm-method{display:flex;flex-direction:column;align-items:center;gap:2px;width:auto;min-height:0;margin:0;padding:10px 4px 8px;border:1px solid var(--line);
  border-radius:12px;background:var(--surface);color:var(--text);font:inherit;line-height:1.3}
#app .tm-method .ic{width:24px;height:24px;margin-bottom:2px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
#app .tm-method b{font:500 14px/1.3 var(--font)}
#app .tm-method span{font-size:11px;color:var(--secondary)}
#app .tm-method[aria-pressed=true]{border:1.5px solid var(--accent);color:var(--accent);box-shadow:0 2px 0 color-mix(in srgb,var(--accent) 16%,transparent)}
#app .tm-method[aria-pressed=true] span{color:var(--accent)}
#app .tm-hint{display:flex;align-items:center;gap:10px;margin:10px 2px 0;font-size:13px;line-height:1.45;color:var(--text)}
#app .tm-hint small{display:block;color:var(--secondary);font-size:11.5px}
#app .tm-note{margin:10px 2px 0;font-size:13px;line-height:1.6;color:var(--text)}
#app .tm-note .link-button{display:inline;width:auto;min-height:0;margin:0 0 0 4px;padding:0;font-size:13px}
/* 牌陣的小圖：每一格是一張牌的位置 */
.tm-mini{display:grid;grid-template-columns:repeat(var(--c),7px);grid-auto-rows:10px;gap:2px;flex:none;color:var(--accent)}
.tm-mini i{border-radius:1.5px;background:currentColor;opacity:.85}
.tm-mini i.o{background:none}
#app .consult-proposal.tt-chosen .tt-chosen-line{display:flex;align-items:center;gap:8px;margin-top:8px;font-size:12.5px;color:var(--accent)}

/* ---- 牌桌 ---- */
#app .page[data-name=draw] .page-content{background:var(--bg)}
#app .tt-table{padding:4px 0 18px}
#app .tt-q{margin:2px 18px 10px}
#app .tt-q small{display:block;color:var(--secondary);font-size:12px}
#app .tt-q p{margin:2px 0 0;font:19px/1.5 var(--font-serif);color:var(--text)}
#app .tt-note{margin:4px 18px 8px;padding:8px 12px;border-radius:10px;background:var(--surface);font-size:13px;color:var(--text)}
.tt-spreads{display:flex;gap:8px;overflow-x:auto;padding:2px 16px 10px;scrollbar-width:none}
#app .tt-chip{flex:none;display:flex;flex-direction:column;align-items:center;gap:6px;width:auto;min-width:76px;min-height:0;margin:0;padding:9px 8px 7px;border:1px solid var(--line);
  border-radius:12px;background:var(--surface);color:var(--text);font:12px/1.3 var(--font)}
#app .tt-chip em{font-style:normal;font-size:10.5px;color:var(--accent)}
#app .tt-chip[aria-pressed=true]{border:1.5px solid var(--accent);color:var(--accent)}
.tt-opts{display:flex;align-items:center;justify-content:space-between;margin:0 18px 10px;font-size:13px;color:var(--secondary)}
#app .tt-switch{display:inline-flex;align-items:center;gap:8px;width:auto;min-height:0;margin:0;padding:4px 0;border:0;background:none;color:var(--text);font:13px var(--font)}
.tt-switch i{position:relative;width:38px;height:22px;border-radius:11px;background:var(--line);transition:background .2s}
.tt-switch i::after{content:'';position:absolute;left:3px;top:3px;width:16px;height:16px;border-radius:50%;background:var(--surface);transition:transform .2s}
.tt-switch[aria-checked=true] i{background:var(--accent)}
.tt-switch[aria-checked=true] i::after{transform:translateX(16px)}

.tt-cloth{position:relative;margin:0 12px;padding:14px 8px 10px;border-radius:18px;background:var(--tt-cloth);color:var(--tt-cream);
  box-shadow:inset 0 0 0 1px #c9a25a40,0 6px 18px #2a254030;overflow:hidden;isolation:isolate}
.tt-cloth::before,.tt-record-cloth::before{content:'';position:absolute;inset:0;z-index:-1;opacity:.55;background-image:
  radial-gradient(circle at 12% 18%,#f3e7c4 0 1px,transparent 1.6px),radial-gradient(circle at 86% 12%,#f3e7c4 0 1.2px,transparent 1.8px),
  radial-gradient(circle at 70% 58%,#f3e7c4 0 .8px,transparent 1.4px),radial-gradient(circle at 20% 70%,#f3e7c4 0 1px,transparent 1.6px),
  radial-gradient(circle at 50% 92%,#f3e7c4 0 .8px,transparent 1.4px),radial-gradient(circle at 93% 84%,#f3e7c4 0 1px,transparent 1.6px)}
.tt-spread{--w:58px;display:grid;grid-template-columns:repeat(var(--cols),var(--w));column-gap:28px;row-gap:4px;justify-content:center}
.tt-spread.c4{--w:42px;column-gap:24px}
.tt-slot{display:flex;flex-direction:column;align-items:center;gap:5px}
.tt-slot.x{z-index:2}
.tt-slot.x>.tc{transform:rotate(90deg)}
.tt-slot.fresh>.tc{animation:tt-flip .45s ease-out}
.tt-slot.x.fresh>.tc{animation:none}
@keyframes tt-flip{from{transform:rotateY(90deg)}to{transform:none}}
.tt-lbl{min-height:30px;max-width:118px;white-space:nowrap;font-size:11.5px;line-height:1.3;text-align:center;color:#efe3c6;opacity:.9}
.c4 .tt-lbl{width:64px;max-width:none;white-space:normal;font-size:10.5px}
.tt-lbl b{font-weight:500;color:var(--tt-gold-hi);margin-right:3px}
.tt-lbl .up,.tt-lbl .down{display:block;font-size:11px}
.tt-lbl .down{color:#f2a99a}
#app .tt-status{margin:10px 0 0;text-align:center;font-size:13px;color:var(--secondary)}
#app .tt-status b{color:var(--text);font-weight:500}
#app .consult-compose-dock .tt-wait{margin:2px 0 8px;font-size:14px;color:var(--text)}
#app .tt-table .error-text{margin:10px 18px 0;text-align:center}
#app .consult-context-tools.tt-tools.one{grid-template-columns:minmax(0,1fr)}

/* 牌：沒有版權的原版牌圖（d-143），照原牌的比例：塔羅 1909 Rider 版約 1:1.73，雷諾曼 Didot 牌 1:1.62 */
.tc{--ratio:1.62;position:relative;display:block;flex:none;width:var(--w);height:calc(var(--w)*var(--ratio))}
.tc.tarot{--ratio:1.73}
.tc-face{position:absolute;inset:0;border-radius:3px;overflow:hidden;background:#efe6cf;box-shadow:0 2px 5px #1e1a2c55}
.tc-face img{display:block;width:100%;height:100%;-webkit-user-select:none;user-select:none}
.tc-face.rev{transform:rotate(180deg)}
.tc-empty{position:absolute;inset:0;display:grid;place-items:center;border:1.5px dashed #efe3c666;border-radius:6px;font:500 calc(var(--w)*.3)/1 Georgia,serif;color:#efe3c680}
.tc-back{position:absolute;inset:0;border-radius:3px;background:#efe6cf center/100% 100% no-repeat;box-shadow:0 1px 3px #1e1a2c55}
.tc-back.tarot{background-image:url(/assets/cards/tarot/back.webp)}
.tc-back.lenormand{background-image:url(/assets/cards/lenormand/back.webp)}
/* 牌上印的是英文、德文：中文牌名寫在牌下的標籤裡 */
.tt-lbl .nm{display:block;font-size:11px;color:#efe3c6}

/* 扇形牌堆：點哪一張都是照洗好的順序拿下一張（規格 §3.3） */
#app .fan{--w:38px;position:relative;display:block;width:100%;height:150px;min-height:0;margin:6px 0 0;padding:0;border:0;background:none;overflow:hidden;cursor:pointer}
.fan-card{position:absolute;left:50%;top:22px;transform:translateX(-50%) rotate(var(--a));transform-origin:50% 430%}
#app .fan:active .fan-card:nth-child(odd){transform:translateX(-50%) rotate(var(--a)) translateY(-3px)}
/* 還沒洗的整副牌 */
.tt-pile{padding:14px 0 4px}
.tt-deck{--w:58px;position:relative;width:var(--w);height:calc(var(--w)*1.73);margin:0 auto}
.tt-deck .tc{position:absolute;left:0;top:0}
.tt-deck .tc:nth-child(1){transform:translate(-4px,4px) rotate(-4deg)}
.tt-deck .tc:nth-child(2){transform:translate(3px,2px) rotate(3deg)}
.tt-deck .tc:nth-child(3){transform:rotate(-.5deg)}
#app .tt-deck-note{margin:10px 0 0;text-align:center;font-size:12px;line-height:1.4;color:var(--secondary)}

/* ---- 聊天室的封面：桌上那一攤牌的照片，代替易經封面的卦象圖 ---- */
#app .tt-cover .oracle-cover-open .oracle-cover-scene{height:270px}
#app .tt-photo{position:absolute;right:-6px;top:58px;width:156px;height:204px;display:grid;place-items:center;border:7px solid #fffdf6;
  background:var(--tt-cloth);transform:rotate(6deg);box-shadow:0 3px 7px #25334b20;z-index:0}
.tt-photo .tt-spread,.tt-thumb .tt-spread{--w:28px;column-gap:9px;row-gap:7px}
.tt-photo .tt-spread.c4{--w:22px;column-gap:6px;row-gap:4px}
#app .tt-cover .oracle-cover-name.tt-name{top:92px;flex-direction:column;align-items:flex-start;gap:0;line-height:1.15;max-width:50%}
#app .tt-cover .oracle-cover-name.tt-name i{font-size:.5em;transform:none;margin-left:4px;font-style:normal}
#app .tt-cover .oracle-cover-name.tt-name span{word-break:keep-all}
#app .tt-drawn{margin:-6px 4px 12px;padding:0;list-style:none;font-size:12.5px;line-height:1.8;color:var(--oracle-sub)}
#app .tt-drawn b{font-weight:500;color:var(--oracle-ink)}
#app .tt-drawn em{font-style:normal;color:var(--tt-red)}
#app .tt-pending{display:flex;align-items:center;gap:8px;margin:0 4px 6px;font-size:13px;line-height:1.6;color:var(--oracle-ink)}
#app .tt-pending::before{content:'';width:7px;height:7px;border-radius:50%;background:var(--tt-gold);animation:tt-pulse 1.6s ease-in-out infinite}
@keyframes tt-pulse{50%{opacity:.25}}
.tt-thumb{display:grid;place-items:center;background:var(--tt-cloth);overflow:hidden}
.tt-thumb .tt-spread{--w:12px;column-gap:3px;row-gap:2px}

/* ---- 手帳的牌卡頁 ---- */
#app .tt-record-cloth{margin:0 0 14px;padding:14px 6px 6px;border-radius:12px;background:var(--tt-cloth);color:var(--tt-cream);position:relative;isolation:isolate;overflow:hidden}
#app .tt-record-cloth .tt-spread{--w:46px;column-gap:40px}
#app .tt-record-cloth .tt-spread.c4{--w:40px;column-gap:24px}
#app .tt-record-cloth .tt-lbl{min-height:28px}
.oracle-meta .tt-meta-ic{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.6}
@media (prefers-reduced-motion:reduce){.tt-slot.fresh>.tc,#app .tt-pending::before{animation:none}}

.page[data-name=draw]:has(.consult-compose-dock) .page-content{padding-bottom:calc(var(--consult-compose-height,120px) + 16px)}
.tt-lbl .xl{display:block;margin-top:2px}
.tt-lbl .xl .up,.tt-lbl .xl .down{display:inline}

/* ---- 雷諾曼（d-125、d-131；規格 2026-10-23-reader-lenormand-design 第 2、5 節）：你的牌放中間，其他牌圍著它。
   沒有新顏色：代表你的那張用牌桌的金框起來。 ---- */
.tc-face.ln-asker{box-shadow:0 0 0 2px var(--tt-gold-hi),0 0 0 4px #e2b23b55,0 2px 5px #1e1a2c55}
.tt-slot.ln-me .tt-lbl b{margin:0;color:var(--tt-gold-hi)}
.tt-spread.c5{--w:44px;column-gap:10px}
.c5 .tt-lbl{max-width:58px;font-size:10.5px}
.tt-photo .tt-spread.c5{--w:20px;column-gap:4px}
#app .tt-record-cloth .tt-spread.c5{--w:40px;column-gap:12px}
.tt-askers{display:inline-flex;gap:6px}
#app .tt-asker{width:auto;min-height:0;margin:0;padding:5px 14px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text);font:13px/1.3 var(--font)}
#app .tt-asker[aria-pressed=true]{border:1.5px solid var(--accent);color:var(--accent)}

/* 3D 我的: sign-out, memory rows, recent changes, help lines and the survey. */
.me-signout{margin:26px 0 8px}.me-signout button{width:100%}
.memory-list .item-title.memory-text{white-space:normal;line-height:1.7;overflow-wrap:anywhere}
.memory-revisions .item-title{white-space:normal;font-size:12px;line-height:1.6;color:var(--secondary);overflow-wrap:anywhere}
.memory-revisions .item-after button{width:auto;min-height:34px;font-size:12px}
.help-lines .item-after{font-size:18px;font-weight:650;color:var(--accent)}
.survey-again{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0 4px}
.survey-again>span{width:100%;font-size:13px;color:var(--text)}
.danger-link{color:#a6503b}
.me-permission b{font-weight:600}

.memory-intro h2{font-size:20px;line-height:28px;margin:4px 0 8px}.memory-intro p{color:var(--secondary);font-size:14px;line-height:22px}.memory-tabs{display:flex;gap:6px;margin:20px 0}.memory-tabs button{flex:1;min-width:0;padding:9px 8px;border:0;border-radius:22px;font:inherit;font-size:14px;white-space:nowrap;background:var(--paper-warm);color:var(--text)}.memory-tabs button[aria-selected=true]{background:var(--accent);color:var(--on-accent)}.memory-list .memory-scene-title{display:block;font-size:17px;line-height:25px;margin-bottom:4px}.memory-scene-status,.memory-note-agent{display:block;color:var(--secondary);font-size:13px;margin-bottom:8px}.memory-list li:has(.memory-scene-title){padding:0 16px;border:1px solid var(--line);border-radius:16px;background:var(--surface);margin:12px 0}.memory-list .memory-text{font-size:16px;line-height:24px}

.memory-list .memory-text{font-weight:400}

.companion-choice{padding:20px;border:1px solid var(--line);border-radius:18px;background:var(--surface);margin:16px 0}.companion-choice.selected{border:2px solid var(--accent)}.companion-choice .avatar{width:56px;height:56px;font-size:24px;background:var(--soft);color:var(--accent)}.companion-choice h2{font-size:20px;line-height:28px;margin:14px 0 8px}.companion-choice p{font-size:16px;line-height:24px}.companion-choice small{font-size:13px;color:var(--accent)}.companion-choice button{width:100%;margin-top:12px}

/* 3E 管理頁: sections, the invite form, stats, wide tables that scroll inside themselves, cards and lines. */
.admin-section{margin:22px 0}.admin-section h2{font-size:15px;margin:0 0 10px}
.admin-invite{display:flex;gap:8px}.admin-invite input{flex:1;min-width:0;min-height:42px;border:1px solid var(--line);border-radius:10px;padding:0 10px;background:var(--surface);color:var(--text);font:inherit}
.admin-invite button{width:auto;padding:0 16px}
.admin-list{list-style:none;padding:0;margin:10px 0 0}.admin-list li{display:flex;align-items:center;gap:8px;padding:6px 0;border-bottom:1px solid var(--line);font-size:13px}
.admin-list li span{flex:1;min-width:0;overflow-wrap:anywhere}.admin-list small{color:var(--secondary)}.admin-list button{width:auto}
.admin-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:0}
.admin-stats div{padding:10px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
.admin-stats dt{font-size:11px;color:var(--secondary)}.admin-stats dd{margin:4px 0 0;font-size:18px;font-weight:650}.admin-stats small{display:block;font-size:10px;font-weight:400;color:var(--secondary)}
.admin-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;max-width:100%}
.admin-table{border-collapse:collapse;font-size:12px;white-space:nowrap}.admin-table th,.admin-table td{padding:6px 8px;border-bottom:1px solid var(--line);text-align:left}
.admin-table th small{display:block;font-weight:400;color:var(--secondary)}.admin-table button{width:auto;min-height:30px}
.admin-card{padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--surface);margin:0 0 10px}
.admin-card header{display:flex;justify-content:space-between;gap:8px;font-size:12px}.admin-card header small{color:var(--secondary)}
.admin-card p{font-size:13px;line-height:1.7;margin:6px 0;overflow-wrap:anywhere}.admin-card p small{display:block;font-size:10px;color:var(--secondary)}
.admin-note{color:#9f5d42}
.admin-lines{padding-left:18px;margin:6px 0;font-size:13px;line-height:1.7}.admin-lines li{overflow-wrap:anywhere}.admin-lines small{display:block;font-size:10px;color:var(--secondary)}

/* Shared visual system from the approved app prototype. */
:root{--bg:#efebe2;--surface:#fbfaf6;--text:#2b241d;--secondary:#70665a;--line:#d6d0c3;--accent:#395b80;--accent-rgb:57,91,128;--soft:#e0e4e5;--on-accent:#fbfaf6;--paper-warm:#e3dfd4;--gold-soft:#ece5d7;--bubble-user:#d5dade;--font:"PingFang TC","Noto Sans TC","Microsoft JhengHei",system-ui,sans-serif;--font-serif:"Songti TC","Noto Serif TC","PMingLiU",Georgia,serif}
body{background:#dedbd2;color:var(--text);font-family:var(--font)}#app{--f7-theme-color:var(--accent);--f7-theme-color-rgb:var(--accent-rgb);--f7-theme-color-shade:color-mix(in srgb,var(--accent) 85%,#000);--f7-theme-color-tint:color-mix(in srgb,var(--accent) 85%,#fff);--f7-color-primary:var(--accent);--f7-page-bg-color:var(--bg);--f7-navbar-bg-color:var(--bg);--f7-bars-bg-color:var(--surface);--f7-list-bg-color:var(--surface);--f7-safe-area-bottom:12px;--f7-navbar-height:56px;--f7-tabbar-labels-height:0px;--f7-dialog-bg-color:var(--surface);--f7-sheet-bg-color:var(--surface);--f7-button-border-radius:999px}.phone{background:var(--bg)}.phone.dark{--bg:#232425;--surface:#2d2e2e;--text:#f1eee5;--secondary:#c4c0b6;--line:#454545;--accent:#658eba;--accent-rgb:101,142,186;--soft:#313a43;--on-accent:#1c2126;--paper-warm:#3a3b3b;--gold-soft:#484439;--bubble-user:#313c48}.page-content,.page-content.white{background:var(--bg)}.navbar-bg,.toolbar-bg{background:var(--bg);box-shadow:none}.navbar-bg:after,.toolbar:before,.toolbar:after{display:none}.navbar .title{font-family:var(--font-serif);font-weight:500}.primary,.secondary,.button{box-shadow:none}.button-fill,.primary{background:var(--accent);color:var(--on-accent)}.button-tonal,.secondary{background:var(--paper-warm);color:var(--text)}.icon-btn{color:var(--accent)}.app-tabbar{background:var(--surface);box-shadow:none;backdrop-filter:none}.app-tabbar .toolbar-inner{background:var(--surface)}.app-tabbar .tab-link-active{color:var(--accent)}.app-tabbar .tab-link-highlight{background:transparent}.tabbar-label{font-size:12px}.content-inset{padding:14px 20px 24px}.group-title{font-size:13px;color:var(--secondary);font-weight:500;letter-spacing:0}.list.inset{margin-left:0;margin-right:0;box-shadow:none;background:transparent}.list ul{background:transparent}.list ul:before,.list ul:after,.list .item-inner:after{display:none}.list .item-content{padding-left:0}.list .item-inner{padding-right:0;padding-block:14px}.list .item-title{font-size:16px}.list .item-subtitle{font-size:13px;line-height:1.7}.type-mark,.type-mark.divination,.type-mark.plan{background:var(--soft);color:var(--accent)}.profile-banner{padding:14px 0 22px;background:transparent;border-radius:0}.profile-banner .avatar{background:var(--soft);color:var(--accent);width:64px;height:64px;font:28px var(--font-serif)}.profile-banner b{font:600 24px/1.4 var(--font-serif)}.profile-banner small{font-size:13px}.count-cards{background:var(--surface);box-shadow:none}.count-cards button{font-size:13px;border:0}.setting-row,.setting-choice{border:0}.setting-row small,.detail-link small{font-size:13px}.record-title{font:600 24px/1.4 var(--font-serif)}.record-body{font-size:16px;line-height:1.65}.record-body p{line-height:1.65}.detail-link{font-size:16px}.reflection{border-color:var(--accent)}.reflection b{color:var(--accent);font-size:13px}.reflection p{font-size:16px}.empty{font-size:16px;color:var(--secondary)}.empty strong{font:600 20px var(--font-serif)}.error-text{font-size:14px}.hint,.form-intro{font-size:14px;line-height:1.8}.searchbar{background:var(--paper-warm)}.searchbar input{background:var(--surface);font-size:16px}.field input,.field textarea,.field select{font-size:16px}.note-text-editor{font-size:16px}.assistant-intro{color:var(--text)}.assistant-intro{margin:4px 0 24px}.assistant-document,.content-card{background:var(--surface);border:0;box-shadow:none}.assist-section-content{font-size:16px;line-height:1.65}.chat-card{background:var(--surface);box-shadow:none;border:0}.message-sent .message-bubble{background:var(--bubble-user);color:var(--text)}.message-received .message-bubble{background:var(--surface);color:var(--text)}.message-text{font-size:16px}.sheet-modal,.dialog{color:var(--text)}
.page[data-name=home],.page[data-name=chat],.page[data-name=divination]{--f7-navbar-height:56px}.page:is([data-name=home],[data-name=chat],[data-name=divination]) .footer-actions{bottom:0;height:auto}.footer-actions:has(.consult-compose-dock) .toolbar-inner{padding:0;height:auto}.page:is([data-name=home],[data-name=chat],[data-name=divination]):has(.consult-compose-dock) .page-content{padding-bottom:calc(var(--consult-compose-height,120px) + 16px)}
.page[data-name=journal]{--f7-navbar-height:56px}.journal-hub{padding-top:0;padding-bottom:74px}.journal-type-tabs{display:flex;gap:5px;margin:0 0 20px;background:var(--paper-warm);padding:4px;border-radius:999px}.journal-type-tabs button{flex:1;min-height:40px;font-size:14px;border-radius:999px}.journal-type-tabs button[aria-selected=true]{background:var(--surface);color:var(--accent);font-weight:600}.journal-topic{margin-top:20px}.journal-topic h2{font:500 18px/1.5 var(--font-serif);margin:0 0 4px}.journal-content-row{display:flex;gap:10px;align-items:flex-start;padding:14px 0}.journal-entry-open{display:flex;align-items:flex-start;gap:14px;padding:0;text-align:left;flex:1;min-width:0}.journal-entry-copy{display:block;flex:1;min-width:0}.journal-entry-copy strong{font:500 18px/1.5 var(--font-serif);display:block;overflow-wrap:anywhere}.journal-entry-copy small{font-size:13px;color:var(--secondary);display:block;margin-top:5px}.journal-entry-copy p{font-size:15px;line-height:1.6;margin:6px 0 0}.journal-reflection{display:block;background:var(--paper-warm);padding:10px;font-size:13px;line-height:1.65;margin-top:8px;border-radius:4px}.journal-note-mark{width:62px;height:82px;display:grid;place-items:center;background:var(--paper-warm);color:var(--accent);flex:none;border-radius:4px}.journal-add{position:absolute;right:20px;bottom:calc(var(--f7-tabbar-labels-height) + var(--f7-safe-area-bottom) + 16px);width:56px;height:56px;display:grid;place-items:center;min-height:56px;border-radius:50%;background:var(--accent);color:var(--on-accent);z-index:5}.journal-card-check{min-height:44px;display:flex;align-items:center}.journal-card-check input{width:20px;height:20px;accent-color:var(--accent)}.journal-context-actions{position:absolute;bottom:calc(var(--f7-tabbar-labels-height) + var(--f7-safe-area-bottom));left:0;right:0;display:flex;align-items:center;gap:8px;padding:12px 20px;background:var(--surface);z-index:5}.journal-context-actions .consult-primary{flex:1;font-size:14px}.journal-bottom-tools{display:flex;justify-content:space-between;gap:12px;margin-top:28px}.journal-bottom-tools button{font-size:13px;min-height:44px;color:var(--accent)}
@media(prefers-reduced-motion:no-preference){.consult-home-paper,.consult-intro{animation:paper-appear .25s ease-out}@keyframes paper-appear{from{opacity:.7;transform:translateY(5px)}to{opacity:1;transform:none}}}.phone.large-font .journal-entry-copy p,.phone.large-font .record-body{font-size:18px}

/* Framework7 gives bare buttons full width and positions toolbar-inner absolutely. */
.phone:not(.dark){--bg:#efebe2;--surface:#fbfaf6;--text:#2b241d;--secondary:#70665a;--line:#d6d0c3;--accent:#395b80;--accent-rgb:57,91,128;--soft:#e0e4e5;--paper-warm:#e3dfd4;--gold-soft:#ece5d7;--bubble-user:#d5dade;--on-accent:#fbfaf6}
#app .consult-context-tools button,#app .consult-tools button{width:auto;flex:none}#app .consult-send{width:42px;flex:none}#app .footer-actions:has(.consult-compose-dock){height:var(--consult-compose-height,120px);border:0;background:var(--bg)}#app .footer-actions:has(.consult-compose-dock) .toolbar-inner{position:relative;padding:0;height:100%;overflow:visible}#app .consult-bottom-composer{width:100%;flex:1;min-width:0}.page:is([data-name=home],[data-name=chat],[data-name=divination]) .page-content.white{background:var(--bg)}

/* The whole app takes the companion's colours (d-098). Each companion has one seed colour: 狄倫 the indigo of his
   shirt #3b5b7e (the sets above, also the default), 沐青 the gold of her flower #e4b840. Every token is worked out
   from the seed: the accent darkened (lightened in dark mode) until text on the background reads at 4.5:1, a yellow
   leaning to amber on the way so it never turns olive, and the tints mixed into the paper. core/render.mjs puts
   data-companion on .phone. */
.phone[data-companion=muqing]:not(.dark){--bg:#f5efdf;--surface:#fefcf4;--line:#e2d7be;--accent:#926118;--accent-rgb:146,97,24;--soft:#faf2db;--paper-warm:#ede4d0;--gold-soft:#f4e9d4;--bubble-user:#f9eed0;--on-accent:#fefcf4}
.phone.dark[data-companion=muqing]{--bg:#312b20;--surface:#3b3529;--line:#59503d;--accent:#e0b644;--accent-rgb:224,182,68;--soft:#67572f;--paper-warm:#4b4434;--gold-soft:#514936;--bubble-user:#715f30;--on-accent:#3b3529}
/* Shades of the accent for borders and quiet marks, so no component keeps a fixed green. */
.phone{--accent-line:color-mix(in srgb,var(--accent) 45%,var(--surface));--accent-weak:color-mix(in srgb,var(--accent) 20%,var(--surface))}

.oracle-hex{display:inline-block;font-size:26px;margin:4px 0;color:inherit}

.page:is([data-name=chat],[data-name=journal]),.phone.dark .page:is([data-name=chat],[data-name=journal]){--bg:inherit;--f7-page-bg-color:var(--bg)}

.record-followup-composer{display:flex;align-items:center;gap:10px;padding:12px 16px;width:100%;height:76px;background:var(--surface)}#app .record-followup-composer textarea{flex:1;min-width:0;width:0;min-height:46px;max-height:90px;padding:10px 4px;border:0;background:transparent;font-size:16px;line-height:1.7;resize:none}#app .record-followup-composer button{flex:none;width:46px;height:46px;padding:10px}#app .footer-actions:has(.record-followup-composer){height:76px}#app .footer-actions:has(.record-followup-composer) .toolbar-inner{position:relative;height:100%;padding:0}.page[data-name=record]:has(.record-followup-composer) .page-content{padding-bottom:100px}

.assistant-person{overflow:hidden;position:relative;background:var(--paper-warm)}.assistant-person img{width:76px;max-width:none;left:-18px;top:-2px}

.oracle-verdict>div{min-width:0;flex:1}.oracle-grade{white-space:normal;max-width:76px}.journal-entry-copy strong,.journal-entry-copy p,.journal-reflection{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden}.journal-entry-copy small{display:block}

/* d-082: one workspace, with the journal opened on its native back stack. */
.root-page>.page-content{padding-bottom:0}.journal-navigation .navbar-inner{display:grid;grid-template-columns:44px minmax(0,1fr);align-items:center;gap:4px;padding-inline:14px}.journal-navigation .journal-type-tabs{margin:0;width:100%}.journal-navigation .icon-btn{width:44px;height:44px}.journal-type-tabs button{width:auto;min-width:0}.journal-add{bottom:max(20px,env(safe-area-inset-bottom));width:48px;height:48px;min-height:48px}.journal-context-actions{bottom:0}.consult-history-title{font:500 18px/1.4 var(--font-serif)}.consult-new-conversation{display:flex;align-items:center;gap:10px;width:100%;min-height:56px;padding:12px 16px;margin:0 0 20px;background:var(--soft);color:var(--accent);border-radius:12px;font-size:16px}.consult-history-tools{display:flex;flex-wrap:wrap;gap:20px;margin-top:24px;padding-top:12px;border-top:1px solid var(--line)}

/* Approved 390×844 journal prototype: warm paper, four views, no extra product navigation. */
.life-navigation .navbar-inner{grid-template-columns:32px minmax(0,1fr);gap:6px;padding-inline:18px}.life-navigation .icon-btn{width:32px}.life-tabs{gap:2px}.life-tabs button{font-size:14px;white-space:nowrap}.life-main{padding-bottom:90px}.life-main h2,.life-main h3,.life-detail h2{font-family:var(--font-serif);font-weight:500}.life-main h2{font-size:22px;margin:0}.life-main h3{font-size:20px;margin:0}.life-text{color:var(--accent);font-size:13px;min-height:40px;padding:6px 0}.life-icon{display:inline-flex;align-items:center;justify-content:center;min-width:36px;min-height:44px;color:var(--accent)}.life-icon .ic{width:18px;height:18px}.life-month-heading,.life-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 14px}.life-month-heading>div{display:flex;align-items:center}.life-section-title{margin-top:24px}.life-section-title small,.life-quiet{color:var(--secondary);font-size:13px}.life-weekdays,.life-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:2px}.life-weekdays{text-align:center;color:var(--secondary);font-size:12px;margin-bottom:5px}.life-calendar{margin-bottom:26px}.life-calendar-day{display:flex;flex-direction:column;justify-content:center;align-items:center;min-height:44px;padding:4px 0;gap:1px;border-radius:11px;font-size:14px}.life-calendar-day small{height:12px;font-size:10px;line-height:12px;color:var(--accent)}.life-calendar-day.today{box-shadow:inset 0 0 0 1px var(--accent)}.life-calendar-day[aria-pressed=true]{background:var(--accent);color:var(--on-accent)}.life-calendar-day[aria-pressed=true] small{color:var(--on-accent)}.life-day-entries{padding-left:13px;border-left:2px solid var(--line);margin-bottom:25px}.life-day-entry{margin:0 0 12px}.life-day-open{display:block;width:100%;text-align:left;padding:0;font-size:14px}.life-day-open strong{font-weight:500;margin-right:6px}.life-day-open p{font-size:13px;line-height:1.7;color:var(--secondary);margin:3px 0 0}.life-badge{display:inline-block;background:var(--soft);color:var(--accent);border-radius:4px;font-size:10px;line-height:1.3;padding:3px 5px;white-space:nowrap;font-weight:400;flex:none}.life-badge-muted{background:#eee3d9;color:#8b5941}.life-eyebrow{font-size:12px;font-weight:400;color:var(--secondary);margin:24px 0 10px;display:block}.life-upcoming-open{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:16px 0;border-bottom:1px solid var(--line)}.life-upcoming-mark{font-size:17px;flex:none}.life-upcoming-open>span:nth-child(2){flex:1}.life-upcoming-open strong{font-size:14px;font-weight:500}.life-upcoming-open small,.life-follow-up small{display:block;font-size:12px;color:var(--secondary);margin-top:4px}.life-upcoming-open>.ic{width:17px;height:17px;color:var(--accent)}.life-follow-up{display:block;text-align:left;width:100%;padding:14px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.65}.life-follow-up strong{font-weight:400}.life-recent{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}.life-recent>button:first-child{display:flex;gap:8px;text-align:left;align-items:center;font-size:14px}.life-kind-tabs,.life-status-tabs{display:flex;gap:7px;flex-wrap:wrap}.life-kind-tabs{margin-bottom:18px}.life-kind-tabs button{min-height:38px;padding:7px 11px;font-size:13px;color:var(--secondary);border-radius:999px}.life-kind-tabs button[aria-selected=true]{background:var(--soft);color:var(--accent)}.life-portrait{margin-bottom:25px}.life-portrait>small{font-size:11px;color:var(--accent)}.life-portrait p{font-size:13px;line-height:1.9;color:var(--secondary);margin:6px 0}.life-portrait-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}.life-portrait-meta span{display:flex;gap:9px;flex-wrap:wrap;color:var(--accent);font-size:11px}.life-portrait-meta small{font-size:11px}.life-status-tabs{gap:18px;border-bottom:1px solid var(--line)}.life-status-tabs button{min-height:38px;font-size:12px;color:var(--secondary);padding:0 0 7px;border-bottom:1px solid transparent;border-radius:0}.life-status-tabs button[aria-pressed=true]{color:var(--accent);border-color:var(--accent)}.life-entity-row{display:grid;grid-template-columns:22px minmax(0,1fr);gap:10px;padding:18px 0;border-bottom:1px solid var(--line)}.life-select{position:relative;display:block;align-self:start;margin-top:4px;width:21px;height:21px}.life-select input{position:absolute;inset:0;opacity:0;width:21px;height:21px;margin:0}.life-select>span{display:grid;place-items:center;width:19px;height:19px;border:1px solid var(--line);border-radius:5px;background:var(--surface);color:transparent}.life-select .ic{width:13px;height:13px}.life-select input:checked+span{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.life-select input:focus-visible+span{outline:2px solid var(--accent);outline-offset:3px}.life-entity-open{display:block;width:100%;padding:0;text-align:left;min-width:0}.life-row-title{display:flex;gap:10px;justify-content:space-between;align-items:start}.life-row-title strong{font:18px/1.4 var(--font-serif);overflow-wrap:anywhere}.life-entity-open p{font-size:14px;line-height:1.7;margin:7px 0;color:var(--text);overflow-wrap:anywhere}.life-entity-open small{font-size:12px;color:var(--secondary)}.life-fold{border-bottom:1px solid var(--line)}.life-fold>summary{display:flex;align-items:center;gap:8px;justify-content:space-between;min-height:48px;font-size:12px;color:var(--secondary);cursor:pointer;list-style:none}.life-fold>summary span:before{content:'›';display:inline-block;margin-right:9px}.life-fold[open]>summary span:before{transform:rotate(90deg)}.life-fold>summary::-webkit-details-marker{display:none}.life-fold .life-entity-row:last-child{border-bottom:0}.life-selection-dock{position:absolute;z-index:8;left:0;right:0;bottom:0;padding:12px 20px max(10px,env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--line)}.life-selection-dock .primary{display:flex;align-items:center;justify-content:center;gap:9px;min-height:42px;border-radius:999px}.life-selection-dock .ic{width:17px;height:17px}.life-selection-dock .life-text{display:block;text-align:center;width:100%;min-height:36px}.life-person{padding:18px 0 24px;border-bottom:1px solid var(--line)}.life-person-heading{display:flex;align-items:center;gap:12px}.life-person-heading>div{flex:1}.life-person-heading h3{font-size:21px}.life-person-heading small{font-size:12px;color:var(--secondary)}.life-person-initial{display:grid;place-items:center;flex:none;width:42px;height:42px;background:var(--soft);color:var(--accent);border-radius:50%;font:22px var(--font-serif)}.life-person p{font-size:14px;line-height:1.8;margin:5px 0}.life-person-birthday{color:var(--accent);margin-top:14px!important}.life-person .life-eyebrow{margin:14px 0 4px;font-size:11px}.life-person-care{background:var(--paper-warm);font-size:13px;line-height:1.7;padding:10px;border-radius:4px;margin-top:14px}.life-person-last{margin-top:14px}.life-person-last>small{display:block;color:var(--secondary);font-size:11px}.life-person-actions{display:flex;justify-content:space-between;gap:10px;margin-top:10px}.life-form .field{display:block;margin:14px 0}.life-form .field>span{display:block;font-size:12px;color:var(--secondary);margin-bottom:6px}.life-form input:not([type=radio]):not([type=checkbox]),.life-form textarea,.life-form select{display:block;width:100%;border:1px solid var(--line);background:var(--surface);color:var(--text);border-radius:8px;padding:12px;font:14px/1.7 var(--font-sans);box-sizing:border-box}.life-form textarea{min-height:90px;resize:vertical}.life-form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px}.life-form-grid .field{margin:0 0 14px}.life-state-options{display:flex;gap:7px;flex-wrap:wrap;margin-top:7px}.life-state-options button{font-size:12px;min-height:36px;border:1px solid var(--line);border-radius:999px;padding:6px 12px;color:var(--secondary)}.life-state-options button[aria-pressed=true]{background:var(--soft);color:var(--accent);border-color:#9bb6a9}.life-form .life-error{font-size:13px;color:var(--accent);line-height:1.7;margin:10px 0}.life-form-foot{font-size:12px;line-height:1.7;color:var(--secondary)}.life-sheet .sheet-modal-inner{max-height:min(88dvh,900px)}.life-sheet .guardian-sheet-body{overflow-y:auto}.life-sheet .guardian-sheet-footer .primary{width:100%;border-radius:999px}.life-detail h2{font-size:23px;margin:8px 0}.life-detail-intro{font-size:14px;line-height:1.8;color:var(--secondary)}.life-detail-tools{display:flex;flex-wrap:wrap;gap:16px}.life-timeline{padding-left:18px;border-left:1px solid var(--line);margin:16px 0 26px}.life-timeline>section{position:relative;margin:0 0 26px}.life-timeline>section:before{content:'';position:absolute;left:-22px;top:7px;width:7px;height:7px;background:var(--accent-weak);border-radius:50%}.life-timeline small{font-size:12px;color:var(--secondary);margin-right:7px}.life-timeline p{font-size:14px;line-height:1.8}.life-detail-meta{font-size:12px;color:var(--secondary);line-height:1.8}.life-danger{color:#925c49}.life-form-group{border-top:1px solid var(--line);margin-top:20px;padding-top:5px}.life-ref-chips{display:flex;flex-wrap:wrap;gap:7px;padding:8px 0 10px}.life-ref-chip{display:flex;align-items:center;max-width:100%;background:var(--soft);border:1px solid var(--line);border-radius:7px;font-size:12px;color:var(--accent)}.life-ref-chip button{min-height:32px;padding:5px 8px;font-size:12px;color:inherit;display:flex;align-items:center;gap:5px;min-width:0;text-align:left}.life-ref-chip button:first-child>span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:220px}.life-ref-chip .ic{width:14px;height:14px;flex:none}.life-ref-chip button:last-child{padding-left:3px}.life-reference-history{margin:8px 0 15px}.life-reference-history .life-ref-chip{background:var(--paper-warm)}.life-notes-hint{font-size:12px;color:var(--secondary)}.life-source-label{font-size:10px;color:var(--secondary);margin-right:5px}
.life-field{display:block;margin:14px 0;font-size:12px;color:var(--secondary)}.life-field input,.life-field textarea,.life-field select{margin-top:6px}.life-field textarea{min-height:90px}.life-form-status{border:0;padding:0;margin:14px 0;display:flex;gap:7px;flex-wrap:wrap}.life-form-status legend{font-size:12px;color:var(--secondary);padding:0;margin-bottom:7px}.life-form-status button,.life-quick-types button{font:12px var(--font-sans);min-height:36px;border:1px solid var(--line);border-radius:999px;padding:6px 11px;color:var(--secondary)}.life-form-status button.on,.life-quick-types button.on{background:var(--soft);color:var(--accent);border-color:var(--accent-line)}.life-quick-types{display:flex;flex-wrap:wrap;gap:7px;margin-bottom:16px}.life-quick-types button{border:0;background:transparent}.life-sheet .sheet-body{padding-bottom:20px}.life-sheet .sheet-footer button{width:100%;border-radius:999px}.life-detail-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.life-detail-head h3{font:23px/1.5 var(--font-serif);margin:0}.life-inline-actions{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0}.life-detail-facets{font-size:14px;line-height:1.8}.life-detail-facets>div{margin:14px 0}.life-detail-facets dt{font-size:12px;color:var(--secondary)}.life-detail-facets dd{margin:4px 0}.life-care{background:var(--paper-warm);padding:12px;border-radius:5px}.life-timeline{list-style:none}.life-timeline li{margin-bottom:22px}.life-detail-actions{display:flex;flex-direction:column;align-items:start;gap:10px;border-top:1px solid var(--line);padding-top:16px}.life-revision{padding:16px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.8}.life-revision small{color:var(--secondary);font-size:12px}.life-add-choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-bottom:16px}.life-add-choice{padding:18px 8px;background:var(--soft);border-radius:10px;color:var(--accent);text-align:center}.consult-compose-dock .life-ref-chips{padding:0 4px 8px}.life-entity-row:last-child{margin-bottom:6px}.life-main:has(.life-entity-list){padding-bottom:135px}
@media(min-width:720px){.life-main{max-width:680px;margin-inline:auto}.life-selection-dock{padding-inline:max(24px,calc((100% - 680px)/2))}}
.life-kind-tabs button,.life-status-tabs button,.life-month-heading button,.life-section-title button,.life-person-heading button,.life-person-actions button,.life-detail-tools button,.life-inline-actions button,.life-recent>button,.life-form-status button,.life-quick-types button,.life-state-options button,.life-ref-chip button{width:auto}
.life-dock-links{display:flex;justify-content:center;gap:28px}.life-selection-dock .life-dock-links .life-text{display:inline-block;width:auto}

/* 手帳 is the merged journal in a frame (d-097, pages/journal-frame.mjs): it fills the page */
.journal-frame-page{padding:0!important;overflow:hidden!important}
.journal-frame{display:block;width:100%;height:100%;border:0}

/* The approved history list: a quiet header, search/new row and dated conversations. */
.page[data-name=history]{--f7-navbar-height:56px;--f7-page-bg-color:var(--bg);--history-controls-height:68px}
.page[data-name=history] .page-content{padding-top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top,0px) + var(--history-controls-height))}
.consult-history-navbar .navbar-inner{display:grid;grid-template-columns:44px minmax(0,1fr) 44px;align-items:center;gap:8px;padding:0 12px}.consult-history-navbar h1{font:500 18px/1.4 var(--font-serif);margin:0}.consult-history-navbar .icon-btn{width:44px;height:44px}
.consult-history-toolbar{position:absolute;top:calc(var(--f7-navbar-height) + var(--f7-safe-area-top,0px));left:0;right:0;z-index:2;display:flex;gap:8px;height:var(--history-controls-height);padding:7px 20px 17px;background:var(--bg)}.consult-history-search{display:flex;align-items:center;gap:7px;flex:1;min-width:0;height:44px;padding:0 12px;background:var(--surface);border:1px solid var(--line);border-radius:12px;color:var(--secondary)}.consult-history-search .ic{width:17px;height:17px}.consult-history-search input{width:100%;min-width:0;padding:0;border:0;background:transparent;font-size:14px}.consult-history-search:focus-within{outline:2px solid var(--accent);outline-offset:2px}.consult-history-search input:focus{outline:none}
#app .consult-history-new{display:flex;align-items:center;gap:4px;flex:none;width:auto;min-height:44px;padding:0 12px;border-radius:12px;background:var(--accent);color:var(--on-accent);font-size:14px;white-space:nowrap}.consult-history-new .ic{width:18px;height:18px}
.consult-history-group{margin:0 0 20px}.consult-history-group h2{font:500 12px/18px var(--font);color:var(--secondary);margin:4px 0 5px}.consult-history-page .consult-history-row{display:block;text-align:left;width:100%;min-height:82px;padding:13px 0;margin:0;border-bottom:1px solid var(--line);font-size:16px;line-height:1.5}.consult-history-page .consult-history-row:last-child{border-bottom:0}.consult-history-page .consult-history-row.current{padding:13px 12px;margin:0 -12px;width:calc(100% + 24px);background:var(--soft);border-radius:12px;border:0}.consult-history-page .consult-history-row-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin:0;color:var(--text)}.consult-history-row-top strong{font-size:16px;font-weight:500;line-height:1.5;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-width:0}.consult-history-row-top time{font-size:12px;line-height:24px;flex:none;color:var(--secondary);font-variant-numeric:tabular-nums}
.consult-history-page .consult-history-row-bottom{display:flex;gap:8px;align-items:center;margin:5px 0 0}.consult-history-page .consult-history-row-bottom>span{flex:1;min-width:0;font-size:13px;line-height:1.6;margin:0;color:var(--secondary);white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.consult-history-row-bottom small{font-size:11px;font-weight:500;line-height:20px;white-space:nowrap;color:var(--accent);flex:none}.consult-history-row-bottom small:before{content:"";display:inline-block;width:4px;height:4px;border-radius:50%;background:currentColor;vertical-align:middle;margin-right:4px}.consult-history-empty{padding:52px 14px;text-align:center;color:var(--secondary);font-size:14px;line-height:1.7}.consult-history-empty strong{display:block;color:var(--text);font-weight:500;margin-bottom:8px}.consult-history-page .consult-history-empty p{font-size:14px;margin:0}.consult-history-page .consult-history-status{font-size:14px;color:var(--secondary);padding:16px 0}.consult-history-row:active,.consult-history-new:active{transform:scale(.985)}
.phone.large-font .consult-history-row-top strong{font-size:18px}.phone.large-font .consult-history-row-bottom>span{font-size:15px}

/* d-092: classic covers and the approved shelf/page-turn interaction. */
.nb-page-content{padding-inline:0!important;overflow:hidden!important}
.nb-shell{height:100%;min-height:0;display:flex;flex-direction:column;color:var(--text);--nb-width:min(63vw,244px)}
.nb-intro{padding:25px 28px 0}.nb-intro>small{font-size:10px;letter-spacing:.2em;color:var(--secondary)}
.nb-intro h2{font-family:'Noto Serif TC','PMingLiU',serif;font-size:28px;line-height:1.4;font-weight:400;letter-spacing:.02em;margin:9px 0 12px}
.nb-intro p{font-size:13px;line-height:1.8;margin:0;color:var(--secondary)}
.nb-shelf-area{flex:1;min-height:0;display:flex;flex-direction:column;justify-content:center;padding-top:9px}
.nb-rail{display:flex;gap:25px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;padding:22px calc((100% - var(--nb-width))/2) 25px;align-items:center;overscroll-behavior-x:contain;touch-action:pan-x}
.nb-rail::-webkit-scrollbar{display:none}.nb-station{flex:0 0 var(--nb-width);scroll-snap-align:center;scroll-snap-stop:always}
.nb-cover{position:relative;display:block;width:100%;aspect-ratio:2/3;border:0;padding:0;background:#d6c2a0;border-radius:4px 12px 12px 4px;box-shadow:0 16px 25px -11px #1d241e65,3px 2px #e4dbc8,5px 3px #bcb8a8;transform:translateY(16px) scale(.94);transition:transform .4s cubic-bezier(.2,.7,.2,1);overflow:hidden;text-align:center}
.nb-station[data-active=true] .nb-cover{transform:translateY(0) scale(1)}
.nb-cover img{width:100%;height:100%;object-fit:cover;display:block;pointer-events:none}
.nb-add-cover{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:22px;background:var(--soft);border:1px dashed var(--line);box-shadow:none;color:var(--secondary);font-size:14px;letter-spacing:.06em}
.nb-add-cover .ic{width:36px;height:36px;stroke-width:1.2}
.nb-caption{text-align:center;min-height:80px;padding:0 20px}.nb-caption h3{font-family:'Noto Serif TC','PMingLiU',serif;font-weight:400;font-size:23px;line-height:1.4;margin:2px 0 8px}.nb-caption p{font-size:12px;line-height:1.7;color:var(--secondary);margin:0}
.nb-dots{display:flex;justify-content:center;min-height:30px}.nb-dots button{width:28px;height:30px;padding:11px 10px;background:transparent;border:0}.nb-dots button>span{display:block;width:6px;height:6px;border-radius:10px;background:var(--line)}.nb-dots button[aria-current=true]>span{width:15px;background:var(--text)}
.nb-bottom{padding:14px 25px 22px}.nb-primary{display:block;width:100%;min-height:52px;border-radius:28px;padding:14px 20px;background:var(--accent);color:var(--surface);font-size:15px;line-height:1.5;letter-spacing:.02em;font-weight:500}
.phone.dark .nb-primary{background:var(--accent);color:var(--on-accent)}
.nb-links{display:flex;gap:6px;justify-content:space-around;margin-top:8px}.nb-links button{font-size:11px;min-height:36px;padding:7px 3px;color:var(--secondary)}
.nb-create{--nb-width:min(56vw,218px)}.nb-create .nb-intro{padding-top:15px}.nb-create .nb-intro h2{font-size:26px}.nb-create .nb-shelf-area{padding-top:0}.nb-create .nb-rail{padding-top:15px;padding-bottom:19px}.nb-create .nb-caption{min-height:50px}.nb-create .nb-caption h3{font-family:inherit;font-size:16px;margin:0 0 3px}.nb-create .nb-caption p{font-size:11px}.nb-create .nb-bottom{padding-top:4px}
.nb-name-field{display:block;margin-bottom:10px}.nb-name-field span{display:block;font-size:11px;color:var(--secondary);margin-bottom:5px}.nb-name-field input{display:block;width:100%;font-size:17px;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding:9px 0 11px;color:var(--text)}.nb-name-field input::placeholder{color:var(--secondary);opacity:.65}.nb-error{font-size:12px;color:#a04b3c;line-height:1.6;margin:0 0 8px}.nb-error:empty{display:none}
.nb-reader{background:#e8e2d3}.phone.dark .nb-reader{background:var(--paper-warm)}
.nb-reading-hint{font-size:11px;line-height:1.6;color:var(--secondary);text-align:center;margin:15px 15px 0;letter-spacing:.05em}
.nb-book-canvas{position:relative;flex:1;min-height:0;display:grid;align-items:center;margin:20px 23px 17px;perspective:1600px}
.nb-paper-book{position:relative;width:100%;height:min(515px,100%);min-height:280px;perspective:1600px;transform-style:preserve-3d;box-shadow:3px 4px #d0c9b6,5px 7px #eee8da,7px 10px #c2bba9,8px 16px 30px #17201936;border-radius:2px 10px 10px 2px;background:#ebe5d5;touch-action:pan-y}
.nb-paper{position:absolute;inset:0;overflow:hidden;background:#f9f4e8;color:#3f4439;border-radius:2px 9px 9px 2px;padding:31px 27px 28px 33px;box-shadow:inset 8px 0 12px -10px #24291e9c}
.nb-paper:before{content:'';position:absolute;left:19px;top:0;bottom:0;border-left:1px solid #d4d0c34d;pointer-events:none}
.nb-page-category{font-size:9px;color:#8e927f;letter-spacing:.18em}.nb-paper-scroll{position:absolute;inset:63px 24px 43px 33px;overflow-y:auto;overscroll-behavior-y:contain;scrollbar-width:thin;scrollbar-color:#bcb8a355 transparent}
.nb-paper h3{font-family:'Noto Serif TC','PMingLiU',serif;font-size:24px;line-height:1.55;font-weight:400;letter-spacing:.02em;margin:5px 0 21px}.nb-paper time{display:block;font-size:10px;color:#929784;margin-bottom:16px}.nb-paper p,.nb-paper-copy{font-size:15px;line-height:2;letter-spacing:.025em}.nb-paper p{margin:0 0 18px}.nb-paper h4{font-size:14px;margin:20px 0 12px}.nb-paper img{max-width:100%;height:auto}.nb-paper-copy>p{margin:0 0 13px}.nb-paper-copy h1,.nb-paper-copy h2,.nb-paper-copy h3{font-size:19px}.nb-paper-copy ul,.nb-paper-copy ol{padding-left:23px}.nb-folio{position:absolute;bottom:15px;left:0;width:100%;text-align:center;font-family:Georgia,serif;font-size:11px;color:#a9ad99}
.nb-paper-lines{position:absolute;inset:100px 25px 48px 30px;pointer-events:none;display:flex;flex-direction:column;justify-content:space-between}.nb-paper-lines span{border-bottom:1px solid #d9d6c359}.nb-blank{position:absolute;inset:105px 25px auto 33px}.nb-blank h3{font-family:inherit;font-weight:400;font-size:15px;line-height:1.8;color:#999e89}.nb-paper-write{font-size:13px;border-bottom:1px solid var(--accent-weak);color:var(--accent);padding:5px 0;margin-top:6px;min-height:38px}
.nb-flip-sheet{position:absolute;inset:0;transform-origin:left center;transform-style:preserve-3d;z-index:5;pointer-events:none}.nb-flip-sheet .nb-front,.nb-flip-sheet .nb-back{position:absolute;inset:0;backface-visibility:hidden}.nb-flip-sheet .nb-back{background:#f3eddf;transform:rotateY(180deg);border-radius:9px 2px 2px 9px;box-shadow:inset -7px 0 15px #333d2224}.nb-front .nb-paper{box-shadow:inset 7px 0 12px #3b412413,9px 0 28px #2b341823}
.nb-opening-cover{position:absolute;inset:0;z-index:8;transform-origin:left center;transform-style:preserve-3d;backface-visibility:hidden;overflow:hidden;border-radius:3px 10px 10px 3px;box-shadow:4px 5px 15px #1d271d26}.nb-opening-cover img{width:100%;height:100%;object-fit:cover}
.nb-reader-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 25px 24px}.nb-page-button{border:1px solid var(--line);color:var(--text);background:transparent;min-height:43px;border-radius:24px;padding:10px 17px;font-size:12px;min-width:84px}.nb-reader-footer>span{font-size:11px;color:var(--secondary)}
.nb-corner{position:absolute;bottom:0;width:55px;height:45px;z-index:4;background:transparent;border:0}.nb-corner.nb-prev{left:0}.nb-corner.nb-next{right:0}.nb-detail{font-size:12px;color:var(--secondary);min-height:40px;padding:8px 0}
.nb-mini{display:block;width:43px;height:62px;object-fit:cover;border-radius:2px 5px 5px 2px;flex:none}.nb-option-note{font-size:13px;color:var(--secondary);line-height:1.8}
.nb-reader-footer>.nb-page-button{width:auto;flex:0 0 auto}.nb-reader-footer>span{flex:none;min-width:50px;white-space:nowrap;text-align:center}
.phone.large-font .nb-paper p,.phone.large-font .nb-paper-copy{font-size:18px}
@media(max-height:760px){.nb-shell{--nb-width:205px}.nb-create{--nb-width:180px}.nb-intro{padding-top:15px}.nb-intro h2{font-size:25px;margin-top:7px}.nb-rail{padding-top:13px;padding-bottom:18px}.nb-caption{min-height:63px}.nb-caption h3{font-size:21px}.nb-bottom{padding-top:7px;padding-bottom:14px}.nb-book-canvas{margin-top:12px;margin-bottom:10px}.nb-reader-footer{padding-top:8px;padding-bottom:17px}}
@media(prefers-reduced-motion:reduce){.nb-cover{transition:none}}

[data-oracle-theme]{color:var(--oracle-ink);--oracle-title-font:Iansui,"Microsoft JhengHei",serif}
.oracle-journal-shelf{display:grid;grid-template-columns:minmax(0,1fr);gap:24px;padding:4px 8px 24px}
.oracle-journal-cover,#app .oracle-cover{position:relative;display:block;width:100%;max-width:360px;margin:0 auto;padding:0 21px 22px;text-align:left;color:var(--oracle-ink);background-color:var(--oracle-surface);background-image:var(--oracle-ground-image);border:1px solid var(--oracle-line);border-radius:2px;box-shadow:4px 5px 0 #29333c0c;overflow:hidden}
#app .oracle-cover{max-width:340px;margin:12px 0 22px;padding-bottom:14px}
#app .oracle-cover-open{display:block;width:100%;padding:0;color:inherit;background:none;text-align:left;border:0}
.oracle-cover-scene{height:285px;position:relative;isolation:isolate}
.oracle-cover-scene time{position:absolute;left:2px;top:23px;font:12px/1.7 Georgia,serif;letter-spacing:1.4px;color:var(--oracle-sub)}
.oracle-cover-name,#app .oracle-cover-open .oracle-cover-name{position:absolute;left:-4px;top:82px;z-index:2;display:flex;align-items:baseline;gap:4px;flex-wrap:wrap;margin:0;font:var(--oracle-name-size,48px)/1.3 var(--oracle-title-font);font-weight:400;color:var(--oracle-ink);transform:rotate(-3deg)}
.oracle-cover-name i{font-size:.63em;transform:translateY(9px) rotate(5deg);font-style:normal}
.oracle-motif{display:block;pointer-events:none;background-image:var(--oracle-art);background-size:contain;background-repeat:no-repeat;background-position:center;mix-blend-mode:var(--oracle-art-blend,normal)}
.oracle-cover-scene .oracle-motif{position:absolute;bottom:0;right:-21px;width:285px;height:220px;z-index:-1}
.oracle-seed{display:none}
.oracle-cover-question,#app .oracle-cover-question{font:22px/1.65 var(--oracle-title-font);margin:14px 4px 18px;color:inherit;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden}
.oracle-cover-grade,#app .oracle-cover-grade{display:block;font-size:13px;line-height:1.8;margin:0 4px;color:var(--oracle-ink)}
.oracle-cover-link,#app .oracle-cover-link{display:flex;align-items:center;justify-content:space-between;font:13px/1.6 "Microsoft JhengHei",sans-serif;min-height:44px;margin:18px 4px 0;padding:11px 0 0;border-top:1px solid var(--oracle-line);color:inherit}
.oracle-cover-link>span{font-size:22px}
#app .oracle-cover-art-link{display:block;font-size:12px;min-height:38px;padding:8px 4px 0;color:var(--oracle-sub);text-decoration:underline;text-underline-offset:4px;background:none}
[data-oracle-theme=daily].oracle-journal-cover,#app .oracle-cover[data-oracle-theme=daily]{background-color:var(--oracle-ground);background-image:var(--oracle-ground-image);background-size:500px}
[data-oracle-theme=daily] .oracle-cover-name{transform:rotate(-8deg);top:75px}
[data-oracle-theme=daily] .oracle-cover-name span:last-child{transform:translateY(-8px) rotate(4deg)}
[data-oracle-theme=daily] .oracle-cover-scene .oracle-motif{width:174px;height:217px;right:-6px;top:59px;padding:0;background-size:cover;background-origin:content-box;border:7px solid #fffdf6;transform:rotate(7deg);box-shadow:0 3px 7px #25334b20;z-index:0}
[data-oracle-theme=daily] .oracle-cover-question{transform:rotate(-2deg)}
[data-oracle-theme=daily] .oracle-seed{display:block;position:absolute;left:5px;top:190px;width:65px;height:85px;background:url('/journal/journal-themes/daily/seed.svg') center/contain no-repeat;transform:rotate(-17deg)}
[data-oracle-theme=oldpage].oracle-journal-cover{box-shadow:4px 5px 0 #816b491c}
[data-oracle-theme=halftone] .oracle-cover-name{font-family:"Microsoft JhengHei",sans-serif;font-weight:650;letter-spacing:-2px;transform:rotate(-4deg)}
[data-oracle-theme=teaparty] .oracle-cover-scene .oracle-motif{transform:rotate(5deg)}
#app .page[data-oracle-theme]{--ink:var(--oracle-ink);--text:var(--oracle-ink);--secondary:var(--oracle-sub);--surface:var(--oracle-surface);--paper-warm:var(--oracle-ground);--accent:var(--oracle-btn);--on-accent:var(--oracle-btn-ink);--line:var(--oracle-line);--soft:var(--oracle-soft);--gold-soft:var(--oracle-soft);background:var(--oracle-ground);color:var(--oracle-ink)}
#app .page[data-oracle-theme] .navbar-bg,#app .page[data-oracle-theme] .navbar-inner,#app .page[data-oracle-theme] .page-content{background-color:var(--oracle-ground);color:var(--oracle-ink);background-image:var(--oracle-ground-image)}
#app .page[data-oracle-theme] .content-inset{padding:0;max-width:760px;margin:0 auto;background:none}
#app .oracle-record-surface{padding:0 18px 24px;background:transparent}
#app .oracle-record-surface>.detail-meta{font-size:11px;padding:8px 0 0;margin:0;color:var(--oracle-sub)}
#app .oracle-record-surface>.detail-meta .type-chip{display:none}
#app .oracle-card{margin:0;background:transparent;color:var(--oracle-ink);border-radius:0;overflow:visible;font-size:16px;line-height:1.8}
#app .oracle-banner{display:block;position:relative;min-height:88px;padding:10px 0 12px;background:transparent;color:inherit;border-bottom:1px solid var(--oracle-line)}
#app .oracle-banner>div{position:relative;z-index:1;padding-right:78px}
#app .oracle-banner h2{font:20px/28px var(--oracle-title-font);margin:4px 0 6px;letter-spacing:1px;overflow-wrap:anywhere}
#app .oracle-banner small{font-size:11px;color:var(--oracle-sub)}
#app .oracle-banner .oracle-motif{position:absolute;right:0;top:8px;width:88px;height:72px}
#app [data-oracle-theme=daily] .oracle-banner .oracle-motif{width:54px;height:64px;border:4px solid #fffdf6;background-size:cover;transform:rotate(7deg);box-shadow:0 2px 5px #26334a1c}
#app [data-oracle-theme=daily] .oracle-banner h2{transform:rotate(-4deg)}
#app .oracle-meta{font-size:11px;color:var(--oracle-sub);gap:7px}
#app .oracle-meta .oracle-hex{font-size:19px}
#app .oracle-body{padding:0}
#app .oracle-record-meta{font-size:11px;line-height:1.8;margin:11px 0 0!important;color:var(--oracle-sub)}
#app .oracle-question{margin:0 0 14px;padding:3px 0 5px;border-bottom:1px solid var(--oracle-line);font-size:13px;color:var(--oracle-sub)}
#app .oracle-question p{font-size:15px;line-height:1.8;color:var(--oracle-ink)}
#app .oracle-verdict{display:flex;align-items:flex-start;gap:10px}
#app .oracle-grade{display:inline-block;flex:none;font:20px/28px var(--oracle-title-font);margin:0;padding:0 2px;border-radius:0;background:transparent;color:var(--oracle-ink);border-bottom:2px solid var(--oracle-line);transform:rotate(-3deg)}
#app .oracle-verdict p{font-size:var(--oracle-reading-size,16px);line-height:1.5;margin:6px 0;color:var(--oracle-ink)}
#app .oracle-verdict p:first-child{font:13px/20px "Microsoft JhengHei",sans-serif;color:var(--oracle-sub);margin-top:0}
#app .oracle-verdict p:nth-child(2){font:18px/27px var(--oracle-title-font)}
#app .oracle-section{margin-top:20px}
#app .oracle-section h3{font:17px/25px var(--oracle-title-font);margin:0 0 8px}
#app .oracle-section p,#app .oracle-section li{font-size:var(--oracle-reading-size,16px);line-height:1.5;margin:8px 0}
#app .oracle-takeaway{margin:20px 0;padding:12px 10px 14px 15px;border-left:2px solid var(--oracle-line);background:transparent;font:19px/29px var(--oracle-title-font)}
#app [data-oracle-theme=daily] .oracle-takeaway{transform:rotate(-2deg)}
#app .oracle-why,#app .oracle-classics,#app .oracle-symbol-panel{margin-top:0;padding:0;border-top:1px solid var(--oracle-line)}
#app .oracle-why summary,#app .oracle-classics summary,#app .oracle-symbol-panel summary{display:flex;align-items:center;justify-content:space-between;min-height:58px;cursor:pointer;list-style:none;font-size:15px;color:var(--oracle-ink)}
#app .oracle-classics summary:after,#app .oracle-symbol-panel summary:after{content:'＋'}
#app .oracle-classics[open] summary:after,#app .oracle-symbol-panel[open] summary:after{content:'−'}
#app .oracle-why p,#app .oracle-classics p{font-size:var(--oracle-reading-size,16px);line-height:1.5;margin:8px 0 12px}
#app .oracle-classics h4{font-size:13px;color:var(--oracle-sub);margin:22px 0 10px}
#app .oracle-classics blockquote{font:18px/27px var(--oracle-title-font);color:var(--oracle-ink);margin:0}
#app .oracle-symbol-panel .oracle-art{margin:0 0 18px}
#app .oracle-record-surface .whitepaper-entry{margin:18px 0;background:none;border:0;border-top:1px solid var(--oracle-line);border-bottom:1px solid var(--oracle-line);border-radius:0;padding:12px 0;color:var(--oracle-ink)}
#app .oracle-record-surface .whitepaper-entry strong{font:20px/28px var(--oracle-title-font)}
#app .oracle-record-surface .whitepaper-entry span{font-size:12px;color:var(--oracle-sub)}
#app .oracle-record-surface .reflection{background:none;border:0;padding:16px 0;margin:0;color:var(--oracle-ink)}
#app .oracle-record-surface .reflection b{font:17px/25px var(--oracle-title-font)}
#app .oracle-record-surface .reflection p{font-size:var(--oracle-reading-size,16px);line-height:1.5;color:var(--oracle-ink)}
/* 卦錄的下半部（使用者 10/25：「看起來很容易混在一起」）：卡片的收合列用同一個記號、最後一列收邊；
   我的後續是自己的一塊，回看提醒和帶到聊天放進同一個框、各有圖示。只用主題自己的顏色。 */
#app .oracle-record-surface .oracle-body>details:last-child{border-bottom:1px solid var(--oracle-line)}
#app .oracle-record-surface :is(.oracle-why,.oracle-classics,.oracle-symbol-panel) summary:after{content:'＋';font-size:17px;line-height:1;color:var(--oracle-sub)}
#app .oracle-record-surface :is(.oracle-why,.oracle-classics,.oracle-symbol-panel)[open] summary:after{content:'−'}
#app .oracle-record-surface .reflection.oracle-own{margin:28px 0 0;padding:16px 16px 18px;border-radius:10px;background:var(--oracle-soft)}
#app .oracle-record-surface .oracle-own b{display:block}
#app .oracle-record-surface .oracle-own p{margin:8px 0 14px}
#app .oracle-own-button{display:inline-flex;align-items:center;width:auto;min-height:36px;margin:0;padding:0 18px;border:1px solid var(--oracle-btn);border-radius:999px;background:var(--oracle-surface);color:var(--oracle-ink);font-size:14px}
#app .oracle-links{margin:14px 0 0;border:1px solid var(--oracle-line);border-radius:10px;background:var(--oracle-surface);overflow:hidden}
#app .oracle-links .detail-link{gap:12px;padding:13px 14px;border-top:1px solid var(--oracle-line);color:var(--oracle-ink)}
#app .oracle-links .detail-link:first-child{border-top:0}
#app .oracle-links .detail-link>span:nth-child(2){flex:1;min-width:0}
#app .oracle-link-ic{display:grid;flex:none;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--oracle-soft)}
#app .oracle-link-ic .ic{width:18px;height:18px}
#app .page[data-oracle-theme] .footer-actions{background:var(--oracle-ground);color:var(--oracle-ink)}
#app .whitepaper-reader{padding:8px 18px 28px;color:var(--oracle-ink);background:transparent;font-size:var(--oracle-reading-size,16px);line-height:1.5;max-height:none;overflow:visible}
#app .whitepaper-mast{position:relative;border-bottom:1px solid var(--oracle-line);padding-bottom:8px}
#app .whitepaper-mast .oracle-motif{position:absolute;top:0;right:0;width:53px;height:60px;opacity:.8}
#app [data-oracle-theme=daily] .whitepaper-mast .oracle-motif{background-image:url('/journal/journal-themes/daily/seed.svg')}
#app .whitepaper-mast h1{font:22px/30px var(--oracle-title-font);margin:12px 0;color:var(--oracle-ink)}
#app .whitepaper-meta{font-size:12px;line-height:1.5;color:var(--oracle-sub)}
#app .whitepaper-facts{font-size:12px;color:var(--oracle-sub);margin-top:10px}
#app .whitepaper-facts summary{min-height:36px;cursor:pointer}
#app .whitepaper-tools{position:sticky;top:0;z-index:3;display:flex;align-items:center;justify-content:space-between;background:var(--oracle-ground);border-bottom:1px solid var(--oracle-line);font-size:13px;min-height:48px}
#app .whitepaper-tools span{border-bottom:2px solid var(--oracle-btn);align-self:stretch;display:flex;align-items:center}
#app .whitepaper-tools button{min-height:44px;padding:0 3px;color:var(--oracle-ink);background:none}
#app .whitepaper-reader h2{font:20px/28px var(--oracle-title-font);margin:22px 0 12px;color:var(--oracle-ink);scroll-margin-top:62px}
#app .whitepaper-reader h3,#app .whitepaper-reader h4{font:17px/25px var(--oracle-title-font);color:var(--oracle-ink);margin:14px 0 8px}
#app .whitepaper-reader p,#app .whitepaper-reader li{font-size:var(--oracle-reading-size,16px);line-height:1.5;margin:8px 0}
#app .whitepaper-reader .whitepaper-meta{font-size:12px}
#app .whitepaper-reader blockquote{font:18px/27px var(--oracle-title-font);padding-left:14px;border-left:1px solid var(--oracle-line);margin:14px 0}
#app .whitepaper-dimension{padding:12px 0 16px;border-top:1px solid var(--oracle-line)}
#app .whitepaper-dimension h4{font:17px/25px var(--oracle-title-font);margin:0 0 10px}
#app .whitepaper-dimension dl{margin:0;padding-left:0}
#app .whitepaper-dimension dt{font-size:12px;line-height:18px;color:var(--oracle-sub);margin:10px 0 4px}
#app .whitepaper-dimension dd{font-size:var(--oracle-reading-size,16px);line-height:1.5;margin:0;overflow-wrap:anywhere}
.oracle-toc{display:grid;color:var(--oracle-ink);background:var(--oracle-ground);padding:6px 14px}
.oracle-toc button{display:block;text-align:left;min-height:50px;border:0;border-bottom:1px solid var(--oracle-line);background:none;color:inherit;font-size:15px;padding:10px 0}
@media(min-width:700px){.oracle-journal-shelf{grid-template-columns:repeat(2,minmax(0,1fr))}}

#app .whitepaper-tools>span{flex:none;white-space:nowrap;padding:0 3px}
#app .whitepaper-tools button{width:auto;flex:none}
#app .whitepaper-chapter-no{font:italic 20px/28px Georgia,serif;margin-right:9px;color:var(--oracle-btn)}

/* 隨筆 is a two-column shelf; opening a cover keeps the full reading layout. */
.oracle-journal-shelf{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;padding:4px 0 20px;align-items:start}
.oracle-journal-cover{min-width:0;max-width:none;padding:0 12px 12px;box-shadow:2px 3px 0 #29333c0c}
.oracle-journal-cover .oracle-cover-scene{height:143px}
.oracle-journal-cover .oracle-cover-scene time{font-size:9px;letter-spacing:.7px;top:13px;left:0}
.oracle-journal-cover .oracle-cover-name{font-size:calc(var(--oracle-name-size,48px)*.55);top:43px;left:-2px;gap:2px;letter-spacing:0}
.oracle-journal-cover .oracle-cover-name i{transform:translateY(5px) rotate(5deg)}
.oracle-journal-cover .oracle-cover-scene .oracle-motif{width:145px;height:112px;right:-12px;bottom:0}
.oracle-journal-cover[data-oracle-theme=daily] .oracle-cover-scene .oracle-motif{width:77px;height:98px;right:-3px;top:38px;border-width:4px}
.oracle-journal-cover[data-oracle-theme=daily] .oracle-seed{width:29px;height:38px;left:1px;top:97px}
.oracle-journal-cover .oracle-cover-question{font-size:15px;line-height:1.6;margin:9px 0 10px;-webkit-line-clamp:3;min-height:72px}
.oracle-journal-cover .oracle-cover-grade{font-size:10px;line-height:1.6;margin:0;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-height:32px}
.oracle-journal-cover .oracle-cover-link{font-size:11px;min-height:34px;padding:7px 0 0;margin:10px 0 0}
.oracle-journal-cover .oracle-cover-link>span{font-size:17px}

#app .phone.large-font{--oracle-reading-size:18px}
#app .whitepaper-dimension dt:first-of-type{float:left;min-width:66px;margin:0;line-height:24px}
#app .whitepaper-dimension dd:first-of-type{margin-left:72px;font-size:14px;line-height:24px}

/* 光影之間: photographic glass stays in art areas; live reading text keeps a quiet surface. */
[data-oracle-theme=light].oracle-journal-cover,#app .oracle-cover[data-oracle-theme=light]{background-size:100% 100%;background-repeat:no-repeat;box-shadow:0 2px 5px #303b350c}
[data-oracle-theme=light] .oracle-cover-scene .oracle-motif{background-image:var(--oracle-cover-art);background-size:cover;background-position:center 62%;right:-21px;bottom:0;width:calc(100% + 42px);height:132px;z-index:0}
[data-oracle-theme=light] .oracle-cover-name{top:53px;transform:rotate(-4deg)}
.oracle-journal-cover[data-oracle-theme=light] .oracle-cover-scene{height:158px}
.oracle-journal-cover[data-oracle-theme=light] .oracle-cover-name{top:38px}
.oracle-journal-cover[data-oracle-theme=light] .oracle-cover-scene .oracle-motif{right:-12px;width:calc(100% + 24px);height:78px}
#app .oracle-cover[data-oracle-theme=light] .oracle-cover-scene{height:240px}
#app .page[data-oracle-theme=light] .page-content,#app .page[data-oracle-theme=light] .navbar-inner{background-size:100% 100%;background-repeat:no-repeat}
#app [data-oracle-theme=light] .oracle-banner{min-height:142px;margin:0 -18px 14px;padding:17px 18px 14px;border:0;isolation:isolate}
#app [data-oracle-theme=light] .oracle-banner .oracle-motif{inset:0;width:100%;height:100%;background-size:cover;background-position:center;opacity:1;z-index:0}
#app [data-oracle-theme=light] .oracle-banner>div{padding-right:42%}
#app [data-oracle-theme=light] .oracle-banner h2{font-size:28px;line-height:36px;letter-spacing:0;transform:rotate(-4deg);transform-origin:left bottom}
#app [data-oracle-theme=light] .oracle-section h3{border-left:3px solid var(--oracle-accent);padding-left:10px}
#app [data-oracle-theme=light] .oracle-takeaway{border-left-color:var(--oracle-mark-fill);font-style:normal;transform:rotate(-1deg)}
#app [data-oracle-theme=light] .whitepaper-mast{min-height:115px}
#app [data-oracle-theme=light] .whitepaper-mast .oracle-motif{position:relative;top:auto;right:auto;float:right;width:94px;height:96px;margin:6px 0 10px 12px;background-size:cover;background-position:right;opacity:1}
#app [data-oracle-theme=light] .whitepaper-mast h1{transform:rotate(-2deg);transform-origin:left bottom}
#app [data-oracle-theme=light] .whitepaper-reader h2{border-left:3px solid var(--oracle-accent);padding-left:10px}
#app [data-oracle-theme=light] .whitepaper-chapter-no{color:var(--oracle-mark-fill)}

/* The four built-in cards (os-cards.mjs), as the approved pocket mockup draws them (generated_images/pocket/pocket.css,
   d-120), on whichever shell's tokens are on the page: the phone's (--surface --text --secondary --on-accent) or the
   desktop's (--card --ink --sub --accent-ink). Tomato and persimmon are the prototype's tool colours (--tomato,
   --kaki in tools.mjs); no green. */
.pk-card{--c-surface:var(--surface,var(--card,#fff));--c-text:var(--text,var(--ink));--c-sub:var(--secondary,var(--sub));--c-on:var(--on-accent,var(--accent-ink,#fff));
  --pk-tomato:#c8553d;--pk-kaki:#a0573a;--pk-new:color-mix(in srgb,var(--accent) 11%,transparent);
  --pk-num:'Fraunces','Segoe UI','SF Pro Display','PingFang TC',system-ui,sans-serif;--pk-hand:'LXGW WenKai TC',Iansui,'Kaiti TC','DFKai-SB',serif;
  color:var(--c-text);font-family:var(--font)}
.pk-card .ic{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.pk-card button{font:inherit;cursor:pointer}
.pk-head{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.pk-head-ic{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;background:var(--soft);color:var(--accent)}
.pk-head-t b{font-size:15px;font-weight:600}

/* checklist */
.pk-full-prog p{display:flex;align-items:baseline;gap:6px;margin:0 0 6px;font-size:14px;color:var(--c-sub)}
.pk-full-prog p b{font:600 28px/1 var(--pk-num);color:var(--c-text)}
.pk-full-prog span{margin-left:auto;font-size:12.5px}
.pk-aisle-g{margin-top:8px;padding:6px 12px 2px;border-radius:14px;background:var(--c-surface)}
.pk-aisle-g h4{margin:3px 0 0;font:600 12px var(--font);letter-spacing:2px;color:var(--pk-kaki)}
.pk-list{list-style:none;margin:4px 0 0;padding:0}
.pk-list li{border-bottom:1px dashed var(--line)}
.pk-list li:last-child{border-bottom:0}
.pk-row{display:grid;grid-template-columns:24px minmax(0,1fr);align-items:center;gap:10px;width:100%;min-height:44px;padding:6px 4px;border:0;border-radius:8px;background:none;color:inherit;text-align:left}
.pk-row:hover{background:var(--pk-new)}
.pk-box{display:grid;place-items:center;width:22px;height:22px;border:1.6px solid var(--c-sub);border-radius:6px;background:var(--c-surface);color:var(--c-on)}
.pk-box.on{background:var(--accent);border-color:var(--accent)}
.pk-box .ic{width:15px;height:15px;stroke-width:2.6}
.pk-item{min-width:0}
.pk-item b{display:block;font-weight:500;font-size:15px;line-height:1.35}
.pk-item small{display:block;font-size:11px;color:var(--c-sub)}
.pk-list li.done .pk-item b{color:var(--c-sub);text-decoration:line-through}
.pk-tile-foot{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line)}
.pk-left{flex:none;font-size:12px;color:var(--c-sub)}
.pk-add{display:flex;flex:1;gap:6px;min-width:0}
.pk-add input{flex:1;min-width:0;height:34px;padding:0 12px;border:1px solid var(--line);border-radius:999px;background:var(--c-surface);color:var(--c-text);font:14px var(--font);outline:none}
.pk-add input:focus{border-color:var(--accent)}
.pk-add .pk-add-value{flex:0 0 84px}
.pk-mini{display:inline-flex;align-items:center;justify-content:center;gap:4px;flex:none;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--c-surface);color:var(--accent);font-size:13px}
.pk-mini.go{background:var(--accent);border-color:var(--accent);color:var(--c-on)}

/* counter */
.pk-title{margin:0;font:600 15px var(--font);color:var(--c-text)}
.pk-num{display:flex;align-items:baseline;gap:4px;margin:6px 0 0}
.pk-num b{font:600 34px/1 var(--pk-num);letter-spacing:-.5px;font-variant-numeric:tabular-nums}
.pk-num span{font-size:13px;color:var(--c-sub)}
.pk-bar{display:block;height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:8px}
.pk-bar i{display:block;height:100%;background:var(--accent)}
.pk-quote{display:block;margin-top:10px;font:16px/1.45 var(--pk-hand);color:var(--accent);quotes:'「' '」'}
.pk-tile-acts{display:flex;gap:6px;margin:12px 0 8px}
.pk-step{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:3px;min-height:40px;padding:0 10px;border:0;border-radius:12px;background:var(--soft);color:var(--accent);font:600 15px var(--pk-num)}
.pk-step.go{background:var(--pk-tomato);color:#fff;font:600 14px var(--font)}
.pk-sq{flex:none;display:grid;place-items:center;width:40px;min-height:40px;padding:0;border-radius:12px;background:var(--c-surface);border:1px solid var(--line);color:var(--c-sub)}
.pk-sq.sm{width:30px;min-height:30px;border:0;border-radius:50%;background:transparent}
.pk-counter .pk-add input{flex:0 0 120px}

/* timer */
.pk-pomo-row{display:flex;align-items:center;gap:14px;margin-top:6px}
.pk-pomo-row .pk-step{flex:1}
.pk-ring{display:block;flex:none;overflow:visible}
.pk-ring .trk{fill:none;stroke:var(--line);stroke-width:4}
.pk-ring .bar{fill:none;stroke:var(--pk-tomato);stroke-width:4;stroke-linecap:round}
.pk-ring .leaf{fill:var(--pk-kaki)}
.pk-ring .t{font:600 10px var(--pk-num);fill:var(--c-text);text-anchor:middle}
.pk-task{margin:10px 0 0;font:500 14px/1.45 var(--font)}
.pk-task small{display:block;font-size:11px;color:var(--c-sub)}

/* board */
.pk-rows{list-style:none;margin:0;padding:0}
.pk-rows li{display:grid;grid-template-columns:minmax(0,1fr) auto 30px;align-items:center;gap:8px;min-height:44px;border-bottom:1px dashed var(--line)}
.pk-val{font:600 16px var(--pk-num);font-variant-numeric:tabular-nums}
.pk-summary{margin:8px 0 0;font-size:12.5px;color:var(--c-sub)}
.pk-board .pk-add{margin-top:10px}

/* 口袋 on the phone (spec 2026-10-22 os-phone-bridge Task 3): the approved mockups' look, generated_images/pocket/pocket.css
   (d-120) and generated_images/os-states/states.css (d-121), on the app's tokens. The four cards themselves are
   web/os/os-cards.css (loaded just before this file); here they are made to sit in a tile, a chat card and full screen.
   Tomato, persimmon and the stamp red are the mockups' (the prototype's --tomato, --kaki; the journal's stamp); the tape
   yellow is the journal's. No green. */
:root{--pk-tomato:#c8553d;--pk-kaki:#a0573a;--pk-stamp:#b5523b;--pk-new:color-mix(in srgb,var(--accent) 11%,transparent);
  --pk-hand:Iansui,'DFKai-SB','BiauKai','Kaiti TC',serif;--pk-num:'Segoe UI','SF Pro Display','PingFang TC',system-ui,sans-serif;
  --os-tape:#f3e3a6;--os-warm-soft:color-mix(in srgb,var(--pk-kaki) 11%,var(--surface))}

/* ---------- the composer row: [口袋 · N][整理][更多] (d-122) ---------- */
#app .consult-context-tools:has(.pk-pocket-btn){display:flex;gap:6px}
#app .consult-context-tools:has(.pk-pocket-btn)>button{flex:1 1 auto;padding:0 10px}
#app .consult-context-tools .pk-pocket-btn{gap:5px;background:var(--gold-soft);border:1.5px dashed color-mix(in srgb,var(--accent) 50%,transparent);color:var(--accent)}
.pk-pocket-btn .ic{width:18px!important;height:18px!important}
.pk-pocket-btn b{display:inline-grid;place-items:center;min-width:19px;height:19px;padding:0 5px;border-radius:10px;background:var(--accent);color:var(--on-accent);font:600 11px/1 var(--font)}

/* ---------- the live pill (2-timer): only while a timer runs ---------- */
.pk-live-band{position:absolute;z-index:600;left:0;right:0;top:56px;padding:2px 10px 10px;background:var(--bg)}
.pk-live{position:relative;display:flex;align-items:center;gap:9px;padding:6px 6px 8px 8px;border-radius:16px;background:#2c2a26;color:#f4efe4;box-shadow:0 8px 22px #2b241d33;overflow:hidden}
.pk-live-ring{flex:none;display:grid}
.pk-live .pk-ring .trk{stroke:#ffffff26}
.pk-live-t{flex:1;min-width:0;display:flex;flex-direction:column}
.pk-live-t small{font-size:11px;color:#cfc6b6;margin:0}
.pk-live-t b{font:500 14px/1.35 var(--font);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pk-live-time{font:600 23px/1 var(--pk-num);letter-spacing:.5px;font-variant-numeric:tabular-nums}
#app .pk-live-btn{flex:none;display:grid;place-items:center;width:38px;height:38px;min-height:38px;padding:0;border-radius:50%;background:#ffffff1a;color:#f4efe4}
#app .pk-live-btn .ic{width:17px;height:17px}
.pk-live-bar{position:absolute;left:0;bottom:0;height:3px;width:var(--p);background:var(--pk-tomato)}
.pk-live-band~.page-content .content-inset{padding-top:74px}
.pk-ring{display:block;flex:none;overflow:visible}
.pk-ring .trk{fill:none;stroke:var(--line);stroke-width:4}
.pk-ring .bar{fill:none;stroke:var(--pk-tomato);stroke-width:4;stroke-linecap:round}
.pk-ring .leaf{fill:var(--pk-kaki)}

/* ---------- a card's head, as the mockups draw it ---------- */
.pk-head{display:flex;align-items:center;gap:8px;margin-bottom:0}
.pk-head-ic{display:grid;place-items:center;flex:none;width:30px;height:30px;border-radius:50%;background:var(--soft);color:var(--accent)}
.pk-head-ic .ic{width:17px;height:17px}
.pk-head-t{flex:1;min-width:0;display:flex;flex-direction:column}
.pk-head-t b{font:600 15px/1.3 var(--font-serif);color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pk-head-t small,.chat-card .pk-head-t small{display:flex;align-items:center;gap:4px;margin:0;font-size:11px;color:var(--secondary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#app .pk-grow{flex:none;display:grid;place-items:center;width:32px;height:32px;min-height:32px;padding:0;border-radius:50%;background:transparent;color:var(--secondary)}
#app .pk-grow .ic{width:16px;height:16px}
#app .pk-expand{flex:none;display:inline-flex;align-items:center;gap:4px;width:auto;min-height:34px;padding:0 12px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:13px}
#app .pk-expand .ic{width:14px;height:14px}
.pk-desk{display:flex;align-items:center;gap:5px;margin:8px 0 0;font-size:12.5px;color:var(--accent)}
.pk-desk .ic{width:15px;height:15px;flex:none}

/* ---------- the built-in card inside a tile, a chat card, full screen ---------- */
.pk-host .pk-card{color:var(--text)}
.pk-host .pk-list{margin-top:6px}
.pk-host .pk-row{min-height:40px;padding:5px 2px}
#app .pk-host button.pk-row{width:100%;min-height:40px;border-radius:8px;background:none;color:inherit}
#app .pk-host .pk-mini{width:auto;min-height:34px;border-radius:999px}
#app .pk-host .pk-step{width:auto;min-height:40px;border-radius:12px}
#app .pk-host .pk-sq{min-height:40px;border-radius:12px}
#app .pk-host .pk-sq.sm{width:30px;min-height:30px;border-radius:50%}
.pk-host .pk-add input{height:34px;font-size:14px}
.pk-host .pk-tile-foot{margin-top:6px;padding-top:8px;font-size:12px}
/* a small card shows the first rows; ↗ / 展開 has them all */
.pk-tile .pk-list li:nth-child(n+4),.os-card .pk-list li:nth-child(n+5){display:none}
.pk-tile .pk-list li:nth-child(3),.os-card .pk-list li:nth-child(4){border-bottom:0}
.os-card .pk-counter .pk-add{display:none}
.pk-tile .pk-tile-foot{flex-direction:column;flex-wrap:nowrap;align-items:stretch;gap:6px}
.pk-tile .pk-add{width:100%}.pk-tile .pk-add input{width:0}
.pk-tile .pk-counter .pk-add{display:none}
#app .pk-tile .pk-tile-foot [data-act="clear_done"]{display:none}
.pk-tile .pk-num b{font-size:28px}
.pk-tile .pk-pomo-row{gap:10px}
.pk-tile .pk-pomo-row .pk-ring{width:56px;height:56px}
.pk-host .pk-step{white-space:nowrap}
.pk-tile .pk-pomo-row .pk-step{padding:0 6px}
.pk-tile .pk-task{font-size:13px}
.pk-tile .pk-rows li{min-height:38px}

/* ---------- the drawer (4-pocket) ---------- */
.sheet-modal.guardian-sheet.pk-sheet{max-height:96%;background:var(--bg)}
.sheet-modal.guardian-sheet.pk-sheet .sheet-modal-inner{flex:1;min-height:0;overflow:auto}
.sheet-modal.guardian-sheet.pk-sheet>.toolbar.sheet-heading{background:var(--bg);height:44px}
.sheet-modal.guardian-sheet.pk-sheet>.toolbar.sheet-heading .toolbar-inner{height:44px;padding:0 18px;align-items:center}
.pk-sheet .sheet-heading h2{font:600 19px var(--font-serif)}
.pk-sheet .sheet-body{padding:2px 14px 22px}
.pk-status{margin:18px 4px;font-size:14px;color:var(--secondary)}
#app .pk-pinned{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:14px;align-items:center;width:100%;min-height:0;margin-bottom:8px;padding:10px 10px 10px 12px;border-radius:16px;background:var(--surface);text-align:left;color:var(--text);box-shadow:0 6px 18px #2b241d12}
.pk-cover{position:relative;display:block;flex:none;width:60px;overflow:hidden;border-radius:2px;box-shadow:0 0 0 1px #2b241d14,2px 3px 8px #2b241d2e;transform:rotate(-2deg);margin:2px 0}
.pk-cover-page{position:absolute;left:0;top:0;transform-origin:0 0}
.pk-cover-page>*{position:absolute;overflow:hidden;line-height:1.35;white-space:pre-wrap}
.pk-cover-page img{object-fit:cover}
.pk-cover-plain{display:grid;place-items:center;height:84px;background:var(--paper-warm)}
.pk-cover-plain b{font:600 26px var(--font-serif);color:var(--pk-kaki)}
.pk-pinned-t{min-width:0;display:flex;flex-direction:column}
.pk-pinned-t small{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--pk-kaki);letter-spacing:.5px}
.pk-pinned-t small .ic{width:13px;height:13px}
.pk-pinned-t b{display:block;margin-top:2px;font:600 20px/1.3 var(--font-serif);color:var(--text)}
.pk-pinned-m{display:block;font-size:12px;color:var(--secondary)}
.pk-pinned-next{display:block;margin-top:6px;font-size:12.5px;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.pk-chev{display:grid;color:var(--secondary)}.pk-chev .ic{width:18px;height:18px}
.pk-label{display:flex;align-items:center;gap:6px;margin:12px 4px 7px;font:600 13px var(--font-serif);color:var(--secondary);letter-spacing:1px}
.pk-label .ic{width:15px;height:15px}
.pk-wall{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;align-items:start}
.pk-col{display:flex;flex-direction:column;gap:10px;min-width:0}
.pk-tile{position:relative;min-width:0;padding:10px 10px 10px 12px;border-radius:16px;background:var(--surface);box-shadow:0 2px 8px #2b241d0d}
.pk-game,.pk-summary{background:color-mix(in srgb,var(--paper-warm) 55%,var(--surface))}
.pk-game-sum{margin:10px 0 0;font:600 20px/1.2 var(--pk-num);color:var(--text)}
#app .pk-prefs-link{display:flex;align-items:center;gap:10px;width:100%;min-height:44px;margin-top:10px;padding:0 14px;border-radius:14px;border:1.5px dashed var(--line);background:transparent;color:var(--text);text-align:left}
#app .pk-prefs-link .ic{width:18px;height:18px;color:var(--secondary)}
.pk-prefs-link span{flex:1;font:600 14px var(--font-serif)}
.pk-prefs-link small{margin-left:6px;font:12px var(--font);color:var(--secondary)}

/* ---------- ↗ full screen; a checklist is 超市模式 (5-market) ---------- */
.page-content.pk-full-page{padding:0;background:var(--bg)}
.pk-full{--c-surface:var(--surface);--c-text:var(--text);--c-sub:var(--secondary);--c-on:var(--on-accent);display:flex;flex-direction:column;min-height:100%;background:var(--bg)}
.pk-full-top{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:10px;padding:max(16px,env(safe-area-inset-top)) 16px 10px 8px;background:var(--bg)}
#app .pk-back{display:grid;place-items:center;flex:none;width:36px;height:42px;margin-right:-4px;border:0;background:none;color:var(--text)}
.pk-back .ic,.pk-back svg{width:22px;height:22px}
.pk-full-top b{display:block;font:600 21px/1.2 var(--font-serif);color:var(--text)}
.pk-full-top small{display:flex;align-items:center;gap:4px;margin-top:2px;font-size:11.5px;color:var(--secondary)}
.pk-full-top small .ic{width:12px;height:12px}
.pk-full-top .pk-head-ic{width:40px;height:40px}.pk-full-top .pk-head-ic .ic{width:21px;height:21px}
#app .pk-done{flex:none;margin-left:auto;width:auto;min-height:42px;padding:0 22px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:16px;font-weight:600}
.pk-full-prog{padding:2px 16px 8px}
.pk-full-prog p{display:flex;align-items:baseline;gap:6px;margin:0;font-size:14px;color:var(--secondary)}
.pk-full-prog p b{font:600 30px/1 var(--pk-num);color:var(--text)}
.pk-full-prog span{margin-left:auto;font-size:12.5px}
.pk-segs{display:grid;grid-template-columns:repeat(var(--n),minmax(0,1fr));gap:3px;margin-top:8px}
.pk-segs i{height:6px;border-radius:3px;background:var(--line)}
.pk-segs i.on{background:var(--accent)}
.pk-full .pk-full-list{flex:1;padding:2px 16px 12px}
.pk-done-strip{display:flex;align-items:center;gap:8px;margin:6px 0 0;padding:9px 14px;border-radius:14px;border:1.5px dashed var(--line);font-size:13.5px;color:var(--secondary)}
.pk-done-strip .ic{width:16px;height:16px;color:var(--accent)}
.pk-done-strip b{color:var(--text);font-weight:600}
.pk-full .pk-aisle-g{margin-top:8px;padding:6px 12px 2px;border-radius:16px;background:var(--surface)}
.pk-full .pk-aisle-g h4{display:flex;align-items:center;gap:6px;margin:3px 0 0;font:600 12px var(--font);letter-spacing:2px;color:var(--pk-kaki)}
.pk-full .pk-aisle-g h4 .ic{width:15px;height:15px}
.pk-list.big{list-style:none;margin:2px 0 0;padding:0}
.pk-list.big li{border-bottom:1px dashed var(--line)}
.pk-list.big li:last-child{border-bottom:0}
#app .pk-list.big .pk-row{display:grid;grid-template-columns:28px minmax(0,1fr) auto;align-items:center;gap:12px;width:100%;min-height:54px;padding:8px 2px;border-radius:8px;background:none;color:var(--text);text-align:left}
.pk-list.big .pk-box{width:28px;height:28px;border-radius:8px}
.pk-list.big .pk-box .ic{width:18px;height:18px}
.pk-list.big .pk-item b{font-size:18px;font-weight:500}
.pk-list.big .pk-item small{font-size:12px}
.pk-list.big em{font-style:normal;font-size:11px;color:var(--accent);background:var(--pk-new);border-radius:999px;padding:1px 8px;white-space:nowrap}
.pk-list.big li.done em{opacity:.6}
.pk-full-addrow{display:flex;gap:8px;padding:8px 16px}
.pk-full-addrow input{flex:1;min-width:0;height:44px;padding:0 16px;border:1px solid var(--accent);border-radius:999px;background:var(--surface);font-size:16px;color:var(--text)}
#app .pk-full-addrow .pk-mini{min-height:44px;padding:0 18px}
.pk-full-foot{position:sticky;bottom:0;display:flex;gap:8px;padding:10px 16px max(20px,env(safe-area-inset-bottom));border-top:1px solid var(--line);background:var(--bg)}
#app .pk-mini{display:inline-flex;align-items:center;justify-content:center;gap:4px;flex:none;width:auto;min-height:34px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);color:var(--accent);font-size:13px}
#app .pk-mini.go{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}
#app .pk-mini .ic{width:14px;height:14px}
#app .pk-full-foot .pk-mini{flex:1;min-height:44px;font-size:14px}
.pk-full-body{padding:4px 16px 24px}
.pk-full-body .pk-host{padding:14px;border-radius:18px;background:var(--surface)}
.pk-full-body .pk-pomo-row .pk-ring{width:120px;height:120px}

/* ---------- 我的做法 (7-prefs) ---------- */
#app .pk-back{flex:none;display:grid;place-items:center;width:36px;height:36px;min-height:36px;margin-left:-10px;padding:0;border-radius:50%;background:transparent;color:var(--text)}
#app .pk-back .ic{width:20px;height:20px}
.pk-prefs-top{display:flex;align-items:flex-start;gap:10px;margin:0 4px 4px}
.pk-prefs-top p{flex:1;margin:0;font-size:13px;line-height:1.6;color:var(--secondary)}
#app .pk-raw{flex:none;width:auto;min-height:30px;padding:0 10px;border-radius:8px;border:1px solid var(--line);background:var(--surface);font:12px Consolas,ui-monospace,monospace;color:var(--secondary)}
.pk-md{margin:12px 0 0;padding:12px 14px;border-radius:14px;background:var(--surface);font:13px/1.7 Consolas,ui-monospace,monospace;white-space:pre-wrap;color:var(--text)}
.pk-pref-g{margin-top:12px;padding:12px 12px 4px 14px;border-radius:16px;background:var(--surface)}
.pk-pref-g h3{display:flex;align-items:center;gap:8px;margin:0 0 4px;font:600 15px var(--font-serif);color:var(--text)}
.pk-pref-g h3 .pk-head-ic{width:28px;height:28px}
.pk-prefs{list-style:none;margin:0;padding:0}
.pk-prefs li{display:grid;grid-template-columns:minmax(0,1fr) 34px 34px;align-items:center;gap:2px;min-height:52px;padding:4px 0;border-top:1px dashed var(--line)}
.pk-pref-t{font:19px/1.35 var(--pk-hand);color:var(--text)}
.pk-pref-t small{display:block;margin-top:1px;font:11px var(--font);color:var(--secondary)}
#app .pk-sq{flex:none;display:grid;place-items:center;width:40px;min-height:40px;padding:0;border-radius:12px;background:var(--surface);border:1px solid var(--line);color:var(--secondary)}
#app .pk-sq .ic{width:15px;height:15px}
#app .pk-sq.sm{width:32px;min-height:32px;border:0;border-radius:50%;background:transparent}
.pk-prefs li.editing{grid-template-columns:minmax(0,1fr);padding:10px 0}
.pk-prefs li.editing form{display:flex;flex-direction:column;gap:8px}
.pk-prefs li.editing input{width:100%;padding:8px 12px;border:1.5px solid var(--accent);border-radius:10px;background:var(--surface);font:19px var(--pk-hand);color:var(--text);outline:none;box-shadow:0 0 0 4px var(--pk-new)}
.pk-pref-acts{display:flex;gap:6px;justify-content:flex-end}
.pk-pref-add{display:flex;gap:8px;margin-top:14px}
.pk-pref-add input{flex:1;min-width:0;height:44px;padding:0 16px;border:1px solid var(--line);border-radius:999px;background:var(--surface);font-size:14px;color:var(--text)}
#app .pk-pref-add .pk-mini{min-height:44px;padding:0 18px}

/* ---------- the os_tool_card in the chat (3-soy, 2-timer; os-states 1–6) ---------- */
.message-content-card .chat-card.os-card{position:relative;max-width:340px;padding:12px 14px 13px}
.os-card .pk-head-t b{white-space:normal}
.os-card .pk-host{margin-top:4px}
.os-memo{position:relative;margin:10px 2px 0;padding:12px 14px 10px;border-radius:3px;background:#fffdf6;box-shadow:0 1px 0 #2b241d0d,0 4px 12px #2b241d14;transform:rotate(-.8deg)}
.os-memo:before{content:'';position:absolute;left:50%;top:-7px;width:62px;height:16px;margin-left:-31px;background:var(--os-tape);opacity:.9;transform:rotate(2deg);
  clip-path:polygon(0 8%,6% 0,12% 10%,18% 0,24% 8%,30% 0,70% 0,76% 8%,82% 0,88% 10%,94% 0,100% 8%,100% 92%,94% 100%,88% 90%,82% 100%,76% 92%,70% 100%,30% 100%,24% 92%,18% 100%,12% 90%,6% 100%,0 92%)}
.os-memo q{display:block;min-height:1.45em;font:19px/1.45 var(--pk-hand);color:var(--text);quotes:none}
.chat-card.os-card.os-making{border:1.5px dashed color-mix(in srgb,var(--accent) 45%,transparent);background:color-mix(in srgb,var(--accent) 4%,var(--surface))}
.os-making .pk-head-ic{background:var(--os-tape);color:var(--pk-kaki)}
.os-making .pk-head-t small{font-size:12.5px;color:var(--text)}
.os-making .pk-head-t small .ic{width:13px;height:13px;color:var(--accent)}
.os-sketch{display:block;width:100%;height:58px;margin-top:4px;overflow:visible}
.os-sketch path{fill:none;stroke:color-mix(in srgb,var(--accent) 55%,var(--line));stroke-width:2.2;stroke-linecap:round}
.os-sketch .draw{stroke-dasharray:160;stroke-dashoffset:160;animation:os-draw 3.2s ease-in-out infinite}
.os-sketch .pencil{animation:os-pencil 3.2s ease-in-out infinite}
.os-sketch .pencil path{stroke:var(--pk-kaki);stroke-width:1.6;fill:var(--os-tape)}
.os-sketch .pencil .tip{fill:var(--text);stroke:none}
@keyframes os-draw{0%{stroke-dashoffset:160}70%,100%{stroke-dashoffset:0}}
@keyframes os-pencil{0%{transform:translate(0,0)}70%,100%{transform:translate(150px,0)}}
@media (prefers-reduced-motion:reduce){.os-sketch .draw,.os-sketch .pencil{animation:none}.os-sketch .draw{stroke-dashoffset:0}}
.os-wait,.chat-card p.os-wait{margin:8px 0 0;font-size:12.5px;color:var(--secondary)}
.os-failed .pk-head-ic,.os-kept .pk-head-ic{background:var(--os-warm-soft);color:var(--pk-kaki)}
.os-failed .pk-head-ic .ic{width:20px;height:20px}
.os-failed .os-memo{transform:rotate(.6deg);background:#fbf8f0}
.os-failed .os-memo q{color:var(--secondary)}
.os-acts{display:flex;align-items:center;gap:8px;margin-top:12px}
.os-acts span{flex:1;min-width:0;font-size:12px;color:var(--secondary)}
#app .os-retry{display:inline-flex;align-items:center;justify-content:center;gap:6px;flex:none;width:auto;min-height:38px;padding:0 16px;border-radius:999px;background:var(--accent);color:var(--on-accent);font:600 14px var(--font)}
#app .os-retry .ic{width:16px;height:16px;stroke-width:2}
#app .os-retry.quiet{background:var(--surface);color:var(--accent);border:1px solid var(--line);font-weight:500}
#app .os-retry.limited{opacity:.42}
.os-summary .pk-head-ic,.os-ready .pk-head-ic{background:color-mix(in srgb,var(--paper-warm) 70%,var(--surface));color:var(--text)}
.os-line,.chat-card p.os-line{margin:10px 0 0;font:17px/1.45 var(--pk-hand);color:var(--text)}
.os-stamp{position:absolute;right:14px;top:12px;padding:1px 8px;border:1.5px solid var(--pk-stamp);border-radius:4px;color:var(--pk-stamp);font:600 12px/1.5 var(--font-serif);letter-spacing:2px;transform:rotate(-6deg);background:#fffcf5cc}
.os-summary .pk-head,.os-ready .pk-head{padding-right:64px}
.os-summary .pk-desk{margin:10px 0 0;padding:9px 12px;border-radius:12px;background:color-mix(in srgb,var(--paper-warm) 55%,var(--surface));font-size:14px;color:var(--text)}
.os-summary .pk-desk .ic{color:var(--accent);width:18px;height:18px}

/* ---------- 書房's card in the chat (task_progress; Design canvas 「狄倫的房間 OS 重做」第二部分②) ---------- */
.tk-card .pk-head-t b{white-space:normal}
.tk-steps{list-style:none;margin:10px 0 2px;padding:0;display:flex;flex-direction:column;gap:7px}
.tk-steps li{display:flex;align-items:flex-start;gap:9px;font-size:14px;line-height:1.5;color:var(--text)}
.tk-steps small{display:block;font-size:12px;color:var(--secondary)}
.tk-steps .running>span:last-child{font-weight:600}
.tk-steps .running small{font-weight:400;color:var(--accent)}
.tk-steps .pending{color:var(--secondary)}
.tk-dot{flex:none;display:grid;place-items:center;width:17px;height:17px;margin-top:2px;border-radius:50%;box-sizing:border-box;border:1.5px solid var(--line);background:var(--surface)}
.tk-dot .ic{width:10px;height:10px;stroke-width:3}
.done>.tk-dot{border:0;background:var(--accent);color:var(--on-accent)}
.running>.tk-dot{border:2px solid var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent)}
.tk-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:10px;padding-top:8px;border-top:1px dashed var(--line);font-size:12.5px;color:var(--secondary)}
#app .tk-foot .link-button{width:auto;min-height:0;padding:0;font-size:13px;font-weight:600;color:var(--accent)}
.chat-card.tk-ask{border:1.5px solid var(--accent)}
.tk-kicker{display:block;font-size:12px;font-weight:600;letter-spacing:1px;color:var(--accent)}
.chat-card .tk-q{display:block;margin:2px 0 6px;font-size:15.5px;line-height:1.55}
.tk-picks{display:flex;flex-direction:column}
#app .tk-pick{display:flex;align-items:center;gap:10px;width:100%;min-height:42px;padding:6px 2px;border:0;border-bottom:1px dashed var(--line);border-radius:0;background:none;font:14px var(--font);color:var(--text);text-align:left}
.tk-box{flex:none;display:grid;place-items:center;width:19px;height:19px;border:1.5px solid var(--accent);border-radius:5px;box-sizing:border-box;color:transparent}
.tk-box .ic{width:11px;height:11px;stroke-width:3}
[aria-pressed=true]>.tk-box{background:var(--accent);color:var(--on-accent)}
#app .tk-ask .os-retry[disabled]{opacity:.42}
.tk-done .pk-head{padding-right:64px}
.tk-got{list-style:none;margin:10px 0 4px;padding:0;display:flex;flex-direction:column;gap:2px}
.tk-got li{display:flex;align-items:center;gap:10px;padding:5px 0;font-size:14px;line-height:1.4}
.tk-got small{display:block;font-size:12px;color:var(--secondary)}
.tk-gi{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:color-mix(in srgb,var(--paper-warm) 60%,var(--surface));color:var(--text)}
.tk-gi .ic{width:16px;height:16px}
.tk-acts{display:flex;flex-direction:column;gap:6px;margin-top:8px}
#app .tk-acts .os-retry{width:100%}
.tk-where,.chat-card p.tk-where{display:flex;align-items:center;justify-content:center;gap:6px;margin:0;padding:9px 12px;border-radius:999px;background:color-mix(in srgb,var(--paper-warm) 55%,var(--surface));font-size:13.5px;color:var(--text)}
.tk-where .ic{width:16px;height:16px;color:var(--accent)}
.tk-note,.chat-card p.tk-note{margin:8px 0 0;font-size:12px;color:var(--secondary);text-align:center}
.chat-card.tk-failed{border:1.5px dashed color-mix(in srgb,var(--pk-stamp) 45%,transparent);background:color-mix(in srgb,var(--pk-stamp) 4%,var(--surface))}
.tk-failed .pk-head-ic{background:var(--os-warm-soft);color:var(--pk-kaki)}
.tk-why,.chat-card p.tk-why{margin:10px 0 2px;font-size:14px;color:var(--text)}
.tk-sub,.chat-card p.tk-sub{margin:0;font-size:12.5px;line-height:1.6;color:var(--secondary)}
.os-exists .pk-head-ic{background:color-mix(in srgb,var(--accent) 12%,var(--surface))}
.os-have{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;margin-top:10px;padding:10px 10px 10px 12px;border-radius:14px;background:var(--bg)}
.os-have .pk-num{display:flex;align-items:baseline;gap:4px;margin:0}
.os-have .pk-num b{font:600 24px/1 var(--pk-num);color:var(--text)}
.os-have .pk-num span{font-size:12px;color:var(--secondary)}
.os-have .os-line,.chat-card .os-have p.os-line{margin:0;font-size:15px}
.os-have .pk-bar{display:block;height:6px;border-radius:3px;background:var(--line);overflow:hidden;margin-top:8px}
.os-have .pk-bar i{display:block;height:100%;background:var(--accent)}
.os-kept .os-orig{margin-top:10px;padding:4px 12px 4px;border-radius:14px;background:var(--bg)}

/* 勿擾 (d-130), from the approved mockups generated_images/quiet/ (quiet.css). App tokens only (--bg --surface --text
   --secondary --line --accent --on-accent --paper-warm --font --font-serif); the headphone red #c8553d is on 狄倫's
   ear cups, the petal gold #e4b840 is 沐青's (d-098). No green. */
:root{--qt-red:#c8553d;--qt-gold:#e4b840}

/* the face in the top switch while quiet */
.qt-face{position:relative;display:inline-grid;flex:none}
.qt-badge{position:absolute;right:-5px;bottom:-3px;display:grid;place-items:center;width:16px;height:16px;border-radius:50%;
  background:var(--qt-red);color:#fff;box-shadow:0 0 0 2px var(--surface)}
.qt-badge .ic{width:10px!important;height:10px!important;stroke-width:2.4}
.qt-badge-muqing{background:var(--qt-gold);color:#5b4512}
#app .role-switch button.qt-role{gap:7px;padding:3px 10px 3px 6px}
.qt-role-t{display:flex;flex-direction:column;align-items:flex-start;line-height:1.15;min-width:0}
.role-switch .qt-role-t strong{line-height:1.2}
.qt-role-t small{font-size:10.5px;color:var(--secondary);white-space:nowrap;letter-spacing:.02em}

/* the small menu under the face (the user, 10/23: 簡約一點，頭像不用重複出現，重點是切換狀態) */
#app .qt-dim{position:absolute;inset:0;z-index:13000;display:block;width:auto;min-height:0;margin:0;padding:0;border:0;border-radius:0;background:#2b241d14}
.qt-menu{position:absolute;z-index:13500;left:calc(50% - 112px);top:calc(var(--f7-safe-area-top,0px) + 60px);width:228px;padding:6px;border-radius:16px;
  background:var(--surface);box-shadow:0 12px 32px #2b241d33,0 0 0 1px #2b241d14;font-family:var(--font)}
.qt-menu-cap{display:flex;align-items:center;gap:6px;margin:4px 10px 4px;font-size:12px;color:var(--secondary)}
.qt-menu-cap .ic{width:14px;height:14px;color:var(--qt-red);stroke-width:2.2}
#app .qt-row{display:flex;align-items:center;gap:10px;width:100%;min-height:42px;padding:0 10px;border-radius:10px;background:none;color:var(--text);
  font:15px var(--font);text-align:left}
#app .qt-row:active{background:var(--paper-warm)}
.qt-row .ic{width:18px;height:18px;flex:none;color:var(--secondary)}
.qt-row span{flex:1}
.qt-row small{font-size:12.5px;color:var(--secondary)}
.qt-row[aria-checked=true]{color:var(--accent);font-weight:600}
.qt-row[aria-checked=true] .ic{color:var(--accent)}
.qt-row[aria-checked=true]::after{content:"✓";margin-left:4px;color:var(--accent)}
#app .qt-row-back{color:var(--accent);font-weight:600;border-bottom:1px solid var(--line);border-radius:10px 10px 0 0;margin-bottom:2px}
.qt-row-back .ic{color:var(--accent)}

/* 我的 → 陪伴者 */
.qt-setting{margin-top:6px;border-top:1px solid var(--line);align-items:flex-start}
.qt-setting small{display:block;margin-top:4px;font-size:12.5px;line-height:1.6;color:var(--secondary)}
.qt-setting-note{font-size:12.5px;color:var(--secondary);margin:10px 0 0}
