*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;-webkit-font-smoothing:antialiased}body{font-family:-apple-system,BlinkMacSystemFont,SF Pro Display,SF Pro Text,Helvetica Neue,sans-serif;background:#f2f2f7;color:#000;line-height:1.47;min-height:100vh}button{font-family:inherit;cursor:pointer;border:none;background:none}input,textarea,select{font-family:inherit;outline:none}#app{max-width:480px;margin:0 auto;min-height:100vh}.container{min-height:100vh;padding:16px 12px 80px}.app-header{text-align:center;padding:8px 0 20px}.app-title{font-size:1.375rem;font-weight:700;letter-spacing:-.5px}.app-subtitle{font-size:.8125rem;color:#8e8e93;margin-top:4px}.course-list{display:flex;flex-direction:column;gap:10px}.course-card{background:#fff;border-radius:10px;padding:16px 14px;box-shadow:0 1px 4px #0000000a,0 .5px 1.5px #00000014;transition:transform .2s cubic-bezier(.4,0,.2,1),box-shadow .2s}.course-card:active{transform:scale(.98)}.course-main{margin-bottom:14px}.course-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:12px;gap:10px}.course-title-wrapper{display:flex;align-items:center;gap:8px;flex:1;min-width:0}.course-icon-clickable{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:#f2f2f7;border-radius:6px;flex-shrink:0;cursor:pointer;transition:background .2s}.course-icon-clickable:hover{background:#e5e5ea}.course-icon{font-size:20px;line-height:1}.course-title-info{display:flex;flex-direction:column;gap:3px;flex:1;min-width:0}.course-name{font-size:1.0625rem;font-weight:600;letter-spacing:-.5px}.course-time{font-size:.8125rem;color:#8e8e93;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.course-badge{background:#ff3b30;padding:3px 8px;border-radius:6px;font-size:.6875rem;color:#fff;font-weight:500;flex-shrink:0}.course-stats{display:flex;justify-content:space-around;margin-bottom:12px;padding:10px;background:#f2f2f7;border-radius:8px}.stat-item{display:flex;flex-direction:column;align-items:center;gap:4px;flex:1}.stat-item.highlight{background:#007aff;padding:8px 10px;border-radius:6px;margin:-4px -2px}.stat-label{font-size:.75rem;color:#8e8e93}.stat-item.highlight .stat-label{color:#ffffffe6}.stat-value{font-size:1rem;font-weight:600;letter-spacing:-.5px}.stat-item.highlight .stat-value{color:#fff}.stat-value.warning{color:#ff3b30}.progress-wrapper{display:flex;align-items:center;gap:8px}.progress-bar{flex:1;height:4px;background:#e5e5ea;border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:#007aff;border-radius:2px;transition:width .3s cubic-bezier(.4,0,.2,1)}.progress-fill.full{background:#ff3b30}.progress-text{font-size:.75rem;color:#8e8e93;min-width:30px;text-align:right;font-weight:500}.course-actions{display:flex;gap:6px;padding-top:12px;border-top:.5px solid #e5e5ea}.action-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;padding:9px;border-radius:6px;font-size:.75rem;font-weight:500;transition:transform .2s,opacity .2s}.action-btn:active:not(:disabled){transform:scale(.96);opacity:.8}.action-btn:disabled{background:#e5e5ea!important;color:#8e8e93!important;opacity:.6;cursor:not-allowed}.quick-consume-btn{background:#007aff;color:#fff}.detail-btn{background:#5ac8fa;color:#fff}.edit-btn{background:#af52de;color:#fff}.delete-btn{background:#ff3b30;color:#fff}.btn-icon{font-size:.875rem;font-weight:600}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;min-height:50vh}.empty-icon{font-size:3.75rem;margin-bottom:16px;opacity:.3}.empty-text{font-size:1rem;color:#8e8e93;margin-bottom:6px;font-weight:500}.empty-hint{font-size:.8125rem;color:#c7c7cc}.fab{position:fixed;right:max(16px,calc(50% - 224px));bottom:16px;width:56px;height:56px;background:#007aff;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 8px #007aff4d,0 2px 4px #007aff33;z-index:100;transition:transform .2s,box-shadow .2s}.fab:hover{transform:scale(1.05)}.fab:active{transform:scale(.92)}.fab-icon{font-size:1.75rem;color:#fff;font-weight:300;line-height:1}.modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0006;display:flex;align-items:center;justify-content:center;z-index:1000;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:16px}.modal-overlay.show{opacity:1;visibility:visible}.modal-content{width:100%;max-width:400px;max-height:90vh;background:#fff;border-radius:10px;overflow:hidden;display:flex;flex-direction:column;transform:scale(.95);transition:transform .3s cubic-bezier(.4,0,.2,1);box-shadow:0 8px 24px #0003,0 4px 8px #0000001a}.modal-overlay.show .modal-content{transform:scale(1)}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:16px 14px;border-bottom:.5px solid #e5e5ea;flex-shrink:0}.modal-header-right{display:flex;align-items:center;gap:8px}.share-btn{display:flex;align-items:center;gap:4px;padding:5px 9px;background:#007aff;border-radius:8px;color:#fff;font-size:.75rem;font-weight:500;transition:opacity .2s}.share-btn:hover{opacity:.85}.modal-title{font-size:1.0625rem;font-weight:600;letter-spacing:-.5px}.modal-close{font-size:1.375rem;color:#8e8e93;line-height:1;width:22px;height:22px;display:flex;align-items:center;justify-content:center;cursor:pointer;background:none;border:none}.modal-close:hover{color:#000}.modal-body{padding:16px 14px;overflow-y:auto;flex:1;min-height:0}.modal-footer{display:flex;gap:6px;padding:12px 14px;border-top:.5px solid #e5e5ea;flex-shrink:0}.modal-btn{flex:1;padding:11px;border-radius:6px;font-size:1rem;font-weight:500;transition:transform .2s,opacity .2s}.modal-btn:active{transform:scale(.98);opacity:.8}.cancel-btn{background:#f2f2f7;color:#007aff}.confirm-btn{background:#007aff;color:#fff}.form-group{margin-bottom:16px}.form-group:last-child{margin-bottom:0}.form-label{display:block;font-size:.875rem;color:#000;margin-bottom:6px;font-weight:500}.form-label.required:before{content:"*";color:#ff3b30;margin-right:2px}.form-input,.form-textarea{width:100%;padding:10px 12px;border:.5px solid #e5e5ea;border-radius:6px;font-size:1rem;color:#000;background:#fff;transition:border-color .2s}.form-input:focus,.form-textarea:focus{border-color:#007aff}.form-textarea{min-height:40px;resize:vertical}.form-input::placeholder,.form-textarea::placeholder{color:#c7c7cc}.time-picker-section{display:flex;flex-direction:column;gap:10px}.time-picker-group{display:flex;flex-direction:column;gap:6px}.time-group-label{font-size:.75rem;color:#8e8e93}.time-picker-row{display:flex;align-items:center;gap:4px}.time-select{flex:1;padding:9px 28px 9px 10px;border:.5px solid #e5e5ea;border-radius:6px;background:#f2f2f7;font-size:.875rem;font-weight:500;color:#000;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238e8e93' d='M6 8L1 3h10z'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}.time-select.time-select-small{flex:0 0 auto;min-width:60px}.time-separator{font-size:1rem;font-weight:500}.icon-preview{display:flex;align-items:center;gap:8px;padding:9px;border:.5px solid #e5e5ea;border-radius:6px;background:#f2f2f7;cursor:pointer;transition:background .2s,border-color .2s}.icon-preview:hover{background:#e5e5ea;border-color:#007aff}.icon-preview-emoji{font-size:1.375rem;width:30px;height:30px;display:flex;align-items:center;justify-content:center;background:#fff;border-radius:6px}.icon-preview-text{font-size:.875rem;color:#8e8e93}.icon-grid{display:grid;grid-template-columns:repeat(8,1fr);gap:6px;padding:8px 0}.icon-item{display:flex;align-items:center;justify-content:center;aspect-ratio:1;background:#f2f2f7;border-radius:6px;cursor:pointer;border:.5px solid transparent;transition:all .2s;font-size:1.125rem}.icon-item:hover{background:#007aff;transform:scale(.95)}.detail-course-info{text-align:center;padding:12px;background:#007aff;border-radius:6px;margin-bottom:16px}.detail-course-name{font-size:1rem;font-weight:600;color:#fff}.consume-item{display:flex;justify-content:space-between;align-items:center;padding:12px 0;border-bottom:.5px solid #e5e5ea}.consume-item:last-child{border-bottom:none}.consume-date{font-size:.875rem;font-weight:500}.consume-time{font-size:.75rem;color:#8e8e93}.consume-hours{font-size:1rem;font-weight:600;color:#007aff}.empty-consume{text-align:center;padding:40px 0;color:#8e8e93;font-size:.875rem}.schedule-canvas{position:fixed;top:-9999px;left:-9999px;pointer-events:none}.toast-container{position:fixed;top:20px;left:50%;transform:translate(-50%);z-index:2000;display:flex;flex-direction:column;align-items:center;gap:8px;pointer-events:none}.toast{padding:10px 20px;border-radius:20px;font-size:.875rem;font-weight:500;color:#fff;background:#000000bf;opacity:0;transform:translateY(-8px);transition:opacity .3s,transform .3s;white-space:nowrap;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.toast.show{opacity:1;transform:translateY(0)}.toast-success{background:#34c759e6}.toast-error{background:#ff3b30e6}@media(min-width:481px){body{background:#e5e5ea}#app{box-shadow:0 0 40px #00000014;background:#f2f2f7}}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px 16px;background:linear-gradient(160deg,#f2f2f7,#e8ecf8,#f2f2f7)}.auth-card{width:100%;max-width:400px;background:#fff;border-radius:16px;padding:32px 28px;box-shadow:0 8px 32px #00000014,0 2px 8px #0000000a}.auth-logo{font-size:3rem;text-align:center;margin-bottom:8px}.auth-title{font-size:1.5rem;font-weight:700;text-align:center;letter-spacing:-.5px;margin-bottom:6px}.auth-subtitle{font-size:.875rem;color:#8e8e93;text-align:center;margin-bottom:28px;line-height:1.5}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-label{font-size:.875rem;font-weight:500;color:#000;margin-bottom:6px;display:block}.auth-input{width:100%;padding:12px 14px;border:.5px solid #e5e5ea;border-radius:10px;font-size:1rem;background:#f2f2f7;transition:border-color .2s,background .2s}.auth-input:focus{outline:none;border-color:#007aff;background:#fff}.auth-code-input{text-align:center;font-size:1.5rem;letter-spacing:8px;font-weight:600}.auth-btn{width:100%;padding:14px;border:none;border-radius:10px;font-size:1rem;font-weight:600;cursor:pointer;transition:opacity .2s,transform .2s}.auth-btn:disabled{opacity:.5;cursor:not-allowed}.auth-btn-primary{background:#007aff;color:#fff}.auth-btn-primary:not(:disabled):active{transform:scale(.98);opacity:.9}.auth-btn-link{background:transparent;color:#007aff;font-size:.875rem;font-weight:500;padding:8px}.auth-hint{font-size:.75rem;color:#8e8e93;text-align:center;margin-top:8px}.auth-email-display{text-align:center;font-size:.875rem;color:#007aff;font-weight:500;margin-bottom:8px}.user-bar{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;margin-bottom:12px;background:#fff;border-radius:10px;box-shadow:0 1px 4px #0000000a}.user-email{font-size:.8125rem;color:#8e8e93;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.logout-btn{flex-shrink:0;padding:6px 12px;font-size:.75rem;font-weight:500;color:#ff3b30;background:#ff3b301a;border:none;border-radius:8px;cursor:pointer}.logout-btn:hover{background:#ff3b302e}
