
    :root{
        --ink:#0f172a; --muted:#64748b; --line:#e5e7eb; --soft:#f8fafc; --bg:#ffffff;
        --mint:#bbf7d0; --sky:#bae6fd; --peach:#ffe4e6; --lav:#f3e8ff; --sun:#fef3c7;
        --brand:#22c55e; --brand2:#16a34a; --danger:#ef4444;
        --shadow:0 28px 72px rgba(2,6,23,.22);
        --r-lg:20px; --r:14px; --h:46px;
    }

    /* Modal shell */
    #kids-modal{position:fixed;inset:0;display:none;z-index:1100;align-items:center;justify-content:center;padding:24px}
    #kids-modal.open{display:flex}
    .km-backdrop{position:absolute;inset:0;background:rgba(2,6,23,.45);backdrop-filter:blur(2px);opacity:0;animation:fade .18s forwards}
    @keyframes fade{to{opacity:1}}
    .km-sheet{position:relative;width:min(1080px,96vw);max-height:88.5vh;border-radius:var(--r-lg);
        background:linear-gradient(135deg,var(--peach),var(--sky));border:1px solid rgba(2,6,23,.06);
        box-shadow:var(--shadow);overflow:hidden;display:flex;flex-direction:column;margin: var(--header-h) 0 2vh 0;}

    /* Header */
    .km-head{padding:16px 18px;background:rgba(255,255,255,.9);border-bottom:1px solid var(--line);
        display:flex;align-items:center;justify-content:space-between;gap:12px}
    .km-title{margin:0;font-weight:900}
    .km-sub{color:var(--muted);font-size:.92rem;margin-top:2px;display:block}
    .km-close{border:1px solid var(--line);background:#fff;border-radius:12px;padding:6px 10px;line-height:1;font-size:18px;cursor:pointer}
    .km-close:hover{background:#f3f4f6}

    /* Body grid */
    .km-body{flex:1 1 auto;overflow:auto;padding:18px}
    .km-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px;align-items:start}
    @media (max-width:920px){.km-grid{grid-template-columns:1fr}}

    /* Cards */
    .card{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 10px 24px rgba(2,6,23,.08)}
    .card.pad{padding:16px}
    .card + .card{margin-top:12px}

    /* Section headers (stickers) */
    .sec-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;font-weight:900;color:#065f46}
    .sticker{display:inline-flex;align-items:center;gap:8px;border-radius:999px;padding:6px 10px;font-weight:900;border:1px solid #00000010}
    .sticker .dot{width:10px;height:10px;border-radius:50%}
    .sticker.mint{background:var(--mint)} .sticker.mint .dot{background:#10b981}
    .sticker.sky{background:var(--sky)}   .sticker.sky  .dot{background:#3b82f6}
    .sticker.sun{background:var(--sun)}   .sticker.sun  .dot{background:#f59e0b}

    /* Unified form controls */
    .grid{display:grid;gap:12px}
    .grid.two{grid-template-columns:1fr 1fr}
    .grid.three{grid-template-columns:1fr 1fr 1fr}
    @media (max-width:640px){.grid.two,.grid.three{grid-template-columns:1fr}}

    .field{display:flex;flex-direction:column;gap:6px}
    .field>label{font-weight:800}
    .control, select.control, textarea.control{
        height:var(--h); border:1.6px solid var(--line); border-radius:14px; padding:0 12px;
        background:#fff; font-size:1rem; line-height:var(--h);
        transition:border-color .12s, box-shadow .12s, background .12s;
    }
    textarea.control{height:auto;min-height:100px;line-height:1.45;padding:10px 12px}
    .control:focus, select.control:focus, textarea.control:focus{
        outline:none;border-color:var(--brand);box-shadow:0 0 0 4px rgba(34,197,94,.15)
    }
    .hint{color:var(--muted);font-size:.85rem}

    /* Validation */
    .invalid > .control, .invalid > select.control, .invalid > textarea.control{
        border-color:var(--danger); box-shadow:0 0 0 4px rgba(239,68,68,.12)
    }
    .err{color:var(--danger);font-size:.82rem;display:none}
    .invalid .err{display:block}

    /* Buttons */
    .actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
    .btn{height:44px;padding:0 16px;border-radius:14px;border:1px solid transparent;cursor:pointer;font-weight:900}
    .btn.primary{background:linear-gradient(135deg,var(--brand),var(--brand2));color:#fff}
    .btn.ghost{background:#fff;border-color:var(--line)}

    /* Right column: sticky estimate */
    .est{position:sticky;top:16px}
    .est .row{display:flex;justify-content:space-between;align-items:center;padding:10px 0}
    .est .row + .row{border-top:1px dashed var(--line)}
    .est .row.total{font-weight:900}
