/* 泊 · 纸页。Colors come from appearance.js (every text pair checked at 7:1); the values below are the dark default before it runs. */
:root{--bg:#1A1916;--surface:#21201D;--surface-2:#141310;--text:#F3EFE6;--muted:#D2CCBF;--line:#454440;--hair:#2E2D29;--accent:#AEDCC8;--accent-fill:#AEDCC8;--accent-on:#21201D;--accent-tint:#323832;
  --font:"Po Rounded",system-ui,-apple-system,"Microsoft YaHei UI",sans-serif;--radius:10px;--side:216px;--bar:0px;font-size:22px;color-scheme:dark}
@media (prefers-color-scheme:light){:root:not([data-theme]){--bg:#FAF8F2;--surface:#FEFCF6;--surface-2:#F2F0EA;--text:#1F1D18;--muted:#46423A;--line:#D7D5CF;--hair:#EAE8E1;--accent:#1D4F43;--accent-fill:#1E5245;--accent-on:#FEFCF6;--accent-tint:#E4E7E1;color-scheme:light}}
:root[data-font-size=small]{font-size:18px}
:root[data-font-size=medium]{font-size:20px}
:root[data-font-size=large]{font-size:22px}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--bg)}
body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font:400 1rem/1.5 var(--font);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;overflow-x:hidden}
h1,h2,h3,p{margin:0}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:0;padding:0}
[hidden]{display:none!important}
.sprite{position:absolute;width:0;height:0;overflow:hidden}
svg.i{width:1.18rem;height:1.18rem;flex:none;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:6px}
::selection{background:var(--accent-tint)}
input::placeholder,textarea::placeholder{color:var(--muted);opacity:1}
button:disabled,input:disabled,select:disabled,textarea:disabled{opacity:1;cursor:default}

/* Background photo: always under a strong paper overlay, so text keeps its contrast. */
.desk-background{position:fixed;inset:0;z-index:0;background-position:center;background-size:cover;pointer-events:none}
.desk-background::after{content:"";position:absolute;inset:0;background:var(--bg);opacity:max(.92,var(--background-overlay,1))}

/* ---------- 书脊式侧栏 ---------- */
.side{position:fixed;inset:0 auto 0 0;z-index:3;width:var(--side);display:flex;flex-direction:column;padding:1.1rem .75rem;background:var(--surface-2)}
.side nav{display:flex;flex-direction:column;gap:2px}
.side a,.nav-capture{display:flex;align-items:center;gap:.65rem;min-height:2.36rem;padding:0 .65rem;border-radius:var(--radius);font-size:1rem;color:var(--text)}
.side a.active,.nav-capture[aria-expanded=true]{background:var(--accent-tint);color:var(--accent);font-weight:500}
.nav-capture{color:var(--accent);font-weight:500;margin-bottom:.9rem}
.nav-capture svg.i{stroke-width:1.9}
.side-end{margin-top:auto}
.workspace{position:relative;z-index:1;margin-left:var(--side);min-height:100vh}

/* ---------- 一整张纸：留白分区，不画粗线 ---------- */
.page{padding:1.6rem 2.5rem 1.2rem;max-width:72rem;outline:none}
.page-head{display:flex;align-items:center;gap:1rem 1.5rem;flex-wrap:wrap;margin-bottom:1.2rem}
h1{font-size:1.75rem;line-height:1.25;font-weight:500}
h2{font-size:1.1rem;font-weight:500;display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-bottom:.3rem}
h2 a,h2 .text-link{font-size:.85rem;font-weight:400;color:var(--accent)}
.empty{padding:.5rem 0;color:var(--muted)}
.hint{font-size:.85rem;color:var(--muted)}
.status-line{padding:.45rem 2.5rem;font-size:.85rem;color:var(--text);background:var(--surface-2)}
.status-line a,.status-line button{color:var(--accent);font-weight:500}
.pending-note{margin-top:.4rem}
.pending-note p{margin:.15rem 0}

