*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Apple SD Gothic Neo,Noto Sans KR,sans-serif;background:#f5f6f8;color:#1c1c1e}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}input,select,textarea{font-family:inherit;font-size:16px}.page{max-width:720px;margin:0 auto;padding:16px 16px 96px}.topbar{position:sticky;top:0;z-index:10;background:#fff;border-bottom:1px solid #e5e5ea;padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:8px}.topbar h1{font-size:18px;margin:0}.topbar .back{font-size:20px;padding:4px 8px;background:none;border:none}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:none;border-radius:12px;padding:12px 16px;font-size:15px;font-weight:600;background:#ff6f0f;color:#fff;width:100%}.btn.secondary{background:#fff;color:#1c1c1e;border:1px solid #d1d1d6}.btn.danger{background:#fff;color:#ff3b30;border:1px solid #ffd6d3}.btn.small{width:auto;padding:8px 12px;font-size:13px;border-radius:8px}.card{background:#fff;border-radius:14px;padding:16px;margin-bottom:12px;border:1px solid #ececec}.field{margin-bottom:14px}.field label{display:block;font-size:13px;font-weight:600;color:#48484a;margin-bottom:6px}.field .hint{font-size:12px;color:#8e8e93;margin-top:4px}.field input[type=text],.field input[type=password],.field input[type=number],.field input[type=url],.field select,.field textarea{width:100%;padding:11px 12px;border-radius:10px;border:1px solid #d1d1d6;background:#fff}.field textarea{min-height:90px;resize:vertical}.field.required label:after{content:" *";color:#ff3b30}.searchbar{display:flex;gap:8px;margin-bottom:12px}.searchbar input{flex:1;padding:11px 14px;border-radius:10px;border:1px solid #d1d1d6}.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;margin-bottom:12px}.chip{flex:none;padding:8px 14px;border-radius:999px;background:#fff;border:1px solid #d1d1d6;font-size:13px;white-space:nowrap}.chip.active{background:#1c1c1e;color:#fff;border-color:#1c1c1e}.profile-box{display:flex;justify-content:space-between;align-items:center}.profile-box .name{font-size:16px;font-weight:700;margin-bottom:4px}.profile-box .period{font-size:13px;color:#6e6e73}.profile-box.in_progress{background:#eaf2fd;border-color:#b8d4f5}.profile-box.ended{background:#f2f2f4;border-color:#dcdce0}.days-left{font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px;background:#eef4fc;color:#1966d1}.days-left.urgent{background:#fdeceb;color:#d9432a}.badge{font-size:12px;font-weight:600;padding:4px 10px;border-radius:999px}.badge.not_started{background:#f2f2f7;color:#6e6e73}.badge.in_progress{background:#dce9fb;color:#1a9e4f;animation:badge-pulse 1.8s ease-in-out infinite}.badge.ended{background:#e8e8ec;color:#6e6e73}@keyframes badge-pulse{0%,to{box-shadow:0 0 #1a9e4f59}50%{box-shadow:0 0 0 5px #1a9e4f00}}.user-box{display:flex;justify-content:space-between;align-items:center}.user-box .name{font-size:16px;font-weight:700}.user-box .meta{font-size:13px;color:#6e6e73;margin-top:2px}.empty{text-align:center;color:#8e8e93;padding:40px 16px;font-size:14px}.fab-wrap{position:fixed;left:0;right:0;bottom:0;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:linear-gradient(to top,#f5f6f8 60%,transparent)}.fab-wrap .inner{max-width:720px;margin:0 auto}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:flex-end;z-index:50}.modal-sheet{background:#fff;width:100%;max-height:92vh;overflow-y:auto;border-radius:18px 18px 0 0;padding:20px 16px calc(20px + env(safe-area-inset-bottom))}@media (min-width: 640px){.modal-overlay{align-items:center;justify-content:center}.modal-sheet{max-width:560px;border-radius:18px}}.modal-sheet h2{margin-top:0;font-size:18px}.detail-row{margin-bottom:16px}.detail-row .k{font-size:12px;color:#8e8e93;font-weight:600;margin-bottom:4px}.detail-row .v{font-size:15px;white-space:pre-wrap;word-break:break-word}.error-text{color:#ff3b30;font-size:13px;margin:8px 0}.row-actions{display:flex;gap:8px;margin-top:8px}.row-actions .btn{width:auto;flex:1}.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding:24px}.login-card{width:100%;max-width:360px;background:#fff;border-radius:16px;padding:28px 22px;border:1px solid #ececec}.login-card h1{font-size:20px;margin:0 0 4px}.login-card p.sub{font-size:13px;color:#8e8e93;margin:0 0 20px}
