/* Defaults are local to the focus app. Scene geometry remains owned by focus.js. */
.focus-app {
  --focus-surface: var(--t-card,#fff);
  --focus-page: var(--t-page,#fff);
  --focus-text: var(--t-text,#292b2f);
  --focus-muted: var(--t-sub,#70747c);
  --focus-line: var(--t-border,#e3e5e8);
  --focus-control: var(--t-hover,#f0f2f4);
  --focus-selected: var(--t-selected,#e9f5ed);
  --focus-selected-line: var(--t-border,#d5e4d9);
  --focus-radius: var(--lm-ui-radius-control,16px);
  --focus-dialog-radius: var(--lm-ui-radius-dialog,14px);
  --focus-preview-radius: 12px;
  --focus-space: 16px;
  --focus-ball-radius: 50%;
  --focus-font: 14px;
  --focus-clock: 56px;
  --focus-dim: 0;
  --focus-scrim-rgb: 0,0,0;
  --focus-sound-hit-size: 44px;
  --focus-sound-icon-size: 22px;
  --focus-sound-mask-size: 150% 150%;
  --focus-sound-on-icon: url("chat-icons/focus-sound-on.svg");
  --focus-sound-off-icon: url("chat-icons/focus-sound-off.svg");
  --focus-sound-surface: transparent;
  --focus-sound-color: var(--focus-on-media);
  --focus-sound-shadow: drop-shadow(0 1px 2px rgba(0,0,0,.85));
  --focus-overlay-label-shadow: none;
  --focus-media-gap: 8px;
  --focus-media-inset: 12px;
  --focus-controls-gap: max(8px,calc(5.5% - 22px));
  --focus-on-media: var(--focus-text);
  --focus-ink-dark: #202124;
  --focus-ink-light: #fff;
  --focus-shadow-dark: 0 1px 1px rgba(255,255,255,.35);
  --focus-shadow-light: 0 1px 2px rgba(0,0,0,.45);
  --focus-back-surface: rgba(0,0,0,.28);
  --focus-chat-surface: rgba(0,0,0,.42);
  --focus-run-control-surface: rgba(255,255,255,.92);
  --focus-run-control-line: rgba(255,255,255,.42);
  --focus-run-control-shadow: 0 2px 12px rgba(0,0,0,.12);
  --focus-clock-shadow: none;
  --focus-status-shadow: none;
  --focus-overlay: var(--lm-ui-overlay,rgba(0,0,0,.4));
  --focus-dialog-shadow: var(--lm-ui-dialog-shadow,0 8px 30px rgba(0,0,0,.22));
  --focus-media-icon-filter: brightness(0) invert(1);
  --focus-font-small: 12px;
  --focus-font-history: 13px;
  --focus-font-title: 18px;
  --focus-font-dialog-title: 16px;
  --focus-font-input: 16px;
  --focus-font-back: 26px;
  --focus-font-rest: 24px;
  --focus-weight-medium: 500;
  --focus-weight-strong: 600;
  --focus-line-body: 1.65;
  --focus-line-history: 1.45;
  --focus-line-reply: 1.6;
  --focus-line-clock: 1.15;
  --focus-status-height: 1.4em;
  --focus-border-width: 1px;
  --focus-focus-width: 2px;
  --focus-disabled-opacity: .5;
  --focus-pressed-brightness: .96;
  --focus-space-micro: 4px;
  --focus-space-small: 8px;
  --focus-space-icon: 9px;
  --focus-space-control: 10px;
  --focus-space-input: 11px;
  --focus-space-medium: 12px;
  --focus-space-content: 14px;
  --focus-space-large: 18px;
  --focus-space-section: 20px;
  --focus-space-empty: 24px;
  --focus-content-width: 480px;
  --focus-legacy-content-width: 580px;
  --focus-legacy-bottom-space: 84px;
  --focus-legacy-chat-bottom: 76px;
  --focus-legacy-chat-size: 48px;
  --focus-control-height: 44px;
  --focus-compact-control-height: 40px;
  --focus-run-control-height: 42px;
  --focus-run-control-width: 86px;
  --focus-checkbox-size: 20px;
  --focus-chat-size: 44px;
  --focus-preview-height: min(34vh,220px);
  --focus-preview-min-height: 140px;
  --focus-dialog-width: 340px;
  --focus-dialog-gutter: 20px;
  --focus-dialog-padding: 20px;
  --focus-diagnostic-height: 150px;
  --focus-scene-clock-bottom: 19%;
  --focus-scene-shift: max(0px,calc((19% - var(--focus-controls-gap) - var(--focus-run-control-height))/2));
  --focus-scene-controls-top: 81%;
  --focus-chat-min-top: 58px;
  --focus-chat-bottom-clearance: 62px;
  --focus-status-right-clearance: 76px;
  --focus-media-left-clearance: 72px;
  --focus-z-scene: 30;
  --focus-z-chat: 100002;
  --focus-z-dialog: 100010;
  --focus-z-end: 100020;
}
.focus-app{position:relative;min-height:100%;color:var(--focus-text);font-size:var(--focus-font);letter-spacing:0;isolation:isolate}
.focus-backdrop{position:absolute;inset:0;z-index:-1;background-size:cover;background-position:center;pointer-events:none}
.focus-backdrop:after{content:"";position:absolute;inset:0;background:rgba(var(--focus-scrim-rgb),var(--focus-dim))}
.focus-content{box-sizing:border-box;max-width:var(--focus-legacy-content-width);margin:auto;padding:var(--focus-space-empty) var(--focus-space) calc(var(--focus-legacy-bottom-space) + var(--lm-safe-bottom,0px));display:flex;flex-direction:column;gap:var(--focus-space);position:relative;isolation:isolate;min-height:100%}
.focus-label{font-size:var(--focus-font-title);font-weight:var(--focus-weight-strong);overflow-wrap:anywhere}.focus-clock{font-size:var(--focus-clock);font-variant-numeric:tabular-nums;line-height:var(--focus-line-clock);text-align:center;margin:var(--focus-space-medium) 0}.focus-subtitle{text-align:center;color:var(--focus-muted);overflow-wrap:anywhere}
.focus-app label{display:flex;flex-direction:column;gap:var(--focus-space-small);min-width:0}.focus-app input,.focus-app select,.focus-app button{box-sizing:border-box;font:inherit;color:var(--focus-text)}
.focus-app input:not([type=checkbox]):not([type=file]),.focus-app select{min-width:0;max-width:100%;width:100%;padding:var(--focus-space-input);border:var(--focus-border-width) solid var(--focus-line);border-radius:var(--focus-radius);background:var(--focus-surface)}
.focus-app button{min-height:var(--focus-control-height);padding:var(--focus-space-control) var(--focus-space-content);border:var(--focus-border-width) solid var(--focus-line);border-radius:var(--focus-radius);background:var(--focus-control);cursor:pointer}.focus-app button:active{filter:brightness(var(--focus-pressed-brightness))}.focus-app button:disabled{opacity:var(--focus-disabled-opacity)}
.focus-pair{display:grid;grid-template-columns:1fr 1fr;gap:var(--focus-space-medium)}.focus-app .focus-check{flex-direction:row;align-items:center}.focus-check input{width:var(--focus-checkbox-size);height:var(--focus-checkbox-size);flex-shrink:0}.focus-actions{display:flex;gap:var(--focus-space-small);flex-wrap:wrap}.focus-actions>button{flex:1}.focus-message,.focus-thought{line-height:var(--focus-line-body);white-space:pre-wrap;overflow-wrap:anywhere}.focus-thought summary,.focus-settings summary{min-height:var(--focus-compact-control-height);line-height:var(--focus-compact-control-height);cursor:pointer}.focus-settings{border-top:var(--focus-border-width) solid var(--focus-line);padding-top:var(--focus-space-small)}.focus-history>div{display:flex;gap:var(--focus-space);justify-content:space-between;padding:var(--focus-space-medium) 0;border-bottom:var(--focus-border-width) solid var(--focus-line);font-size:var(--focus-font-small);overflow-wrap:anywhere}.focus-history>div span:last-child{color:var(--focus-muted);flex-shrink:0}.focus-status{min-height:var(--focus-status-height);margin:0;color:var(--focus-muted);overflow-wrap:anywhere}
.focus-app .focus-chat-ball{position:fixed;right:var(--focus-space);bottom:calc(var(--focus-legacy-chat-bottom) + var(--lm-safe-bottom,0px));width:var(--focus-legacy-chat-size);height:var(--focus-legacy-chat-size);z-index:var(--focus-z-chat);padding:var(--focus-space-icon);border-radius:var(--focus-ball-radius)}.focus-chat-ball img{width:100%;height:100%}.focus-chat-ball[hidden]{display:none}
.focus-app [data-focus-end]{position:fixed;bottom:calc(var(--focus-space-control) + var(--lm-safe-bottom,0px));left:var(--focus-space);right:var(--focus-space);z-index:var(--focus-z-end);touch-action:none;user-select:none;-webkit-user-select:none;background:var(--focus-surface)}
.focus-loading{padding:var(--focus-space-empty);color:var(--focus-text)}
@media(max-height:520px){.focus-app{--focus-clock:40px;--focus-space:10px}.focus-content{padding-top:var(--focus-space-medium)}.focus-clock{margin:0}}

.focus-app{display:block;width:100%;min-height:100%;background:var(--focus-page);overflow:hidden}
.focus-backdrop{z-index:0;background-color:var(--focus-page)}
.focus-backdrop:after{background:rgba(var(--focus-scrim-rgb),var(--focus-dim,0))}
.focus-content{box-sizing:border-box;position:relative;z-index:1;width:100%;max-width:var(--focus-content-width);min-height:100%;margin:0 auto;padding:var(--focus-space-section) var(--focus-space) calc(var(--focus-space-section) + var(--lm-safe-bottom,0px));gap:var(--focus-space-content)}
.focus-setup-title{font-size:var(--focus-font-title);font-weight:var(--focus-weight-strong);margin:0 0 var(--focus-space-micro)}
.focus-app .focus-pair input{font-variant-numeric:tabular-nums}
.focus-app input:not([type=checkbox]):not([type=range]),.focus-app select{font-size:var(--focus-font-input)}
.focus-app .focus-start{width:100%;background:var(--focus-selected);border-color:var(--focus-selected-line)}
.focus-nav{display:grid;grid-template-columns:1fr 1fr;gap:var(--focus-space-control);margin-top:var(--focus-space-micro)}
.focus-subhead{display:flex;align-items:center;gap:var(--focus-space-medium);margin:0 0 var(--focus-space-large)}
.focus-subhead h2{margin:0;font-size:var(--focus-font-title);font-weight:var(--focus-weight-strong)}
.focus-app .focus-subhead button{width:var(--focus-compact-control-height);min-height:var(--focus-compact-control-height);padding:0;font-size:var(--focus-font-back);line-height:1}
.focus-background-settings{display:flex;flex-direction:column;gap:var(--focus-space-large)}
.focus-preview{position:relative;height:var(--focus-preview-height);min-height:var(--focus-preview-min-height);border:var(--focus-border-width) solid var(--focus-line);border-radius:var(--focus-preview-radius);background-color:var(--focus-control);background-size:cover;background-position:center;overflow:hidden}
.focus-preview:after{content:"";position:absolute;inset:0;background:rgba(var(--focus-scrim-rgb),var(--focus-dim,0));pointer-events:none}
.focus-app .focus-dim-control input{padding:0;border:0;background:transparent}
.focus-history{display:flex;flex-direction:column;gap:0}
.focus-history>div{display:flex;align-items:flex-start;gap:var(--focus-space);justify-content:space-between;padding:var(--focus-space-content) 0;border-bottom:var(--focus-border-width) solid var(--focus-line);font-size:var(--focus-font-history);line-height:var(--focus-line-history);overflow-wrap:anywhere}
.focus-history>div span:first-child{flex:1;min-width:0}
.focus-history>div span:last-child{max-width:55%;color:var(--focus-muted);text-align:right;flex-shrink:0}
.focus-empty{padding:var(--focus-space-empty) 0;text-align:center;color:var(--focus-muted)}
.focus-status{margin:0;min-height:var(--focus-status-height);color:var(--focus-muted)}
.focus-running{position:fixed;inset:0;z-index:var(--focus-z-scene);min-height:0;background:transparent}
.focus-running .focus-backdrop{position:fixed;inset:0;z-index:0}
.focus-running .focus-content{position:static;width:100%;max-width:none;min-height:0;padding:0;display:block}
.focus-running .focus-back{position:fixed;top:calc(var(--lm-safe-top,0px) + var(--focus-space-control));left:var(--focus-space);z-index:2;width:var(--focus-compact-control-height);min-height:var(--focus-compact-control-height);padding:0;border:0;border-radius:50%;background:var(--focus-back-surface);color:var(--focus-on-media);font-size:var(--focus-font-back);line-height:1}
.focus-running .focus-clock{position:fixed;left:50%;bottom:calc(12vh + var(--lm-safe-bottom,0px));z-index:2;margin:0;transform:translateX(-50%);color:var(--focus-on-media);font-size:var(--focus-clock);font-weight:var(--focus-weight-medium);text-shadow:var(--focus-clock-shadow);white-space:nowrap}
.focus-app.focus-running .focus-chat-ball{position:fixed;right:var(--focus-space);bottom:calc(var(--focus-space-large) + var(--lm-safe-bottom,0px));z-index:3;width:var(--focus-chat-size);height:var(--focus-chat-size);padding:var(--focus-space-icon);border:0;border-radius:var(--focus-ball-radius);background:var(--focus-chat-surface);color:var(--focus-on-media)}
.focus-running .focus-chat-ball img{display:block;width:100%;height:100%;filter:var(--focus-media-icon-filter)}
.focus-chat-ball[hidden]{display:none}
.focus-confirm{position:fixed;inset:0;z-index:var(--focus-z-dialog);display:flex;align-items:center;justify-content:center;padding:var(--focus-dialog-gutter);padding-top:calc(var(--focus-dialog-gutter) + var(--lm-safe-top,0px));padding-right:calc(var(--focus-dialog-gutter) + var(--lm-safe-right,0px));padding-bottom:calc(var(--focus-dialog-gutter) + var(--lm-safe-bottom,0px));padding-left:calc(var(--focus-dialog-gutter) + var(--lm-safe-left,0px));background:var(--focus-overlay);box-sizing:border-box;overflow:hidden}
.focus-confirm-box{width:100%;max-width:var(--focus-dialog-width);max-height:100%;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;padding:var(--focus-dialog-padding);background:var(--focus-surface);color:var(--focus-text);border:var(--focus-border-width) solid var(--focus-line);border-radius:var(--focus-dialog-radius);box-sizing:border-box;box-shadow:var(--focus-dialog-shadow)}
.focus-confirm-title{font-size:var(--focus-font-dialog-title);font-weight:var(--focus-weight-strong);text-align:center;margin-bottom:var(--focus-space-large)}
.focus-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--focus-space-control)}
.focus-app .focus-confirm-end{background:var(--focus-selected)}
.focus-loading{padding:var(--focus-space-empty);color:var(--focus-text)}
@media(max-height:520px){.focus-app{--focus-clock:40px;--focus-space:10px}.focus-running .focus-clock{bottom:calc(8vh + var(--lm-safe-bottom,0px))}}
.focus-run-controls{position:fixed;left:var(--focus-media-inset);right:var(--focus-media-inset);bottom:calc(8vh + var(--lm-safe-bottom,0px));z-index:3;display:flex;justify-content:center;gap:var(--focus-space-small);flex-wrap:wrap}
.focus-running .focus-clock{bottom:calc(19vh + var(--lm-safe-bottom,0px))}
.focus-run-controls button{min-width:var(--focus-run-control-width);min-height:var(--focus-run-control-height);padding:var(--focus-space-small) var(--focus-space-medium);border-color:var(--focus-run-control-line);background:var(--focus-run-control-surface);color:var(--focus-text);box-shadow:var(--focus-run-control-shadow)}
.focus-app .focus-confirm-end{background:var(--focus-selected);border-color:var(--focus-line)}
.focus-exit-count,.focus-reply-text{margin:0 0 var(--focus-space);line-height:var(--focus-line-reply);overflow-wrap:anywhere;white-space:pre-wrap}
.focus-reply-popup .focus-confirm-box{max-height:100%;overflow:auto}
.focus-reply-popup [data-focus-reply-close]{width:100%}
.focus-rest{padding:var(--focus-space-small) 0;color:var(--focus-muted)}
.focus-rest strong{display:inline-block;margin-left:var(--focus-space-small);color:var(--focus-text);font-variant-numeric:tabular-nums;font-size:var(--focus-font-rest);font-weight:var(--focus-weight-medium)}
/* Capture the visible canvas without browser chrome; input resize only moves the floating entry. */
.focus-running{inset:0 0 auto;height:var(--focus-scene-height,100%)}
.focus-running .focus-backdrop{position:absolute}
.focus-running .focus-back,.focus-running .focus-clock,.focus-running .focus-chat-ball,.focus-running .focus-run-controls{position:absolute}
.focus-running .focus-clock{bottom:calc(var(--focus-scene-clock-bottom) - var(--focus-scene-shift) + var(--lm-safe-bottom,0px))}
.focus-running .focus-run-controls{top:calc(var(--focus-scene-controls-top) + var(--focus-scene-shift) - var(--lm-safe-bottom,0px) + var(--focus-controls-gap));bottom:auto}
.focus-running .focus-chat-ball{top:max(calc(var(--lm-safe-top,0px) + var(--focus-chat-min-top)),calc(var(--focus-visible-bottom,100%) - var(--focus-chat-bottom-clearance) - var(--lm-safe-bottom,0px)));bottom:auto}
.focus-backdrop video,.focus-preview video{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center}
.focus-running-status{position:absolute;left:var(--focus-space);right:var(--focus-status-right-clearance);bottom:var(--focus-space-large);z-index:2;color:var(--focus-on-media);text-shadow:var(--focus-status-shadow)}
.focus-confirm-box label{margin-bottom:var(--focus-space-medium)}

.focus-media-help{display:block;margin-top:var(--focus-space)}
.focus-media-diagnostic textarea{display:block;width:100%;box-sizing:border-box;min-height:var(--focus-diagnostic-height);margin-bottom:var(--focus-space);padding:var(--focus-space);border:var(--focus-border-width) solid var(--focus-line);border-radius:var(--focus-radius);background:var(--focus-control);color:var(--focus-text);font:inherit;resize:vertical}
.focus-media-diagnostic .focus-confirm-box{max-height:100%;overflow:auto}

.focus-media-controls{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:var(--focus-media-gap)}
.focus-app .focus-sound{display:inline-flex;align-items:center;justify-content:center;width:var(--focus-sound-hit-size);min-width:var(--focus-sound-hit-size);height:var(--focus-sound-hit-size);min-height:var(--focus-sound-hit-size);padding:0;margin:0;flex:0 0 auto;background:var(--focus-sound-surface);color:var(--focus-sound-color);border:0;border-radius:50%;box-sizing:border-box;filter:var(--focus-sound-shadow)}
.focus-app .focus-sound:active{filter:var(--focus-sound-shadow) brightness(var(--focus-pressed-brightness))}
.focus-sound-icon{display:block;width:var(--focus-sound-icon-size);height:var(--focus-sound-icon-size);background:currentColor;-webkit-mask-image:var(--focus-sound-on-icon);mask-image:var(--focus-sound-on-icon);-webkit-mask-size:var(--focus-sound-mask-size);mask-size:var(--focus-sound-mask-size);-webkit-mask-position:center;mask-position:center;-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;pointer-events:none}
.focus-sound[aria-pressed="true"] .focus-sound-icon{-webkit-mask-image:var(--focus-sound-off-icon);mask-image:var(--focus-sound-off-icon)}
.focus-setup-heading{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--focus-media-gap)}
.focus-setup-heading .focus-setup-title{flex:1;min-width:0}
.focus-setup-heading .focus-media-controls{max-width:100%}
.focus-app .focus-play{font-size:var(--focus-font-small);max-width:100%;white-space:normal;overflow-wrap:break-word}
.focus-preview .focus-media-controls{position:absolute;top:var(--focus-media-gap);right:var(--focus-media-gap);left:var(--focus-media-gap);z-index:2}
.focus-media-controls [hidden]{display:none}
.focus-running .focus-media-controls{position:absolute;z-index:3;top:calc(var(--lm-safe-top,0px) + var(--focus-space-control));right:var(--focus-media-inset);left:var(--focus-media-left-clearance)}

.focus-app button:focus,.focus-app input:focus,.focus-app select:focus,.focus-app textarea:focus { outline:var(--focus-focus-width) solid var(--focus-text);outline-offset:var(--focus-border-width); }
html.lm-ios.lm-keyboard-open .focus-confirm { top:var(--lm-visual-page-top,0px);bottom:auto;height:var(--lm-visual-height,var(--lm-app-height,100vh)); }
html.lm-android-overlay-keyboard .focus-confirm { bottom:auto;height:var(--lm-app-height,100vh); }
@media (max-height:480px) and (orientation:landscape) { .focus-app { --focus-dialog-gutter:8px; } }

/* Only text drawn directly over the media participates in local contrast sampling. */
.focus-app.has-background .focus-content{color:var(--focus-on-media);text-shadow:var(--focus-overlay-label-shadow)}
.focus-app.has-background .focus-content input,.focus-app.has-background .focus-content select,.focus-app.has-background .focus-content button,.focus-app.has-background .focus-content textarea{ text-shadow:none }
.focus-app.has-background .focus-content .focus-status,.focus-app.has-background .focus-content .focus-subtitle,.focus-app.has-background .focus-content .focus-empty,.focus-app.has-background .focus-content .focus-rest,.focus-app.has-background .focus-content .focus-rest strong,.focus-app.has-background .focus-content .focus-history>div span:last-child{color:var(--focus-on-media)}
.focus-app .focus-sound:focus{outline-color:var(--focus-sound-color)}

.focus-mode{display:flex;gap:var(--focus-space-small)}
.focus-mode label{flex:1;position:relative;display:flex;align-items:center;justify-content:center;min-height:var(--focus-control-height);border:var(--focus-border-width) solid var(--focus-line);border-radius:var(--focus-radius);background:var(--focus-control);cursor:pointer}
.focus-mode input{position:absolute;width:1px;height:1px;opacity:0}
.focus-mode label:has(input:checked){background:var(--focus-selected);border-color:var(--focus-selected-line)}
.focus-mode label:focus-within{outline:2px solid var(--focus-selected-line);outline-offset:2px}

.focus-background-slots button{flex:1;min-width:0;overflow-wrap:anywhere}
.focus-background-slots button[aria-pressed="true"]{background:var(--focus-selected);border-color:var(--focus-selected-line)}

.focus-app [data-focus-tone="dark"]{color:var(--focus-ink-dark);text-shadow:var(--focus-shadow-dark);--focus-sound-color:var(--focus-ink-dark);--focus-sound-shadow:none}
.focus-app [data-focus-tone="light"]{color:var(--focus-ink-light);text-shadow:var(--focus-shadow-light);--focus-sound-color:var(--focus-ink-light);--focus-sound-shadow:drop-shadow(0 1px 1px rgba(0,0,0,.35))}
.focus-app .focus-content [data-focus-tone],.focus-app.has-background .focus-content [data-focus-tone]{color:var(--focus-local-ink,var(--focus-ink-dark))}
.focus-app .focus-content [data-focus-tone="light"]{--focus-local-ink:var(--focus-ink-light)}
.focus-app .focus-content [data-focus-tone="dark"]{--focus-local-ink:var(--focus-ink-dark)}
.focus-app .focus-rest strong{color:inherit}
.focus-app .focus-mode label{color:var(--focus-text);text-shadow:none}
.focus-confirm-box{text-align:center}
.focus-confirm-actions{grid-template-columns:minmax(0,1fr)}
.focus-confirm-actions button{width:100%;min-width:0;overflow-wrap:anywhere}
.focus-confirm-box .focus-status{margin-bottom:var(--focus-space-control)}
.focus-app .focus-diagnostic-link{display:block;margin:var(--focus-space-small) auto;min-height:var(--focus-compact-control-height);padding:var(--focus-space-small);border:0;background:transparent;color:var(--focus-muted);font-size:var(--focus-font-small);text-shadow:none}
.focus-diagnostic textarea{text-align:left;font-size:var(--focus-font-small)}
.focus-app .focus-check{justify-content:space-between;min-height:var(--focus-control-height);gap:var(--focus-space)}
.focus-toggle-wrap{position:relative;display:flex;align-items:center;flex:0 0 44px;width:44px;height:26px}
.focus-app .focus-toggle-wrap input{position:absolute;inset:0;z-index:1;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.focus-toggle-wrap .tool-toggle{display:block;pointer-events:none}
.focus-toggle-wrap input:focus-visible+.tool-toggle{outline:var(--focus-focus-width) solid var(--focus-text);outline-offset:2px}
/* Planner layout uses the existing shell for back gestures and safe areas. */
.focus-app{
 --fp-accent:var(--t-text,#303a37);--fp-track:var(--t-border,#e8ece9);--fp-fill:var(--t-selected,#d9ece0);
 --fp-tab-surface:var(--t-card,#fff);--fp-body-surface:var(--t-page,#f8faf9);--fp-hero-surface:var(--t-hover,#f0f4f1);
 --fp-icon-size:22px;--fp-nav-height:64px;--fp-stat-size:32px;--fp-dial-size:142px;--fp-dial-type:48px;
 --fp-row-radius:var(--lm-ui-radius-control,14px);--fp-week-radius:50%;--fp-gap:var(--lm-ui-space-3,14px);
 --fp-line:1px solid var(--focus-line);--fp-progress-height:4px;--fp-dial-border:5px;--fp-tab-size:11px;
 --fp-title-size:21px;--fp-body-size:14px;--fp-detail-size:12px;--fp-label-size:13px;--fp-strong:600;
}
.focus-app:not(.focus-running){position:absolute;inset:0;height:100%;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.focus-app:not(.focus-running)>.focus-content{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:var(--focus-space-section) var(--focus-space);gap:var(--fp-gap);scrollbar-width:thin}
.fp-planner-page{background:var(--fp-body-surface)}
.fp-planner-page>.focus-backdrop{display:none}
.fp-planner-page .focus-content{max-width:640px;color:var(--focus-text);text-shadow:none}
.fp-tabs{position:relative;z-index:2;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));flex-shrink:0;min-height:calc(var(--fp-nav-height) + var(--lm-bar-safe-bottom,0px));border-top:var(--fp-line);background:var(--fp-tab-surface);padding:var(--focus-space-micro) var(--focus-space-small) calc(var(--focus-space-micro) + var(--lm-bar-safe-bottom,0px));box-sizing:border-box}
.focus-app .fp-tabs button{display:flex;align-items:center;justify-content:center;flex-direction:column;gap:var(--focus-space-micro);background:transparent;border:0;border-radius:var(--fp-row-radius);font-size:var(--fp-tab-size);color:var(--focus-muted);padding:var(--focus-space-small);min-width:0;min-height:44px}
.focus-app .fp-tabs button[aria-current=page]{background:var(--focus-selected);color:var(--focus-text);font-weight:var(--fp-strong)}
.fp-tabs img,.fp-check-button img{width:var(--fp-icon-size);height:var(--fp-icon-size);object-fit:contain}
.fp-heading{display:flex;justify-content:space-between;align-items:center;gap:var(--fp-gap);min-height:44px}
.fp-heading h2{font-size:var(--fp-title-size);font-weight:var(--fp-strong);margin:0;overflow-wrap:anywhere;min-width:0;line-height:var(--focus-line-history)}
.focus-app .fp-icon-button{flex:0 0 44px;width:44px;padding:0;background:var(--focus-selected);font-size:var(--focus-font-back);border:0}
.fp-date{margin:0;color:var(--focus-muted);font-size:var(--fp-label-size);line-height:var(--focus-line-body)}
.fp-overview{display:grid;grid-template-columns:1fr 1fr;gap:var(--fp-gap);padding:var(--focus-space-section) 0;border-bottom:var(--fp-line)}
.fp-overview>div{display:flex;flex-direction:column;gap:var(--focus-space-small);min-width:0}
.fp-overview>div+div{border-left:var(--fp-line);padding-left:var(--focus-space-section)}
.fp-overview strong{font-size:var(--fp-stat-size);font-weight:var(--focus-weight-medium);font-variant-numeric:tabular-nums;line-height:1.2;overflow-wrap:anywhere}
.fp-overview small{font-size:var(--fp-label-size);font-weight:normal;color:var(--focus-muted)}
.fp-overview span,.fp-section-label{font-size:var(--fp-label-size);color:var(--focus-muted)}
.fp-section-label{margin-top:var(--focus-space-medium);font-weight:var(--fp-strong)}
.fp-task{display:flex;align-items:center;gap:var(--focus-space-medium);padding:var(--focus-space-medium) 0;border-bottom:var(--fp-line)}
.focus-app .fp-task-main{border:0;border-radius:0;background:transparent;text-align:left;flex:1;min-width:0;padding:var(--focus-space-small) 0;display:flex;flex-direction:column;gap:var(--focus-space-small);color:var(--focus-text)}
.fp-task-main strong{font-size:var(--fp-body-size);font-weight:var(--fp-strong);overflow-wrap:anywhere;line-height:var(--focus-line-history)}
.fp-task-main>span{font-size:var(--fp-detail-size);color:var(--focus-muted);overflow-wrap:anywhere}
.fp-progress-line{display:flex;flex-direction:column;gap:var(--focus-space-small);width:100%;font-size:var(--fp-detail-size);color:var(--focus-muted)}
.fp-progress-line progress{display:block;width:100%;height:var(--fp-progress-height);border:0;appearance:none;background:var(--fp-track);border-radius:var(--fp-row-radius);overflow:hidden}
.fp-progress-line progress::-webkit-progress-bar{background:var(--fp-track)}
.fp-progress-line progress::-webkit-progress-value{background:var(--fp-fill)}
.fp-progress-line progress::-moz-progress-bar{background:var(--fp-fill)}
.focus-app .fp-check-button{display:flex;align-items:center;justify-content:center;background:var(--focus-selected);border:0;flex:0 0 auto;font-size:var(--fp-detail-size);min-width:52px;padding:var(--focus-space-small)}
.fp-empty{padding:var(--focus-space-empty) 0;text-align:center;display:flex;flex-direction:column;align-items:center;gap:var(--focus-space-medium)}
.fp-empty img{width:48px;height:48px;opacity:.55}.fp-empty h3{margin:0;font-size:var(--focus-font-title);font-weight:var(--fp-strong)}
.fp-empty p{margin:0;color:var(--focus-muted);font-size:var(--fp-label-size);line-height:var(--focus-line-body)}
.focus-app .fp-empty button{margin-top:var(--focus-space-small);padding-inline:var(--focus-space-empty);background:var(--focus-selected)}
.fp-segments{display:flex;padding:var(--focus-space-micro);gap:var(--focus-space-micro);background:var(--focus-control);border-radius:var(--fp-row-radius)}
.focus-app .fp-segments button{flex:1;min-width:0;border:0;background:transparent;font-size:var(--fp-label-size)}
.focus-app .fp-segments button[aria-pressed=true]{background:var(--focus-surface);color:var(--focus-text)}
.fp-editor{display:flex;flex-direction:column;gap:var(--focus-space-large);padding-bottom:var(--focus-space-section)}
.fp-editor label,.fp-dialog label{display:flex;flex-direction:column;gap:var(--focus-space-small);font-size:var(--fp-label-size);text-align:left}
.fp-editor .focus-check{flex-direction:row;align-items:center}
.fp-editor .focus-check span:first-child{flex:1}
.fp-form-error{color:var(--focus-muted);font-size:var(--fp-label-size);margin:0;overflow-wrap:anywhere}
.fp-form-error:empty{display:none}
.fp-meta-row{display:flex;justify-content:space-between;gap:var(--focus-space);padding:var(--focus-space-medium) 0;border-bottom:var(--fp-line);font-size:var(--fp-label-size)}
.fp-meta-row strong{font-weight:var(--focus-weight-medium);overflow-wrap:anywhere;text-align:right}
.fp-detail-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--focus-space-small)}
.fp-detail-actions button{font-size:var(--fp-label-size)}
.fp-entry{display:flex;align-items:center;justify-content:space-between;gap:var(--focus-space-medium);padding:var(--focus-space-medium) 0;border-bottom:var(--fp-line);font-size:var(--fp-label-size)}
.fp-entry>div{display:flex;flex-direction:column;gap:var(--focus-space-micro);min-width:0}.fp-entry strong{font-weight:var(--focus-weight-medium);overflow-wrap:anywhere}.fp-entry span{color:var(--focus-muted);font-size:var(--fp-detail-size)}.fp-entry b{font-weight:normal;flex-shrink:0}
.focus-app .fp-entry button{background:transparent;border:0;color:var(--focus-muted);font-size:var(--fp-detail-size);padding:var(--focus-space-small)}
.fp-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--focus-space-micro);padding-block:var(--focus-space-small)}
.fp-week-day{display:flex;flex-direction:column;align-items:center;gap:var(--focus-space-small);font-size:var(--fp-detail-size);color:var(--focus-muted)}
.fp-week-day b{display:flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:var(--fp-week-radius);font-weight:normal;background:var(--focus-control)}
.fp-week-day.is-done b{background:var(--focus-selected);color:var(--focus-text)}.fp-week-day.is-missed b{text-decoration:underline;text-underline-offset:4px}
.fp-month{display:flex;align-items:center;justify-content:space-between;gap:var(--focus-space);font-size:var(--fp-label-size)}
.focus-app .fp-month input{max-width:180px}
.fp-calendar{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:var(--focus-space-micro);text-align:center}
.fp-calendar>span{font-size:var(--fp-detail-size);color:var(--focus-muted);padding:var(--focus-space-small) 0}
.focus-app .fp-calendar button{position:relative;min-width:0;min-height:44px;border:0;background:transparent;padding:var(--focus-space-micro);font-variant-numeric:tabular-nums}
.focus-app .fp-calendar button[aria-pressed=true]{background:var(--focus-selected)}
.fp-calendar .has-entry:after{content:'';position:absolute;bottom:4px;left:calc(50% - 2px);width:4px;height:4px;border-radius:50%;background:var(--fp-accent)}
.fp-focus-dial{align-self:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--focus-space-micro);width:var(--fp-dial-size);height:var(--fp-dial-size);border:var(--fp-dial-border) solid var(--focus-selected-line);border-radius:50%;box-sizing:border-box;background:var(--focus-surface);color:var(--focus-text);text-shadow:none}
.fp-focus-dial strong{font-size:var(--fp-dial-type);line-height:1.1;font-weight:var(--focus-weight-medium);font-variant-numeric:tabular-nums}
.fp-focus-dial span{font-size:var(--fp-detail-size);color:var(--focus-muted)}
.fp-focus-page .focus-nav{grid-template-columns:1fr;margin:0}.fp-focus-page .focus-nav button{background:var(--focus-control);font-size:var(--fp-label-size)}
.fp-focus-page .focus-setup-title{font-size:var(--focus-font-title)}
.focus-app .fp-link-goal{display:flex;flex-direction:column;gap:var(--focus-space-small)}
.focus-app input[type=date],.focus-app input[type=month]{min-width:0;max-width:100%;box-sizing:border-box}
.focus-app button[aria-busy=true]:before{content:'';display:inline-block;width:12px;height:12px;margin-right:var(--focus-space-small);border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:focus-wait 1s linear infinite}
.focus-confirm-box .focus-exit-count:empty,.focus-confirm-box .focus-status:empty{display:none}
@keyframes focus-wait{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){.focus-app button[aria-busy=true]:before{animation:none}}
@media(max-height:520px){.focus-app{--fp-dial-size:104px;--fp-dial-type:36px;--fp-nav-height:52px}.focus-app:not(.focus-running)>.focus-content{padding-block:var(--focus-space-small)}}

.focus-app:not(.focus-running)>.focus-content>*{flex-shrink:0}
.focus-app .fp-month{flex-direction:row}

.fp-focus-footer{position:relative;z-index:2;flex-shrink:0;padding:var(--focus-space-small) var(--focus-space);background:var(--fp-tab-surface);border-top:var(--fp-line)}
.fp-focus-footer:last-child{padding-bottom:calc(var(--focus-space-small) + var(--lm-bar-safe-bottom,0px))}
.fp-focus-footer .focus-start{max-width:var(--focus-content-width);display:block;margin:0 auto}
.focus-app{--fp-dial-size:112px;--fp-dial-type:42px}
/* Soft botanical defaults; uploaded media replaces the paper decoration. */
.focus-app{--fp-brand:#426c56;--fp-soft:#dceddf;--fp-paper:#f1f7f2;--fp-art-opacity:.085;--fp-art-size:150px;--fp-add-size:32px;--focus-page:var(--fp-paper);--focus-selected:var(--fp-soft);--focus-selected-line:#bbd4c3;--fp-fill:#79a589;--fp-accent:var(--fp-brand);--focus-control:#e8f0eb;--fp-body-surface:var(--focus-page);--fp-hero-surface:#e4f0e6}
.fp-planner-page>.focus-backdrop{display:block}
.focus-app:not(.has-background):not(.focus-running)>.focus-backdrop:before{content:'';position:absolute;right:var(--focus-space-large);bottom:var(--focus-space-empty);width:var(--fp-art-size);height:calc(var(--fp-art-size) * 1.6);background:url('chat-icons/收藏.svg') center/contain no-repeat;opacity:var(--fp-art-opacity);pointer-events:none}
.focus-app:not(.has-background) .fp-heading h2,.focus-app:not(.has-background) .fp-overview strong,.focus-app:not(.has-background) .focus-setup-title{color:var(--fp-brand)}
.focus-app:not(.has-background) .fp-overview{border-top:3px solid var(--focus-selected-line)}
.focus-app .fp-icon-button{display:flex;align-items:center;justify-content:center;padding:0;line-height:1}
.fp-icon-button img{display:block;width:var(--fp-add-size);height:var(--fp-add-size);object-fit:contain;pointer-events:none}
.focus-app.has-background .fp-task-main{color:inherit}
.focus-app.has-background .fp-overview,.focus-app.has-background .fp-task,.focus-app.has-background .fp-entry,.focus-app.has-background .fp-meta-row{border-color:color-mix(in srgb,var(--focus-text) 20%,transparent)}
.focus-app.has-background .fp-calendar button:not([aria-pressed=true]){background:transparent}
.focus-app.has-background .fp-progress-line progress{background:var(--focus-control)}
.focus-app .fp-week-day b,.focus-app .fp-calendar button[aria-pressed=true]{color:var(--focus-text);text-shadow:none}