/* Buttons: quiet text, outlined primary. No white text on color. */
.primary,.secondary,.quiet{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-height:2.1rem;padding:0 1rem;border-radius:var(--radius);font-weight:500;white-space:nowrap}
.primary{border:1px solid var(--accent);color:var(--accent);background:var(--accent-tint)}
.secondary{border:1px solid var(--line);color:var(--text)}
.quiet{color:var(--text);padding:0 .6rem}
.text-link{color:var(--accent);font-weight:400;min-height:2rem;display:inline-flex;align-items:center;gap:.3rem}
.icon-button,.mini-button{display:inline-grid;place-items:center;min-width:2.1rem;min-height:2.1rem;border-radius:var(--radius);color:var(--text)}
.tabs{display:flex;gap:.25rem;flex-wrap:wrap}
.tabs button,.tabs a{min-height:2.1rem;padding:0 .8rem;border-radius:var(--radius);color:var(--text);font-size:.95rem}
.tabs .active{background:var(--accent-tint);color:var(--accent);font-weight:500}

/* Tooltips: hover, keyboard focus or long press. */
[data-tip]{position:relative}
[data-tip]:hover::after,[data-tip]:focus-visible::after,[data-tip].tip::after{content:attr(data-tip);position:absolute;z-index:8;left:50%;bottom:calc(100% + .35rem);transform:translateX(-50%);padding:.2rem .6rem;border-radius:8px;background:var(--surface);color:var(--text);border:1px solid var(--line);font-size:.85rem;font-weight:400;white-space:nowrap;pointer-events:none;box-shadow:0 4px 14px rgba(0,0,0,.12)}
@media (hover:none){[data-tip]:hover::after{content:none}[data-tip].tip::after{content:attr(data-tip)}}

/* Inputs */
input:not([type=checkbox],[type=radio],[type=range],[type=file]),select,textarea{width:100%;min-height:2.2rem;padding:.3rem .65rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);font-size:1rem}
textarea{resize:none;line-height:1.5;min-height:2.6rem}
input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--accent-fill)}
input[type=range]{width:100%;accent-color:var(--accent-fill)}
.field{display:flex;flex-direction:column;gap:.25rem;font-size:.9rem;font-weight:400;min-width:0}
.form-row,.settings-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:.75rem}
.checks,.check-label{display:flex;gap:1.2rem;align-items:center;font-size:.95rem}
.checks label{display:flex;gap:.4rem;align-items:center}

/* ---------- 行：最多一根极淡的细线 ---------- */
.row{position:relative;display:flex;align-items:center;gap:.65rem;min-height:2.6rem;border-bottom:1px solid var(--hair)}
.row:last-child{border-bottom-color:transparent}
button.row{width:100%;text-align:left}
.row .t{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;padding:.35rem 0}
.row .m{flex:none;font-size:.9rem;color:var(--muted)}
.box{position:relative;flex:none;display:grid;place-items:center;width:1.2rem;height:1.2rem;border:1.5px solid var(--muted);border-radius:50%}
.box::after{content:"";position:absolute;inset:-.6rem}
.box svg.i{width:.8rem;height:.8rem;stroke-width:2.5}
.is-done .box{background:var(--accent-fill);border-color:var(--accent-fill);color:var(--accent-on)}
.is-done .t{text-decoration:line-through;text-decoration-thickness:1px}
.high::before{content:"";position:absolute;left:-.65rem;top:.7rem;bottom:.7rem;width:3px;border-radius:2px;background:var(--accent-fill)}
.num{flex:none;font-size:.9rem;color:var(--muted)}
.num b{font-size:1.15rem;font-weight:500;color:var(--accent);margin:0 .15rem}

/* 待办就地编辑：标题变输入框，下面一行小图标 */
.task-row.open{border-bottom-color:transparent}
.task-row .t-edit{flex:1;min-width:0;min-height:2.1rem;margin:.25rem 0;padding:.15rem 0;border:0;border-bottom:1px solid var(--accent);border-radius:0;background:transparent}
.task-row .t-edit:focus-visible{outline:none}
.task-tools{position:relative;display:flex;align-items:center;gap:.15rem;padding:0 0 .55rem 1.85rem;border-bottom:1px solid var(--hair)}
.task-tools .tool{display:inline-grid;place-items:center;width:2.3rem;height:2.3rem;border-radius:var(--radius);color:var(--text)}
.task-tools .tool[aria-pressed=true],.task-tools .tool[aria-expanded=true]{background:var(--accent-tint);color:var(--accent)}
.task-tools .tool.end{margin-left:auto}
.tool .pri{font-size:.85rem;line-height:1;margin-left:-.1rem}
.tool.has-label{grid-auto-flow:column;gap:.15rem;width:auto;padding:0 .5rem}
.pop{position:absolute;z-index:6;top:calc(100% - .4rem);left:1.85rem;padding:.45rem .5rem;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.16)}
.pop-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin-bottom:.3rem;font-size:.95rem}
.cal{display:grid;grid-template-columns:repeat(7,1.95rem);gap:1px;text-align:center}
.cal span{font-size:.82rem;color:var(--muted);line-height:1.8}
.cal button{height:1.85rem;border-radius:8px;font-size:.9rem;font-variant-numeric:tabular-nums}
.cal button.today{color:var(--accent);font-weight:500}
.cal button[aria-pressed=true]{background:var(--accent-tint);color:var(--accent);font-weight:500}
.pop-list{display:flex;flex-direction:column;min-width:7rem}
.pop-list button{min-height:2.2rem;padding:0 .8rem;border-radius:8px;text-align:left}
.pop-list button[aria-pressed=true]{background:var(--accent-tint);color:var(--accent);font-weight:500}

