:root{--color-bg: #fff;--color-text: #222;--color-primary: #388e3c;--color-primary-dark: #2e7d32;--color-secondary: #007bff;--color-danger: #b15b5b;--color-danger-bg: #f6a5a5;--color-border: #cfcfcf;--font-sm: .9rem;--font-md: 1rem;--font-lg: 1.25rem;--font-xl: 1.5rem;--space-xs: 4px;--space-sm: 8px;--space-md: 16px;--space-lg: 24px;--space-xl: 40px;--shadow-sm: 0 1px 4px rgba(0, 0, 0, .1);--shadow-md: 0 3px 8px rgba(0, 0, 0, .12);--shadow-lg: 0 6px 20px rgba(0, 0, 0, .15);--input-height: 40px;--input-radius: 10px;--btn-height: 56px;--btn-radius: 14px;--general-height: 56px;--container-max: 900px;--container-pad: 26px;--gap-row: 1.25rem;--gap-field: 10px;--gap-actions: 48px;--radius-card: 14px;--hour-height: 56px;--thead-height: 32px;--grid-border-top: 1px;--btn-icon-size: 38px;--radius-round: 50%}*,*:before,*:after{box-sizing:border-box}html,body{height:100%}body{margin:0;color:var(--color-text);background:var(--color-bg)}.btn{height:var(--btn-height);border-radius:var(--btn-radius);cursor:pointer;border:1px solid transparent;white-space:nowrap;font-size:var(--font-md);padding:0 var(--space-md);transition:transform .05s ease,box-shadow .15s ease}.btn:active{transform:translateY(1px)}.btn--ghost{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border)}.btn--ghost:hover{box-shadow:var(--shadow-sm)}.btn--primary{background:var(--color-primary);color:var(--color-bg);border-color:var(--color-primary-dark)}.btn--primary:hover{box-shadow:var(--shadow-md)}.input{height:var(--input-height);padding:0 var(--space-md);border:1px solid var(--color-border);border-radius:var(--input-radius);outline:none;background:var(--color-bg);font-size:var(--font-md)}.input:focus{border-color:var(--color-secondary);box-shadow:var(--shadow-sm)}.header{position:fixed;top:0;left:0;width:100%;z-index:20;background:var(--color-primary);color:var(--color-bg);border-bottom:1px solid var(--color-primary-dark);height:60px;line-height:60px}.header__inner{max-width:var(--container-max);margin:0 auto;padding:0 var(--space-md)}.header__title{margin:0;text-align:center;font-size:var(--font-lg);font-weight:700}.header__title--clickable{cursor:pointer}.home{margin:0 auto;padding:var(--space-lg);display:grid;gap:var(--space-lg);justify-items:center}.home__input,.home__actions{display:grid;gap:var(--space-md);width:50%;min-width:280px;max-width:560px}.home__btn{width:100%}.main-view{width:100%;display:block}.app-container__main{padding-top:80px}.calendar{margin:0 auto;padding:var(--space-lg);max-width:var(--container-max)}.calendar__header{margin-bottom:var(--general-space)}.calendar__header-inner{display:grid;justify-items:center;gap:var(--general-space)}.calendar__title{margin:0;text-align:center;color:var(--color-text);margin-bottom:var(--space-md)}.calendar__actions{display:flex;gap:var(--space-md);justify-content:center;margin-bottom:var(--space-md);flex-wrap:wrap}.calendar__btn{height:var(--btn-height);padding:0 var(--space-lg);border-radius:var(--btn-radius);cursor:pointer;border:1px solid transparent;font-size:var(--font-md)}.calendar__btn:active{transform:translateY(1px)}.calendar__btn--ghost{background:var(--color-bg);color:var(--color-text);border-color:var(--color-border)}.calendar__btn--ghost:hover{box-shadow:var(--shadow)}.calendar__btn--primary{background:var(--color-primary);color:var(--color-bg);border-color:var(--border-dark-green)}.calendar__btn--primary:hover{box-shadow:var(--shadow)}.calendar__form{display:block}.calendar__rows{display:grid;gap:var(--gap-row);justify-items:center}.calendar__row-card{width:100%;position:relative;border:1px solid var(--color-border);border-radius:var(--radius-card);background:var(--color-bg);padding:var(--space-md) var(--space-lg);box-shadow:var(--shadow-sm)}.calendar__row-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-md);align-items:end}.calendar__field{display:flex;flex-direction:column;gap:var(--space-sm);width:100%}.calendar__label{font-size:var(--font-sm);margin-bottom:var(--space-xs);color:var(--color-text);text-align:left}.calendar__input{height:var(--input-height);padding:0 var(--space-md);border:1px solid var(--color-border);border-radius:var(--input-radius);font-size:var(--font-md);background:var(--color-bg);width:100%}.calendar__input:focus{border-color:var(--border-dark-green);box-shadow:var(--shadow)}.calendar__delete-btn{position:absolute;top:var(--space-sm);right:var(--space-md);width:var(--btn-icon-size);height:var(--btn-icon-size);border-radius:var(--radius-round);border:1px solid var(--color-danger);background:var(--color-danger-bg);cursor:pointer;z-index:5;display:flex;align-items:center;justify-content:center}.calendar__delete-btn:hover{filter:brightness(.95)}.calendar__delete-btn:active{transform:scale(.96)}.calendar__title-field{margin-bottom:var(--space-lg);width:100%;display:flex;flex-direction:column;gap:var(--space-sm)}.update-calendar{width:100%;display:flex;flex-direction:column;align-items:center}.update-calendar__day-block{position:relative;margin-bottom:var(--hour-height)}.update-calendar__date-label{font-weight:700;text-align:center;font-size:var(--font-md);margin-bottom:var(--space-sm)}.update-calendar__time-labels{position:absolute;top:calc(var(--thead-height) + var(--grid-border-top) + var(--space-sm));left:0;display:flex;flex-direction:column;align-items:flex-start;background:var(--color-bg);z-index:2;margin-right:0}.update-calendar__time-label{height:var(--hour-height);font-size:var(--font-sm);color:var(--color-text)}.update-calendar__table-container{overflow-x:auto;border-top:1px solid var(--color-text);margin-left:var(--hour-height);display:block}.update-calendar__table-wrapper{position:relative}.update-calendar__day-table{border-collapse:collapse;position:relative}.update-calendar__day-table th,.update-calendar__day-table td{border-left:1px solid var(--color-text);border-right:1px solid var(--color-text);height:calc(var(--hour-height) / 4);text-align:center;min-width:100px;position:relative}.update-calendar__row--hour-line td{border-top:1px solid var(--color-text)}.update-calendar__row--half-hour-line td:after{content:"";position:absolute;top:100%;left:0;width:100%;border-bottom:1px dashed rgba(0,0,0,.3);pointer-events:none}.update-calendar__overlay{position:absolute;border-radius:var(--btn-radius);opacity:1}.update-calendar__overlay--mine,.update-calendar__overlay--pending{background-color:#ffa50080}.update-calendar__overlay--dragging{background-color:#ffa5004d}.update-calendar__overlay--others{background-color:#5cb15680}.update-calendar__day-table thead th{font-weight:700;font-size:var(--font-sm)}.update-calendar__overlay--no-pe{pointer-events:none!important}.update-calendar__name-input-block{margin:var(--space-md) 0;display:flex;gap:var(--space-sm);justify-content:center;align-items:center}.update-calendar__name-input{font-size:var(--font-md);padding:var(--space-sm) var(--space-md);border:2px solid var(--color-secondary);border-radius:var(--input-radius);min-width:200px}.update-calendar__name-input:focus{outline:none;border-color:var(--color-primary-dark);box-shadow:var(--shadow-sm)}.update-calendar__row--last-row td{border-left:none;border-right:none}.update-calendar__delete-btn{margin-left:var(--space-xs);width:var(--space-md);height:var(--space-md);cursor:pointer;display:inline-flex;align-items:center;justify-content:center;font-size:var(--font-sm);border:none;background:transparent}.update-calendar__delete-btn:hover{filter:brightness(.95)}.update-calendar__delete-btn:active{transform:scale(.95)}.update-calendar__error{color:red}.update-calendar__overlay--common{background-color:transparent;border:3px solid orange;border-radius:var(--btn-radius);z-index:10;pointer-events:none}.create-calendar-success{margin:0 auto;padding:var(--space-xl) var(--space-md) var(--space-xl);text-align:center}.create-calendar-success__title{font-size:var(--font-lg);font-weight:700;margin-bottom:var(--space-md);color:var(--color-text)}.create-calendar-success__url{font-family:monospace;font-size:var(--font-sm);color:var(--color-text);margin-bottom:var(--space-lg);white-space:nowrap}.create-calendar-success__actions{display:flex;gap:var(--space-md);justify-content:center}
