*{box-sizing:border-box;}
html,body{margin:0;height:100%;}
/* uploaded app background (illustration) — image layer + paper veil for readability */
/* the pseudo-element is already position:fixed (pinned to the viewport), so it stays put while the
   page scrolls; `cover` fills it with no gaps and keeps the aspect ratio. NOTE: do not add
   background-attachment:fixed — iOS Safari mis-sizes it and leaves margins. */
body.has-appbg::before{content:"";position:fixed;inset:0;z-index:-2;
  background:var(--appbg-img) center/cover no-repeat;}
body.has-appbg::after{content:"";position:fixed;inset:0;z-index:-1;
  background:color-mix(in srgb,var(--paper) 70%,transparent);}
body{
  background:var(--paper); color:var(--ink);
  font-family:"Inter","Noto Sans JP","Noto Sans KR","Noto Sans TC",system-ui,sans-serif;
  font-size:14px; line-height:var(--lh);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  transition:background .35s ease, color .35s ease;
}
body[data-lang="ko"]{font-family:"Inter","Noto Sans KR",system-ui,sans-serif;}
body[data-lang="zh-TW"]{font-family:"Inter","Noto Sans TC",system-ui,sans-serif;}
.mono{font-family:"Space Mono","Noto Sans JP",monospace;}
button{font-family:inherit;color:inherit;cursor:pointer;border:0;background:none;}
input,select{font-family:inherit;color:inherit;}
::selection{background:var(--accent);color:var(--accent-ink);}

/* mono kicker label — the "technical register" of the grid */
.kick{font-family:"Space Mono",monospace;font-size:10px;letter-spacing:.18em;
  text-transform:uppercase;color:var(--ink-soft);line-height:1;}

/* ---------- App shell on the modular grid ---------- */
.app{max-width:var(--maxw);margin:0 auto;padding:var(--bl) var(--margin) calc(var(--bl)*5);
  position:relative;}

.topbar{display:flex;align-items:flex-end;gap:14px;
  padding:calc(var(--bl)*2.5) 2px calc(var(--bl)*2);}
.brand{display:flex;align-items:baseline;gap:10px;}
.brand#brandReopen{cursor:pointer;}
.brand h1{margin:0;font-weight:900;font-size:26px;letter-spacing:-.02em;line-height:1;}
.brand .dot{width:9px;height:9px;border-radius:50%;background:var(--accent);
  display:inline-block;margin-bottom:2px;}
.brand small{color:color-mix(in srgb,var(--ink) 38%,var(--ink-soft));font-size:12px;white-space:nowrap;}
.topbar .spacer{flex:1;}

/* ============================================================
   COVER / 扉ページ — 3 photos showing through frosted glass
   ============================================================ */
.cover{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;
  cursor:pointer;opacity:1;transition:opacity .55s ease;}
.cover.gone{opacity:0;pointer-events:none;}
.cover-photos{display:none;}
/* configured background, pre-blurred so it shows reliably on mobile */
.cover-bg{position:absolute;inset:0;z-index:0;background:var(--cover-img) center/cover no-repeat;
  filter:blur(26px) saturate(1.12);transform:scale(1.12);}
/* frosted veil — blurs the live TOP board showing through the fixed cover */
.cover-veil{position:absolute;inset:0;
  background:linear-gradient(158deg,rgba(22,17,24,.34),rgba(22,17,24,.52) 52%,rgba(22,17,24,.66));
  -webkit-backdrop-filter:blur(26px) saturate(1.18);backdrop-filter:blur(26px) saturate(1.18);}
.cover-inner{position:relative;z-index:2;color:#fff;max-width:560px;width:90%;padding:40px;
  animation:coverIn .85s cubic-bezier(.2,.8,.2,1) both;}
@keyframes coverIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}
.cover-kick{font-family:"Space Mono",monospace;font-size:12px;letter-spacing:.42em;text-transform:uppercase;
  opacity:.92;display:flex;align-items:center;gap:11px;margin-bottom:16px;}
.cover-kick .dot{width:8px;height:8px;border-radius:50%;background:var(--accent);}
.cover-bignum{font-weight:900;font-size:118px;line-height:.8;letter-spacing:-.05em;
  text-shadow:0 4px 40px rgba(0,0,0,.28);}
.cover-bignum sup{font-size:30px;vertical-align:super;font-weight:700;margin-left:5px;opacity:.85;}
.cover-time{font-family:"Space Mono",monospace;font-size:15px;letter-spacing:.06em;color:var(--accent);
  font-weight:700;margin-top:8px;}
.cover-month{font-weight:900;font-size:58px;line-height:.9;letter-spacing:-.03em;margin-top:12px;
  text-shadow:0 4px 40px rgba(0,0,0,.28);}
.cover-month em{font-style:normal;font-size:20px;font-family:"Space Mono",monospace;letter-spacing:.1em;
  opacity:.82;margin-left:12px;vertical-align:middle;}
.cover-event{margin-top:24px;font-size:15px;font-weight:600;
  display:inline-flex;align-items:center;gap:11px;padding:9px 16px;border-radius:999px;
  background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.28);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);}