/* 记录就地展开 */
.expand{display:flex;flex-direction:column;gap:.55rem;padding:.6rem 0 .9rem;border-bottom:1px solid var(--hair)}
.expand .actions{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .9rem}
.expand .actions .sep{width:.2rem}
.expand .actions .sep:last-of-type{flex:1}
.expand .actions select{width:auto;min-height:2rem}
.expand img{max-width:12rem;border-radius:var(--radius)}

/* ---------- 首页：今日待办为主，其余安静 ---------- */
.home{display:flex;flex-direction:column;min-height:calc(100vh - 2.8rem - var(--bar))}
.home h1{font-size:2.1rem;font-weight:700;letter-spacing:.01em}
.home-grid{flex:1;display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:1.6rem 3.4rem;align-content:start}
.home-col{display:flex;flex-direction:column;gap:1.8rem;min-width:0}
.home-tasks h2{font-size:1.2rem}
.home-tasks .row{min-height:3rem;font-size:1.05rem}
.home-tasks .box{width:1.3rem;height:1.3rem}
.home-side{gap:1.2rem}
.home-side h2{font-size:1rem;padding-bottom:.15rem}
.home-side .row{min-height:2rem;border-bottom:0;font-size:.95rem}
.home-side .row .m{font-size:.85rem}
.home-side .num b{font-size:1.05rem}
.report{display:block;width:100%;text-align:left;font-size:.95rem;line-height:1.6;color:var(--muted)}
.report span{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:3;overflow:hidden;white-space:pre-line}
.home .more{display:none}
.foot{padding-top:.8rem;font-size:.85rem;color:var(--muted)}
@media (min-height:761px) and (orientation:landscape){.home .more{display:flex}}
@media (max-height:760px) and (orientation:landscape){
  .page{padding-top:1.1rem}
  .home h1{font-size:1.9rem}
  .page-head{margin-bottom:.8rem}
  .home-grid,.home-col{gap:1.1rem 3.4rem}
  .home-tasks .row{min-height:2.7rem}
  .home-side .row{min-height:2.05rem}
  .side{padding:.75rem}
  .side a,.nav-capture{min-height:2.18rem}
  .nav-capture{margin-bottom:.55rem}
  .foot{padding-top:.4rem}
}

/* ---------- 快速记录：浮在顶部，不推动页面 ---------- */
.capture{position:fixed;z-index:5;top:.8rem;left:calc(var(--side) + 2.5rem);right:2.5rem;max-width:48rem;padding:.7rem .8rem;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 10px 30px rgba(0,0,0,.16)}
.capture form{display:flex;gap:.5rem;align-items:center}
.capture input{flex:1;font-size:1.05rem}
.capture-line{font-size:.9rem;padding:.35rem .2rem 0;display:flex;flex-wrap:wrap;gap:.2rem .6rem;align-items:center}
.capture-line:empty{display:none}
.capture-line button{color:var(--accent);font-weight:500}

/* ---------- 待办 ---------- */
.task-new{display:flex;gap:.6rem;align-items:center;margin-bottom:.2rem;max-width:44rem}
.task-new input{flex:1}
.segmented{display:flex;gap:2px;flex:none}
.segmented button{min-width:2.3rem;min-height:2.2rem;border-radius:8px;font-size:.95rem}
.segmented button[aria-pressed=true]{background:var(--accent-tint);color:var(--accent);font-weight:500}
.date-hint{min-height:1.6rem;font-size:.9rem;color:var(--accent);padding:.15rem 0 .3rem}
.task-list{display:flex;flex-direction:column;gap:1.6rem;max-width:44rem}
.done-section summary{list-style:none;cursor:pointer;display:flex;align-items:center;gap:.3rem;font-size:1.1rem;font-weight:500;padding-bottom:.3rem}
.done-section summary::-webkit-details-marker{display:none}
.done-section[open] summary svg{transform:rotate(90deg)}
.page-foot{display:flex;gap:1rem;margin-top:1.4rem}

