:root{--ink:#1c2b1c;--muted:#7d8875;--soft:#eef2e6;--line:#dbe2d0;--paper:#fff;--blue:#2f7a3d;--blue-dark:#1e5228;--khaki:#8b8f52;--lime:#b5d67a;--red:#c44536;--amber:#a67207;--green:#2f7a3d;--shadow:0 1px 2px rgba(28,43,28,.05),0 18px 46px rgba(28,43,28,.08)}
:root.dark{--ink:#eff3e8;--muted:#a4b19a;--soft:#0f130e;--line:#2d332a;--paper:#191d16;--blue:#6dbb7e;--blue-dark:#4aa25a;--khaki:#b0b877;--lime:#c9e69a;--shadow:0 18px 46px rgba(0,0,0,.32)}
.stock-search{display:grid;grid-template-columns:1fr auto;gap:10px;margin-bottom:12px}.stock-search input{width:100%;min-height:46px;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:#f7faf1;color:var(--ink);outline:0}html.dark .stock-search input{background:#121712}.quick-links{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.quick-links a{display:inline-flex;align-items:center;min-height:32px;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:var(--paper);color:var(--blue);font-size:13px;font-weight:800;text-decoration:none}.investment-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.indicator-card{display:grid;gap:7px;min-height:142px;padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--paper);color:var(--ink);text-decoration:none}.indicator-card:hover{border-color:rgba(10,132,255,.45);box-shadow:0 0 0 3px rgba(10,132,255,.12)}.indicator-card b{font-size:16px}.indicator-card span:last-child{color:var(--muted);font-size:12px;line-height:1.45}.indicator-purpose{color:var(--blue);font-size:12px;font-weight:900}
.task-dialog{border:1px solid var(--line);border-radius:12px;padding:0;width:min(560px,94vw);max-width:560px;background:var(--paper);color:var(--ink);box-shadow:var(--shadow);max-height:90vh;overflow:hidden}.task-dialog::backdrop{background:rgba(0,0,0,.35)}.task-dialog-body{padding:20px;max-height:90vh;overflow-y:auto}.task-dialog .card-head{margin-bottom:14px}.task-dialog h2{font-size:18px;line-height:1.25;margin:0}.hero-right{display:flex;gap:12px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.primary.compact{min-height:36px;padding:0 14px;font-size:14px}.fab{display:none;position:fixed;right:16px;bottom:16px;width:56px;height:56px;border-radius:50%;background:var(--blue);color:#fff;border:0;font-size:28px;font-weight:800;box-shadow:0 8px 24px rgba(47,122,61,.4);z-index:4;line-height:1;padding:0}.wide-item{grid-column:1/-1}.mi-head{display:flex;justify-content:space-between;align-items:baseline;gap:8px}.mi-unit{font-size:11px;color:var(--muted)}.mi-hero{font-size:26px;font-weight:800;letter-spacing:-.5px;margin-top:4px;color:var(--ink)}.mi-deltas{display:flex;gap:12px;flex-wrap:wrap;margin-top:8px;font-size:12px;color:var(--muted)}.d-mini{font-weight:700}.d-mini.up{color:#c44536}.d-mini.down{color:var(--blue)}.d-mini.flat{color:var(--muted)}.profile-btn{display:flex;align-items:center;gap:8px;padding:4px 10px 4px 4px;border:1px solid var(--line);background:rgba(255,255,255,.86);border-radius:999px;color:var(--ink);cursor:pointer;max-width:200px}html.dark .profile-btn{background:#1f2430}.profile-btn:hover{background:#f7faf1}html.dark .profile-btn:hover{background:#262d20}.profile-name{font-size:13px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:140px}.avatar{display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--blue);color:#fff;font-weight:800;font-size:13px;overflow:hidden;flex:none}.avatar img{width:100%;height:100%;object-fit:cover;display:block}.avatar-sm{width:22px;height:22px;font-size:11px}.avatar-lg{width:56px;height:56px;font-size:20px}.m-name{margin-left:2px}.members li{gap:8px}.settings-dialog{border:1px solid var(--line);border-radius:16px;padding:0;width:min(480px,94vw);background:var(--paper);color:var(--ink);box-shadow:var(--shadow);max-height:90vh;overflow:hidden}.settings-dialog::backdrop{background:rgba(0,0,0,.35)}.settings-body{padding:22px;max-height:90vh;overflow-y:auto;display:grid;gap:18px}.settings-head{display:flex;align-items:center;gap:12px}.settings-who{flex:1;min-width:0;display:grid;gap:2px}.settings-who b{font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.settings-section{display:grid;gap:8px;padding-top:14px;border-top:1px solid var(--line)}.settings-section:first-of-type{border-top:0;padding-top:0}.settings-section h3{margin:0 0 4px;font-size:13px;color:var(--muted);text-transform:uppercase;letter-spacing:.06em}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:40px;font-size:14px}.settings-row input[type=checkbox]{width:20px;height:20px;accent-color:var(--blue)}.settings-row .tool{padding:6px 14px}@media(max-width:760px){.fab{display:block}.hero-right .primary.compact{display:none}}@media(max-width:760px){.stock-search{grid-template-columns:1fr}.investment-grid{grid-template-columns:1fr}.indicator-card{min-height:auto}.quick-links a{flex:1;justify-content:center;min-width:calc(50% - 4px)}}
*{box-sizing:border-box}html{background:var(--soft)}body{margin:0;background:linear-gradient(180deg,#f7faf1 0,var(--soft) 280px);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif;-webkit-font-smoothing:antialiased}html.dark body{background:linear-gradient(180deg,#171b13 0,var(--soft) 320px)}button,input,select,textarea{font:inherit}button{cursor:pointer}.app{width:min(1180px,100%);margin:auto;padding:32px 20px 56px}.top{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:16px}.eyebrow{color:var(--blue);font-size:12px;font-weight:800}.top h1{margin:4px 0 0;font-size:32px;line-height:1.1}.topRight{display:flex;gap:10px;align-items:center}.date,.user,.hint,.task-meta,.footnote{color:var(--muted)}.date{font-size:14px}.userLine{display:flex;gap:8px;align-items:center}.user{font-size:13px}.toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:14px}.logout,.tool,.text-button,.month-nav button{border:1px solid var(--line);background:rgba(255,255,255,.86);border-radius:8px;color:var(--ink)}html.dark .logout,html.dark .tool,html.dark .text-button,html.dark .month-nav button{background:#1f2430}.logout,.tool,.text-button{padding:8px 10px}.text-button{color:var(--blue);border:0;background:transparent}.grid{display:grid;grid-template-columns:minmax(0,1.36fr) minmax(330px,.9fr);gap:14px}.grid>*{min-width:0}.card{background:rgba(255,255,255,.88);border:1px solid rgba(220,224,232,.9);border-radius:8px;padding:18px;box-shadow:var(--shadow);backdrop-filter:blur(16px)}html.dark .card{background:rgba(25,29,37,.92);border-color:#2b303a}.wide{grid-column:1/-1}.card-head{display:flex;justify-content:space-between;gap:14px;align-items:flex-start;margin-bottom:14px}.card h2{font-size:18px;line-height:1.25;margin:0}.hint{font-size:13px}.summary{display:flex;gap:18px;align-items:center}.stat{min-width:70px;padding-left:14px;border-left:1px solid var(--line)}.stat b{display:block;font-size:22px;line-height:1}.stat span{font-size:12px;color:var(--muted)}.tasks,.project-list{display:grid;gap:8px}.task{display:flex;flex-wrap:wrap;align-items:center;gap:12px;min-width:0;min-height:56px;padding:10px 8px;border:1px solid var(--line);border-radius:8px;background:var(--paper)}.task.done{opacity:.52}.task.done .task-title{text-decoration:line-through}.check{appearance:none;-webkit-appearance:none;width:21px;height:21px;margin:0;border:2px solid var(--c,var(--blue));border-radius:6px;background:var(--paper);display:grid;place-items:center;cursor:pointer;flex:none}.check:checked{background:var(--c,var(--blue))}.check:checked::after{content:"";width:5px;height:10px;border:solid #fff;border-width:0 2.5px 2.5px 0;transform:rotate(45deg) translateY(-1px)}.task-main{min-width:0;flex:1 1 150px}.task-side{display:flex;align-items:center;gap:8px;margin-left:auto;flex-wrap:wrap;justify-content:flex-end}.task-title{font-weight:760}.task-meta{font-size:12px;margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.badge,.due-badge{font-size:12px;font-weight:800;padding:4px 8px;border-radius:999px;white-space:nowrap}.high,.overdue{background:#fff1f0;color:var(--red)}.middle,.soon{background:#fff8e8;color:var(--amber)}.low,.today-due{background:#eaf3d9;color:#3d6e1a}.delete,.edit{border:0;color:#a4adba;background:transparent;font-size:14px;height:30px;border-radius:8px}.delete{width:28px;font-size:20px}.edit{padding:0 8px}.delete:hover,.edit:hover{background:#f2f4f7;color:#667085}html.dark .delete:hover,html.dark .edit:hover{background:#262d39;color:#c5ceda}.form{display:grid;gap:10px}.form input,.form select,.form textarea,.project-add input{width:100%;min-height:44px;padding:11px 12px;border:1px solid var(--line);border-radius:8px;background:#f7faf1;color:var(--ink);outline:0}html.dark .form input,html.dark .form select,html.dark .form textarea,html.dark .project-add input{background:#121712}.form input:focus,.form select:focus,.form textarea:focus,.project-add input:focus{border-color:var(--blue);background:var(--paper);box-shadow:0 0 0 3px rgba(47,122,61,.18)}.form textarea{min-height:78px;resize:vertical}.form-row>*{min-width:0;max-width:100%}.form input[type=date],.form input[type=time]{display:block;min-width:0;-webkit-appearance:none;appearance:none;text-align:left}.form-row,.project-add{display:grid;grid-template-columns:1fr 1fr;gap:10px}.project-add{grid-template-columns:1fr auto;margin-bottom:12px}.primary{min-height:46px;background:var(--blue);border:0;color:#fff;border-radius:8px;font-weight:800}.primary:hover{background:var(--blue-dark)}.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}.chip{display:inline-flex;gap:6px;align-items:center;border:1px solid var(--line);border-radius:999px;padding:6px 9px;background:var(--paper);font-size:13px}.chip button{border:0;background:transparent;color:var(--muted)}.project{padding:12px 0;border-bottom:1px solid var(--line)}.project:last-child{border-bottom:0}.project-line{display:flex;justify-content:space-between;gap:8px;font-weight:760}.bar{height:6px;background:#edf0f5;border-radius:999px;overflow:hidden;margin-top:10px}html.dark .bar{background:#303642}.bar i{height:100%;display:block;background:var(--blue);border-radius:999px}.alerts{display:grid;gap:8px;margin-bottom:10px}.alert{padding:10px 12px;border-radius:8px;background:#fff8e8;color:var(--amber);font-size:13px}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.month-nav{display:flex;gap:8px}.month-nav button{min-width:34px;height:34px;color:var(--blue);font-size:15px}.week,.days{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.week span{text-align:center;font-size:12px;color:var(--muted);padding:6px 0}.day{min-width:0;overflow:hidden;min-height:78px;padding:8px;border-radius:8px;background:#f4f7ec;border:1px solid transparent;font-size:13px;text-align:left;color:var(--ink)}html.dark .day{background:#171d12}.day.today{border-color:var(--blue);background:#eaf3d9}html.dark .day.today{background:#1f2a12}.day.selected{box-shadow:0 0 0 3px rgba(47,122,61,.22)}.day.other{opacity:.42}.day b{font-size:12px}.dot{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-top:6px;padding:3px 6px;background:#e7f1ff;color:#075bb8;border-radius:6px;font-size:10px}.empty{padding:22px 0;text-align:center;color:var(--muted);font-size:14px}.footnote{margin-top:16px;font-size:12px}.overlay[hidden]{display:none}.overlay{position:fixed;inset:0;background:radial-gradient(1200px 700px at 20% -10%,#c9e2b0 0,transparent 60%),radial-gradient(900px 600px at 90% 110%,#a3d977 0,transparent 55%),linear-gradient(180deg,#f5f9ec 0,#e6ecd6 100%);display:grid;place-items:center;padding:24px;z-index:5}.login{width:min(440px,100%);padding:36px 32px;background:rgba(255,255,255,.94);border:1px solid #d9e2d3;border-radius:20px;box-shadow:0 30px 80px rgba(31,58,28,.14);backdrop-filter:blur(18px);text-align:center}.login-icon{display:block;margin:0 auto 10px;border-radius:24px}.login .eyebrow{color:var(--blue-dark);font-weight:800;letter-spacing:.1em}.login h1{margin:6px 0 12px;font-size:32px;line-height:1.15;color:var(--ink)}.login-lead{line-height:1.66;color:var(--muted);font-size:14px;margin:0 0 8px}.google{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:50px;margin-top:18px;border-radius:12px;border:1px solid var(--line);background:#fff;color:#1c2b1c;font-weight:800;font-size:15px;box-shadow:0 8px 24px rgba(31,58,28,.08)}.google:hover{background:#f7faf1}.g-mark{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:conic-gradient(from -45deg,#4285f4 0 25%,#ea4335 0 50%,#fbbc05 0 75%,#34a853 0);color:#fff;font-weight:900;font-size:12px}.login-hint{margin:14px 0 0;font-size:12px;color:var(--muted)}.notice{min-height:18px;margin:12px 0 0;color:var(--red);font-size:13px}.market-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.market-item{border:1px solid var(--line);border-radius:8px;padding:12px;background:var(--paper)}.market-item b{display:block;font-size:17px}.market-item span{display:block;color:var(--muted);font-size:12px;margin-top:4px}.spark-svg{display:block;width:100%;height:38px;margin-top:8px}.market-status{margin-bottom:12px;color:var(--muted);font-size:13px}.status{margin-bottom:10px;color:var(--muted);font-size:13px}.status:empty{display:none}.series-dialog{border:1px solid var(--line);border-radius:12px;padding:20px;width:min(360px,90vw);background:var(--paper);color:var(--ink);box-shadow:var(--shadow)}.series-dialog::backdrop{background:rgba(0,0,0,.35)}.series-dialog h3{margin:0 0 6px;font-size:17px}.series-dialog p{margin:0}.dialog-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}.dialog-actions .primary{min-height:40px;padding:0 14px}.badge.repeat{background:#f1eed6;color:#7a6d1a}.dot-color{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:6px;vertical-align:middle}.chip.fixed{padding-right:12px}.field{display:grid;gap:4px;min-width:0}.field>span{font-size:12px;color:var(--muted)}.check-field{display:flex;align-items:center;gap:8px;min-height:44px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:#f9fafb;font-size:14px;cursor:pointer}html.dark .check-field{background:#121712}.form .check-field input{width:18px;height:18px;min-height:0;padding:0;margin:0;accent-color:var(--blue)}.check-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.check-row .check-field{flex:1}.form-row:has(#repeat option[value=none]:checked){grid-template-columns:1fr}.form-row:has(#repeat option[value=none]:checked) #repeatCount{display:none}.ongoing{background:#eaf3d9;color:#4a6d1a}.badge.remind{background:#fff4e5;color:#b45309}html.dark .dot{filter:brightness(1.35)}.dot.more{background:transparent;color:var(--muted);padding-left:2px}.check-field.locked{opacity:.7}.members{list-style:none;margin:0 0 12px;padding:0;display:grid;gap:6px}.members li{display:flex;align-items:center;gap:6px;font-size:14px}.code-line{display:flex;align-items:center;gap:10px;margin-top:8px;font-size:13px;color:var(--muted)}.code{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:20px;letter-spacing:3px;padding:6px 10px;border:1px dashed var(--line);border-radius:8px;color:var(--ink)}.family-actions{margin-bottom:10px}.family-actions .primary{width:100%}#joinCode{text-transform:uppercase}.source-link{color:var(--blue);font-weight:800;text-decoration:none}@media(max-width:760px){body{background:var(--soft)}.app{padding:18px 12px 36px}.top{align-items:flex-start;gap:12px;margin-bottom:16px}.top h1{font-size:28px}.topRight{align-items:flex-end;flex-direction:column;gap:6px}.grid{grid-template-columns:1fr;gap:12px}.wide{grid-column:auto}.card{padding:16px}.card-head{align-items:flex-start}.summary{gap:12px}.stat{min-width:0}.form-row{grid-template-columns:1fr}.task{padding:10px 8px}.badge,.due-badge{font-size:11px}.day{min-height:60px;padding:6px}.week,.days{gap:5px}.dot{font-size:9px;padding:2px 5px}.market-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.footnote{line-height:1.5}.top{flex-direction:column;align-items:stretch;gap:8px}.topRight{flex-direction:row;justify-content:space-between;align-items:center;width:100%}.profile-name{max-width:120px}.top h1{font-size:26px;white-space:nowrap}.logout{white-space:nowrap}.stat span{white-space:nowrap}.summary{gap:10px}.stat{padding-left:10px}}
