/* 素墨: a monochrome ink variant layered on the sanctuary layout. Selectors carry
   [data-ui-variant=ink] so they outrank the lace rules they replace. */
.ink-only{display:none}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .ink-only{display:block}
html[data-ui-skin=sanctuary][data-ui-variant=ink]{--san-paper:#f4f4f2;--san-pane:#fbfbfa;--san-ink:#161616;--san-muted:#8b8b88;--san-line:#dcdcd9;--san-user:#1c1c1c;--lace-red:#161616;--lace-frame:none;--lace-bow:none;--lace-cross:none;--lace-heart:none;--lace-spark:none;
 --ink-faint:#c9c9c5;--ink-ghost:rgba(22,22,22,.04);--ink-user-text:#f4f4f2;--ink-serif:'Songti TC','Songti SC','STSong','Noto Serif CJK SC','Source Han Serif SC',Georgia,serif;color-scheme:light}
html[data-ui-skin=sanctuary][data-ui-variant=ink][data-theme=dark]{--san-paper:#141414;--san-pane:#1b1b1b;--san-ink:#ecebe8;--san-muted:#8f8e8a;--san-line:#2e2e2d;--san-user:#ecebe8;--lace-red:#ecebe8;--ink-faint:#4a4a48;--ink-ghost:rgba(236,235,232,.045);--ink-user-text:#141414;color-scheme:dark}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body{background:radial-gradient(90% 60% at 50% 40%,color-mix(in srgb,var(--san-paper) 40%,#fff) 0%,var(--san-paper) 62%,color-mix(in srgb,var(--san-paper) 92%,#000) 100%) fixed var(--san-paper)!important;font-family:var(--ink-serif)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink][data-theme=dark] body{background:radial-gradient(90% 60% at 50% 40%,#1f1f1f 0%,var(--san-paper) 70%) fixed var(--san-paper)!important}

/* Remove lace, wings, feathers and the painted architecture. */
html[data-ui-skin=sanctuary][data-ui-variant=ink] :is(.sanctuary-scene>*,.sanctuary-crest,.lace-divider,.sanctuary-couple-corner,.memory-hero-wing,.memory-hero-divider){display:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .sanctuary-scene::after,html[data-ui-skin=sanctuary][data-ui-variant=ink] .sanctuary-scene::before{display:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #appShell .lace-frame::before,html[data-ui-skin=sanctuary][data-ui-variant=ink] #appShell .lace-frame::after,
html[data-ui-skin=sanctuary][data-ui-variant=ink] #appShell #messages.messages .message .bubble.lace-frame::before,html[data-ui-skin=sanctuary][data-ui-variant=ink] #appShell #messages.messages .message .bubble.lace-frame::after,
html[data-ui-skin=sanctuary][data-ui-variant=ink] #appShell .sanctuary-couple-card::after,html[data-ui-skin=sanctuary][data-ui-variant=ink] #appShell .sanctuary-couple-card::before,
html[data-ui-skin=sanctuary][data-ui-variant=ink] #albumPage .album-card::after,html[data-ui-skin=sanctuary][data-ui-variant=ink] #albumPage .album-entry .album-card::after,
html[data-ui-skin=sanctuary][data-ui-variant=ink] :is(.sanctuary-person-avatar,.sanctuary-heart,.sanctuary-date-card,.sanctuary-date-head,.mo-feature,.memory-lace-card)::before,
html[data-ui-skin=sanctuary][data-ui-variant=ink] :is(.sanctuary-person-avatar,.sanctuary-heart,.sanctuary-date-card,.sanctuary-date-head,.mo-feature,.memory-lace-card)::after{display:none!important;content:none!important;background:none!important;border-image:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .album-detail{border:1px solid var(--san-line)!important;border-image:none!important}

/* Ghost characters behind every page. */
.ink-ghost{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.ink-ghost span{position:absolute;font:400 clamp(220px,62vw,420px)/1 var(--ink-serif);color:var(--ink-ghost);text-shadow:0 0 6px var(--ink-ghost);user-select:none;transition:opacity .6s ease}
.ink-ghost .ink-ghost-a{left:-.3em;top:2vh}.ink-ghost .ink-ghost-b{right:-.32em;bottom:-.08em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body[data-page] #appShell#appShell,html[data-ui-skin=sanctuary][data-ui-variant=ink] body[data-page] #appShell#appShell .page-view{background:transparent!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink]:not([data-has-chat-background]) #bgLayer{background:radial-gradient(90% 60% at 50% 40%,color-mix(in srgb,var(--san-paper) 40%,#fff) 0%,var(--san-paper) 62%,color-mix(in srgb,var(--san-paper) 92%,#000) 100%) var(--san-paper)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink][data-theme=dark]:not([data-has-chat-background]) #bgLayer{background:radial-gradient(90% 60% at 50% 40%,#1f1f1f 0%,var(--san-paper) 70%) var(--san-paper)!important}

/* Staggered characters: uneven weight, size and focus. */
.ink-ch{display:inline-block}
.ink-w0{font-weight:700}.ink-w1{font-weight:300;opacity:.7;transform:translateY(.2em)}
.ink-w2{font-weight:400;opacity:.42;filter:blur(.7px);transform:translateY(-.1em)}.ink-w3{font-weight:600;opacity:.86;transform:translateY(.08em)}

/* Home */
html[data-ui-skin=sanctuary][data-ui-variant=ink] .mo-hero>h1,html[data-ui-skin=sanctuary][data-ui-variant=ink] .mo-hero>p{display:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .mo-hero{padding-top:calc(env(safe-area-inset-top,0px) + 40px)!important;min-height:0!important;background:none!important}
.ink-hero{padding-top:calc(env(safe-area-inset-top,0px) + 34px)}
.ink-title{position:relative;margin:0 auto;width:max-content;font:400 50px/1.32 var(--ink-serif);color:var(--san-ink);letter-spacing:-.02em}
.ink-title-line{display:block;white-space:nowrap}.ink-title-line:nth-child(2){padding-left:.9em}.ink-title-line:nth-child(3){padding-left:.35em;font-size:.82em}
.ink-title-latin{display:block;margin:18px 0 6px;text-align:center;font:italic 300 12px/1 Georgia,serif;letter-spacing:.42em;color:var(--san-muted);text-transform:lowercase}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell#appShell :is(.sanctuary-couple-card,.sanctuary-date-card,.mo-feature){background:transparent!important;border:0!important;border-top:1px solid var(--san-line)!important;border-radius:0!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell#appShell .mo-feature{border:1px solid var(--san-line)!important;border-radius:2px!important;background:color-mix(in srgb,var(--san-pane) 55%,transparent)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #appShell .sanctuary-person-avatar{background:var(--san-paper)!important;border:1px solid var(--san-ink)!important;box-shadow:none!important;color:var(--san-ink)!important;font-family:var(--ink-serif)!important;font-weight:400!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .sanctuary-heart{color:var(--san-ink)!important;font-size:0!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .sanctuary-heart::before{display:block!important;content:'與'!important;position:static!important;width:auto!important;height:auto!important;background:none!important;font:300 22px/1 var(--ink-serif);opacity:.6}
html[data-ui-skin=sanctuary][data-ui-variant=ink] :is(.sanctuary-together,.sanctuary-date-number,.sanctuary-date-heading,.sanctuary-feature-copy strong,.lace-home-time){font-family:var(--ink-serif)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .sanctuary-date-number{font-weight:300!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .sanctuary-week-day[aria-current=date] span{background:var(--san-ink)!important;color:var(--san-paper)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #sanctuaryAddEvent{border-color:var(--san-ink)!important;color:var(--san-ink)!important;background:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .sanctuary-settings{background:none!important;border:0!important;box-shadow:none!important}

/* Page titles become two characters. */
html[data-ui-skin=sanctuary][data-ui-variant=ink] .memory-hero h1{font-size:0!important;font-family:var(--ink-serif)!important;letter-spacing:0!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .memory-hero h1::before{content:'記';font:700 44px/1 var(--ink-serif)}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .memory-hero h1::after{content:'憶';display:inline-block;font:300 40px/1 var(--ink-serif);opacity:.6;transform:translate(-.05em,.25em)}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #settingsPage::before{content:'設 置'!important;font:600 40px/1.2 var(--ink-serif)!important;letter-spacing:.1em!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] :is(.page-view,dialog) :is(h1,h2,h3){font-family:var(--ink-serif)!important}

/* Cards and controls everywhere: hairlines, no shadow, ink buttons. */
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell :is(.memory-lace-card,.memory-overview-card,.memory-entry-card,.settings-group,.mcp-section){background:color-mix(in srgb,var(--san-pane) 55%,transparent)!important;border:1px solid var(--san-line)!important;border-radius:2px!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] :is(.primary-button,button.primary){background:var(--san-ink)!important;color:var(--san-paper)!important;border-color:var(--san-ink)!important;border-radius:2px!important;box-shadow:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .secondary-button{background:transparent!important;color:var(--san-ink)!important;border:1px solid var(--san-ink)!important;border-radius:2px!important;box-shadow:none!important}

/* Bottom bar */
html[data-ui-skin=sanctuary][data-ui-variant=ink][data-app-layout=compact] body:not([data-native-shell='1']) #tabBar{background:color-mix(in srgb,var(--san-paper) 88%,transparent)!important;border:0!important;border-top:1px solid var(--san-line)!important;border-radius:0!important;box-shadow:none!important;width:100%!important;bottom:0!important;height:calc(60px + var(--san-safe-bottom))!important;padding-bottom:var(--san-safe-bottom)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #tabBar .tab{font-family:var(--ink-serif)!important;font-size:11px!important;letter-spacing:.08em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #tabBar .tab.active{background:none!important;font-weight:700}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #tabBar .tab .sanctuary-tab-icon{stroke-width:1.2}

/* Chat */
html[data-ui-skin=sanctuary][data-ui-variant=ink][data-app-layout=compact] body[data-page=chat]:not([data-native-shell='1']) .floating-header{background:var(--san-paper)!important;z-index:20!important;transform:translateZ(0);isolation:isolate;border-bottom:1px solid var(--san-line)!important;box-shadow:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] .floating-header :is(strong,.sanctuary-header-name,h1,h2){font-family:var(--ink-serif)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body[data-page] #appShell #messages.messages .message .bubble:not(.photo-bubble,.voice-bubble,.letter-bubble,.music-bubble,.question-bubble,.sticker-bubble){background:color-mix(in srgb,var(--san-pane) 94%,transparent)!important;border:1px solid var(--san-line)!important;border-radius:3px!important;box-shadow:none!important;filter:none!important;font-family:var(--ink-serif)!important;color:var(--san-ink)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body[data-page] #appShell #messages.messages .message.human .bubble:not(.photo-bubble,.voice-bubble,.letter-bubble,.music-bubble,.question-bubble,.sticker-bubble){background:var(--san-user)!important;border-color:var(--san-user)!important;color:var(--ink-user-text)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body[data-page] #appShell #messages.messages .message .bubble *{text-shadow:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body[data-page=chat] #appShell #messages.messages .message::before{box-shadow:0 0 0 1px var(--san-line)!important;font-family:var(--ink-serif)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] :is(.chat-date-separator,.message-time,.msg-time){font-family:var(--ink-serif)!important;color:var(--san-muted)!important;letter-spacing:.12em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #composer{background:color-mix(in srgb,var(--san-paper) 90%,transparent)!important;border:0!important;border-top:1px solid var(--san-line)!important;border-radius:0!important;box-shadow:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #composer textarea{font-family:var(--ink-serif)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #composer .send-button{background:var(--san-ink)!important;color:var(--san-paper)!important;border-radius:2px!important;box-shadow:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] #composer #recordButton.recording{color:var(--san-ink)!important;background:var(--ink-ghost)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell :is(.memory-search,.rolling-memory-run,.rolling-memory-reset,.memory-filter button,.chip){border-radius:2px!important;box-shadow:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-search{background:transparent!important;border:0!important;border-bottom:1px solid var(--san-ink)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body[data-page=chat] .floating-header .header-actions button{background:transparent!important;border:1px solid var(--san-line)!important;box-shadow:none!important;color:var(--san-ink)!important}

/* Quieter settings and memory: no boxes, no chevrons, text-weight actions. */
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-section{margin:0 0 30px!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-group-title{font:400 11px/1.5 var(--ink-serif)!important;letter-spacing:.32em!important;color:var(--san-muted)!important;margin:0 0 4px!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell :is(.settings-group,.settings-danger,.memory-overview-card,.memory-entry-card,.memory-summary-card){background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;padding-left:0!important;padding-right:0!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-group>:is(.settings-entry,.settings-inline-switch){background:transparent!important;padding-left:0!important;padding-right:0!important;min-height:50px!important;font:400 15px/1.5 var(--ink-serif)!important;letter-spacing:.04em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-group>:is(.settings-entry,.settings-inline-switch)+:is(.settings-entry,.settings-inline-switch){border-top:1px solid var(--san-line)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell :is(.settings-chevron,.memory-entry>b){display:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell :is(.settings-group>.nav-item,.settings-group>#openRenderSettings)::after{content:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell #openRenderSettings>span:last-child:not(:first-child){display:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-entry-value{font:400 11px/1.4 var(--ink-serif)!important;color:var(--san-muted)!important;letter-spacing:.06em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-save-bar{justify-content:center!important;margin:6px 0 34px!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-save-bar button{background:none!important;border:0!important;border-bottom:1px solid var(--san-ink)!important;border-radius:0!important;color:var(--san-ink)!important;padding:4px 2px!important;min-height:0!important;font:400 14px/1.4 var(--ink-serif)!important;letter-spacing:.3em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-danger{display:flex!important;justify-content:center;gap:28px;margin:0 0 20px!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-danger .settings-entry{border:0!important;background:none!important;min-height:0!important;width:auto!important;padding:4px 0!important;color:var(--san-muted)!important;font:400 12px/1.4 var(--ink-serif)!important;letter-spacing:.12em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .settings-danger .settings-entry::after{content:none!important}

html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-status{border:0!important;justify-content:center;font-size:11px!important;color:var(--san-muted)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-page-stats{border:0!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-page-stats>div{border:0!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-page-stats dd{font:300 30px/1.2 var(--ink-serif)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-page-stats dt{font:400 10px/1.4 var(--ink-serif)!important;letter-spacing:.2em;color:var(--san-muted)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-entry{background:none!important;padding-left:0!important;padding-right:0!important;font-family:var(--ink-serif)!important;border-top:1px solid var(--san-line)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-entry-card{border-bottom:1px solid var(--san-line)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell #memorySearch{display:none!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-filters{gap:20px!important;justify-content:center}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .mem-chip{background:none!important;border:0!important;border-bottom:1px solid transparent!important;border-radius:0!important;box-shadow:none!important;padding:4px 1px!important;min-width:0!important;color:var(--san-muted)!important;font:400 13px/1.4 var(--ink-serif)!important;letter-spacing:.1em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .mem-chip.active{color:var(--san-ink)!important;border-bottom-color:var(--san-ink)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-summary-card h3{border:0!important;font-size:17px!important;letter-spacing:.12em}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-summary-track{height:1px!important;border-radius:0!important;background:var(--san-line)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .rolling-memory-actions{display:flex!important;grid-template-columns:none!important;justify-content:flex-start!important;gap:24px!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell :is(.rolling-memory-run,.rolling-memory-reset){flex:0 0 auto!important;width:auto!important;min-height:0!important;background:none!important;border:0!important;border-bottom:1px solid currentColor!important;border-radius:0!important;padding:3px 1px!important;font:400 13px/1.4 var(--ink-serif)!important;letter-spacing:.14em;color:var(--san-ink)!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .rolling-memory-reset{color:var(--san-muted)!important;border-bottom-color:transparent!important}
html[data-ui-skin=sanctuary][data-ui-variant=ink] body #appShell#appShell .memory-empty{background:none!important;border:0!important;box-shadow:none!important;font:400 12px/1.6 var(--ink-serif)!important;color:var(--san-muted)!important;padding:18px 0!important}