/* ---------- 记录 ---------- */
.filters{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem 1rem;margin-bottom:1rem}
.filters input[type=search]{flex:1;min-width:10rem;max-width:20rem}
.filters select{width:auto}
.record-list{max-width:52rem}
.record-row .t{white-space:normal;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2}
.record-meta{font-size:.85rem;color:var(--muted)}
.record-edit textarea{min-height:5rem}
.daily-text{white-space:pre-wrap;line-height:1.7;padding:.4rem 0 1rem;max-width:44rem}
.daily-history{max-width:44rem;margin-top:1.4rem}
details.project-update{padding:.4rem 0;border-bottom:1px solid var(--hair)}
.project-source,.briefing-raw{white-space:pre-wrap;font:inherit;font-size:.9rem;margin:.4rem 0}
.original-text summary{cursor:pointer;color:var(--accent);font-size:.9rem}

/* ---------- 专注 ---------- */
.focus{display:flex;flex-direction:column;align-items:center;gap:1.1rem;padding-top:4vh;text-align:center}
.focus #focus-subject{max-width:24rem;text-align:center;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent}
.focus-time{font-size:5.5rem;line-height:1;font-weight:400;font-variant-numeric:tabular-nums;letter-spacing:.02em}
.focus-bar{width:min(24rem,100%);height:4px;border-radius:2px;background:var(--hair);overflow:hidden}
.focus-bar span{display:block;height:100%;width:var(--focus-progress,0%);background:var(--accent-fill);transition:width .5s linear}
.focus-controls{display:flex;gap:1rem;align-items:center}
.focus .tabs{justify-content:center}
.focus-main{min-width:9rem;min-height:2.8rem;font-size:1.1rem}
.focus-range{width:min(28rem,100%)}
body.focus-pulse .page{animation:pulse 1.6s ease-in-out 3}
@keyframes pulse{50%{background:var(--accent-tint)}}

/* ---------- 新闻 ---------- */
.watch{display:flex;gap:.8rem;align-items:center;max-width:44rem;margin-bottom:.9rem}
.watch label{flex:none;color:var(--muted)}
.watch input{border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;padding-left:.2rem}
.news-row .t{white-space:normal}
.news-list{max-width:52rem;margin-top:.6rem}
.source-links{display:flex;flex-wrap:wrap;gap:.2rem 1rem;margin:.8rem 0 0}

/* ---------- AI ---------- */
.chat-page{display:flex;flex-direction:column;height:calc(100vh - var(--bar));padding-bottom:1rem}
.chat-messages{flex:1;overflow-y:auto;display:flex;flex-direction:column;gap:1.2rem;padding:.4rem 0 1rem;max-width:46rem;width:100%}
.msg{max-width:88%;white-space:pre-wrap;line-height:1.65}
.msg.user{align-self:flex-end;background:var(--surface-2);padding:.45rem .9rem;border-radius:16px}
.msg-actions{display:flex;gap:.8rem;margin-top:.1rem;font-size:.9rem}
.chat-form{display:flex;gap:.5rem;align-items:flex-end;max-width:46rem;width:100%;padding:.35rem .35rem .35rem .2rem;background:var(--surface);border:1px solid var(--line);border-radius:16px}
.chat-form textarea{max-height:9rem;border:0;background:transparent}
.chat-form textarea:focus-visible{outline:none}
.chat-page .status-line{padding:.4rem .8rem;border-radius:var(--radius);max-width:46rem;margin-bottom:.6rem}
.send{color:var(--accent);background:var(--accent-tint)}

/* ---------- 设置 ---------- */
.settings{display:flex;flex-direction:column;gap:2.4rem;max-width:44rem}
.settings-section+.settings-section{margin-top:2.2rem}
.settings-section{display:flex;flex-direction:column;gap:.6rem}
.setting-line{display:flex;align-items:center;gap:.8rem;min-height:2.4rem}
.setting-line>span:first-child{flex:1}
.settings details>summary{list-style:none;cursor:pointer}
.settings details>summary::-webkit-details-marker{display:none}

