
  @import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard@v1.3.9/dist/web/static/pretendard.css');

  :root{
    /* refined neutral canvas — cool near-white instead of cream */
    --canvas:#FAFAF8;
    --surface-soft:#F2F1ED;
    --surface-card:#F2F1ED;
    --surface-strong:#E7E6E1;
    --hairline:#E6E5E1;
    --primary:#111111;
    --on-primary:#ffffff;
    --ink:#111111;
    --body-strong:#242424;
    --body:#4a4a4a;
    --muted:#767676;
    --muted-soft:#a3a3a0;
    --shadow-sm:0 1px 2px rgba(17,17,17,0.04), 0 2px 8px rgba(17,17,17,0.04);
    --shadow-md:0 2px 4px rgba(17,17,17,0.05), 0 10px 24px rgba(17,17,17,0.07);

    /* muted, sophisticated accent palette (desaturated from candy-bright) */
    --pink:#D9668F;      --pink-bg:rgba(217,102,143,0.11);   --pink-fg:#A5305C; --pink-on:#3A1220;
    --teal:#22403D;      --teal-bg:rgba(34,64,61,0.09);      --teal-fg:#22403D; --teal-on:#ffffff;
    --lavender:#9C8CC4;  --lavender-bg:rgba(156,140,196,0.15); --lavender-fg:#5E4E8C; --lavender-on:#2A2140;
    --peach:#D99266;     --peach-bg:rgba(217,146,102,0.16); --peach-fg:#9A5A2E; --peach-on:#3A210F;
    --ochre:#C29B3E;     --ochre-bg:rgba(194,155,62,0.16);  --ochre-fg:#7E6118; --ochre-on:#332608;
    --cream:#D8D4C6;     --cream-bg:#EDEBE3;                --cream-fg:#6a6a6a; --cream-on:#111111;
    --red:#C25450;       --red-bg:rgba(194,84,80,0.12);     --red-fg:#8A302D;  --red-on:#2E1210;
    --blue:#4E7EA8;      --blue-bg:rgba(78,126,168,0.12);   --blue-fg:#2F5878; --blue-on:#15222E;

    --r-xs:6px; --r-sm:8px; --r-md:12px; --r-lg:16px; --r-xl:24px; --r-pill:9999px;
    --sp-xs:8px; --sp-sm:12px; --sp-md:16px; --sp-lg:24px; --sp-xl:32px; --sp-xxl:48px;

    --font-display:'Pretendard Variable','Pretendard',-apple-system,"Apple SD Gothic Neo",sans-serif;
    --font-body:'Pretendard Variable','Pretendard',-apple-system,"Apple SD Gothic Neo","Malgun Gothic",sans-serif;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}

  body{
    background:var(--canvas); color:var(--body-strong); font-family:var(--font-body);
    min-height:100vh; -webkit-font-smoothing:antialiased;
  }
  a{ text-decoration:none; color:inherit; }
  .page{display:none;} .page.active{display:block;}

  @keyframes pageFadeIn{ from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:translateY(0);} }
  #page-select.active{display:flex; animation:pageFadeIn .38s cubic-bezier(.22,1,.36,1) both;}
  #page-dash.active .dash-shell{ animation:pageFadeIn .34s cubic-bezier(.22,1,.36,1) both; }

  .notebook-row.leaving .notebook{transition:opacity .22s ease, transform .22s ease;}
  .notebook-row.leaving .notebook:not(.leave-active){opacity:0; transform:translateY(6px) scale(.97);}
  .notebook-row.leaving .notebook.leave-active{transform:scale(1.045);}

  @media (prefers-reduced-motion:reduce){
    #page-select.active, #page-dash.active .dash-shell{animation:none;}
    .notebook-row.leaving .notebook{transition:none;}
  }


  /* ===== selector page (#) ===== */
  #page-select{min-height:100vh;flex-direction:column;align-items:center;justify-content:center;padding:64px 20px;}
  .brand{text-align:center;margin-bottom:var(--sp-xxl);}
  .brand .eyebrow{font-family:var(--font-body);font-size:12.5px;font-weight:700;letter-spacing:1.8px;text-transform:uppercase;
    color:var(--muted);display:flex;align-items:center;justify-content:center;gap:8px;}
  .eyebrow-line{width:34px;height:1px;background:var(--hairline);display:inline-block;}
  .eyebrow-dot{width:4px;height:4px;border-radius:50%;display:inline-block;}
  .eyebrow-dot.dot-pink{background:var(--pink);}
  .eyebrow-dot.dot-lavender{background:var(--lavender);}
  .brand h1{font-family:var(--font-display);font-size:42px;font-weight:700;letter-spacing:-1px;margin:12px 0 8px;color:var(--ink);}
  .brand p{color:var(--muted);font-size:16px;margin:0;font-weight:400;}

  .notebook-row{display:flex;gap:28px;flex-wrap:wrap;justify-content:center;max-width:1140px;}
  .backup-row{display:flex;gap:10px;justify-content:center;margin-top:40px;}
  .backup-btn{display:inline-flex;align-items:center;border:1px solid var(--hairline);background:#ffffff;
    color:var(--muted);border-radius:var(--r-pill);padding:8px 16px;font-size:12px;font-weight:600;
    cursor:pointer;font-family:var(--font-body);transition:color .15s, border-color .15s;}
  .backup-btn:hover{color:var(--ink);border-color:var(--muted-soft);}
  .backup-btn .icon-svg{stroke:currentColor;}
  .notebook{width:250px;min-height:320px;border-radius:28px;cursor:pointer;padding:30px 26px;
    display:flex;flex-direction:column;justify-content:space-between;transition:transform .18s ease, box-shadow .18s ease;
    box-shadow:var(--shadow-md);position:relative;overflow:hidden;}
  .notebook:hover{transform:translateY(-6px);box-shadow:0 16px 32px rgba(17,17,17,0.16);}
  .notebook::before{content:"";position:absolute;top:16px;right:16px;width:64px;height:64px;
    background-image:radial-gradient(currentColor 1.3px, transparent 1.6px);background-size:11px 11px;
    opacity:.22;pointer-events:none;}
  .notebook::after{content:"";position:absolute;right:-46px;bottom:-46px;width:210px;height:210px;
    border-radius:50%;background:rgba(255,255,255,0.10);pointer-events:none;}
  .notebook.c-pink{background:#DA9DB7;color:#4A1830;}
  .notebook.c-teal{background:#1F332C;color:#ffffff;}
  .notebook.c-lavender{background:#A79BD6;color:#251A45;}
  .notebook.c-red{background:#D07873;color:#4A1310;}
  .notebook.c-blue{background:#6E96B8;color:#132436;}
  .notebook .name{font-family:var(--font-display);font-weight:800;font-size:84px;line-height:1.02;
    letter-spacing:-2px;flex:1;display:flex;flex-direction:column;justify-content:center;position:relative;z-index:1;}
  .notebook .name span{display:block;}
  .notebook .meta{font-size:13.5px;line-height:1.7;font-weight:600;position:relative;z-index:1;
    padding-top:14px;border-top:1px solid rgba(255,255,255,0.3);}
  .notebook.c-pink .meta,.notebook.c-lavender .meta,.notebook.c-red .meta,.notebook.c-blue .meta{border-top-color:rgba(0,0,0,0.14);}
  .notebook .meta b{font-weight:800;}
  .meta-cta{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:2px;}
  .meta-arrow{width:24px;height:24px;border-radius:50%;flex:0 0 auto;display:flex;align-items:center;justify-content:center;
    background:currentColor;}
  .meta-arrow svg{width:12px;height:12px;stroke-width:2.4;}
  .notebook.c-pink .meta-arrow svg{stroke:#DA9DB7;}
  .notebook.c-teal .meta-arrow svg{stroke:#1F332C;}
  .notebook.c-lavender .meta-arrow svg{stroke:#A79BD6;}
  .notebook.c-red .meta-arrow svg{stroke:#D07873;}
  .notebook.c-blue .meta-arrow svg{stroke:#6E96B8;}

  /* ===== dashboard pages (#재호 / #현호) ===== */
  /* ===== dashboard: sidebar + main panel layout ===== */
  .dash-shell{display:flex;min-height:100vh;align-items:stretch;}
  .sidebar{width:230px;flex:0 0 230px;background:#ffffff;border-right:1px solid var(--hairline);
    padding:26px 18px;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto;
    --accent:var(--pink); --accent-bg:var(--pink-bg);}
  .sidebar.accent-pink{--accent:var(--pink); --accent-bg:var(--pink-bg);}
  .sidebar.accent-teal{--accent:var(--teal); --accent-bg:var(--teal-bg);}
  .sidebar.accent-lavender{--accent:var(--lavender); --accent-bg:var(--lavender-bg);}
  .sidebar.accent-red{--accent:var(--red); --accent-bg:var(--red-bg);}
  .sidebar.accent-blue{--accent:var(--blue); --accent-bg:var(--blue-bg);}
  .back-btn{background:none;border:none;color:var(--muted);font-size:13.5px;font-weight:600;cursor:pointer;
    padding:8px 6px;font-family:var(--font-body);display:inline-flex;align-items:center;margin-bottom:22px;}
  .back-btn:hover{color:var(--ink);}
  .sidebar-child-wrap{position:relative;padding:2px 6px 10px;margin-bottom:6px;}
  .sidebar-child-row{display:flex;align-items:flex-start;gap:3px;position:relative;z-index:1;}
  .sidebar-child{font-family:var(--font-display);font-size:30px;font-weight:800;letter-spacing:-0.5px;color:var(--ink);}
  .sidebar-sparkle{width:15px;height:15px;color:var(--accent);margin-top:1px;flex:0 0 auto;}
  .sidebar-nav{display:flex;flex-direction:column;gap:6px;}
  .nav-item{display:flex;align-items:center;gap:11px;padding:13px 15px;border-radius:18px;
    font-size:14.5px;font-weight:700;color:var(--body);border:1px solid transparent;}
  .nav-item .icon-svg{stroke:var(--muted-soft);}
  .nav-item:hover{background:var(--surface-soft);}
  .nav-item.active{background:var(--accent-bg);color:var(--accent);border-color:var(--accent-bg);}
  .nav-item.active .icon-svg{stroke:var(--accent);}
  .nav-label-wide{letter-spacing:2.5px;}

  .main-panel{flex:1;min-width:0;overflow-y:auto;height:100vh;}
  .panel-inner{max-width:1000px;margin:0 auto;padding:32px 40px 100px;}

  @media (max-width:820px){
    .sidebar{width:170px;flex:0 0 170px;padding:18px 12px;}
    .sidebar-child{font-size:24px;}
    .nav-item{font-size:12.5px;padding:10px 10px;gap:8px;}
    .nav-item .icon-svg{width:16px;height:16px;}
    .panel-inner{padding:20px 16px 80px;}
    .header-title{font-size:26px;}
    .card{padding:16px;}
  }

  .section-panel{display:none;}
  .section-panel.active{display:block;}

  .header-band{text-align:center;padding:var(--sp-xl) 0 var(--sp-lg);position:relative;overflow:hidden;}
  .year-watermark{position:absolute;left:50%;top:50%;transform:translate(-50%,-52%);
    font-family:var(--font-display);font-weight:800;font-size:150px;letter-spacing:-6px;
    color:var(--ink);opacity:.05;pointer-events:none;white-space:nowrap;z-index:0;user-select:none;}
  .header-title,.header-tagline{position:relative;z-index:1;}
  .header-title{font-family:var(--font-display);font-size:36px;font-weight:700;letter-spacing:-0.8px;color:var(--ink);outline:none;}
  .header-tagline{display:inline-block;margin-top:12px;color:var(--body);
    font-size:14px;font-weight:600;padding:8px 20px;outline:none;}

  .weeknav{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:var(--sp-lg);}
  .today-big{font-family:var(--font-display);font-size:27px;font-weight:800;letter-spacing:-0.5px;color:var(--ink);}
  .weeknav-sub{display:flex;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap;}
  .weeknav button{border:1px solid var(--hairline);background:var(--canvas);border-radius:var(--r-pill);padding:9px 18px;
    font-size:13.5px;font-weight:600;cursor:pointer;color:var(--body);font-family:var(--font-body);}
  .weeknav button:hover{border-color:var(--ink);color:var(--ink);}
  .weeknav .range{font-family:var(--font-body);font-size:13px;font-weight:600;color:var(--muted);padding:0 4px;}
  .weeknav .clock{display:flex;align-items:center;gap:7px;font-family:var(--font-display);font-size:18px;font-weight:700;
    color:var(--ink);background:var(--surface-card);border-radius:var(--r-pill);padding:9px 18px;font-variant-numeric:tabular-nums;}
  .weeknav .clock .icon-svg{width:17px;height:17px;stroke:var(--ink);}

  .card{background:#ffffff;border:1px solid var(--hairline);border-radius:var(--r-lg);
    padding:var(--sp-lg) var(--sp-lg);margin-bottom:var(--sp-lg);box-shadow:var(--shadow-sm);}
  .card h2{font-family:var(--font-display);font-size:16px;margin:0 0 14px;font-weight:700;letter-spacing:-0.2px;
    display:flex;align-items:center;gap:9px;color:var(--ink);}
  .icon-svg{width:18px;height:18px;flex:0 0 auto;stroke:var(--ink);stroke-width:1.6;fill:none;
    stroke-linecap:round;stroke-linejoin:round;}
  .section-label .icon-svg{width:20px;height:20px;vertical-align:-4px;margin-right:6px;stroke:var(--ink);}
  .mascot .icon-svg{width:26px;height:26px;stroke:none;}
  .back-btn .icon-svg{width:15px;height:15px;stroke:var(--muted);vertical-align:-2px;margin-right:2px;}
  .back-btn:hover .icon-svg{stroke:var(--ink);}

  /* ===== tuned for Galaxy Tab S12 Ultra in landscape (~2960x1850, 16:10) ===== */
  @media (min-width:1100px) and (min-aspect-ratio:3/2){
    .brand h1{font-size:46px;}
    .brand p{font-size:17px;}
    .notebook{width:290px;min-height:360px;}
    .notebook .name{font-size:96px;}
    .notebook .meta{font-size:15px;}
    .panel-inner{max-width:1040px;padding:40px 48px 110px;}
    .sidebar{width:250px;flex:0 0 250px;padding:30px 20px;}
    .sidebar-child{font-size:33px;}
    .nav-item{font-size:15.5px;padding:13px 16px;}
    .header-title{font-size:40px;}
    .year-watermark{font-size:170px;}
    .header-tagline{font-size:15px;}
    .card{padding:28px 28px;}
    .card h2{font-size:17px;}
    table.chart{font-size:15.5px;}
    table.chart th{padding:14px 8px;font-size:13.5px;}
    table.chart td{padding:13px 8px;}
    .chk{width:32px;height:32px;}
    .btn{height:48px;font-size:14.5px;}
    .score-chip .s{font-size:18px;}
  }

  table.chart{width:100%;min-width:600px;border-collapse:collapse;font-size:14.5px;font-family:var(--font-body);}
  table.chart th{background:var(--primary);color:var(--on-primary);padding:12px 6px;font-size:13px;font-weight:600;
    letter-spacing:.3px;white-space:nowrap;position:relative;overflow:hidden;transition:background .35s ease, color .35s ease;}
  table.chart th:first-child{border-radius:var(--r-sm) 0 0 0;}
  table.chart th:last-child{border-radius:0 var(--r-sm) 0 0;}
  table.chart th.level-light{background:var(--acc-bg);color:var(--acc-fg);}
  table.chart th.level-full{background:var(--acc);color:var(--acc-on);}
  table.chart td{padding:11px 6px;text-align:center;border-bottom:1px solid var(--hairline);white-space:nowrap;
    transition:background .35s ease;}
  table.chart td.grp{font-weight:700;font-size:13.5px;}
  table.chart td.item-text{text-align:left;font-weight:500;position:relative;padding-left:12px;color:var(--body-strong);
    white-space:normal;min-width:160px;}
  .chk{width:28px;height:28px;border-radius:var(--r-xs);border:2px solid var(--muted-soft);background:var(--canvas);
    cursor:pointer;font-size:15px;color:transparent;line-height:1;font-weight:700;}
  .chk.on{border-color:transparent;}

  .btn{font-family:var(--font-body);font-size:14px;font-weight:600;padding:11px 20px;border-radius:var(--r-md);
    border:1px solid var(--primary);background:var(--primary);color:var(--on-primary);cursor:pointer;height:44px;}
  .btn:hover{opacity:.85;}
  .btn.ghost{background:var(--canvas);color:var(--body-strong);border-color:var(--hairline);}
  .btn.ghost:hover{border-color:var(--ink);opacity:1;}
  .empty{color:var(--muted-soft);font-size:13px;padding:8px 2px;}

  .score-row{display:flex;gap:10px;flex-wrap:wrap;}
  .score-chip{flex:1;min-width:80px;border-radius:var(--r-pill);padding:12px 6px;text-align:center;font-family:var(--font-body);}
  .score-chip .d{font-size:12.5px;font-weight:700;letter-spacing:.2px;}
  .score-chip .s{font-size:16px;font-weight:700;margin-top:4px;}

  .reward-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;}
  @media (max-width:640px){.reward-grid{grid-template-columns:1fr;}}
  .reward-box{border:1px solid var(--hairline);border-radius:var(--r-md);padding:14px;background:var(--canvas);
    transition:background .35s ease, border-color .35s ease, color .35s ease;
    position:relative;overflow:hidden;}
  .reward-box .pair{font-weight:700;font-size:14px;color:var(--ink);}
  .reward-box .pair-usage{font-size:11px;color:var(--muted);margin-top:2px;}
  .reward-box .sum{font-size:13px;margin:6px 0;color:var(--muted);}
  .reward-box .match{font-size:13px;font-weight:600;min-height:16px;color:var(--body);margin-top:10px;}
  .reward-box .match b{font-weight:800;color:var(--ochre-fg);font-size:2em;display:block;margin-top:4px;line-height:1.1;}

  /* 15~17점: 아이 색의 옅은 톤 */
  .reward-box.level-light{background:var(--acc-bg);border-color:var(--acc-bg);}
  .reward-box.level-light .pair,
  .reward-box.level-light .pair-usage,
  .reward-box.level-light .sum,
  .reward-box.level-light .match{color:var(--acc-fg);}
  .reward-box.level-light .match b{color:var(--acc-fg);}

  /* 18~20점: 아이 고유 색 그대로 */
  .reward-box.level-full{background:var(--acc);border-color:var(--acc);}
  .reward-box.level-full .pair,
  .reward-box.level-full .pair-usage,
  .reward-box.level-full .sum,
  .reward-box.level-full .match{color:var(--acc-on);}
  .reward-box.level-full .match b{color:var(--acc-on);}

  .shimmer-sweep{position:absolute;top:0;left:0;width:38%;height:100%;
    background:linear-gradient(100deg, transparent, rgba(255,255,255,0.6), transparent);
    transform:translateX(-160%) skewX(-15deg);pointer-events:none;
    animation:shimmerMove .7s ease forwards;}
  @keyframes shimmerMove{ to{ transform:translateX(360%) skewX(-15deg); } }

  .celebrate-dot{position:absolute;width:5px;height:5px;border-radius:50%;background:var(--acc-on);
    pointer-events:none;opacity:0;animation:dotPop .85s ease forwards;}
  @keyframes dotPop{
    0%{opacity:0;transform:scale(0) translateY(0);}
    25%{opacity:1;transform:scale(1) translateY(-3px);}
    100%{opacity:0;transform:scale(.5) translateY(-20px);}
  }
  @media (prefers-reduced-motion:reduce){
    .shimmer-sweep,.celebrate-dot{animation:none;display:none;}
  }

  .tier-list{display:flex;flex-direction:column;gap:6px;margin-bottom:12px;}
  .tier-subheading{font-size:11.5px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;margin:2px 0 8px;}
  .tier-fixed-note{font-size:11.5px;color:var(--muted-soft);margin-top:10px;line-height:1.5;}
  .tier-row{display:flex;justify-content:space-between;align-items:center;background:var(--ochre-bg);color:var(--ochre-fg);
    padding:9px 14px;border-radius:var(--r-md);font-size:13px;font-weight:600;}
  .tier-row button{border:none;background:none;color:var(--ochre-fg);opacity:.6;cursor:pointer;font-size:14px;}

  textarea.comment{width:100%;min-height:80px;border:1px solid var(--hairline);border-radius:var(--r-md);padding:12px 14px;
    font-family:var(--font-body);font-size:14px;resize:vertical;background:var(--canvas);color:var(--body-strong);}

  .tips{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:9px;}
  .tips li{font-size:13px;color:var(--body);display:flex;gap:8px;line-height:1.5;}
  .tips li::before{content:"●";flex:0 0 auto;color:var(--lavender);font-size:8px;margin-top:5px;}

  .verse-band{text-align:center;background:var(--surface-soft);border-radius:var(--r-xl);padding:var(--sp-xl) var(--sp-lg);
    margin-top:var(--sp-lg);}
  .verse{font-family:var(--font-display);font-size:16px;color:var(--ink);font-weight:700;letter-spacing:-0.2px;outline:none;}
  .verse-ref{font-size:12.5px;color:var(--muted);margin-top:8px;font-weight:600;}

  /* ===== cloud sync status badge ===== */
  .sync-badge{position:fixed;right:16px;bottom:16px;display:flex;align-items:center;gap:6px;
    background:#ffffff;border:1px solid var(--hairline);border-radius:var(--r-pill);
    padding:8px 14px;font-size:12px;font-weight:600;color:var(--muted);box-shadow:var(--shadow-sm);
    z-index:50;transition:opacity .3s ease;}
  .sync-badge .dot{width:7px;height:7px;border-radius:50%;background:var(--muted-soft);flex:0 0 auto;}
  .sync-badge.syncing .dot{background:var(--ochre);animation:syncPulse 1s ease-in-out infinite;}
  .sync-badge.synced .dot{background:var(--lavender);}
  .sync-badge.error .dot{background:var(--pink);}
  @keyframes syncPulse{0%,100%{opacity:1;}50%{opacity:.35;}}


  .icon{display:inline-flex;align-items:center;}

  /* ===== 학습 진도표 (today's tasks / subjects / stamps / streak) ===== */
  @media (max-width:760px){.progress-grid{grid-template-columns:1fr;}}



  .stamp-slot{aspect-ratio:1;border-radius:50%;border:1.5px dashed var(--hairline);display:flex;align-items:center;
    justify-content:center;font-size:10px;color:var(--muted-soft);}
  .stamp-slot.filled{border:2px solid var(--ochre);color:var(--ochre-fg);background:var(--ochre-bg);font-weight:700;}


  .section-label{font-family:var(--font-display);font-size:20px;font-weight:700;letter-spacing:-0.3px;color:var(--ink);
    margin:var(--sp-xl) 0 var(--sp-md);}

  /* ===== 독서기록장 ===== */
  .book-stats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:var(--sp-md);}
  .book-stat-chip{background:var(--surface-card);border-radius:var(--r-pill);padding:8px 16px;font-size:13px;
    font-weight:600;color:var(--body);}
  .book-stat-chip b{color:var(--ink);font-weight:800;}

  .book-row{padding:14px 4px;border-bottom:1px solid var(--hairline);}
  .book-row:last-child{border-bottom:none;}
  .row-header{display:flex;gap:14px;align-items:flex-start;cursor:pointer;}
  .row-header-side{display:flex;align-items:center;gap:8px;flex:0 0 auto;}
  .row-chevron{width:14px;height:14px;stroke:var(--muted-soft);stroke-width:2;fill:none;
    transition:transform .2s ease;flex:0 0 auto;margin-top:2px;}
  .expanded .row-chevron{transform:rotate(180deg);}
  .row-preview{font-size:13px;color:var(--muted);margin-top:5px;line-height:1.5;
    display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
  .row-details{display:none;padding-top:10px;}
  .expanded .row-details{display:block;}
  .book-row .book-main{flex:1;min-width:0;}
  .book-row .book-title{font-family:var(--font-display);font-size:15.5px;font-weight:700;color:var(--body-strong);}
  .book-row .book-meta{font-size:12.5px;color:var(--muted);margin-top:3px;}
  .book-row .book-review{font-size:13px;color:var(--body);margin-top:6px;line-height:1.5;}
  .book-row .book-stars{color:var(--ochre);font-size:14px;letter-spacing:1px;white-space:nowrap;}
  .book-row .book-status{display:inline-block;font-size:11px;font-weight:700;padding:2px 9px;border-radius:var(--r-pill);
    margin-top:4px;}
  .book-row .book-status.done{background:var(--lavender-bg);color:var(--lavender-fg);}
  .book-row .book-status.reading{background:var(--peach-bg);color:var(--peach-fg);}
  .book-del{border:none;background:none;color:var(--muted-soft);cursor:pointer;font-size:12.5px;font-weight:700;padding:4px 0;}
  .book-del:hover{color:var(--pink);}

  .add-book-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:8px;margin-top:16px;align-items:end;}
  @media (max-width:760px){.add-book-grid{grid-template-columns:1fr 1fr;}}
  .add-book-grid input,.add-book-grid select{font-family:var(--font-body);font-size:13.5px;padding:9px 11px;
    border-radius:var(--r-md);border:1px solid var(--hairline);background:var(--canvas);color:var(--body-strong);width:100%;}
  .add-book-grid label{font-size:11.5px;color:var(--muted);font-weight:600;display:block;margin-bottom:4px;}
  .star-input{display:flex;gap:2px;}
  .star-btn{background:none;border:none;font-size:22px;line-height:1;cursor:pointer;color:var(--hairline);padding:2px;}
  .star-btn.filled{color:var(--ochre);}

  .add-book-grid textarea{font-family:var(--font-body);font-size:13.5px;padding:9px 11px;border-radius:var(--r-md);
    border:1px solid var(--hairline);background:var(--canvas);color:var(--body-strong);width:100%;resize:vertical;}
  .form-group-label{font-family:var(--font-display);font-size:13.5px;font-weight:700;color:var(--ink);
    margin-top:14px;padding-top:14px;border-top:1px solid var(--hairline);}
  .add-book-grid > .form-group-label:first-child{margin-top:0;padding-top:0;border-top:none;}
  .form-group-highlight{color:var(--peach-fg);display:flex;align-items:center;gap:8px;}
  .form-group-highlight span{font-size:11px;font-weight:700;background:var(--peach-bg);color:var(--peach-fg);
    padding:2px 9px;border-radius:var(--r-pill);}

  .book-row .book-quote{font-size:13px;color:var(--body);margin-top:8px;line-height:1.55;
    border-left:2px solid var(--hairline);padding-left:10px;}
  .book-row .book-thoughts{font-size:13.5px;color:var(--body-strong);margin-top:8px;line-height:1.6;
    background:var(--peach-bg);border-radius:var(--r-md);padding:10px 12px;}
  .book-row .block-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;margin-top:8px;}
  .book-row .book-keywords{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px;}
  .book-keyword-chip{font-size:11.5px;font-weight:600;background:var(--lavender-bg);color:var(--lavender-fg);
    padding:3px 10px;border-radius:var(--r-pill);}

  .mood-input{display:flex;gap:8px;flex-wrap:wrap;}
  .mood-btn{display:flex;flex-direction:column;align-items:center;gap:3px;border:1.5px solid var(--hairline);
    background:var(--canvas);border-radius:var(--r-md);padding:8px 12px;cursor:pointer;font-size:11.5px;
    color:var(--muted);font-family:var(--font-body);}
  .mood-btn .emoji{color:var(--muted-soft);}
  .mood-btn.selected .emoji{color:var(--ink);}
  .mood-icon-svg{width:24px;height:24px;stroke:currentColor;stroke-width:1.5;fill:none;stroke-linecap:round;stroke-linejoin:round;}
  .mood-btn.selected{border-color:var(--ink);background:var(--surface-card);color:var(--ink);font-weight:700;}

  .exp-row{padding:16px 4px;border-bottom:1px solid var(--hairline);}
  .exp-row:last-child{border-bottom:none;}
  .exp-row-top{display:flex;align-items:flex-start;gap:10px;}
  .exp-row .exp-title{font-family:var(--font-display);font-size:15.5px;font-weight:700;color:var(--body-strong);flex:1;}
  .exp-row .exp-type-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:var(--r-pill);
    background:var(--peach-bg);color:var(--peach-fg);white-space:nowrap;}
  .exp-row .exp-mood{flex:0 0 auto;color:var(--peach-fg);}
  .exp-row .exp-mood .mood-icon-svg{width:26px;height:26px;}
  .exp-row .exp-meta{font-size:12.5px;color:var(--muted);margin-top:3px;}
  .exp-row .exp-block{margin-top:10px;}
  .exp-row .exp-block-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;}
  .exp-row .exp-block-text{font-size:13px;color:var(--body);line-height:1.55;margin-top:3px;}

  .project-row{padding:16px 4px;border-bottom:1px solid var(--hairline);}
  .project-row:last-child{border-bottom:none;}
  .project-row-top{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap;}
  .project-row .project-title{font-family:var(--font-display);font-size:15.5px;font-weight:700;color:var(--body-strong);}
  .project-row .project-type-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:var(--r-pill);
    background:var(--lavender-bg);color:var(--lavender-fg);white-space:nowrap;}
  .project-row .project-status-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:var(--r-pill);
    white-space:nowrap;}
  .project-row .project-status-badge.done{background:var(--ochre-bg);color:var(--ochre-fg);}
  .project-row .project-status-badge.progress{background:var(--peach-bg);color:var(--peach-fg);}
  .project-row .project-meta{font-size:12.5px;color:var(--muted);margin-top:3px;width:100%;}
  .project-row .project-block{margin-top:10px;}
  .project-row .project-block-label{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.3px;}
  .project-row .project-block-text{font-size:13px;color:var(--body);line-height:1.55;margin-top:3px;}

  .step-progress{font-size:11.5px;color:var(--muted);font-weight:600;white-space:nowrap;}
  .step-list{margin-top:6px;}
  .step-row{display:flex;align-items:center;gap:8px;padding:5px 0;}
  .step-check{width:20px;height:20px;border-radius:6px;border:2px solid var(--muted-soft);flex:0 0 auto;
    cursor:pointer;background:var(--canvas);position:relative;}
  .step-check.done{border-color:var(--lavender);background:var(--lavender);}
  .step-check.done::after{content:"✓";position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
    font-size:11px;color:var(--lavender-on);}
  .step-text{flex:1;font-size:13px;color:var(--body-strong);}
  .step-text.done{color:var(--muted-soft);text-decoration:line-through;}
  .step-due{font-size:11px;color:var(--muted);white-space:nowrap;}
  .step-del{border:none;background:none;color:var(--muted-soft);cursor:pointer;font-size:14px;opacity:0;transition:opacity .12s;}
  .step-row:hover .step-del{opacity:1;}
  .add-step-row{display:flex;gap:6px;margin-top:8px;}
  .add-step-row input[type=text]{flex:1;font-family:var(--font-body);font-size:12.5px;padding:7px 9px;
    border-radius:var(--r-sm);border:1px solid var(--hairline);background:var(--canvas);}
  .add-step-row input[type=date]{font-family:var(--font-body);font-size:12.5px;padding:7px 9px;
    border-radius:var(--r-sm);border:1px solid var(--hairline);background:var(--canvas);}
  .add-step-row button{border:none;background:var(--surface-card);color:var(--body-strong);border-radius:var(--r-sm);
    padding:0 12px;font-size:12.5px;font-weight:700;cursor:pointer;}


  .prayer-row{padding:14px 4px;border-bottom:1px solid var(--hairline);}
  .prayer-row:last-child{border-bottom:none;}
  .prayer-row-top{display:flex;align-items:flex-start;gap:10px;}
  .prayer-title-text{flex:1;font-size:13.5px;color:var(--body-strong);line-height:1.5;}
  .prayer-status-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:var(--r-pill);white-space:nowrap;}
  .prayer-status-badge.praying{background:var(--peach-bg);color:var(--peach-fg);}
  .prayer-status-badge.answered{background:var(--lavender-bg);color:var(--lavender-fg);}
  .prayer-target-badge{font-size:11px;font-weight:700;padding:3px 10px;border-radius:var(--r-pill);
    background:var(--ochre-bg);color:var(--ochre-fg);white-space:nowrap;}
  .prayer-date{font-size:11.5px;color:var(--muted);margin-top:3px;}
  .prayer-answer{font-size:13px;color:var(--body);margin-top:8px;line-height:1.5;background:var(--lavender-bg);
    border-radius:var(--r-md);padding:9px 12px;}

/* Authentication is independent of notebook visibility and routing. */
[hidden] { display:none !important; }
.auth-panel { min-height:100vh; display:grid; place-items:center; padding:24px; background:#f4f1ec; }
.auth-card { width:min(100%,420px); padding:36px; border:1px solid #e4ded5; border-radius:24px; background:#fff; box-shadow:0 12px 45px #3425190c; }
.auth-card h1 { font-size:26px; margin:14px 0 8px; }
.auth-card p { color:#655b60; line-height:1.6; }
.auth-eyebrow { font-size:11px; letter-spacing:2px; color:#90764e; }
.auth-card label:not(.remember-label) { display:block; margin:20px 0 8px; font-size:14px; font-weight:600; }
.auth-card input[type=email], .auth-card input[type=password] { width:100%; box-sizing:border-box; padding:12px; border:1px solid #d8d0d2; border-radius:10px; font:inherit; }
.auth-card .remember-label { display:flex; align-items:center; gap:8px; margin:16px 0 6px; font-size:14px; }
.auth-card small { display:block; color:#746a6f; line-height:1.7; }
#login-submit { width:100%; margin:24px 0 4px; border:0; border-radius:10px; padding:13px; background:#493c4b; color:white; font:inherit; cursor:pointer; }
#login-submit:disabled { opacity:.5; cursor:wait; }
.auth-actions { display:flex; gap:16px; margin:12px 0 20px; }
.auth-actions button, .account-bar button { border:0; background:transparent; text-decoration:underline; color:inherit; font:inherit; cursor:pointer; }
.account-bar { padding:10px 18px; display:flex; justify-content:flex-end; gap:18px; font-size:12px; background:#f0eced; }
@media(max-width:480px) { .auth-card { padding:26px; } .account-bar { justify-content:space-between; } }
.login-tabs { display:flex; gap:8px; margin:24px 0 8px; }
.login-tabs button { flex:1; padding:11px; border:1px solid #ddd3da; background:#faf8f9; border-radius:10px; cursor:pointer; font:inherit; }
.login-tabs .selected { background:#493c4b; color:white; }
.auth-card select, .auth-card #child-login-pin { width:100%; padding:13px; font:inherit; border:1px solid #d8d0d2; border-radius:10px; box-sizing:border-box; }
.auth-card #child-login-pin { font-size:24px; letter-spacing:8px; }
.primary-login { width:100%; margin:24px 0 4px; border:0; border-radius:10px; padding:13px; background:#493c4b; color:white; font:inherit; cursor:pointer; }
.primary-login:disabled { opacity:.5; }
.pin-panel { margin:20px auto; padding:24px; max-width:780px; background:#fff; border:1px solid #e4ded5; border-radius:16px; }
.pin-grid { display:grid; grid-template-columns:1fr 1fr; gap:20px; }
.pin-form { padding:16px; background:#f8f5f7; border-radius:12px; }
.pin-panel label { display:block; margin:12px 0 6px; }
.pin-panel input { width:100%; box-sizing:border-box; padding:10px; border:1px solid #d8d0d2; border-radius:8px; font:inherit; }
.pin-panel button { margin-top:12px; padding:10px 14px; border:0; border-radius:8px; background:#493c4b; color:white; font:inherit; cursor:pointer; }
.pin-actions { display:flex; gap:12px; flex-wrap:wrap; }
@media(max-width:600px) { .pin-grid { grid-template-columns:1fr; } .pin-panel { margin:12px; } }

/* Original notebook covers, reused for the public child selection step. */
#login-selector { padding:32px 0; }
#login-selector .notebook { border:0; text-align:left; font:inherit; }
#login-selector .notebook:focus-visible { outline:3px solid var(--ink); outline-offset:5px; }
#login-card[hidden], #login-selector[hidden] { display:none; }
@media(max-width:600px) {
  #login-selector .brand h1 { font-size:32px; }
  #login-selector .notebook-row { gap:14px; flex-wrap:nowrap; }
  #login-selector .notebook { width:calc((100vw - 62px)/2); min-height:270px; padding:22px 18px; border-radius:24px; }
  #login-selector .notebook .name { font-size:64px; }
  #login-selector .meta { font-size:11px; }
}

#auth-panel:has(#login-selector:not([hidden])) { background:var(--canvas); }
