/* DAYMARK V3 / THE TIME GARDEN
   Sunlit parchment / sage / jade ink / citrus glow.
   Time flows downward; a shared task is a paper note anchored to its minute. */
.timeline-panel{
  background:#fffefa;border:1px solid #e6ece5;box-shadow:0 16px 40px rgba(32,76,54,.052);
  border-radius:23px;overflow:hidden;position:relative;margin:12px 0 5px;
}
.timeline-panel-top{padding:23px 23px 18px;display:flex;align-items:center;gap:18px;justify-content:space-between;flex-wrap:wrap}
.timeline-heading{display:flex;gap:13px;align-items:center;min-width:220px}
.timeline-heading h3{font-size:16px;font-weight:850;color:#244c3c;letter-spacing:-.025em}
.timeline-heading p{font-size:10.5px;color:#96a79b;margin-top:5px;line-height:1.6}
.timeline-illustration{width:43px;height:43px;flex-shrink:0;display:grid;place-items:center;border-radius:13px;
  background:linear-gradient(140deg,#e8f3df,#d4e9d9);color:#518367}
.timeline-head-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.view-switch,.scope-switch{background:#f3f6f0;border:1px solid #e9efe6;border-radius:11px;display:inline-flex;padding:4px;gap:2px}
.view-switch button,.scope-choice{background:transparent;border:0;color:#91a398;border-radius:8px;font-size:10px;font-weight:750;
  padding:8px 10px;display:flex;align-items:center;justify-content:center;gap:5px;white-space:nowrap}
.view-switch button.selected,.scope-choice.on{background:white;color:#34765a;box-shadow:0 3px 11px rgba(63,102,75,.09)}
.view-switch button:hover,.scope-choice:hover{color:#2f7b5c}
.timeline-group-select{width:150px;min-height:38px;height:38px;padding:6px 28px 6px 11px;font-size:11px}
.timeline-toolbar{padding:13px 22px;background:#f9fbf7;border-top:1px solid #edf1e9;border-bottom:1px solid #edf1e9;
  display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.timeline-date-picker{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.timeline-date-picker strong{color:#476757;font-size:12px;min-width:124px;text-align:center;white-space:nowrap}
.timeline-nav{border:1px solid #e6ece3;background:#fff;width:29px;height:29px;display:grid;place-items:center;border-radius:9px;color:#62866d}
.timeline-nav:hover{color:#2c7e59;background:#ebf3e9}
.timeline-date-picker .timeline-nav:first-child .icon{transform:rotate(180deg)}
.timeline-today{border:0;color:#42765b;background:#eaf5e9;border-radius:8px;padding:6px 11px;font-size:10px;font-weight:800}
.timeline-date-input{border:1px solid #e5ede3;border-radius:9px;background:white;color:#738a7b;font-size:10px;min-height:29px;padding:4px 6px;max-width:145px}
.timeline-key{display:flex;align-items:center;flex-wrap:wrap;gap:15px;color:#91a298;font-size:10px;font-weight:650}
.timeline-key>span{display:inline-flex;align-items:center;gap:6px}
.timeline-key i.key-complete{width:12px;height:12px;border-radius:4px;background:#bedec3;border:1px solid #9fcba7}
.timeline-key i.key-active{width:12px;height:12px;border-radius:4px;background:linear-gradient(140deg,#f2c68c,#ffebc7);border:1px solid #efae79}
.timeline-key .signal{color:#e0a066;animation:timedPulse 1.8s ease-in-out infinite}
.timeline-hint{color:#b4c2b6}
.timeline-loading{min-height:260px;display:flex;align-items:center;justify-content:center;gap:12px;
  font-size:12px;color:#90a99a;background:linear-gradient(130deg,#fffefa,#f8fbf7)}
.timeline-loading .icon{color:#78a78c}
.timeline-scroll{max-height:615px;overflow:auto;scroll-behavior:smooth;scrollbar-color:#c9ddcb #f8fbf7;scrollbar-width:thin}
.timeline-scroll::-webkit-scrollbar{height:9px;width:9px}
.timeline-scroll::-webkit-scrollbar-thumb{border-radius:20px;background:#cadaca}
.timeline-scroll::-webkit-scrollbar-track{background:#f8faf6}
.timeline-sheet{display:flex;align-items:stretch;min-height:300px}
.time-rail{position:sticky;left:0;z-index:12;flex-shrink:0;background:#fbfcf8;border-right:1px solid #e6ede5}
.rail-header{height:57px;position:sticky;top:0;z-index:11;background:#f7faf3;display:grid;place-items:center;
  font-size:9px;font-weight:900;letter-spacing:.13em;color:#9db09e;border-bottom:1px solid #e8ede5}
.rail-hours{position:relative;min-width:64px;background:repeating-linear-gradient(to bottom,transparent 0,transparent 64px,#e9eee7 64px,#e9eee7 65px)}
.hour-label{position:absolute;left:11px;transform:translateY(-44%);color:#a0afa4;font-size:10px;font-weight:750;white-space:nowrap}
.time-lanes{display:grid;flex:1;align-items:stretch}
.time-lane{border-right:1px solid #edf1ea;min-width:148px;background:#fffefa}
.time-lane:nth-child(even){background:#fdfefa}
.time-lane.lane-today{background:#fcfefa}
.lane-header{height:57px;display:flex;align-items:center;justify-content:center;gap:8px;position:sticky;top:0;
  background:rgba(250,252,247,.975);backdrop-filter:blur(8px);z-index:10;border-bottom:1px solid #e9eee6;
  color:#637e68;font-size:10px;font-weight:800;padding:6px 9px;min-width:0}
.lane-header.current-day{background:#eaf4e9;color:#327852}
.lane-header .week-number{font-size:20px;font-weight:900;letter-spacing:-.08em;color:#457c62}
.lane-header .avatar{font-size:11px;border-radius:10px}
.lane-user{display:flex;flex-direction:column;min-width:0;line-height:1.35}
.lane-user b{font-size:11px;color:#476754;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:110px}
.lane-user small{font-size:9px;color:#9ab0a1}
.lane-active-mark{width:7px;height:7px;background:#e6ad6c;border-radius:50%;box-shadow:0 0 0 3px #f8ead2;flex:none;
  animation:timedPulse 1.7s infinite}
.lane-plot{position:relative;background-image:
  repeating-linear-gradient(to bottom,transparent 0,transparent 32px,rgba(230,238,227,.37) 32px,rgba(230,238,227,.37) 33px,transparent 33px,transparent 64px,#eaf0e8 64px,#eaf0e8 65px)}
.time-block{position:absolute;left:5px;width:calc(100% - 10px);padding:7px 9px;border:1px solid #bad9b9;
  border-radius:9px;z-index:3;text-align:left;display:flex;flex-direction:column;gap:2px;overflow:hidden;
  font-size:10px;color:#376a4d;background:#e3f3e4;box-shadow:0 3px 7px rgba(40,85,55,.035);
  transition:height .65s linear,box-shadow .2s,transform .18s}
.time-block:hover{z-index:8;transform:translateX(2px);box-shadow:0 9px 19px rgba(34,87,55,.15)}
.time-block .block-top{display:flex;align-items:center;justify-content:space-between;min-height:12px;gap:6px}
.time-block .block-emoji{line-height:1;font-size:11px}
.time-block .block-title{font-size:10px;font-weight:900;line-height:1.35;white-space:normal;
  overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;word-break:break-word}
.time-block .block-time{font-size:9px;font-weight:700;opacity:.8;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.time-block.work{background:#e7edf8;border-color:#bed0e7;color:#50749c}
.time-block.class{background:#f1e9fa;border-color:#d7c9e8;color:#80679a}
.time-block.words{background:#e6f3e0;border-color:#b9d8b4;color:#498055}
.time-block.practice{background:#fff1df;border-color:#edd2a5;color:#a77739}
.time-block.reading{background:#e6f4ed;border-color:#b6dcca;color:#42826a}
.time-block.writing{background:#fbe9e8;border-color:#e8c5bf;color:#ae7267}
.time-block.coding{background:#e9eef1;border-color:#c6d7df;color:#547e8c}
.time-block.custom{background:#f0f2e6;border-color:#cfd9bc;color:#738057}
.time-block.is-live{z-index:6;color:#7b562e;border:1px solid #e8b66c;
  background:linear-gradient(130deg,#fff3d8,#ffe8be 55%,#fbf0d1);
  box-shadow:0 0 0 2px rgba(243,199,123,.24),0 6px 20px rgba(212,153,75,.17);
  overflow:hidden;animation:liveBreathing 3.3s ease-in-out infinite}
.time-block.is-live:after{content:"";pointer-events:none;position:absolute;inset:0;
  background:repeating-linear-gradient(-46deg,rgba(255,255,255,.0) 0,rgba(255,255,255,.0) 9px,rgba(255,255,255,.32) 10px,rgba(255,255,255,.32) 12px);
  background-size:44px 44px;animation:timeFlow 2s linear infinite;z-index:0;opacity:.55}
.time-block.is-live .block-title{color:#855b33;display:block;white-space:nowrap;
  overflow:hidden;text-overflow:ellipsis;-webkit-line-clamp:1}
.time-block.is-live .block-top,.time-block.is-live .block-title,.time-block.is-live .block-time{position:relative;z-index:1}
.time-block.compact{padding:3px 6px;gap:0}
.time-block.compact .block-top{min-height:8px;height:9px}
.time-block.compact .block-emoji{font-size:8px}
.time-block.compact .block-live-label{font-size:7px;padding:0px 4px}
.time-block.compact .block-title{font-size:9px;line-height:1.15;white-space:nowrap;
  display:block;text-overflow:ellipsis;overflow:hidden;-webkit-line-clamp:unset}
.time-block.compact .block-time{display:none}
.block-live-label{background:rgba(233,164,91,.23);font-size:8px;font-weight:950;letter-spacing:.06em;
  border-radius:30px;padding:2px 5px;display:inline-flex;align-items:center;gap:4px}
.live-ping,.mini-live-dot{position:relative;display:inline-block;flex:none;border-radius:50%;
  width:6px;height:6px;background:#df9563;box-shadow:0 0 0 3px rgba(235,170,101,.15)}
.live-ping:after,.mini-live-dot:after{content:"";position:absolute;inset:-3px;border-radius:50%;
  border:1px solid #e5a46e;animation:ping 1.7s ease-out infinite}
.now-line{position:absolute;height:1px;left:0;right:0;top:0;z-index:7;
  background:linear-gradient(90deg,#f2a978 0%,#edaa81 80%,rgba(239,177,131,.1) 100%);pointer-events:none}
.now-dot{position:absolute;width:9px;height:9px;left:-4px;top:-4px;background:#eea873;border:2px solid white;
  box-shadow:0 0 0 2px rgba(238,172,120,.4);border-radius:50%}
.timeline-bottom-note{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;
  border-top:1px solid #eef2eb;padding:12px 20px;color:#9dac9f;font-size:9.5px}
.timeline-list-wrap{padding:17px 20px 24px;max-height:675px;overflow:auto}
.timeline-list-running{display:flex;flex-wrap:wrap;gap:9px;margin:0 0 15px}
.timeline-running-compact{background:#fff4df;color:#9c6a43;border-radius:11px;padding:8px 10px;
  display:flex;align-items:center;gap:8px;font-size:11px}
.signal-dot{width:7px;height:7px;border-radius:50%;background:#e29e68;box-shadow:0 0 0 3px #fce8cb;
  animation:timedPulse 2s infinite}
.timeline-running-compact .text-link{font-size:10px;color:#a4754f}
.live-banner-container{margin:16px 0 20px}
.ready-banner,.my-live-banner{display:flex;align-items:center;gap:16px;justify-content:space-between;
  padding:15px 20px;background:#ecf6ed;border:1px solid #dbeada;border-radius:18px}
.ready-glow{width:43px;height:43px;border-radius:14px;background:linear-gradient(130deg,#d0e8c8,#ecf5d5);
  display:grid;place-items:center;color:#609a70;font-size:29px;flex:none}
.ready-banner>div:nth-child(2),.my-live-copy{flex:1;min-width:0}
.ready-banner strong,.my-live-copy strong{display:block;font-weight:850;font-size:12px;color:#3e7255}
.ready-banner p,.my-live-copy small{display:block;font-size:10px;color:#88a092;margin-top:3px;line-height:1.5}
.ready-banner .btn{background:#478566}
.my-live-banner{background:linear-gradient(110deg,#fff8e9,#fff2da);border-color:#f1dab6;
  box-shadow:0 8px 24px rgba(187,134,73,.06)}
.my-live-symbol{position:relative;display:grid;place-items:center;width:43px;height:43px;border-radius:14px;
  background:#f7dfa9;color:#a97a3d;flex:none}
.my-live-symbol i{position:absolute;right:1px;top:1px;width:8px;height:8px;background:#e19e68;border:2px solid #fff5e5;border-radius:50%;animation:timedPulse 1.7s infinite}
.live-brow{font-weight:900;letter-spacing:.11em;font-size:8.5px;color:#d29760;display:block;margin-bottom:3px}
.my-live-copy strong{color:#895c38;font-size:13px}
.my-live-copy small{color:#ac8665}
.my-live-banner .btn{background:#bc8555}
.group-running{margin:19px 0 24px;background:#fffdf8;border:1px solid #e9eee2;border-radius:20px;
  padding:17px 20px;box-shadow:0 8px 25px rgba(39,78,46,.025)}
.group-running-header,.group-running-header>div{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.group-running-header{justify-content:space-between;border-bottom:1px solid #eff1e8;padding-bottom:12px}
.group-running-header strong{font-size:12px;color:#527c5e;letter-spacing:.025em}
.group-running-header small{font-size:10px;color:#9bac9c}
.group-running-header .count-now{background:#fff0da;color:#a87946;border-radius:14px;padding:3px 10px;font-size:10px;font-weight:850}
.green-pulse{width:10px;height:10px;background:#7dc49a;border-radius:50%;box-shadow:0 0 0 4px #e5f5e8;animation:timedPulse 2s infinite}
.group-running-items{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding:13px 0 1px}
.group-running-empty{color:#9eaea0;font-size:11px;padding:10px 0}
.running-chip{min-width:200px;flex:1;max-width:360px;border-radius:14px;border:1px solid #f0debe;background:#fff8ec;
  padding:11px 12px;display:flex;align-items:center;gap:9px;color:#866e4a;text-align:left}
.running-chip:hover{background:#fff1dc}
.running-chip span:nth-of-type(3){display:flex;flex-direction:column;min-width:0;flex:1}
.running-chip b{font-size:11px}
.running-chip small{font-size:10px;color:#ac9067;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}
.running-chip em{font-size:10px;color:#b78c60;font-style:normal;font-weight:800;white-space:nowrap}
.chip-signal{width:7px;height:7px;background:#e3a568;border-radius:50%;flex:none;animation:timedPulse 1.9s infinite}
.dashboard-personal{display:grid;grid-template-columns:1fr 1fr;gap:17px}
.personal-card{padding:21px 22px;position:relative;overflow:hidden;min-height:306px}
.personal-accent{position:absolute;width:180px;height:180px;right:-105px;top:-125px;border:27px solid #eef5e7;border-radius:50%}
.personal-identity{display:flex;align-items:center;gap:12px;position:relative}
.personal-identity>.avatar{font-size:22px;border-radius:19px}
.personal-identity>div{flex:1;min-width:0}
.personal-identity h3{font-size:19px;color:#315b45;line-height:1.4;margin:2px 0}
.personal-identity small{font-size:10px;color:#9daea1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;display:block}
.personal-figures{margin:20px 0;border-top:1px solid #eef2eb;border-bottom:1px solid #eef2eb;
  padding:16px 0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:9px}
.personal-figures div{display:flex;flex-direction:column;gap:4px}
.personal-figures strong{font-size:18px;color:#398264;font-weight:850}
.personal-figures small{color:#9cab9d;font-size:10px}
.personal-category-title{font-size:11px;color:#758f7d;font-weight:850;margin-bottom:14px}
.personal-category{display:grid;grid-template-columns:80px 1fr 40px;align-items:center;gap:8px;margin:10px 0;
  font-size:10px;color:#78917c}
.personal-category .progress{height:6px}
.personal-category b{text-align:right;color:#6e9780}
.mini-empty{color:#9bad9c;font-size:11px;margin:18px 0}
.dashboard-personal .calendar-panel{min-width:0}
.start-time-feature{display:flex;gap:12px;align-items:center;background:#f1f7ee;border-radius:13px;
  border:1px solid #deebda;padding:12px;color:#77a08a}
.start-time-feature input{max-width:136px;padding:8px 10px;font-weight:850;font-size:19px;border:0;background:white}
.start-time-feature span{font-size:10px;color:#94a99b}
.finishing-head{display:flex;align-items:center;gap:13px;border:1px solid #eee7d5;background:#fff9ec;
  padding:14px;border-radius:15px;margin-bottom:19px}
.finish-icon{width:47px;height:47px;background:#fff0d2;border-radius:12px;display:grid;place-items:center;
  font-size:25px;flex:none}
.finishing-head>div{flex:1;min-width:0}
.finishing-head>div>small{color:#c4a16c;font-size:9px;letter-spacing:.12em}
.finishing-head h3{font-size:13px;color:#73573f;margin:3px 0}
.finishing-head p{font-size:10px;color:#b2a089}
.entry-detail{text-align:center;padding:5px 1px 16px}
.entry-icon{background:#e5f3e7;width:62px;height:62px;display:grid;place-items:center;border-radius:17px;
  font-size:33px;margin:0 auto 14px}
.entry-icon.entry-on{background:#fff0d4}
.entry-detail h3{font-size:20px;color:#325f48}
.entry-rows{border:1px solid #e9efe8;border-radius:15px;overflow:hidden;text-align:left;margin:18px 0}
.entry-rows>div{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:11px 15px;
  border-bottom:1px solid #eef2ec;font-size:11px}
.entry-rows>div:last-child{border:0}
.entry-rows span{color:#97a99b}
.entry-rows b{font-weight:800;color:#486c53;text-align:right}
.entry-notes{text-align:left;padding:15px;background:#f3f8f0;border-radius:12px;
  color:#72957c;white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px}
.timeline-explain{margin:22px 0 5px;padding:22px;background:linear-gradient(100deg,#edf5ed,#fff8ed);
  border:1px solid #e7ece0;border-radius:19px;display:grid;grid-template-columns:55px 1fr 2fr 55px 1fr 2fr 55px 1fr 2fr;
  gap:10px;align-items:center}
.timeline-explain span{font-size:9px;font-weight:850;color:#85a38b}
.timeline-explain strong{font-size:11px;color:#417b5a}
.timeline-explain p{font-size:10px;color:#91a396;line-height:1.6}
@keyframes timedPulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(.8)}}
@keyframes ping{0%{transform:scale(.55);opacity:.8}80%,100%{transform:scale(2);opacity:0}}
@keyframes timeFlow{from{background-position:0 0}to{background-position:0 44px}}
@keyframes liveBreathing{0%,100%{box-shadow:0 0 0 2px rgba(243,199,123,.23),0 6px 20px rgba(212,153,75,.11)}50%{box-shadow:0 0 0 5px rgba(243,199,123,.36),0 6px 25px rgba(212,153,75,.23)}}
@media(max-width:980px){
  .timeline-panel-top{align-items:flex-start}
  .dashboard-personal{grid-template-columns:1fr 1fr}
  .timeline-explain{grid-template-columns:55px 1fr 2fr}
}
@media(max-width:740px){
  .timeline-panel{border-radius:18px}
  .timeline-panel-top{padding:17px 15px 13px;gap:12px}
  .timeline-heading h3{font-size:14px}
  .timeline-heading p{font-size:10px}
  .timeline-head-actions{width:100%;gap:8px}
  .view-switch button,.scope-choice{font-size:10px;padding:8px 9px}
  .timeline-group-select{flex:1;min-width:135px}
  .timeline-toolbar{padding:12px 13px;gap:11px}
  .timeline-key{gap:10px}
  .timeline-date-picker{gap:6px}
  .timeline-date-picker strong{min-width:92px;font-size:11px}
  .timeline-date-input{max-width:132px}
  .timeline-scroll{max-height:560px}
  .ready-banner,.my-live-banner{padding:12px;gap:10px;flex-wrap:wrap}
  .ready-banner .btn,.my-live-banner .btn{margin-left:auto}
  .my-live-copy strong{font-size:12px}
  .dashboard-personal{grid-template-columns:1fr}
  .group-running{padding:15px 13px}
  .group-running-header small{flex-basis:100%}
  .group-running-items{display:flex}
  .running-chip{max-width:none}
  .timeline-explain{grid-template-columns:58px 1fr;gap:5px;padding:18px}
  .timeline-explain p{grid-column:2;margin-bottom:8px}
  .finishing-head{flex-wrap:wrap}
}
@media(prefers-reduced-motion:reduce){
  .time-block.is-live,.time-block.is-live:after,.live-ping:after,.now-dot,.my-live-symbol i,
  .chip-signal,.green-pulse,.lane-active-mark,.key-active,.signal-dot{animation:none!important}
}

/* V4: clickable calendar headings + empty slots, without adding extra start CTAs. */
.timeline-compose-heading{cursor:pointer;border-radius:13px;padding:3px 6px;margin:-3px -6px;
  transition:background .2s}
.timeline-compose-heading:hover,.timeline-compose-heading:focus-visible{background:#edf5e9}
.lane-header{border:0;border-bottom:1px solid #e9eee6;cursor:pointer;font-family:inherit;width:100%}
.lane-header:hover,.lane-header:focus-visible{background:#dfede0!important;color:#2d7b59}
.lane-plot{cursor:crosshair}
.lane-plot:hover{background-color:rgba(224,245,226,.12)}
.lane-plot:focus-visible{outline:2px solid #79b28c;outline-offset:-3px}
.lane-plot:before{content:"＋ 点击空白处记录";position:absolute;top:9px;left:9px;
  font-size:9px;letter-spacing:.01em;white-space:nowrap;color:#5d9b73;
  background:rgba(245,253,246,.97);border:1px solid #dcf0de;border-radius:7px;
  padding:4px 7px;z-index:9;pointer-events:none;opacity:0;transform:translateY(-3px);
  transition:opacity .2s,transform .2s}
.lane-plot:hover:before{opacity:1;transform:translateY(0)}
.time-block.is-live{min-height:0;box-sizing:border-box}
.time-block.is-live.live-tiny{overflow:visible;border:0;padding:0;min-height:0;border-radius:0;
  box-shadow:none;outline:1px solid #eab97c;outline-offset:0}
.time-block.is-live.live-tiny .block-top,.time-block.is-live.live-tiny .block-title,
.time-block.is-live.live-tiny .block-time{display:none}
/* A visible pickable edge for extremely short active sessions is drawn *above*
   the exact-height rectangle; it never lengthens the lower/bottom edge. */
.time-block.is-live.live-tiny:before{content:"● 正在做";position:absolute;left:0;bottom:calc(100% + 3px);
  padding:3px 7px;border:1px solid #e8b66c;border-radius:8px;
  background:#fff0d0;color:#976437;font-size:9px;white-space:nowrap;
  animation:timedPulse 2s ease-in-out infinite;pointer-events:none}
@media(prefers-reduced-motion:reduce){
  .time-block.is-live.live-tiny:before{animation:none}
}