/* ---------- 纪念日 ---------- */
.anniversary-form{display:grid;grid-template-columns:2fr 1fr 1fr;gap:.6rem;align-items:end;max-width:44rem;margin-bottom:.5rem}
.anniversary-form .checks{grid-column:1/-1}
.anniversary-list{max-width:44rem;margin-top:1rem}

/* ---------- 弹窗 ---------- */
dialog{color:var(--text)}
.sheet-dialog{width:min(44rem,calc(100vw - 2rem));max-height:calc(100dvh - 2rem);padding:1.1rem 1.3rem;border:1px solid var(--line);border-radius:16px;background:var(--surface)}
.sheet-dialog::backdrop{background:rgba(0,0,0,.45)}
.sheet-dialog form,#backup-restore-dialog{display:flex;flex-direction:column;gap:.75rem}
.modal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.modal-head h2{padding:0;font-size:1.15rem}
.modal-footer{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding-top:.3rem}
.editor-tools{display:flex;flex-wrap:wrap;gap:.4rem 1rem;align-items:center}
.attach-menu{position:relative}
.attach-menu>summary{list-style:none;cursor:pointer}
.attach-menu>summary::-webkit-details-marker{display:none}
.attach-menu[open]>summary{background:var(--accent-tint);color:var(--accent)}
.attach-menu .pop-list{position:absolute;z-index:6;bottom:calc(100% + .3rem);left:0;padding:.4rem;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.14)}
.attach-menu .pop-list>*{display:flex;align-items:center;gap:.5rem;min-height:2.2rem;padding:0 .8rem;border-radius:8px;cursor:pointer}
.attachment-list{display:flex;flex-wrap:wrap;gap:.6rem}
.attachment{display:flex;align-items:center;gap:.4rem}
.attachment img,.record-media img{max-width:9rem;max-height:9rem;border-radius:var(--radius);object-fit:cover}
.recording-status{display:flex;gap:.8rem;align-items:center}

#toast{position:fixed;z-index:9;left:50%;bottom:calc(1.2rem + var(--bar));transform:translateX(-50%);display:flex;gap:1rem;align-items:center;max-width:calc(100vw - 2rem);padding:.55rem 1rem;background:var(--surface);border:1px solid var(--line);border-radius:12px;box-shadow:0 8px 24px rgba(0,0,0,.16);font-size:.95rem}
#toast button{color:var(--accent);font-weight:500;min-height:2rem}

/* ---------- 竖屏：底部导航（记 在左，设置 在右） ---------- */
@media (orientation:portrait),(max-width:900px){
  :root{--side:0px;--bar:5.6rem}
  .side{inset:auto .8rem .8rem .8rem;width:auto;flex-direction:row;align-items:center;gap:.2rem;padding:.4rem .5rem;border:1px solid var(--line);border-radius:22px;background:var(--surface);box-shadow:0 6px 24px rgba(0,0,0,.1)}
  .side nav{flex:1;flex-direction:row;align-items:center;gap:.15rem}
  .side a,.nav-capture{flex-direction:column;justify-content:center;gap:.05rem;min-height:3.4rem;min-width:3.6rem;padding:0 .3rem;font-size:.82rem;border-radius:16px}
  .side nav a{flex:1}
  .nav-capture{margin:0 auto 0 0;min-width:4rem;background:var(--accent-tint);margin-right:1.2rem}
  .nav-capture[aria-expanded=true]{box-shadow:inset 0 0 0 1px var(--accent)}
  .side-end{margin:0 0 0 1.2rem}
  .side a.active{background:transparent}
  .side a.active svg.i{stroke-width:2}
  .workspace{padding-bottom:var(--bar)}
  .page{padding:1.8rem 1.8rem 1.2rem}
  .home h1{font-size:2.2rem}
  .home{min-height:0}
  .home-grid{display:flex;flex-direction:column;gap:2rem}
  .home-col{gap:2rem}
  .home .more{display:flex}
  .row{min-height:2.65rem}
  .capture{left:.8rem;right:.8rem}
  .status-line{padding:.45rem 1.8rem}
  .anniversary-form{grid-template-columns:1fr 1fr}
  .anniversary-form .field:first-child{grid-column:1/-1}
}

/* ---------- 登录 ---------- */
.login{max-width:26rem;margin:14vh auto 0;padding:1.5rem}
.login h1{font-size:2.4rem;font-weight:500}
.login label{display:flex;flex-direction:column;gap:.4rem;margin:1.4rem 0 1rem}
.login p{margin-top:.8rem;min-height:1.5rem}