.cover-event .cnt{font-family:"Space Mono",monospace;color:var(--accent-soft);}
.cover-cta{margin-top:32px;display:flex;align-items:center;gap:18px;flex-wrap:wrap;}
/* pomodoro on the cover */
.pomo{margin-top:24px;display:inline-flex;flex-direction:column;gap:10px;align-items:flex-start;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);border-radius:18px;padding:14px 16px;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);}
.pomo-modes{display:flex;gap:6px;}
.pomo-modes button{height:26px;padding:0 12px;border-radius:999px;border:1px solid rgba(255,255,255,.3);
  background:transparent;color:#fff;font-size:11px;font-weight:700;cursor:pointer;transition:.15s;}
.pomo-modes button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}
.pomo-time{font-family:"Space Mono",monospace;font-weight:700;font-size:38px;letter-spacing:.04em;color:#fff;line-height:1;}
.pomo-ctrl{display:flex;gap:8px;}
.pomo-btn{height:32px;padding:0 16px;border-radius:999px;border:1px solid rgba(255,255,255,.3);
  background:transparent;color:#fff;font-weight:700;font-size:12px;cursor:pointer;transition:.15s;}
.pomo-btn:hover{background:rgba(255,255,255,.16);}
.pomo-btn.primary{background:#fff;color:#1a1320;border-color:#fff;}
.pomo-btn.primary:hover{filter:brightness(.95);}
/* topbar running pill */
.pomo-pill{height:32px;padding:0 12px;border-radius:999px;border:1px solid var(--line);background:var(--surface);
  color:var(--ink);font-family:"Space Mono",monospace;font-size:12px;font-weight:700;display:inline-flex;
  align-items:center;gap:6px;cursor:pointer;transition:.15s;}
.pomo-pill:hover{border-color:var(--accent);}
/* light variant: full pomodoro shown above the today card (frosted, themed inks) */
.pomo-today{margin:0 0 calc(var(--bl)*1.75);width:100%;align-items:center;
  background:color-mix(in srgb,var(--surface) 30%,transparent);
  border-color:color-mix(in srgb,var(--ink) 11%,transparent);
  -webkit-backdrop-filter:blur(12px) saturate(1.2);backdrop-filter:blur(12px) saturate(1.2);}
.pomo-today .pomo-modes button{border-color:color-mix(in srgb,var(--ink) 20%,transparent);color:var(--ink-soft);}
.pomo-today .pomo-modes button.on{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);}
/* digits match the cover timer's weight/spacing; only the color is softer (cute, light) */
.pomo-today .pomo-time{color:color-mix(in srgb,var(--accent) 52%,var(--ink-soft));}
.pomo-today .pomo-btn{border-color:color-mix(in srgb,var(--ink) 20%,transparent);color:var(--ink-soft);}
.pomo-today .pomo-btn:hover{background:color-mix(in srgb,var(--ink) 8%,transparent);border-color:var(--accent);color:var(--accent);}
.pomo-today .pomo-btn.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
.pomo-today .pomo-btn.primary:hover{filter:brightness(.95);background:var(--accent);color:var(--accent-ink);}
/* back-to-top floating button */
.totop{position:fixed;right:22px;bottom:22px;z-index:90;width:48px;height:48px;border-radius:50%;
  background:var(--accent);color:var(--accent-ink);border:0;display:grid;place-items:center;cursor:pointer;
  box-shadow:0 6px 20px color-mix(in srgb,var(--accent) 40%,transparent);transition:.18s;}
.totop:hover{transform:translateY(-2px);filter:brightness(1.05);}
.totop svg{width:20px;height:20px;}
.cover-enter{height:46px;padding:0 26px;border-radius:999px;background:var(--accent);color:var(--accent-ink);
  font-weight:800;font-size:15px;border:0;cursor:pointer;transition:.18s;}
.cover-enter:hover{filter:brightness(1.07);transform:translateX(2px);}
.cover-hint{font-size:12px;opacity:.72;letter-spacing:.04em;}
.cover-x{position:absolute;top:22px;right:24px;z-index:3;width:38px;height:38px;border-radius:50%;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.3);color:#fff;font-size:15px;cursor:pointer;
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:.15s;}
.cover-x:hover{background:rgba(255,255,255,.3);}
.cover-vlabel{position:absolute;top:50%;right:18px;transform:translateY(-50%);writing-mode:vertical-rl;
  font-family:"Space Mono",monospace;font-size:10px;letter-spacing:.45em;text-transform:uppercase;
  color:rgba(255,255,255,.7);z-index:3;}
@media (max-width:560px){
  .cover-photos{flex-direction:column;}
  .cover-bignum{font-size:84px;} .cover-month{font-size:40px;} .cover-inner{padding:26px;}
}

.iconbtn{width:34px;height:34px;border-radius:10px;display:grid;place-items:center;
  border:1px solid var(--line);background:var(--surface);transition:.18s;}
.iconbtn:hover{border-color:var(--accent);color:var(--accent);}
.iconbtn svg{width:17px;height:17px;}
.iconbtn.on{border-color:var(--accent);color:#fff;background:var(--accent);}
.iconbtn:disabled{opacity:.32;cursor:default;pointer-events:none;}
.auth-err{margin:2px 0 12px;color:#E0455E;font-size:12.5px;line-height:1.4;}
.auth-or{margin:14px 0 10px;text-align:center;color:var(--ink-soft);font-size:12px;
  display:flex;align-items:center;gap:10px;}
.auth-or::before,.auth-or::after{content:"";flex:1;height:1px;background:var(--line);}
.btn.google{justify-content:center;background:#fff;color:#3c4043;border:1px solid var(--line);height:34px;}
.btn.google:hover{filter:none;border-color:var(--accent);}
/* account identity row (avatar + name/email) */
.ac-id{display:flex;align-items:center;gap:12px;}
.ac-avatar{width:46px;height:46px;border-radius:50%;flex:none;object-fit:cover;
  border:1.5px solid var(--line);background:var(--surface-2);}
.ac-avatar-ph{display:grid;place-items:center;font-weight:800;font-size:18px;
  color:#fff;background:var(--accent);border-color:transparent;}
.ac-id-text{min-width:0;}
.ac-id-text h3{margin:0;font-size:17px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ac-id-text .muted{margin:2px 0 0;font-size:12px;}

/* the master board grid */
.board{display:grid;grid-template-columns:repeat(var(--cols),1fr);
  column-gap:var(--gutter);row-gap:var(--lh);align-items:start;}

.col-left{grid-column:1 / 5;display:grid;row-gap:var(--lh);position:relative;
  min-width:0;padding-right:30px;}
.col-mid {grid-column:5 / 8;min-width:0;}
.col-right{grid-column:8 / 13;min-width:0;display:grid;row-gap:var(--lh);}
.col-left .card,.col-mid .card,.col-right .card,#progressCard{min-width:0;}

/* ---------- card ---------- */
/* frosted panels — translucent so the uploaded background shows through (light & dark themes) */
.card{background:color-mix(in srgb,var(--surface) 48%,transparent);
  border:1px solid color-mix(in srgb,var(--line) 45%,transparent);border-radius:var(--radius);
  -webkit-backdrop-filter:blur(18px) saturate(1.2);backdrop-filter:blur(18px) saturate(1.2);
  position:relative;transition:background .35s ease,border-color .35s ease;}
.card-pad{padding:calc(var(--bl)*2.5) calc(var(--bl)*2.5);}
.card-head{display:flex;align-items:center;gap:10px;margin-bottom:calc(var(--bl)*1.5);}
.card-head .kick{flex:1;}

.btn{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 12px;
  border-radius:9px;background:var(--accent);color:var(--accent-ink);
  font-weight:700;font-size:12px;transition:.15s;}
.btn:hover{filter:brightness(1.05);}
.btn.ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--line);}
.btn.ghost:hover{border-color:var(--accent);color:var(--accent);}
.btn svg{width:14px;height:14px;}
.btn.danger{background:#E0455E;color:#fff;}
.btn.danger:hover{filter:brightness(1.06);}

/* ============================================================
   CALENDAR
   ============================================================ */
.cal-wrap{position:relative;}
/* the file-tab that flips calendar <-> timeline (right edge of left column) */
.viewtab{position:absolute;top:18px;right:-1px;transform:translateX(100%);
  display:flex;flex-direction:column;gap:6px;z-index:5;}
.viewtab button{writing-mode:vertical-rl;text-orientation:mixed;
  padding:11px 5px;border-radius:0 11px 11px 0;border:1px solid var(--line);border-left:0;
  background:var(--surface-2);font-family:"Space Mono",monospace;font-size:10px;
  letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);transition:.18s;}
.viewtab button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}

.cal{border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);
  background:var(--surface);position:relative;}
/* photo views: photo fills the whole card; the panel frosts it ("背景がぼける") */
.cal.photoview{background:var(--cal-photo, var(--surface)) center/cover no-repeat;
  background-color:var(--surface);}
/* uploaded background can be a transparent PNG — show a theme-matching colour behind it */
.cal.photoview.has-upload{background-color:var(--accent-soft);}
.cal-hero{position:relative;padding:calc(var(--bl)*2.25) calc(var(--bl)*2.5) calc(var(--bl)*2);
  background:linear-gradient(155deg,var(--cal-wash-a),var(--cal-wash-b));
  color:var(--cal-ink);overflow:hidden;}
/* in photo views the hero/head shows the sharp photo through a light haze */
.cal.photoview .cal-hero,.cal.photoview .sched-head{
  background:linear-gradient(165deg,
    color-mix(in srgb,var(--cal-wash-a) 30%,transparent),
    color-mix(in srgb,var(--cal-wash-b) 8%,transparent) 60%,
    transparent);
  color:var(--cal-ink);}
/* dark uploaded photo → flip the header text to white (multiply blend would hide it, so go normal) */
.cal.photoview.dark-photo{--cal-ink:#fff;--cal-blend:normal;--cal-photo-shadow:#000;}
.cal-hero .dotmotif{position:absolute;top:0;right:0;width:128px;height:128px;
  color:var(--cal-ink);opacity:.16;pointer-events:none;}
.cal-hero .dotmotif svg{width:100%;height:100%;}
.cal.photoview .cal-hero .dotmotif{opacity:.22;}
.cal-hero .row{position:relative;display:flex;align-items:flex-end;
  justify-content:space-between;}
.cal-bignum{font-weight:900;font-size:74px;line-height:.82;letter-spacing:-.04em;}
.cal.photoview .cal-bignum,.cal.photoview .cal-month .m{
  text-shadow:0 1px 18px color-mix(in srgb,var(--cal-photo-shadow,#000) 18%,transparent);
  mix-blend-mode:var(--cal-blend,normal);}
.cal-bignum sup{font-size:22px;font-weight:700;vertical-align:super;margin-left:2px;}
.cal-time{font-family:"Space Mono",monospace;font-size:13px;letter-spacing:.05em;
  color:var(--accent);font-weight:700;margin-top:4px;}
.cal-month{text-align:right;}
.cal-month .m{font-weight:900;font-size:30px;line-height:.9;letter-spacing:-.02em;}
.cal-month .y{font-family:"Space Mono",monospace;font-size:12px;letter-spacing:.12em;
  opacity:.7;margin-top:2px;}
.cal-nav{position:relative;display:flex;align-items:center;gap:8px;margin-top:10px;}
.cal-nav button{width:24px;height:24px;border-radius:7px;display:grid;place-items:center;
  background:color-mix(in srgb,var(--cal-ink) 8%,transparent);color:var(--cal-ink);transition:.15s;}
.cal-nav button:hover{background:color-mix(in srgb,var(--cal-ink) 18%,transparent);}
.cal-nav .label{font-family:"Space Mono",monospace;font-size:11px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--cal-ink);opacity:.85;}

.cal-grid{padding:calc(var(--bl)*1.5) calc(var(--bl)*2) calc(var(--bl)*2);}
/* frosted glass panel — blurs the photo behind the content */
.cal.photoview .cal-grid,.cal.photoview .tl,.cal.photoview .sched-body{
  background:color-mix(in srgb,var(--surface) 52%,transparent);
  -webkit-backdrop-filter:blur(18px) saturate(1.25);
  backdrop-filter:blur(18px) saturate(1.25);
  border-top:1px solid color-mix(in srgb,var(--surface) 50%,transparent);}
.cal-dow{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;margin-bottom:6px;}
.cal-dow span{font-family:"Space Mono",monospace;font-size:9.5px;letter-spacing:.04em;
  text-transform:uppercase;color:var(--ink-soft);text-align:center;}
.cal-dow span.sun{color:var(--accent);}
.cal-days{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;}
.cal-day{aspect-ratio:1/.92;border-radius:8px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;font-size:13px;font-weight:600;position:relative;
  color:var(--ink);transition:.12s;}
.cal-day.out{color:var(--line);font-weight:400;}
.cal-day.sun{color:var(--accent);}
.cal-day.today{background:var(--accent);color:var(--accent-ink);}
.cal-day.today .dl{background:var(--accent-ink);}
.cal-day .dl{position:absolute;bottom:6px;width:5px;height:5px;border-radius:50%;
  background:var(--accent);}
.cal-day[data-date]{cursor:pointer;}
.cal-day:not(.today):not(.out)[data-date]:hover{background:var(--accent-soft);}
/* Google Calendar overlays: holidays recolour the number; small side dots for holiday/personal events */
.cal-day.holiday{color:#d3455b;}
.cal-day.today.holiday{color:var(--accent-ink);}
.cal-day .hol{position:absolute;bottom:6px;left:7px;width:5px;height:5px;border-radius:50%;background:#d3455b;}
.cal-day .gev{position:absolute;bottom:6px;right:7px;width:5px;height:5px;border-radius:50%;background:#5B9DFF;}
.cal-day.today .hol,.cal-day.today .gev{background:var(--accent-ink);}
/* selected day: accent ring (today stays filled, gets a contrast ring instead) */
.cal-day.sel:not(.today){box-shadow:inset 0 0 0 2px var(--accent);}
.cal-day.today.sel{box-shadow:inset 0 0 0 2px var(--accent-ink);}

/* round "to today" button at the right of the month nav */
.cal-nav .cal-today{width:auto;height:22px;padding:0 12px;border-radius:999px;margin-left:auto;
  border:1px solid color-mix(in srgb,var(--cal-ink) 30%,transparent);background:transparent;
  color:var(--cal-ink);font-family:"Space Mono",monospace;font-size:10px;letter-spacing:.06em;}
.cal-nav .cal-today:hover{background:color-mix(in srgb,var(--cal-ink) 12%,transparent);}

/* the calendar card sits above the day panel and drops a shadow onto it */
.cal-wrap{position:relative;}
.cal-wrap .cal{position:relative;z-index:2;
  box-shadow:0 12px 20px -12px color-mix(in srgb,#000 30%,transparent);}
/* day panel — its own rounded card peeking out from under the calendar */
.cal-daypanel-card{position:relative;z-index:1;margin-top:-30px;
  background:var(--surface);border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;}
.cal-daypanel-card .dp-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;
  gap:10px;padding:calc(var(--bl)*1.5 + 30px) calc(var(--bl)*2.5) calc(var(--bl)*1.25);
  background:transparent;border:0;cursor:pointer;color:var(--ink);}
.cal-daypanel-card .dp-title{font-weight:800;font-size:13px;letter-spacing:.01em;}
.cal-daypanel-card .dp-chev{font-size:12px;color:var(--ink-soft);flex:none;}
.cal-daypanel-card .dp-body{padding:0 calc(var(--bl)*2.5) calc(var(--bl)*2.5);}
.cal-daypanel-card.closed .dp-body{display:none;}
.cal-daypanel-card.closed .dp-toggle{padding-bottom:calc(var(--bl)*1.5);}
.cal-daypanel-card .day-sec:last-child{margin-bottom:0;}
.cal-daypanel-card .day-empty{padding-top:18px;}
/* suggested list fades out toward the bottom once it runs past ~3 items */
.day-suggest-fade.fade{max-height:120px;overflow:hidden;
  -webkit-mask-image:linear-gradient(to bottom,#000 64%,transparent);
  mask-image:linear-gradient(to bottom,#000 64%,transparent);}

/* timeline */
.tl{padding:calc(var(--bl)*2) calc(var(--bl)*2.5) calc(var(--bl)*2.5);}
.tl-scale{display:grid;grid-template-columns:repeat(31,1fr);margin:0 0 8px 96px;}
.tl-scale span{font-family:"Space Mono",monospace;font-size:8px;color:var(--ink-soft);
  text-align:center;}
.tl-row{display:flex;align-items:center;gap:0;margin-bottom:8px;}
.tl-row .name{width:96px;font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;padding-right:8px;}
.tl-track{flex:1;height:16px;position:relative;background:var(--surface-2);
  border-radius:6px;border:1px solid var(--line);}
.tl-bar{position:absolute;top:2px;bottom:2px;border-radius:5px;
  background:var(--accent-soft);overflow:hidden;}
.tl-bar .fill{position:absolute;left:0;top:0;bottom:0;background:var(--accent);border-radius:5px;}
.tl-today{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.5;}

/* ============================================================
   TIME SCHEDULE (day view, drag + resize)
   ============================================================ */
.sched-card{display:flex;flex-direction:column;}
.sched-head{display:flex;align-items:center;justify-content:space-between;gap:8px;
  padding:14px 16px 12px;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.sched-title{display:flex;align-items:center;gap:8px;font-weight:800;font-size:15px;letter-spacing:-.01em;}
.sched-title .ic{display:inline-flex;color:var(--accent);}
.sched-title .ic svg{width:16px;height:16px;}
.sched-datenav{display:flex;align-items:center;gap:6px;}
.sched-datenav button{height:24px;min-width:24px;padding:0 6px;border-radius:7px;display:grid;place-items:center;
  background:var(--surface-2);border:1px solid var(--line);color:var(--ink-soft);font-size:13px;transition:.15s;}
.sched-datenav button:hover{border-color:var(--accent);color:var(--ink);}
.sched-datenav .dlabel{font-weight:700;font-size:13px;padding:0 4px;}
.sched-datenav .today-pill{font-family:"Space Mono",monospace;font-size:10px;letter-spacing:.06em;
  text-transform:uppercase;padding:0 9px;}
.sched-datenav .today-pill.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
.sched-body{padding:12px 14px 14px;}
.sched-add{width:100%;margin-bottom:10px;height:30px;border-radius:9px;border:1px dashed var(--line);
  background:transparent;color:var(--ink-soft);font-weight:700;font-size:12px;transition:.15s;}
.sched-add:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
.sched-cols{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.sched-col{position:relative;border-radius:10px;background:var(--surface-2);
  border:1px solid var(--line);overflow:hidden;}
.sched-hour{position:relative;border-top:1px solid var(--line);}
.sched-col .sched-hour:first-child{border-top:0;}
.sched-hour .hourlabel{position:absolute;top:1px;left:5px;font-size:8.5px;color:var(--ink-soft);
  letter-spacing:.02em;pointer-events:none;}
.sched-now{position:absolute;left:0;right:0;height:0;border-top:1.5px solid var(--accent);z-index:6;pointer-events:none;}
.sched-now .dot{position:absolute;left:-3px;top:-4px;width:7px;height:7px;border-radius:50%;background:var(--accent);}
.sblock{position:absolute;left:3px;right:3px;border-radius:8px;padding:4px 7px;overflow:hidden;
  cursor:grab;touch-action:none;z-index:4;box-shadow:0 1px 0 rgba(0,0,0,.04);
  display:flex;flex-direction:column;gap:1px;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
.sblock:active{cursor:grabbing;}
.sblock .lb{font-size:10.5px;font-weight:700;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.sblock .tm{font-size:8.5px;opacity:.8;letter-spacing:.02em;}
.sblock.short{flex-direction:row;align-items:center;gap:5px;padding-top:0;padding-bottom:0;}
.sblock.short .lb{flex:0 1 auto;min-width:0;}
.sblock.short .tm{flex:0 0 auto;margin-left:auto;white-space:nowrap;}
.sblock .handle{position:absolute;left:0;right:0;height:8px;cursor:ns-resize;z-index:5;}
.sblock .handle.top{top:0;} .sblock .handle.bottom{bottom:0;}
/* block colors (fixed palette, theme-independent) */
.sblock.c-blue  {background:#CFE2FB;color:#1C3F77;}
.sblock.c-orange{background:#F8DCBC;color:#7A4A18;}
.sblock.c-green {background:#CFEBD6;color:#1F5C39;}
.sblock.c-pink  {background:#F7D3E2;color:#8A2A55;}
.sblock.c-purple{background:#E0D6F6;color:#4B2E86;}
.sblock.c-accent{background:var(--accent);color:#fff;}
/* skin-coordinated accent shades — same hue, slightly varied lightness (used by the demo) */
.sblock.c-accent-2{background:color-mix(in srgb, var(--accent) 58%, #ffffff);color:color-mix(in srgb, var(--accent) 78%, #000000);}
.sblock.c-accent-3{background:color-mix(in srgb, var(--accent) 82%, #000000);color:#fff;}
/* read-only Google Calendar events: no grab cursor, dashed outline, muted fill */
.sblock.gcal{cursor:default;background:color-mix(in srgb,var(--ink-soft) 14%,var(--surface));
  color:var(--ink-soft);border:1px dashed color-mix(in srgb,var(--ink-soft) 55%,transparent);box-shadow:none;}
.sblock.gcal .lb{font-weight:600;}
[data-theme="noir"] .sblock{box-shadow:none;filter:saturate(.85) brightness(.95);}
.sched-hint{margin-top:12px;font-size:10.5px;line-height:1.5;color:var(--ink-soft);}
.sw-pick{display:flex;gap:8px;}
.sw-pick button{width:30px;height:30px;border-radius:8px;border:2px solid transparent;cursor:pointer;transition:.12s;}
.sw-pick button.on{border-color:var(--ink);transform:scale(1.06);}
.sw-pick .c-blue{background:#CFE2FB;} .sw-pick .c-orange{background:#F8DCBC;}
.sw-pick .c-green{background:#CFEBD6;} .sw-pick .c-pink{background:#F7D3E2;} .sw-pick .c-purple{background:#E0D6F6;}


/* ============================================================
   PROGRESS (Notion-style, circular %)
   ============================================================ */
.plist{display:grid;row-gap:8px;grid-template-columns:minmax(0,1fr);}
.plist>*{min-width:0;}
.pitem{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:var(--surface-2);transition:.15s;cursor:pointer;
  /* dragging the grip must not start a text selection / iOS callout on the task label */
  user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;}
.pitem:hover{border-color:var(--accent);}
.pitem.sel{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 7%,var(--surface));}
/* F6: drag grip + page-number badge */
.pitem-wrap{min-width:0;}
.pitem-wrap.dragging{opacity:.6;}
.pdrag{flex:none;width:14px;color:var(--ink-soft);font-size:13px;line-height:1;cursor:grab;
  touch-action:none;letter-spacing:-2px;opacity:.5;transition:.15s;}
.pdrag:hover{opacity:1;color:var(--accent);}
.pdrag:active{cursor:grabbing;}
.pnum{flex:none;min-width:34px;height:24px;padding:0 6px;border-radius:7px;border:1px solid var(--line);
  background:var(--surface);font-family:"Space Mono",monospace;font-size:11px;font-weight:700;
  color:var(--ink-soft);transition:.15s;white-space:nowrap;}
.pnum:hover{border-color:var(--accent);color:var(--accent);}
.pnum.spread{color:var(--accent);}
/* F4: "start" (はじめる！) button per task */
.startbtn{flex:none;width:34px;height:34px;border-radius:50%;border:1.5px solid var(--line);
  background:var(--surface);color:var(--ink-soft);line-height:1;display:grid;place-items:center;
  cursor:pointer;transition:.15s;}
.startbtn svg{width:17px;height:17px;}
.startbtn .play-tri{margin-left:1px;}
.startbtn:hover{border-color:var(--accent);color:var(--accent);}
.startbtn.on{border-color:var(--accent);background:var(--accent);color:#fff;
  box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent);}
.ring{flex:none;width:38px;height:38px;position:relative;}
.ring svg{transform:rotate(-90deg);}
.ring .pct{position:absolute;inset:0;display:grid;place-items:center;
  font-family:"Space Mono",monospace;font-size:10px;font-weight:700;letter-spacing:-.03em;}
.pbody{flex:1;min-width:0;}
.pbody .nm{font-size:13px;font-weight:700;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;}
.pbody .meta{display:flex;align-items:center;gap:7px;margin-top:1px;min-width:0;}
.pbody .meta .tag{flex:none;}
.pbody .dd{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tag{font-family:"Space Mono",monospace;font-size:9px;letter-spacing:.04em;padding:1px 6px;
  border-radius:5px;background:var(--accent-soft);
  color:color-mix(in srgb,var(--accent) 75%,var(--ink));font-weight:700;text-transform:uppercase;}
.tag.fee{background:transparent;border:1px solid var(--line);color:var(--ink-soft);text-transform:none;}
.pbody .dd{font-family:"Space Mono",monospace;font-size:10px;color:var(--ink-soft);}
.pbody .dd.warn{color:var(--accent);font-weight:700;}
.pin-ro{font-family:"Space Mono",monospace;font-size:10px;color:var(--ink);text-align:right;
  align-self:center;font-weight:700;}

/* detail / stages drawer */
.stages{margin-top:6px;padding:10px 11px;border-radius:var(--radius-sm);
  border:1px dashed var(--line);background:var(--surface-2);}
.stage{display:flex;align-items:center;gap:9px;padding:4px 0;font-size:12px;}
.stage .ck{width:17px;height:17px;border-radius:6px;border:1.5px solid var(--line);
  display:grid;place-items:center;flex:none;transition:.12s;}
.stage.done .ck{background:var(--accent);border-color:var(--accent);}
.stage .ck svg{width:11px;height:11px;color:var(--accent-ink);opacity:0;}
.stage.done .ck svg{opacity:1;}
.stage.done .lb{color:var(--ink-soft);text-decoration:line-through;}
.stage .lb{flex:1;}
.stage .ix{font-family:"Space Mono",monospace;font-size:9px;color:var(--ink-soft);width:18px;}
.drawer-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;align-items:center;}
.dfield{display:flex;align-items:center;gap:6px;font-size:11px;color:var(--ink-soft);}
.dfield input{height:26px;border:1px solid var(--line);border-radius:7px;background:var(--surface);
  padding:0 8px;font-size:11px;font-family:"Space Mono",monospace;}
.linkbtn{font-size:11px;color:var(--ink-soft);text-decoration:underline;background:none;}
.linkbtn:hover{color:var(--accent);}
.linkbtn.danger{color:#D23B54;}
.linkbtn.danger:hover{color:#E0455E;}

/* event tabs */
.ev-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;}
.ev-tab{padding:6px 13px;border-radius:999px;border:1px solid var(--line);background:var(--surface-2);
  font-weight:700;font-size:12px;color:var(--ink-soft);transition:.15s;}
.ev-tab:hover{border-color:var(--accent);color:var(--ink);}
.ev-tab.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
/* commission (案件) tabs use a distinct indigo so they read apart from goods */
.ev-tab.job{border-color:color-mix(in srgb,#7c6ce0 45%,var(--line));color:#6d5dd3;}
.ev-tab.job:hover{border-color:#7c6ce0;color:#5a48c0;}
.ev-tab.job.on{background:#6d5dd3;color:#fff;border-color:#6d5dd3;}
[data-theme="noir"] .ev-tab.job,[data-theme="midnight"] .ev-tab.job,[data-theme="plum"] .ev-tab.job{color:#b3a6ff;}
[data-theme="noir"] .ev-tab.job.on,[data-theme="midnight"] .ev-tab.job.on,[data-theme="plum"] .ev-tab.job.on{background:#8b7cf6;border-color:#8b7cf6;color:#fff;}
.ev-add{width:28px;height:28px;border-radius:999px;border:1px dashed var(--line);background:transparent;
  color:var(--ink-soft);font-size:16px;line-height:1;transition:.15s;}
.ev-add:hover{border-color:var(--accent);color:var(--accent);}
/* group */
.pgroups{display:grid;row-gap:14px;grid-template-columns:minmax(0,1fr);}
.pgroups>*{min-width:0;}
.pgroup{border:1px solid var(--line);border-radius:var(--radius-sm);padding:11px 11px 8px;background:var(--surface);}
.g-head{display:flex;align-items:center;gap:8px;margin-bottom:9px;}
.g-collapse{width:20px;height:20px;flex:none;border:0;background:none;color:var(--ink-soft);
  font-size:11px;line-height:1;cursor:pointer;transition:.15s;}
.g-collapse:hover{color:var(--accent);}
.g-meta{flex:1;cursor:pointer;min-width:0;}
/* title row: % sits at the title's right shoulder, bar just before it (F1) */
.g-titlerow{display:flex;align-items:center;gap:8px;min-width:0;line-height:1.2;}
.g-title{font-weight:800;font-size:14px;letter-spacing:-.01em;line-height:1.2;
  min-width:0;flex:0 1 auto;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.g-sub{font-family:"Space Mono",monospace;font-size:10.5px;color:var(--ink-soft);letter-spacing:.02em;margin-top:1px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.g-bar{flex:none;width:52px;height:6px;border-radius:6px;background:var(--surface-2);border:1px solid var(--line);overflow:hidden;}
.g-bar i{display:block;height:100%;background:var(--accent);border-radius:6px;transition:width .35s ease;}
.g-pct{flex:none;font-family:"Space Mono",monospace;font-size:10px;font-weight:700;color:var(--accent);text-align:right;}
.pgroup.collapsed{padding-bottom:11px;}
.pgroup.collapsed .g-head{margin-bottom:0;}
/* background upload row */
.bg-row{display:flex;align-items:center;gap:10px;}
.bg-thumb{width:54px;height:38px;border-radius:8px;border:1px solid var(--line);background-size:cover;
  background-position:center;flex:none;display:grid;place-items:center;color:var(--ink-soft);font-size:12px;}
.bg-thumb.empty{background:var(--surface-2);}
.crop-frame{position:relative;width:100%;overflow:hidden;border-radius:12px;border:1px solid var(--line);
  background:var(--surface-2);touch-action:none;cursor:grab;user-select:none;}
.crop-frame.grabbing{cursor:grabbing;}
.crop-img{position:absolute;top:0;left:0;max-width:none;pointer-events:none;-webkit-user-drag:none;}
.crop-zoom{display:flex;align-items:center;gap:10px;margin:12px 0 2px;color:var(--ink-soft);font-size:15px;}
.crop-zoom input[type=range]{flex:1;accent-color:var(--accent);}
.g-edit{width:24px;height:24px;border-radius:7px;background:var(--surface-2);border:1px solid var(--line);
  color:var(--ink-soft);font-size:11px;flex:none;display:grid;place-items:center;transition:.15s;}
.g-edit:hover{border-color:var(--accent);color:var(--accent);}
.g-del{width:24px;height:24px;border-radius:7px;background:var(--surface-2);border:1px solid var(--line);
  color:var(--ink-soft);flex:none;display:grid;place-items:center;transition:.15s;}
.g-del svg{width:13px;height:13px;}
.g-del:hover{border-color:#E0455E;color:#E0455E;}
.g-empty{font-size:11px;color:var(--ink-soft);padding:6px 2px;}
/* group memo + print-shop link */
.g-extra{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:0 0 8px;}
.g-memo{flex:1 1 100%;margin:0;font-size:11.5px;line-height:1.5;color:var(--ink-soft);white-space:pre-wrap;}
.g-print{display:inline-flex;align-items:center;gap:4px;font-size:10.5px;font-weight:700;letter-spacing:.02em;
  padding:3px 9px;border-radius:999px;background:var(--accent-soft);color:var(--accent);
  border:1px solid color-mix(in srgb,var(--accent) 28%,transparent);transition:.15s;text-decoration:none;}
.g-print:hover{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
.group-empty{width:100%;padding:22px;border-radius:var(--radius-sm);border:1px dashed var(--line);
  background:transparent;color:var(--ink-soft);font-weight:700;font-size:12px;transition:.15s;}
.group-empty:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
.g-additem{width:100%;margin-top:7px;height:28px;border-radius:8px;border:1px dashed var(--line);
  background:transparent;color:var(--ink-soft);font-weight:700;font-size:11px;transition:.15s;}
.g-additem:hover{border-color:var(--accent);color:var(--accent);background:var(--accent-soft);}
/* event summary */
.ev-summary{margin-top:16px;padding:13px 14px;border-radius:var(--radius-sm);
  border:1px solid var(--line);background:var(--surface-2);}
.es-row{display:flex;align-items:baseline;justify-content:space-between;gap:10px;padding:3px 0;}
.es-vrow{display:flex;align-items:center;gap:6px;}
.es-vrow .g-edit,.es-vrow .g-del{width:22px;height:22px;}
.es-row .es-k{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);}
.es-row .es-v{font-weight:700;font-size:13px;text-align:right;}
.es-row .es-v em{font-style:normal;font-family:"Space Mono",monospace;font-size:10px;color:var(--ink-soft);margin-left:6px;}
.es-row.big{margin-top:4px;padding-top:8px;border-top:1px solid var(--line);}
.es-row.big .es-v.profit{font-size:22px;font-weight:900;letter-spacing:-.02em;color:var(--accent);}
.more-toggle{margin-top:8px;width:100%;height:28px;border-radius:8px;background:var(--surface);
  border:1px solid var(--line);color:var(--ink-soft);font-weight:700;font-size:11px;transition:.15s;}
.more-toggle:hover{border-color:var(--accent);color:var(--accent);}
.more-toggle .chev{font-size:9px;}
.csv-btn{margin-top:10px;width:100%;height:30px;border-radius:8px;background:var(--surface);
  border:1px solid var(--line);color:var(--ink-soft);font-weight:700;font-size:11px;letter-spacing:.02em;transition:.15s;}
.csv-btn:hover{border-color:var(--accent);color:var(--accent);}
.csv-row{display:flex;gap:8px;margin-top:10px;}
.csv-row .csv-btn{margin-top:0;flex:1;min-width:0;}
.csv-maphint{font-size:11px;font-weight:700;color:var(--ink-soft);margin:4px 0 8px;letter-spacing:.01em;}
.csv-hint{font-size:11px;color:var(--ink-soft);margin:2px 0 4px;}
.csv-hint.err{color:var(--accent);font-weight:700;}
.profit-table{margin-top:10px;font-size:11px;}
.pt-row{display:grid;grid-template-columns:1.5fr .62fr .62fr .55fr .78fr .78fr .6fr;gap:4px;align-items:center;
  padding:5px 0;border-top:1px solid var(--line);}
.pt-stock{font-weight:700;color:var(--ink-soft);}
/* job (案件) profit rows: title | tag | reward */
.pt-row-job{grid-template-columns:1.4fr auto 1fr;}
/* tax (税計算) section */
.tax-sec .tax-ctl{display:flex;align-items:center;gap:10px;margin-bottom:6px;}
.tax-sec .seg.sm button{height:26px;padding:0 12px;font-size:11px;}
.tax-rate{display:flex;align-items:center;gap:4px;font-family:"Space Mono",monospace;font-size:11px;color:var(--ink-soft);}
.tax-rate .pin.sm{width:52px;flex:none;}
.pt-row span{text-align:right;font-family:"Space Mono",monospace;font-size:10px;color:var(--ink);}
.pt-row .ptl{text-align:left;font-family:inherit;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pt-head span{color:var(--ink-soft);font-size:8.5px;letter-spacing:.04em;text-transform:uppercase;border:0;}
.pt-head{border-top:0;}
.pt-row .ptm{font-weight:700;color:var(--accent);}
.pt-jobtag{font-size:8.5px!important;font-weight:700;color:var(--accent)!important;
  letter-spacing:.04em;text-align:center!important;align-self:center;}
.pt-total{border-top:1.5px solid var(--ink);margin-top:2px;}
.pt-total .ptl{font-weight:800;}
.pt-total .ptp{font-weight:800;color:var(--accent);}
/* editable number cells (linked everywhere) */
.pin{width:100%;height:24px;border:1px solid var(--line);border-radius:6px;background:var(--surface);
  padding:0 6px;font-family:"Space Mono",monospace;font-size:10px;color:var(--ink);text-align:right;
  -moz-appearance:textfield;}
.pin::-webkit-outer-spin-button,.pin::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.pin:focus{outline:none;border-color:var(--accent);}
/* in flex finance rows, inputs need explicit widths (not 100%) */
.fin-row .pin{width:84px;flex:none;}
.fin-row .pin.sm{width:46px;}
.fin-row .pin.wide{width:124px;}
/* carry-in & expenses */
.fin-sec{margin-top:12px;}
.fin-h{display:flex;align-items:center;justify-content:space-between;margin-bottom:6px;}
.fin-h span{font-size:9.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-soft);font-weight:700;}
.fin-add{font-size:10px;font-weight:700;color:var(--ink-soft);background:none;border:0;cursor:pointer;}
.fin-add:hover{color:var(--accent);}
.fin-row{display:flex;align-items:center;gap:6px;padding:3px 0;}
.fin-name{flex:1;min-width:0;height:24px;border:1px solid var(--line);border-radius:6px;background:var(--surface);
  padding:0 8px;font-size:11px;color:var(--ink);}
.fin-name:focus{outline:none;border-color:var(--accent);}
.fin-op{font-family:"Space Mono",monospace;font-size:11px;color:var(--ink-soft);}
.fin-op.minus{color:var(--accent);font-weight:800;}
.fin-del{width:22px;height:22px;border-radius:6px;background:none;border:0;color:var(--ink-soft);
  font-size:14px;line-height:1;cursor:pointer;flex:none;}
.fin-del:hover{color:var(--accent);}
.fin-empty{font-size:10.5px;color:var(--ink-soft);padding:2px;}
/* carry-in candidate picker */
.carry-cands{display:flex;flex-direction:column;gap:6px;max-height:46vh;overflow:auto;margin-bottom:6px;}
.carry-cand{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;
  padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:var(--surface);
  cursor:pointer;text-align:left;transition:.15s;}
.carry-cand:hover{border-color:var(--accent);}
.carry-cand .cc-main{display:flex;flex-direction:column;gap:2px;min-width:0;}
.carry-cand .cc-name{font-weight:700;font-size:12.5px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.carry-cand .cc-ev{font-size:10px;color:var(--ink-soft);}
.carry-cand .cc-stock{font-family:"Space Mono",monospace;font-size:11px;font-weight:700;color:var(--accent);flex:none;}
/* calc breakdown */
.fin-calc{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);}
.fc{display:flex;align-items:baseline;justify-content:space-between;padding:2px 0;font-size:11px;}
.fc span:first-child{color:var(--ink-soft);font-size:10px;letter-spacing:.03em;}
.fc span:last-child{font-family:"Space Mono",monospace;font-size:11px;font-weight:700;}
.fc .neg{color:#C0445E;} .fc .pos{color:var(--accent);}
[data-theme="noir"] .fc .neg,[data-theme="midnight"] .fc .neg,[data-theme="plum"] .fc .neg{color:#ff6b86;}
.es-raterow{text-align:right;margin-top:2px;}
.es-rate{font-family:"Space Mono",monospace;font-size:11px;font-weight:700;color:var(--accent);
  letter-spacing:.04em;}

/* ============================================================
   TODAY'S TASK (center)
   ============================================================ */
.today-hero{margin-bottom:calc(var(--bl)*1.5);}
.today-date{font-weight:900;font-size:18px;letter-spacing:-.01em;}
.tcard{padding:13px 14px;border-radius:var(--radius-sm);border:1px solid var(--line);
  background:var(--surface-2);margin-bottom:9px;position:relative;overflow:hidden;}
.tcard .bar{position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent);}
.tcard .top{display:flex;align-items:center;gap:8px;margin-bottom:5px;}
.tcard .stat{font-family:"Space Mono",monospace;font-size:9px;letter-spacing:.06em;
  text-transform:uppercase;padding:2px 7px;border-radius:20px;font-weight:700;}
.stat.behind{background:color-mix(in srgb,var(--accent) 16%,var(--surface));color:var(--accent);}
.stat.ontrack{background:color-mix(in srgb,var(--ink-soft) 16%,var(--surface));color:var(--ink-soft);}
.stat.ahead{background:var(--accent-soft);color:color-mix(in srgb,var(--accent) 80%,var(--ink));}
.tcard .nm{font-size:11px;color:var(--ink-soft);flex:1;text-align:right;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.tcard .do{font-size:15px;font-weight:800;letter-spacing:-.01em;line-height:1.25;}
.tcard .do b{color:var(--accent);}
.tcard .sub{font-family:"Space Mono",monospace;font-size:10px;color:var(--ink-soft);margin-top:3px;}
/* F4: register-to-schedule button */
.schedreg{display:inline-flex;align-items:center;gap:5px;margin-top:9px;padding:5px 10px;
  border-radius:8px;border:1px solid var(--line);background:var(--surface);color:var(--ink-soft);
  font-size:10.5px;font-weight:700;cursor:pointer;transition:.15s;}
.schedreg svg{width:13px;height:13px;}
.schedreg:hover{border-color:var(--accent);color:var(--accent);}
/* F4: pinned (active) task card */
.tcard.pinned{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--surface));
  box-shadow:0 0 0 1px var(--accent);}
.tcard.pinned .bar{width:5px;}
.empty{padding:24px 14px;text-align:center;color:var(--ink-soft);font-size:12px;
  border:1px dashed var(--line);border-radius:var(--radius-sm);}
.empty .big{font-size:30px;margin-bottom:6px;font-weight:900;color:var(--line);}

/* ============================================================
   INSIGHTS (right) — Miro / cloud embeds
   ============================================================ */
.col-right .card{display:flex;flex-direction:column;min-height:560px;}
/* add / remove board panel controls (sit below the boards) */
.board-ctrl{display:flex;justify-content:center;gap:10px;}
.board-btn{width:40px;height:40px;border-radius:50%;border:1px dashed var(--line);
  background:var(--surface);color:var(--ink-soft);font-size:22px;font-weight:700;line-height:1;
  display:flex;align-items:center;justify-content:center;transition:.15s;}
.board-btn:hover{border-style:solid;border-color:var(--accent);color:var(--accent);}
.ins-stage{flex:1;position:relative;border-radius:var(--radius-sm);overflow:hidden;
  border:1px solid var(--line);background:var(--surface-2);margin:0 calc(var(--bl)*2.5);}
/* iframe fills the stage below the 34px embed bar, bleeding ~8px past the edges
   (clipped by the stage's overflow) so the board sits flush to / just over the frame */
.ins-stage iframe{position:absolute;top:34px;left:-8px;width:calc(100% + 16px);height:calc(100% - 26px);
  border:0;display:block;background:var(--surface);}
.ins-empty{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;}
.ins-empty .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;
  background:var(--accent-soft);color:color-mix(in srgb,var(--accent) 80%,var(--ink));}
.ins-empty .ic svg{width:24px;height:24px;}
.ins-empty p{margin:0;font-size:13px;font-weight:700;}
.ins-empty small{color:var(--ink-soft);font-size:11px;max-width:240px;line-height:1.5;}
.ins-paste{display:flex;gap:7px;width:100%;max-width:330px;margin-top:4px;}
.ins-paste input{flex:1;height:32px;border:1px solid var(--line);border-radius:9px;
  background:var(--surface);padding:0 11px;font-size:12px;}
.ins-fallback{position:absolute;inset:0;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:9px;padding:24px;text-align:center;
  background:var(--surface-2);}
.ins-fallback .ic{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;
  background:var(--accent-soft);color:color-mix(in srgb,var(--accent) 80%,var(--ink));}
.ins-fallback .host{font-weight:800;font-size:14px;}
.ins-fallback small{color:var(--ink-soft);font-size:11px;word-break:break-all;max-width:90%;}
.ins-embedbar{position:absolute;top:0;left:0;right:0;height:34px;z-index:3;display:flex;
  align-items:center;gap:9px;padding:0 11px;background:var(--surface);
  border-bottom:1px solid var(--line);}
.ins-embedbar .dotline{width:8px;height:8px;border-radius:50%;background:var(--accent);flex:none;}
.ins-embedbar .eb-title{font-size:12px;font-weight:700;flex:1;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis;}
.ins-embedbar .eb-link{font-size:11px;color:var(--ink-soft);text-decoration:none;}
.ins-embedbar .eb-link:hover{color:var(--accent);}
.ins-embedbar .eb-flip{font-size:13px;line-height:1;color:var(--ink-soft);padding:4px 8px;border-radius:7px;
  border:1px solid var(--line);flex:none;}
.ins-embedbar .eb-flip:hover{border-color:var(--accent);color:var(--accent);}
.ins-embedbar .eb-flip.on{border-color:var(--accent);color:var(--accent-ink);background:var(--accent-soft);}
.ins-embedbar .eb-close{font-size:11px;color:var(--ink-soft);padding:4px 9px;border-radius:7px;
  border:1px solid var(--line);}
.ins-embedbar .eb-close:hover{border-color:var(--accent);color:var(--accent);}

/* tag tabs at the bottom */
.ins-tabs{display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  padding:calc(var(--bl)*1.75) calc(var(--bl)*2.5) calc(var(--bl)*2.5);}
.ins-tab{display:inline-flex;align-items:center;gap:7px;height:26px;padding:0 11px 0 9px;
  border-radius:20px;border:1px solid var(--line);background:var(--surface-2);
  font-size:11px;font-weight:600;color:var(--ink-soft);transition:.15s;}
.ins-tab:hover{border-color:var(--accent);}
.ins-tab.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
.ins-tab .fav{width:13px;height:13px;border-radius:4px;background:var(--accent-soft);
  display:grid;place-items:center;font-size:8px;font-weight:800;
  color:color-mix(in srgb,var(--accent) 80%,var(--ink));overflow:hidden;}
.ins-tab.on .fav{background:rgba(255,255,255,.25);color:#fff;}
.ins-tab img{width:13px;height:13px;border-radius:3px;}
.ins-tab .x{opacity:.5;font-size:13px;line-height:1;}
.ins-tab .x:hover{opacity:1;}
.ins-add{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;
  border:1px dashed var(--line);color:var(--ink-soft);font-size:16px;transition:.15s;}
.ins-add:hover{border-color:var(--accent);color:var(--accent);border-style:solid;}

/* ============================================================
   MODAL
   ============================================================ */
.scrim{position:fixed;inset:0;background:color-mix(in srgb,var(--ink) 32%,transparent);
  backdrop-filter:blur(3px);display:none;align-items:center;justify-content:center;z-index:200;
  padding:20px;}
.scrim.open{display:flex;}
.modal{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);
  width:100%;max-width:420px;padding:calc(var(--bl)*3);position:relative;}
.modal h3{margin:0 0 2px;font-size:18px;font-weight:900;letter-spacing:-.01em;}
.modal .kick{margin-bottom:16px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:11px;font-weight:700;color:var(--ink-soft);
  margin-bottom:5px;letter-spacing:.01em;}
.field input,.field select,.field textarea,.stage-edit-input{width:100%;height:36px;border:1px solid var(--line);border-radius:10px;
  background:var(--surface-2);padding:0 12px;font-size:13px;}
.field textarea{height:auto;min-height:64px;padding:9px 12px;line-height:1.5;resize:vertical;font-family:inherit;box-sizing:border-box;}
.field input:focus,.field select:focus,.field textarea:focus,.stage-edit-input:focus{outline:0;border-color:var(--accent);}
/* side-by-side date/time rows: let columns shrink and stop iOS native
   date/time inputs from ignoring width and overlapping the next column */
.field[style*="flex"]>div{min-width:0;}
.field input[type=date],.field input[type=time]{-webkit-appearance:none;appearance:none;}
/* highlight the "new event" choice in the add dialog's event picker */
#a_event option.opt-new{background:var(--accent-soft);color:var(--accent-ink);font-weight:700;}
.seg{display:flex;gap:6px;flex-wrap:wrap;}
.seg button{height:34px;padding:0 14px;border-radius:9px;border:1px solid var(--line);
  background:var(--surface-2);font-size:12px;font-weight:600;transition:.15s;display:flex;
  align-items:center;gap:7px;}
.seg button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
.swatch{width:14px;height:14px;border-radius:50%;border:1px solid rgba(0,0,0,.12);}
/* F5: stage init checkboxes */
.stage-checks{display:grid;grid-template-columns:1fr 1fr;gap:6px 10px;}
.stage-check{display:flex;align-items:center;gap:7px;font-size:12px;font-weight:600;color:var(--ink);cursor:pointer;}
.stage-check input{width:16px;height:16px;flex:none;accent-color:var(--accent);cursor:pointer;}
.label-row{display:flex;align-items:center;justify-content:space-between;gap:10px;}
.stage-edit-list{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow:auto;}
.stage-edit-row{display:flex;align-items:center;gap:8px;}
.stage-edit-row .ix{flex:none;width:22px;font-size:11px;color:var(--ink-soft);}
.stage-edit-input{flex:1;}
/* F8: set-as-a-set toggle + cumulative badge */
.set-toggle{display:flex;align-items:center;gap:8px;font-size:12px;font-weight:600;color:var(--ink);
  cursor:pointer;margin-bottom:14px;}
.set-toggle input{width:16px;height:16px;flex:none;accent-color:var(--accent);cursor:pointer;}
.set-note{margin:8px 0 0;font-size:11.5px;line-height:1.5;color:var(--ink-soft);}
.set-badge{font-family:"Space Mono",monospace;font-size:8.5px;font-weight:700;letter-spacing:.06em;
  padding:1px 6px;border-radius:6px;background:var(--accent-soft);color:var(--accent);vertical-align:middle;}
.cur-badge{margin-left:5px;background:var(--surface-2);color:var(--ink-soft);}
.fc-curhead span:first-child{font-family:"Space Mono",monospace;font-size:10px;font-weight:700;letter-spacing:.08em;
  color:var(--ink-soft);text-transform:uppercase;}
.fin-calc + .fin-calc{margin-top:6px;border-top:1px solid var(--line);padding-top:6px;}
.es-cur{font-style:normal;font-family:"Space Mono",monospace;font-size:11px;color:var(--ink-soft);margin-left:4px;}
.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:8px;}
/* day popup (calendar date tap) */
.day-sec{margin-bottom:14px;}
.day-h{font-family:"Space Mono",monospace;font-size:10px;font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px;}
.day-row{display:flex;align-items:center;gap:9px;padding:7px 0;border-top:1px solid var(--line);}
.day-sec .day-row:first-of-type{border-top:none;}
.day-dot{width:9px;height:9px;border-radius:50%;flex:none;background:var(--accent);}
.day-dot.holiday{background:#d3455b;} .day-dot.gev{background:#5B9DFF;} .day-dot.due{background:var(--accent);}
.day-dot.sug{background:transparent;border:2px solid var(--accent);}
.day-dot.c-blue{background:#CFE2FB;} .day-dot.c-orange{background:#F8DCBC;} .day-dot.c-green{background:#CFEBD6;}
.day-dot.c-pink{background:#F7D3E2;} .day-dot.c-purple{background:#E0D6F6;} .day-dot.c-accent{background:var(--accent);}
.day-nm{flex:1 1 auto;min-width:0;font-size:13px;color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.day-tag{flex:none;font-size:10px;font-weight:700;padding:2px 8px;border-radius:999px;background:var(--accent-soft);color:var(--accent);}
.day-time{flex:none;font-family:"Space Mono",monospace;font-size:11px;color:var(--ink-soft);}
.day-empty{font-size:12.5px;color:var(--ink-soft);text-align:center;}
.closex{position:absolute;top:16px;right:16px;width:28px;height:28px;border-radius:8px;
  display:grid;place-items:center;color:var(--ink-soft);}
.closex:hover{background:var(--surface-2);color:var(--ink);}

/* grid overlay (proof the grid is real) */
.guides{position:absolute;inset:0;pointer-events:none;z-index:150;opacity:0;
  transition:opacity .25s;}
body.grid-on .guides{opacity:1;}
.guides .cols{position:absolute;top:0;bottom:0;left:var(--margin);right:var(--margin);
  display:grid;grid-template-columns:repeat(var(--cols),1fr);column-gap:var(--gutter);}
.guides .col{background:var(--g-col);box-shadow:inset 1px 0 0 var(--g-edge),inset -1px 0 0 var(--g-edge);}

.gridhint{display:none;}

/* ---------- RESPONSIVE: mobile stack ---------- */
@media (max-width:980px){
  :root{--margin:16px;--gutter:14px;}
  .board{grid-template-columns:1fr;}
  .col-left,.col-mid,.col-right{grid-column:1 / -1;}
  .col-left{order:1;padding-right:0;} .col-mid{order:2;} .col-right{order:3;}
  .viewtab{position:static;transform:none;flex-direction:row;margin:0 0 10px;}
  .viewtab button{writing-mode:horizontal-tb;border-radius:9px;border-left:1px solid var(--line);
    padding:7px 12px;}
  .col-right .card{min-height:460px;}
  .gridhint{display:none;}
}
@media (max-width:520px){
  .cal-bignum{font-size:58px;} .cal-month .m{font-size:24px;}
  .brand h1{font-size:22px;}
  /* drop the subtitle onto its own line instead of char-wrapping in a squeezed flex item */
  .brand{flex-wrap:wrap;}
  .brand small{flex-basis:100%;}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;}}
